/home/coin/SVN-release/Cbc-1.1.1/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_status(Cbc_Model * model);
00134   COINLIBAPI void COINLINKAGE Cbc_setProblemStatus(Cbc_Model * model, int problemStatus);
00142   COINLIBAPI int COINLINKAGE Cbc_secondaryStatus(Cbc_Model * model);
00143   COINLIBAPI void COINLINKAGE Cbc_setSecondaryStatus(Cbc_Model * model, int status);
00145   COINLIBAPI double COINLINKAGE Cbc_optimizationDirection(Cbc_Model * model);
00146   COINLIBAPI void COINLINKAGE Cbc_setOptimizationDirection(Cbc_Model * model, double value);
00148   COINLIBAPI double * COINLINKAGE Cbc_primalRowSolution(Cbc_Model * model);
00150   COINLIBAPI double * COINLINKAGE Cbc_primalColumnSolution(Cbc_Model * model);
00152   COINLIBAPI double * COINLINKAGE Cbc_dualRowSolution(Cbc_Model * model);
00154   COINLIBAPI double * COINLINKAGE Cbc_dualColumnSolution(Cbc_Model * model);
00156   COINLIBAPI double* COINLINKAGE Cbc_rowLower(Cbc_Model * model);
00158   COINLIBAPI double* COINLINKAGE Cbc_rowUpper(Cbc_Model * model);
00160   COINLIBAPI double * COINLINKAGE Cbc_objective(Cbc_Model * model);            
00162   COINLIBAPI double * COINLINKAGE Cbc_columnLower(Cbc_Model * model);
00164   COINLIBAPI double * COINLINKAGE Cbc_columnUpper(Cbc_Model * model);
00166   COINLIBAPI int COINLINKAGE Cbc_getNumElements(Cbc_Model * model);
00168   COINLIBAPI const CoinBigIndex * COINLINKAGE Cbc_getVectorStarts(Cbc_Model * model); 
00170   COINLIBAPI const int * COINLINKAGE Cbc_getIndices(Cbc_Model * model); 
00172   COINLIBAPI const int * COINLINKAGE Cbc_getVectorLengths(Cbc_Model * model); 
00174   COINLIBAPI const double * COINLINKAGE Cbc_getElements(Cbc_Model * model); 
00176   COINLIBAPI double COINLINKAGE Cbc_objectiveValue(Cbc_Model * model);
00178   COINLIBAPI char * COINLINKAGE Cbc_integerInformation(Cbc_Model * model);
00181   COINLIBAPI double * COINLINKAGE Cbc_infeasibilityRay(Cbc_Model * model);
00182   COINLIBAPI double * COINLINKAGE Cbc_unboundedRay(Cbc_Model * model);
00184   COINLIBAPI int COINLINKAGE Cbc_statusExists(Cbc_Model * model);
00186   COINLIBAPI void  COINLINKAGE Cbc_getBasisStatus(Cbc_Model * model, int * cstat, int * rstat);
00188   COINLIBAPI void COINLINKAGE setBasisStatus(Cbc_Model * model, int * cstat, int * rstat);
00189   
00191   COINLIBAPI void COINLINKAGE Cbc_setUserPointer (Cbc_Model * model, void * pointer);
00192   COINLIBAPI void * COINLINKAGE Cbc_getUserPointer (Cbc_Model * model);
00198   COINLIBAPI void COINLINKAGE Cbc_registerCallBack(Cbc_Model * model, 
00199                                                    cbc_callback userCallBack);
00201   COINLIBAPI void COINLINKAGE Cbc_clearCallBack(Cbc_Model * model);
00210   COINLIBAPI void COINLINKAGE Cbc_setLogLevel(Cbc_Model * model, int value);
00211   COINLIBAPI int COINLINKAGE Cbc_logLevel(Cbc_Model * model);
00213   COINLIBAPI int COINLINKAGE Cbc_lengthNames(Cbc_Model * model);
00215   COINLIBAPI void COINLINKAGE Cbc_rowName(Cbc_Model * model, int iRow, char * name);
00217   COINLIBAPI void COINLINKAGE Cbc_columnName(Cbc_Model * model, int iColumn, char * name);
00218 
00227   COINLIBAPI int COINLINKAGE Cbc_initialSolve(Cbc_Model * model);
00228   /* General solve algorithm which can do presolve.
00229      See  CbcModel.hpp for options
00230   */
00231   COINLIBAPI int COINLINKAGE Cbc_branchAndBound(Cbc_Model * model);
00233   COINLIBAPI int COINLINKAGE Cbc_initialDualSolve(Cbc_Model * model);
00235   COINLIBAPI int COINLINKAGE Cbc_initialPrimalSolve(Cbc_Model * model);
00237   COINLIBAPI int COINLINKAGE Cbc_dual(Cbc_Model * model, int ifValuesPass);
00239   COINLIBAPI int COINLINKAGE Cbc_primal(Cbc_Model * model, int ifValuesPass);
00241   COINLIBAPI void COINLINKAGE Cbc_scaling(Cbc_Model * model, int mode);
00243   COINLIBAPI int COINLINKAGE Cbc_scalingFlag(Cbc_Model * model);
00258   COINLIBAPI int COINLINKAGE Cbc_crash(Cbc_Model * model, double gap,int pivot);
00265   COINLIBAPI int COINLINKAGE Cbc_primalFeasible(Cbc_Model * model);
00267   COINLIBAPI int COINLINKAGE Cbc_dualFeasible(Cbc_Model * model);
00269   COINLIBAPI double COINLINKAGE Cbc_dualBound(Cbc_Model * model);
00270   COINLIBAPI void COINLINKAGE Cbc_setDualBound(Cbc_Model * model, double value);
00272   COINLIBAPI double COINLINKAGE Cbc_infeasibilityCost(Cbc_Model * model);
00273   COINLIBAPI void COINLINKAGE Cbc_setInfeasibilityCost(Cbc_Model * model, double value);
00282   COINLIBAPI int COINLINKAGE Cbc_perturbation(Cbc_Model * model);
00283   COINLIBAPI void COINLINKAGE Cbc_setPerturbation(Cbc_Model * model, int value);
00285   COINLIBAPI int COINLINKAGE Cbc_algorithm(Cbc_Model * model); 
00287   COINLIBAPI void COINLINKAGE Cbc_setAlgorithm(Cbc_Model * model, int value);
00289   COINLIBAPI double COINLINKAGE Cbc_sumDualInfeasibilities(Cbc_Model * model); 
00291   COINLIBAPI int COINLINKAGE Cbc_numberDualInfeasibilities(Cbc_Model * model); 
00293   COINLIBAPI double COINLINKAGE Cbc_sumPrimalInfeasibilities(Cbc_Model * model); 
00295   COINLIBAPI int COINLINKAGE Cbc_numberPrimalInfeasibilities(Cbc_Model * model); 
00302   COINLIBAPI int COINLINKAGE Cbc_saveModel(Cbc_Model * model, const char * fileName);
00305   COINLIBAPI int COINLINKAGE Cbc_restoreModel(Cbc_Model * model, const char * fileName);
00306   
00309   COINLIBAPI void COINLINKAGE Cbc_checkSolution(Cbc_Model * model);
00312   /******************** End of most useful part **************/
00316   COINLIBAPI int COINLINKAGE Cbc_getNumRows(Cbc_Model * model);
00318   COINLIBAPI int COINLINKAGE Cbc_getNumCols(Cbc_Model * model);
00320   COINLIBAPI int COINLINKAGE Cbc_getIterationCount(Cbc_Model * model);
00322   COINLIBAPI int COINLINKAGE Cbc_isAbandoned(Cbc_Model * model);
00324   COINLIBAPI int COINLINKAGE Cbc_isProvenOptimal(Cbc_Model * model);
00326   COINLIBAPI int COINLINKAGE Cbc_isProvenPrimalInfeasible(Cbc_Model * model);
00328   COINLIBAPI int COINLINKAGE Cbc_isProvenDualInfeasible(Cbc_Model * model);
00330   COINLIBAPI int COINLINKAGE Cbc_isPrimalObjectiveLimitReached(Cbc_Model * model) ;
00332   COINLIBAPI int COINLINKAGE Cbc_isDualObjectiveLimitReached(Cbc_Model * model) ;
00334   COINLIBAPI int COINLINKAGE Cbc_isIterationLimitReached(Cbc_Model * model);
00336   COINLIBAPI double COINLINKAGE Cbc_getObjSense(Cbc_Model * model);
00338   COINLIBAPI const double * COINLINKAGE Cbc_getRowActivity(Cbc_Model * model);
00340   COINLIBAPI const double * COINLINKAGE Cbc_getColSolution(Cbc_Model * model);
00341   COINLIBAPI void COINLINKAGE Cbc_setColSolution(Cbc_Model * model, const double * input);
00343   COINLIBAPI const double * COINLINKAGE Cbc_getRowPrice(Cbc_Model * model);
00345   COINLIBAPI const double * COINLINKAGE Cbc_getReducedCost(Cbc_Model * model);
00347   COINLIBAPI const double* COINLINKAGE Cbc_getRowLower(Cbc_Model * model);
00349   COINLIBAPI const double* COINLINKAGE Cbc_getRowUpper(Cbc_Model * model);
00351   COINLIBAPI const double * COINLINKAGE Cbc_getObjCoefficients(Cbc_Model * model); 
00353   COINLIBAPI const double * COINLINKAGE Cbc_getColLower(Cbc_Model * model);
00355   COINLIBAPI const double * COINLINKAGE Cbc_getColUpper(Cbc_Model * model);
00357   COINLIBAPI double COINLINKAGE Cbc_getObjValue(Cbc_Model * model);
00359   COINLIBAPI void COINLINKAGE Cbc_printModel(Cbc_Model * model, const char * prefix);
00361   COINLIBAPI int COINLINKAGE Cbc_isInteger(Cbc_Model * model, int i);
00363   COINLIBAPI double COINLINKAGE Cbc_cpuTime(Cbc_Model * model);
00365   COINLIBAPI int COINLINKAGE Cbc_getNodeCount(Cbc_Model * model);
00367   COINLIBAPI Cbc_Model * COINLINKAGE Cbc_clone(Cbc_Model * model);
00369   COINLIBAPI Cbc_Model * COINLINKAGE Cbc_setContinuous(Cbc_Model * model, int iColumn);
00370   /* Add an SOS constraint to the model */
00371   COINLIBAPI void  COINLINKAGE Cbc_addSOS(Cbc_Model * model, int numberMembers,
00372              const int * which, const double * weights, int identifier, int type);
00373   /* Delete all object information */
00374   COINLIBAPI void  COINLINKAGE Cbc_deleteObjects(Cbc_Model * model);
00375   /* Print the solution */
00376   COINLIBAPI void  COINLINKAGE Cbc_printSolution(Cbc_Model * model);
00378 #ifdef __cplusplus
00379           }
00380 #endif
00381 #endif

Generated on Thu May 15 21:59:04 2008 by  doxygen 1.4.7