Cbc
trunk
|
00001 /* $Id$ */ 00002 /* 00003 Copyright (C) 2004 International Business Machines Corporation and others. 00004 All Rights Reserved. 00005 00006 This code is licensed under the terms of the Eclipse Public License (EPL). 00007 */ 00008 #ifndef CbcModelC_H 00009 #define CbcModelC_H 00010 00011 /* include all defines and ugly stuff */ 00012 #include "Coin_C_defines.h" 00013 00019 #ifdef __cplusplus 00020 extern "C" { 00021 #endif 00022 00032 00034 COINLIBAPI double COINLINKAGE Cbc_getVersion() 00035 ; 00037 COINLIBAPI Cbc_Model * COINLINKAGE 00038 Cbc_newModel() 00039 ; 00041 COINLIBAPI void COINLINKAGE 00042 Cbc_deleteModel(Cbc_Model * model) 00043 ; 00048 /* Loads a problem (the constraints on the 00049 rows are given by lower and upper bounds). If a pointer is NULL then the 00050 following values are the default: 00051 <ul> 00052 <li> <code>colub</code>: all columns have upper bound infinity 00053 <li> <code>collb</code>: all columns have lower bound 0 00054 <li> <code>rowub</code>: all rows have upper bound infinity 00055 <li> <code>rowlb</code>: all rows have lower bound -infinity 00056 <li> <code>obj</code>: all variables have 0 objective coefficient 00057 </ul> 00058 00059 Just like the other loadProblem() method except that the matrix is 00060 given in a standard column major ordered format (without gaps). 00061 */ 00062 COINLIBAPI void COINLINKAGE 00063 Cbc_loadProblem (Cbc_Model * model, const int numcols, const int numrows, 00064 const CoinBigIndex * start, const int* index, 00065 const double* value, 00066 const double* collb, const double* colub, 00067 const double* obj, 00068 const double* rowlb, const double* rowub) 00069 ; 00071 COINLIBAPI int COINLINKAGE 00072 Cbc_readMps(Cbc_Model * model, const char *filename) 00073 ; 00075 COINLIBAPI void COINLINKAGE 00076 Cbc_writeMps(Cbc_Model * model, const char *filename) 00077 ; 00079 COINLIBAPI char * COINLINKAGE 00080 Cbc_integerInformation(Cbc_Model * model) 00081 ; 00083 COINLIBAPI void COINLINKAGE 00084 Cbc_copyInIntegerInformation(Cbc_Model * model, const char * information) 00085 ; 00087 COINLIBAPI void COINLINKAGE 00088 Cbc_deleteIntegerInformation(Cbc_Model * model) 00089 ; 00091 COINLIBAPI void COINLINKAGE 00092 Cbc_resize (Cbc_Model * model, int newNumberRows, int newNumberColumns) 00093 ; 00095 COINLIBAPI void COINLINKAGE 00096 Cbc_deleteRows(Cbc_Model * model, int number, const int * which) 00097 ; 00099 COINLIBAPI void COINLINKAGE 00100 Cbc_addRows(Cbc_Model * model, const int number, const double * rowLower, 00101 const double * rowUpper, 00102 const int * rowStarts, const int * columns, 00103 const double * elements) 00104 ; 00105 00107 COINLIBAPI void COINLINKAGE 00108 Cbc_deleteColumns(Cbc_Model * model, int number, const int * which) 00109 ; 00111 COINLIBAPI void COINLINKAGE 00112 Cbc_addColumns(Cbc_Model * model, int number, const double * columnLower, 00113 const double * columnUpper, 00114 const double * objective, 00115 const int * columnStarts, const int * rows, 00116 const double * elements); 00118 COINLIBAPI void COINLINKAGE 00119 Cbc_dropNames(Cbc_Model * model) 00120 ; 00122 COINLIBAPI void COINLINKAGE 00123 Cbc_copyNames(Cbc_Model * model, const char * const * rowNamesIn, 00124 const char * const * columnNamesIn) 00125 ; 00126 00131 COINLIBAPI int COINLINKAGE 00132 Cbc_numberRows(Cbc_Model * model) 00133 ; 00135 COINLIBAPI int COINLINKAGE 00136 Cbc_numberColumns(Cbc_Model * model) 00137 ; 00139 COINLIBAPI double COINLINKAGE 00140 Cbc_primalTolerance(Cbc_Model * model) 00141 ; 00142 COINLIBAPI void COINLINKAGE 00143 Cbc_setPrimalTolerance(Cbc_Model * model, double value) 00144 ; 00146 COINLIBAPI double COINLINKAGE 00147 Cbc_dualTolerance(Cbc_Model * model) 00148 ; 00149 COINLIBAPI void COINLINKAGE 00150 Cbc_setDualTolerance(Cbc_Model * model, double value) 00151 ; 00152 /* Integer tolerance to use */ 00153 COINLIBAPI double COINLINKAGE 00154 Cbc_integerTolerance(Cbc_Model * model) 00155 ; 00156 COINLIBAPI void COINLINKAGE 00157 Cbc_setIntegerTolerance(Cbc_Model * model, double value) 00158 ; 00160 COINLIBAPI double COINLINKAGE 00161 Cbc_dualObjectiveLimit(Cbc_Model * model) 00162 ; 00163 COINLIBAPI void COINLINKAGE 00164 Cbc_setDualObjectiveLimit(Cbc_Model * model, double value) 00165 ; 00167 COINLIBAPI double COINLINKAGE 00168 Cbc_objectiveOffset(Cbc_Model * model) 00169 ; 00170 COINLIBAPI void COINLINKAGE 00171 Cbc_setObjectiveOffset(Cbc_Model * model, double value) 00172 ; 00174 COINLIBAPI void COINLINKAGE 00175 Cbc_problemName(Cbc_Model * model, int maxNumberCharacters, char * array) 00176 ; 00181 COINLIBAPI int COINLINKAGE 00182 Cbc_setProblemName(Cbc_Model * model, int maxNumberCharacters, char * array) 00183 ; 00185 COINLIBAPI int COINLINKAGE 00186 Cbc_numberIterations(Cbc_Model * model) 00187 ; 00188 COINLIBAPI void COINLINKAGE 00189 Cbc_setNumberIterations(Cbc_Model * model, int numberIterations) 00190 ; 00192 COINLIBAPI int COINLINKAGE 00193 Cbc_maximumIterations(Cbc_Model * model) 00194 ; 00195 COINLIBAPI void COINLINKAGE 00196 Cbc_setMaximumIterations(Cbc_Model * model, int value) 00197 ; 00199 COINLIBAPI int COINLINKAGE 00200 Cbc_maxNumNode(Cbc_Model * model) 00201 ; 00202 COINLIBAPI void COINLINKAGE 00203 Cbc_setMaxNumNode(Cbc_Model * model, int value) 00204 ; 00205 /* Maximum number of solutions */ 00206 COINLIBAPI int COINLINKAGE 00207 Cbc_maxNumSol(Cbc_Model * model) 00208 ; 00209 COINLIBAPI void COINLINKAGE 00210 Cbc_setMaxNumSol(Cbc_Model * model, int value) 00211 ; 00213 COINLIBAPI double COINLINKAGE 00214 Cbc_maximumSeconds(Cbc_Model * model) 00215 ; 00216 COINLIBAPI void COINLINKAGE 00217 Cbc_setMaximumSeconds(Cbc_Model * model, double value) 00218 ; 00220 COINLIBAPI int COINLINKAGE 00221 Cbc_hitMaximumIterations(Cbc_Model * model) 00222 ; 00230 COINLIBAPI int COINLINKAGE 00231 Cbc_status(Cbc_Model * model) 00232 ; 00234 COINLIBAPI void COINLINKAGE 00235 Cbc_setProblemStatus(Cbc_Model * model, int problemStatus) 00236 ; 00244 COINLIBAPI int COINLINKAGE 00245 Cbc_secondaryStatus(Cbc_Model * model) 00246 ; 00247 COINLIBAPI void COINLINKAGE 00248 Cbc_setSecondaryStatus(Cbc_Model * model, int status) 00249 ; 00251 COINLIBAPI double COINLINKAGE 00252 Cbc_optimizationDirection(Cbc_Model * model) 00253 ; 00254 COINLIBAPI void COINLINKAGE 00255 Cbc_setOptimizationDirection(Cbc_Model * model, double value) 00256 ; 00258 COINLIBAPI double * COINLINKAGE 00259 Cbc_primalRowSolution(Cbc_Model * model) 00260 ; 00262 COINLIBAPI double * COINLINKAGE 00263 Cbc_primalColumnSolution(Cbc_Model * model) 00264 ; 00266 COINLIBAPI double * COINLINKAGE 00267 Cbc_dualRowSolution(Cbc_Model * model) 00268 ; 00270 COINLIBAPI double * COINLINKAGE 00271 Cbc_dualColumnSolution(Cbc_Model * model) 00272 ; 00274 COINLIBAPI double* COINLINKAGE 00275 Cbc_rowLower(Cbc_Model * model) 00276 ; 00278 COINLIBAPI double* COINLINKAGE 00279 Cbc_rowUpper(Cbc_Model * model) 00280 ; 00282 COINLIBAPI double * COINLINKAGE 00283 Cbc_objective(Cbc_Model * model) 00284 ; 00286 COINLIBAPI double * COINLINKAGE 00287 Cbc_columnLower(Cbc_Model * model) 00288 ; 00290 COINLIBAPI double * COINLINKAGE 00291 Cbc_columnUpper(Cbc_Model * model) 00292 ; 00294 COINLIBAPI int COINLINKAGE 00295 Cbc_getNumElements(Cbc_Model * model) 00296 ; 00298 COINLIBAPI const CoinBigIndex * COINLINKAGE 00299 Cbc_getVectorStarts(Cbc_Model * model) 00300 ; 00302 COINLIBAPI const int * COINLINKAGE 00303 Cbc_getIndices(Cbc_Model * model) 00304 ; 00306 COINLIBAPI const int * COINLINKAGE 00307 Cbc_getVectorLengths(Cbc_Model * model) 00308 ; 00310 COINLIBAPI const double * COINLINKAGE 00311 Cbc_getElements(Cbc_Model * model) 00312 ; 00314 COINLIBAPI double COINLINKAGE 00315 Cbc_objectiveValue(Cbc_Model * model) 00316 ; 00319 COINLIBAPI double * COINLINKAGE 00320 Cbc_infeasibilityRay(Cbc_Model * model) 00321 ; 00322 COINLIBAPI double * COINLINKAGE 00323 Cbc_unboundedRay(Cbc_Model * model) 00324 ; 00326 COINLIBAPI int COINLINKAGE 00327 Cbc_statusExists(Cbc_Model * model) 00328 ; 00330 COINLIBAPI void COINLINKAGE 00331 Cbc_getBasisStatus(Cbc_Model * model, int * cstat, int * rstat) 00332 ; 00334 COINLIBAPI void COINLINKAGE 00335 Cbc_setBasisStatus(Cbc_Model * model, int * cstat, int * rstat) 00336 ; 00337 00339 COINLIBAPI void COINLINKAGE 00340 Cbc_setUserPointer (Cbc_Model * model, void * pointer) 00341 ; 00342 COINLIBAPI void * COINLINKAGE 00343 Cbc_getUserPointer (Cbc_Model * model) 00344 ; 00350 COINLIBAPI void COINLINKAGE 00351 Cbc_registerCallBack(Cbc_Model * model, 00352 cbc_callback userCallBack) 00353 ; 00355 COINLIBAPI void COINLINKAGE 00356 Cbc_clearCallBack(Cbc_Model * model) 00357 ; 00366 COINLIBAPI void COINLINKAGE 00367 Cbc_setLogLevel(Cbc_Model * model, int value) 00368 ; 00369 COINLIBAPI int COINLINKAGE 00370 Cbc_logLevel(Cbc_Model * model) 00371 ; 00373 COINLIBAPI int COINLINKAGE 00374 Cbc_lengthNames(Cbc_Model * model) 00375 ; 00377 COINLIBAPI void COINLINKAGE 00378 Cbc_rowName(Cbc_Model * model, int iRow, char * name) 00379 ; 00381 COINLIBAPI void COINLINKAGE 00382 Cbc_columnName(Cbc_Model * model, int iColumn, char * name) 00383 ; 00384 00393 COINLIBAPI int COINLINKAGE 00394 Cbc_initialSolve(Cbc_Model * model) 00395 ; 00396 /* General solve algorithm which can do presolve. 00397 See CbcModel.hpp for options 00398 */ 00399 COINLIBAPI int COINLINKAGE 00400 Cbc_branchAndBound(Cbc_Model * model) 00401 ; 00403 COINLIBAPI void COINLINKAGE 00404 Cbc_scaling(Cbc_Model * model, int mode) 00405 ; 00407 COINLIBAPI int COINLINKAGE 00408 Cbc_scalingFlag(Cbc_Model * model) 00409 ; 00424 COINLIBAPI int COINLINKAGE 00425 Cbc_crash(Cbc_Model * model, double gap, int pivot) 00426 ; 00433 COINLIBAPI int COINLINKAGE 00434 Cbc_primalFeasible(Cbc_Model * model) 00435 ; 00437 COINLIBAPI int COINLINKAGE 00438 Cbc_dualFeasible(Cbc_Model * model) 00439 ; 00441 COINLIBAPI double COINLINKAGE 00442 Cbc_dualBound(Cbc_Model * model) 00443 ; 00444 COINLIBAPI void COINLINKAGE 00445 Cbc_setDualBound(Cbc_Model * model, double value) 00446 ; 00448 COINLIBAPI double COINLINKAGE 00449 Cbc_infeasibilityCost(Cbc_Model * model) 00450 ; 00451 COINLIBAPI void COINLINKAGE 00452 Cbc_setInfeasibilityCost(Cbc_Model * model, double value) 00453 ; 00462 COINLIBAPI int COINLINKAGE 00463 Cbc_perturbation(Cbc_Model * model) 00464 ; 00465 COINLIBAPI void COINLINKAGE 00466 Cbc_setPerturbation(Cbc_Model * model, int value) 00467 ; 00469 COINLIBAPI int COINLINKAGE 00470 Cbc_algorithm(Cbc_Model * model) 00471 ; 00473 COINLIBAPI void COINLINKAGE 00474 Cbc_setAlgorithm(Cbc_Model * model, int value) 00475 ; 00477 COINLIBAPI double COINLINKAGE 00478 Cbc_sumDualInfeasibilities(Cbc_Model * model) 00479 ; 00481 COINLIBAPI int COINLINKAGE 00482 Cbc_numberDualInfeasibilities(Cbc_Model * model) 00483 ; 00485 COINLIBAPI double COINLINKAGE 00486 Cbc_sumPrimalInfeasibilities(Cbc_Model * model) 00487 ; 00489 COINLIBAPI int COINLINKAGE 00490 Cbc_numberPrimalInfeasibilities(Cbc_Model * model) 00491 ; 00498 COINLIBAPI int COINLINKAGE 00499 Cbc_saveModel(Cbc_Model * model, const char * fileName) 00500 ; 00503 COINLIBAPI int COINLINKAGE 00504 Cbc_restoreModel(Cbc_Model * model, const char * fileName) 00505 ; 00506 00509 COINLIBAPI void COINLINKAGE 00510 Cbc_checkSolution(Cbc_Model * model) 00511 ; 00514 /******************** End of most useful part **************/ 00518 COINLIBAPI int COINLINKAGE 00519 Cbc_getNumRows(Cbc_Model * model) 00520 ; 00522 COINLIBAPI int COINLINKAGE 00523 Cbc_getNumCols(Cbc_Model * model) 00524 ; 00526 COINLIBAPI int COINLINKAGE 00527 Cbc_getIterationCount(Cbc_Model * model) 00528 ; 00530 COINLIBAPI int COINLINKAGE 00531 Cbc_isAbandoned(Cbc_Model * model) 00532 ; 00534 COINLIBAPI int COINLINKAGE 00535 Cbc_isProvenOptimal(Cbc_Model * model) 00536 ; 00538 COINLIBAPI int COINLINKAGE 00539 Cbc_isProvenPrimalInfeasible(Cbc_Model * model) 00540 ; 00542 COINLIBAPI int COINLINKAGE 00543 Cbc_isProvenDualInfeasible(Cbc_Model * model) 00544 ; 00546 COINLIBAPI int COINLINKAGE 00547 Cbc_isPrimalObjectiveLimitReached(Cbc_Model * model) 00548 ; 00550 COINLIBAPI int COINLINKAGE 00551 Cbc_isDualObjectiveLimitReached(Cbc_Model * model) 00552 ; 00554 COINLIBAPI int COINLINKAGE 00555 Cbc_isIterationLimitReached(Cbc_Model * model) 00556 ; 00558 COINLIBAPI double COINLINKAGE 00559 Cbc_getObjSense(Cbc_Model * model) 00560 ; 00562 COINLIBAPI const double * COINLINKAGE 00563 Cbc_getRowActivity(Cbc_Model * model) 00564 ; 00566 COINLIBAPI const double * COINLINKAGE 00567 Cbc_getColSolution(Cbc_Model * model) 00568 ; 00569 COINLIBAPI void COINLINKAGE 00570 Cbc_setColSolution(Cbc_Model * model, const double * input) 00571 ; 00573 COINLIBAPI const double * COINLINKAGE 00574 Cbc_getRowPrice(Cbc_Model * model) 00575 ; 00577 COINLIBAPI const double * COINLINKAGE 00578 Cbc_getReducedCost(Cbc_Model * model) 00579 ; 00581 COINLIBAPI const double* COINLINKAGE 00582 Cbc_getRowLower(Cbc_Model * model) 00583 ; 00585 COINLIBAPI const double* COINLINKAGE 00586 Cbc_getRowUpper(Cbc_Model * model) 00587 ; 00589 COINLIBAPI const double * COINLINKAGE 00590 Cbc_getObjCoefficients(Cbc_Model * model) 00591 ; 00593 COINLIBAPI const double * COINLINKAGE 00594 Cbc_getColLower(Cbc_Model * model) 00595 ; 00597 COINLIBAPI const double * COINLINKAGE 00598 Cbc_getColUpper(Cbc_Model * model) 00599 ; 00601 COINLIBAPI double COINLINKAGE 00602 Cbc_getObjValue(Cbc_Model * model) 00603 ; 00605 COINLIBAPI void COINLINKAGE 00606 Cbc_printModel(Cbc_Model * model, const char * argPrefix) 00607 ; 00609 COINLIBAPI int COINLINKAGE 00610 Cbc_isInteger(Cbc_Model * model, int i) 00611 ; 00613 COINLIBAPI double COINLINKAGE 00614 Cbc_cpuTime(Cbc_Model * model) 00615 ; 00617 COINLIBAPI int COINLINKAGE 00618 Cbc_getNodeCount(Cbc_Model * model) 00619 ; 00621 COINLIBAPI Cbc_Model * COINLINKAGE 00622 Cbc_clone(Cbc_Model * model) 00623 ; 00625 COINLIBAPI Cbc_Model * COINLINKAGE 00626 Cbc_setContinuous(Cbc_Model * model, int iColumn) 00627 ; 00629 COINLIBAPI void COINLINKAGE 00630 Cbc_addSOS_Dense(Cbc_Model * model, int numObjects, const int * len, 00631 const int ** which, const double * weights, const int type) 00632 ; 00634 COINLIBAPI void COINLINKAGE 00635 Cbc_addSOS_Sparse(Cbc_Model * model, const int * rowStarts, 00636 const int * rowIndices, const double * weights, const int type) 00637 ; 00639 COINLIBAPI void COINLINKAGE 00640 Cbc_deleteObjects(Cbc_Model * model) 00641 ; 00643 COINLIBAPI void COINLINKAGE 00644 Cbc_printSolution(Cbc_Model * model) 00645 ; 00647 COINLIBAPI int COINLINKAGE 00648 Cbc_initialDualSolve(Cbc_Model * model) 00649 ; 00651 COINLIBAPI int COINLINKAGE 00652 Cbc_initialPrimalSolve(Cbc_Model * model) 00653 ; 00655 COINLIBAPI int COINLINKAGE 00656 Cbc_dual(Cbc_Model * model, int ifValuesPass) 00657 ; 00659 COINLIBAPI int COINLINKAGE 00660 Cbc_primal(Cbc_Model * model, int ifValuesPass) 00661 ; 00663 #ifdef __cplusplus 00664 } 00665 #endif 00666 #endif