/home/coin/SVN-release/Cbc-1.2.0/Cbc/src/Cbc_C_Interface.h

Go to the documentation of this file.
00001 /* Copyright (C) 2004 International Business Machines
00002    Corporation and others.  All Rights Reserved.*/
00003 #ifndef CbcModelC_H
00004 #define CbcModelC_H
00005 
00006 /* include all defines and ugly stuff */
00007 #include "Coin_C_defines.h"
00008 
00014 #ifdef __cplusplus
00015 extern "C"{
00016 #endif
00017   
00027 
00029   COINLIBAPI Cbc_Model * COINLINKAGE Cbc_newModel(void);
00031   COINLIBAPI void COINLINKAGE Cbc_deleteModel(Cbc_Model * model);
00049   COINLIBAPI void COINLINKAGE Cbc_loadProblem (Cbc_Model * model,  const int numcols, const int numrows,
00050                       const CoinBigIndex * start, const int* index,
00051                       const double* value,
00052                       const double* collb, const double* colub,   
00053                       const double* obj,
00054                       const double* rowlb, const double* rowub);
00056   COINLIBAPI int COINLINKAGE Cbc_readMps(Cbc_Model * model,const char *filename);
00058   COINLIBAPI void COINLINKAGE Cbc_writeMps(Cbc_Model * model,const char *filename);  
00060   COINLIBAPI void COINLINKAGE Cbc_copyInIntegerInformation(Cbc_Model * model,const char * information);
00062   COINLIBAPI void COINLINKAGE Cbc_deleteIntegerInformation(Cbc_Model * model);
00064   COINLIBAPI void COINLINKAGE Cbc_resize (Cbc_Model * model, int newNumberRows, int newNumberColumns);
00066   COINLIBAPI void COINLINKAGE Cbc_deleteRows(Cbc_Model * model, int number, const int * which);
00068   COINLIBAPI void COINLINKAGE Cbc_addRows(Cbc_Model * model, int number, const double * rowLower, 
00069                const double * rowUpper,
00070                const int * rowStarts, const int * columns,
00071                const double * elements);
00072 
00074   COINLIBAPI void COINLINKAGE Cbc_deleteColumns(Cbc_Model * model, int number, const int * which);
00076   COINLIBAPI void COINLINKAGE Cbc_addColumns(Cbc_Model * model, int number, const double * columnLower, 
00077                   const double * columnUpper,
00078                   const double * objective,
00079                   const int * columnStarts, const int * rows,
00080                   const double * elements);
00082   COINLIBAPI void COINLINKAGE Cbc_dropNames(Cbc_Model * model);
00084   COINLIBAPI void COINLINKAGE Cbc_copyNames(Cbc_Model * model, const char * const * rowNames,
00085                  const char * const * columnNames);
00086   
00091   COINLIBAPI int COINLINKAGE Cbc_numberRows(Cbc_Model * model);
00093   COINLIBAPI int COINLINKAGE Cbc_numberColumns(Cbc_Model * model);
00095   COINLIBAPI double COINLINKAGE Cbc_primalTolerance(Cbc_Model * model);
00096   COINLIBAPI void COINLINKAGE Cbc_setPrimalTolerance(Cbc_Model * model,  double value) ;
00098   COINLIBAPI double COINLINKAGE Cbc_dualTolerance(Cbc_Model * model);
00099   COINLIBAPI void COINLINKAGE Cbc_setDualTolerance(Cbc_Model * model,  double value) ;
00100   /* Integer tolerance to use */
00101   COINLIBAPI double COINLINKAGE Cbc_integerTolerance(Cbc_Model * model);
00102   COINLIBAPI void COINLINKAGE Cbc_setIntegerTolerance(Cbc_Model * model,  double value);
00104   COINLIBAPI double COINLINKAGE Cbc_dualObjectiveLimit(Cbc_Model * model);
00105   COINLIBAPI void COINLINKAGE Cbc_setDualObjectiveLimit(Cbc_Model * model, double value);
00107   COINLIBAPI double COINLINKAGE Cbc_objectiveOffset(Cbc_Model * model);
00108   COINLIBAPI void COINLINKAGE Cbc_setObjectiveOffset(Cbc_Model * model, double value);
00110   COINLIBAPI void COINLINKAGE Cbc_problemName(Cbc_Model * model, int maxNumberCharacters, char * array);
00112   COINLIBAPI int COINLINKAGE 
00113   Cbc_setProblemName(Cbc_Model * model, int maxNumberCharacters, char * array);
00115   COINLIBAPI int COINLINKAGE Cbc_numberIterations(Cbc_Model * model);
00116   COINLIBAPI void COINLINKAGE Cbc_setNumberIterations(Cbc_Model * model, int numberIterations);
00118   COINLIBAPI int Cbc_maximumIterations(Cbc_Model * model);
00119   COINLIBAPI void COINLINKAGE Cbc_setMaximumIterations(Cbc_Model * model, int value);
00121   COINLIBAPI double COINLINKAGE Cbc_maximumSeconds(Cbc_Model * model);
00122   COINLIBAPI void COINLINKAGE Cbc_setMaximumSeconds(Cbc_Model * model, double value);
00124   COINLIBAPI int COINLINKAGE Cbc_hitMaximumIterations(Cbc_Model * model);
00132   COINLIBAPI int COINLINKAGE Cbc_LPstatus(Cbc_Model * model);
00134   COINLIBAPI void COINLINKAGE Cbc_setProblemLPStatus(Cbc_Model * model, int problemStatus);
00142   COINLIBAPI int COINLINKAGE Cbc_secondaryLPStatus(Cbc_Model * model);
00143   COINLIBAPI void COINLINKAGE Cbc_setSecondaryLPStatus(Cbc_Model * model, int status);
00153   COINLIBAPI int COINLINKAGE Cbc_status(Cbc_Model * model);
00155   COINLIBAPI void COINLINKAGE Cbc_setProblemStatus(Cbc_Model * model, int problemStatus);
00167   COINLIBAPI int COINLINKAGE Cbc_secondaryStatus(Cbc_Model * model);
00168   COINLIBAPI void COINLINKAGE Cbc_setSecondaryStatus(Cbc_Model * model, int status);
00170   COINLIBAPI double COINLINKAGE Cbc_optimizationDirection(Cbc_Model * model);
00171   COINLIBAPI void COINLINKAGE Cbc_setOptimizationDirection(Cbc_Model * model, double value);
00173   COINLIBAPI double * COINLINKAGE Cbc_primalRowSolution(Cbc_Model * model);
00175   COINLIBAPI double * COINLINKAGE Cbc_primalColumnSolution(Cbc_Model * model);
00177   COINLIBAPI double * COINLINKAGE Cbc_dualRowSolution(Cbc_Model * model);
00179   COINLIBAPI double * COINLINKAGE Cbc_dualColumnSolution(Cbc_Model * model);
00181   COINLIBAPI double* COINLINKAGE Cbc_rowLower(Cbc_Model * model);
00183   COINLIBAPI double* COINLINKAGE Cbc_rowUpper(Cbc_Model * model);
00185   COINLIBAPI double * COINLINKAGE Cbc_objective(Cbc_Model * model);            
00187   COINLIBAPI double * COINLINKAGE Cbc_columnLower(Cbc_Model * model);
00189   COINLIBAPI double * COINLINKAGE Cbc_columnUpper(Cbc_Model * model);
00191   COINLIBAPI int COINLINKAGE Cbc_getNumElements(Cbc_Model * model);
00193   COINLIBAPI const CoinBigIndex * COINLINKAGE Cbc_getVectorStarts(Cbc_Model * model); 
00195   COINLIBAPI const int * COINLINKAGE Cbc_getIndices(Cbc_Model * model); 
00197   COINLIBAPI const int * COINLINKAGE Cbc_getVectorLengths(Cbc_Model * model); 
00199   COINLIBAPI const double * COINLINKAGE Cbc_getElements(Cbc_Model * model); 
00201   COINLIBAPI double COINLINKAGE Cbc_objectiveValue(Cbc_Model * model);
00203   COINLIBAPI char * COINLINKAGE Cbc_integerInformation(Cbc_Model * model);
00206   COINLIBAPI double * COINLINKAGE Cbc_infeasibilityRay(Cbc_Model * model);
00207   COINLIBAPI double * COINLINKAGE Cbc_unboundedRay(Cbc_Model * model);
00209   COINLIBAPI int COINLINKAGE Cbc_statusExists(Cbc_Model * model);
00211   COINLIBAPI void  COINLINKAGE Cbc_getBasisStatus(Cbc_Model * model, int * cstat, int * rstat);
00213   COINLIBAPI void COINLINKAGE setBasisStatus(Cbc_Model * model, int * cstat, int * rstat);
00214   
00216   COINLIBAPI void COINLINKAGE Cbc_setUserPointer (Cbc_Model * model, void * pointer);
00217   COINLIBAPI void * COINLINKAGE Cbc_getUserPointer (Cbc_Model * model);
00223   COINLIBAPI void COINLINKAGE Cbc_registerCallBack(Cbc_Model * model, 
00224                                                    cbc_callback userCallBack);
00226   COINLIBAPI void COINLINKAGE Cbc_clearCallBack(Cbc_Model * model);
00235   COINLIBAPI void COINLINKAGE Cbc_setLogLevel(Cbc_Model * model, int value);
00236   COINLIBAPI int COINLINKAGE Cbc_logLevel(Cbc_Model * model);
00238   COINLIBAPI int COINLINKAGE Cbc_lengthNames(Cbc_Model * model);
00240   COINLIBAPI void COINLINKAGE Cbc_rowName(Cbc_Model * model, int iRow, char * name);
00242   COINLIBAPI void COINLINKAGE Cbc_columnName(Cbc_Model * model, int iColumn, char * name);
00243 
00252   COINLIBAPI int COINLINKAGE Cbc_initialSolve(Cbc_Model * model);
00253   /* General solve algorithm which can do presolve.
00254      See  CbcModel.hpp for options
00255   */
00256   COINLIBAPI int COINLINKAGE Cbc_branchAndBound(Cbc_Model * model);
00258   COINLIBAPI int COINLINKAGE Cbc_initialDualSolve(Cbc_Model * model);
00260   COINLIBAPI int COINLINKAGE Cbc_initialPrimalSolve(Cbc_Model * model);
00262   COINLIBAPI int COINLINKAGE Cbc_dual(Cbc_Model * model, int ifValuesPass);
00264   COINLIBAPI int COINLINKAGE Cbc_primal(Cbc_Model * model, int ifValuesPass);
00266   COINLIBAPI void COINLINKAGE Cbc_scaling(Cbc_Model * model, int mode);
00268   COINLIBAPI int COINLINKAGE Cbc_scalingFlag(Cbc_Model * model);
00283   COINLIBAPI int COINLINKAGE Cbc_crash(Cbc_Model * model, double gap,int pivot);
00290   COINLIBAPI int COINLINKAGE Cbc_primalFeasible(Cbc_Model * model);
00292   COINLIBAPI int COINLINKAGE Cbc_dualFeasible(Cbc_Model * model);
00294   COINLIBAPI double COINLINKAGE Cbc_dualBound(Cbc_Model * model);
00295   COINLIBAPI void COINLINKAGE Cbc_setDualBound(Cbc_Model * model, double value);
00297   COINLIBAPI double COINLINKAGE Cbc_infeasibilityCost(Cbc_Model * model);
00298   COINLIBAPI void COINLINKAGE Cbc_setInfeasibilityCost(Cbc_Model * model, double value);
00307   COINLIBAPI int COINLINKAGE Cbc_perturbation(Cbc_Model * model);
00308   COINLIBAPI void COINLINKAGE Cbc_setPerturbation(Cbc_Model * model, int value);
00310   COINLIBAPI int COINLINKAGE Cbc_algorithm(Cbc_Model * model); 
00312   COINLIBAPI void COINLINKAGE Cbc_setAlgorithm(Cbc_Model * model, int value);
00314   COINLIBAPI double COINLINKAGE Cbc_sumDualInfeasibilities(Cbc_Model * model); 
00316   COINLIBAPI int COINLINKAGE Cbc_numberDualInfeasibilities(Cbc_Model * model); 
00318   COINLIBAPI double COINLINKAGE Cbc_sumPrimalInfeasibilities(Cbc_Model * model); 
00320   COINLIBAPI int COINLINKAGE Cbc_numberPrimalInfeasibilities(Cbc_Model * model); 
00327   COINLIBAPI int COINLINKAGE Cbc_saveModel(Cbc_Model * model, const char * fileName);
00330   COINLIBAPI int COINLINKAGE Cbc_restoreModel(Cbc_Model * model, const char * fileName);
00331   
00334   COINLIBAPI void COINLINKAGE Cbc_checkSolution(Cbc_Model * model);
00337   /******************** End of most useful part **************/
00341   COINLIBAPI int COINLINKAGE Cbc_getNumRows(Cbc_Model * model);
00343   COINLIBAPI int COINLINKAGE Cbc_getNumCols(Cbc_Model * model);
00345   COINLIBAPI int COINLINKAGE Cbc_getIterationCount(Cbc_Model * model);
00347   COINLIBAPI int COINLINKAGE Cbc_isAbandoned(Cbc_Model * model);
00349   COINLIBAPI int COINLINKAGE Cbc_isProvenOptimal(Cbc_Model * model);
00351   COINLIBAPI int COINLINKAGE Cbc_isProvenPrimalInfeasible(Cbc_Model * model);
00353   COINLIBAPI int COINLINKAGE Cbc_isProvenDualInfeasible(Cbc_Model * model);
00355   COINLIBAPI int COINLINKAGE Cbc_isPrimalObjectiveLimitReached(Cbc_Model * model) ;
00357   COINLIBAPI int COINLINKAGE Cbc_isDualObjectiveLimitReached(Cbc_Model * model) ;
00359   COINLIBAPI int COINLINKAGE Cbc_isIterationLimitReached(Cbc_Model * model);
00361   COINLIBAPI double COINLINKAGE Cbc_getObjSense(Cbc_Model * model);
00363   COINLIBAPI const double * COINLINKAGE Cbc_getRowActivity(Cbc_Model * model);
00365   COINLIBAPI const double * COINLINKAGE Cbc_getColSolution(Cbc_Model * model);
00366   COINLIBAPI void COINLINKAGE Cbc_setColSolution(Cbc_Model * model, const double * input);
00368   COINLIBAPI const double * COINLINKAGE Cbc_getRowPrice(Cbc_Model * model);
00370   COINLIBAPI const double * COINLINKAGE Cbc_getReducedCost(Cbc_Model * model);
00372   COINLIBAPI const double* COINLINKAGE Cbc_getRowLower(Cbc_Model * model);
00374   COINLIBAPI const double* COINLINKAGE Cbc_getRowUpper(Cbc_Model * model);
00376   COINLIBAPI const double * COINLINKAGE Cbc_getObjCoefficients(Cbc_Model * model); 
00378   COINLIBAPI const double * COINLINKAGE Cbc_getColLower(Cbc_Model * model);
00380   COINLIBAPI const double * COINLINKAGE Cbc_getColUpper(Cbc_Model * model);
00382   COINLIBAPI double COINLINKAGE Cbc_getObjValue(Cbc_Model * model);
00384   COINLIBAPI void COINLINKAGE Cbc_printModel(Cbc_Model * model, const char * prefix);
00386   COINLIBAPI int COINLINKAGE Cbc_isInteger(Cbc_Model * model, int i);
00388   COINLIBAPI double COINLINKAGE Cbc_cpuTime(Cbc_Model * model);
00390   COINLIBAPI int COINLINKAGE Cbc_getNodeCount(Cbc_Model * model);
00392   COINLIBAPI Cbc_Model * COINLINKAGE Cbc_clone(Cbc_Model * model);
00394   COINLIBAPI Cbc_Model * COINLINKAGE Cbc_setContinuous(Cbc_Model * model, int iColumn);
00395   /* Add an SOS constraint to the model */
00396   COINLIBAPI void  COINLINKAGE Cbc_addSOS(Cbc_Model * model, int numberMembers,
00397              const int * which, const double * weights, int identifier, int type);
00398   /* Delete all object information */
00399   COINLIBAPI void  COINLINKAGE Cbc_deleteObjects(Cbc_Model * model);
00400   /* Print the solution */
00401   COINLIBAPI void  COINLINKAGE Cbc_printSolution(Cbc_Model * model);
00403 #ifdef __cplusplus
00404           }
00405 #endif
00406 #endif

Generated on Thu May 15 22:04:41 2008 by  doxygen 1.4.7