Cbc_C_Interface.h
Go to the documentation of this file.
1 /* $Id: Cbc_C_Interface.h 1286 2009-11-09 23:33:07Z EdwinStraver $ */
2 /* Copyright (C) 2004 International Business Machines
3  Corporation and others. All Rights Reserved.*/
4 #ifndef CbcModelC_H
5 #define CbcModelC_H
6 
7 /* include all defines and ugly stuff */
8 #include "Coin_C_defines.h"
9 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
28 
30  COINLIBAPI double COINLINKAGE Cbc_getVersion()
31  ;
33  COINLIBAPI Cbc_Model * COINLINKAGE
34  Cbc_newModel()
35  ;
37  COINLIBAPI void COINLINKAGE
38  Cbc_deleteModel(Cbc_Model * model)
39  ;
44  /* Loads a problem (the constraints on the
45  rows are given by lower and upper bounds). If a pointer is NULL then the
46  following values are the default:
47  <ul>
48  <li> <code>colub</code>: all columns have upper bound infinity
49  <li> <code>collb</code>: all columns have lower bound 0
50  <li> <code>rowub</code>: all rows have upper bound infinity
51  <li> <code>rowlb</code>: all rows have lower bound -infinity
52  <li> <code>obj</code>: all variables have 0 objective coefficient
53  </ul>
54 
55  Just like the other loadProblem() method except that the matrix is
56  given in a standard column major ordered format (without gaps).
57  */
58  COINLIBAPI void COINLINKAGE
59  Cbc_loadProblem (Cbc_Model * model, const int numcols, const int numrows,
60  const CoinBigIndex * start, const int* index,
61  const double* value,
62  const double* collb, const double* colub,
63  const double* obj,
64  const double* rowlb, const double* rowub)
65  ;
67  COINLIBAPI int COINLINKAGE
68  Cbc_readMps(Cbc_Model * model, const char *filename)
69  ;
71  COINLIBAPI void COINLINKAGE
72  Cbc_writeMps(Cbc_Model * model, const char *filename)
73  ;
75  COINLIBAPI char * COINLINKAGE
76  Cbc_integerInformation(Cbc_Model * model)
77  ;
79  COINLIBAPI void COINLINKAGE
80  Cbc_copyInIntegerInformation(Cbc_Model * model, const char * information)
81  ;
83  COINLIBAPI void COINLINKAGE
84  Cbc_deleteIntegerInformation(Cbc_Model * model)
85  ;
87  COINLIBAPI void COINLINKAGE
88  Cbc_resize (Cbc_Model * model, int newNumberRows, int newNumberColumns)
89  ;
91  COINLIBAPI void COINLINKAGE
92  Cbc_deleteRows(Cbc_Model * model, int number, const int * which)
93  ;
95  COINLIBAPI void COINLINKAGE
96  Cbc_addRows(Cbc_Model * model, const int number, const double * rowLower,
97  const double * rowUpper,
98  const int * rowStarts, const int * columns,
99  const double * elements)
100  ;
101 
103  COINLIBAPI void COINLINKAGE
104  Cbc_deleteColumns(Cbc_Model * model, int number, const int * which)
105  ;
107  COINLIBAPI void COINLINKAGE
108  Cbc_addColumns(Cbc_Model * model, int number, const double * columnLower,
109  const double * columnUpper,
110  const double * objective,
111  const int * columnStarts, const int * rows,
112  const double * elements);
114  COINLIBAPI void COINLINKAGE
115  Cbc_dropNames(Cbc_Model * model)
116  ;
118  COINLIBAPI void COINLINKAGE
119  Cbc_copyNames(Cbc_Model * model, const char * const * rowNamesIn,
120  const char * const * columnNamesIn)
121  ;
122 
127  COINLIBAPI int COINLINKAGE
128  Cbc_numberRows(Cbc_Model * model)
129  ;
131  COINLIBAPI int COINLINKAGE
132  Cbc_numberColumns(Cbc_Model * model)
133  ;
135  COINLIBAPI double COINLINKAGE
136  Cbc_primalTolerance(Cbc_Model * model)
137  ;
138  COINLIBAPI void COINLINKAGE
139  Cbc_setPrimalTolerance(Cbc_Model * model, double value)
140  ;
142  COINLIBAPI double COINLINKAGE
143  Cbc_dualTolerance(Cbc_Model * model)
144  ;
145  COINLIBAPI void COINLINKAGE
146  Cbc_setDualTolerance(Cbc_Model * model, double value)
147  ;
148  /* Integer tolerance to use */
149  COINLIBAPI double COINLINKAGE
150  Cbc_integerTolerance(Cbc_Model * model)
151  ;
152  COINLIBAPI void COINLINKAGE
153  Cbc_setIntegerTolerance(Cbc_Model * model, double value)
154  ;
156  COINLIBAPI double COINLINKAGE
157  Cbc_dualObjectiveLimit(Cbc_Model * model)
158  ;
159  COINLIBAPI void COINLINKAGE
160  Cbc_setDualObjectiveLimit(Cbc_Model * model, double value)
161  ;
163  COINLIBAPI double COINLINKAGE
164  Cbc_objectiveOffset(Cbc_Model * model)
165  ;
166  COINLIBAPI void COINLINKAGE
167  Cbc_setObjectiveOffset(Cbc_Model * model, double value)
168  ;
170  COINLIBAPI void COINLINKAGE
171  Cbc_problemName(Cbc_Model * model, int maxNumberCharacters, char * array)
172  ;
174  COINLIBAPI int COINLINKAGE
175  Cbc_setProblemName(Cbc_Model * model, int maxNumberCharacters, char * array)
176  ;
178  COINLIBAPI int COINLINKAGE
179  Cbc_numberIterations(Cbc_Model * model)
180  ;
181  COINLIBAPI void COINLINKAGE
182  Cbc_setNumberIterations(Cbc_Model * model, int numberIterations)
183  ;
185  COINLIBAPI int COINLINKAGE
186  Cbc_maximumIterations(Cbc_Model * model)
187  ;
188  COINLIBAPI void COINLINKAGE
189  Cbc_setMaximumIterations(Cbc_Model * model, int value)
190  ;
192  COINLIBAPI int COINLINKAGE
193  Cbc_maxNumNode(Cbc_Model * model)
194  ;
195  COINLIBAPI void COINLINKAGE
196  Cbc_setMaxNumNode(Cbc_Model * model, int value)
197  ;
198  /* Maximum number of solutions */
199  COINLIBAPI int COINLINKAGE
200  Cbc_maxNumSol(Cbc_Model * model)
201  ;
202  COINLIBAPI void COINLINKAGE
203  Cbc_setMaxNumSol(Cbc_Model * model, int value)
204  ;
206  COINLIBAPI double COINLINKAGE
207  Cbc_maximumSeconds(Cbc_Model * model)
208  ;
209  COINLIBAPI void COINLINKAGE
210  Cbc_setMaximumSeconds(Cbc_Model * model, double value)
211  ;
213  COINLIBAPI int COINLINKAGE
214  Cbc_hitMaximumIterations(Cbc_Model * model)
215  ;
223  COINLIBAPI int COINLINKAGE
224  Cbc_status(Cbc_Model * model)
225  ;
227  COINLIBAPI void COINLINKAGE
228  Cbc_setProblemStatus(Cbc_Model * model, int problemStatus)
229  ;
237  COINLIBAPI int COINLINKAGE
238  Cbc_secondaryStatus(Cbc_Model * model)
239  ;
240  COINLIBAPI void COINLINKAGE
241  Cbc_setSecondaryStatus(Cbc_Model * model, int status)
242  ;
244  COINLIBAPI double COINLINKAGE
245  Cbc_optimizationDirection(Cbc_Model * model)
246  ;
247  COINLIBAPI void COINLINKAGE
248  Cbc_setOptimizationDirection(Cbc_Model * model, double value)
249  ;
251  COINLIBAPI double * COINLINKAGE
252  Cbc_primalRowSolution(Cbc_Model * model)
253  ;
255  COINLIBAPI double * COINLINKAGE
256  Cbc_primalColumnSolution(Cbc_Model * model)
257  ;
259  COINLIBAPI double * COINLINKAGE
260  Cbc_dualRowSolution(Cbc_Model * model)
261  ;
263  COINLIBAPI double * COINLINKAGE
264  Cbc_dualColumnSolution(Cbc_Model * model)
265  ;
267  COINLIBAPI double* COINLINKAGE
268  Cbc_rowLower(Cbc_Model * model)
269  ;
271  COINLIBAPI double* COINLINKAGE
272  Cbc_rowUpper(Cbc_Model * model)
273  ;
275  COINLIBAPI double * COINLINKAGE
276  Cbc_objective(Cbc_Model * model)
277  ;
279  COINLIBAPI double * COINLINKAGE
280  Cbc_columnLower(Cbc_Model * model)
281  ;
283  COINLIBAPI double * COINLINKAGE
284  Cbc_columnUpper(Cbc_Model * model)
285  ;
287  COINLIBAPI int COINLINKAGE
288  Cbc_getNumElements(Cbc_Model * model)
289  ;
291  COINLIBAPI const CoinBigIndex * COINLINKAGE
292  Cbc_getVectorStarts(Cbc_Model * model)
293  ;
295  COINLIBAPI const int * COINLINKAGE
296  Cbc_getIndices(Cbc_Model * model)
297  ;
299  COINLIBAPI const int * COINLINKAGE
300  Cbc_getVectorLengths(Cbc_Model * model)
301  ;
303  COINLIBAPI const double * COINLINKAGE
304  Cbc_getElements(Cbc_Model * model)
305  ;
307  COINLIBAPI double COINLINKAGE
308  Cbc_objectiveValue(Cbc_Model * model)
309  ;
312  COINLIBAPI double * COINLINKAGE
313  Cbc_infeasibilityRay(Cbc_Model * model)
314  ;
315  COINLIBAPI double * COINLINKAGE
316  Cbc_unboundedRay(Cbc_Model * model)
317  ;
319  COINLIBAPI int COINLINKAGE
320  Cbc_statusExists(Cbc_Model * model)
321  ;
323  COINLIBAPI void COINLINKAGE
324  Cbc_getBasisStatus(Cbc_Model * model, int * cstat, int * rstat)
325  ;
327  COINLIBAPI void COINLINKAGE
328  Cbc_setBasisStatus(Cbc_Model * model, int * cstat, int * rstat)
329  ;
330 
332  COINLIBAPI void COINLINKAGE
333  Cbc_setUserPointer (Cbc_Model * model, void * pointer)
334  ;
335  COINLIBAPI void * COINLINKAGE
336  Cbc_getUserPointer (Cbc_Model * model)
337  ;
343  COINLIBAPI void COINLINKAGE
344  Cbc_registerCallBack(Cbc_Model * model,
345  cbc_callback userCallBack)
346  ;
348  COINLIBAPI void COINLINKAGE
349  Cbc_clearCallBack(Cbc_Model * model)
350  ;
359  COINLIBAPI void COINLINKAGE
360  Cbc_setLogLevel(Cbc_Model * model, int value)
361  ;
362  COINLIBAPI int COINLINKAGE
363  Cbc_logLevel(Cbc_Model * model)
364  ;
366  COINLIBAPI int COINLINKAGE
367  Cbc_lengthNames(Cbc_Model * model)
368  ;
370  COINLIBAPI void COINLINKAGE
371  Cbc_rowName(Cbc_Model * model, int iRow, char * name)
372  ;
374  COINLIBAPI void COINLINKAGE
375  Cbc_columnName(Cbc_Model * model, int iColumn, char * name)
376  ;
377 
386  COINLIBAPI int COINLINKAGE
387  Cbc_initialSolve(Cbc_Model * model)
388  ;
389  /* General solve algorithm which can do presolve.
390  See CbcModel.hpp for options
391  */
392  COINLIBAPI int COINLINKAGE
393  Cbc_branchAndBound(Cbc_Model * model)
394  ;
396  COINLIBAPI void COINLINKAGE
397  Cbc_scaling(Cbc_Model * model, int mode)
398  ;
400  COINLIBAPI int COINLINKAGE
401  Cbc_scalingFlag(Cbc_Model * model)
402  ;
417  COINLIBAPI int COINLINKAGE
418  Cbc_crash(Cbc_Model * model, double gap, int pivot)
419  ;
426  COINLIBAPI int COINLINKAGE
427  Cbc_primalFeasible(Cbc_Model * model)
428  ;
430  COINLIBAPI int COINLINKAGE
431  Cbc_dualFeasible(Cbc_Model * model)
432  ;
434  COINLIBAPI double COINLINKAGE
435  Cbc_dualBound(Cbc_Model * model)
436  ;
437  COINLIBAPI void COINLINKAGE
438  Cbc_setDualBound(Cbc_Model * model, double value)
439  ;
441  COINLIBAPI double COINLINKAGE
442  Cbc_infeasibilityCost(Cbc_Model * model)
443  ;
444  COINLIBAPI void COINLINKAGE
445  Cbc_setInfeasibilityCost(Cbc_Model * model, double value)
446  ;
455  COINLIBAPI int COINLINKAGE
456  Cbc_perturbation(Cbc_Model * model)
457  ;
458  COINLIBAPI void COINLINKAGE
459  Cbc_setPerturbation(Cbc_Model * model, int value)
460  ;
462  COINLIBAPI int COINLINKAGE
463  Cbc_algorithm(Cbc_Model * model)
464  ;
466  COINLIBAPI void COINLINKAGE
467  Cbc_setAlgorithm(Cbc_Model * model, int value)
468  ;
470  COINLIBAPI double COINLINKAGE
471  Cbc_sumDualInfeasibilities(Cbc_Model * model)
472  ;
474  COINLIBAPI int COINLINKAGE
475  Cbc_numberDualInfeasibilities(Cbc_Model * model)
476  ;
478  COINLIBAPI double COINLINKAGE
479  Cbc_sumPrimalInfeasibilities(Cbc_Model * model)
480  ;
482  COINLIBAPI int COINLINKAGE
483  Cbc_numberPrimalInfeasibilities(Cbc_Model * model)
484  ;
491  COINLIBAPI int COINLINKAGE
492  Cbc_saveModel(Cbc_Model * model, const char * fileName)
493  ;
496  COINLIBAPI int COINLINKAGE
497  Cbc_restoreModel(Cbc_Model * model, const char * fileName)
498  ;
499 
502  COINLIBAPI void COINLINKAGE
503  Cbc_checkSolution(Cbc_Model * model)
504  ;
507  /******************** End of most useful part **************/
511  COINLIBAPI int COINLINKAGE
512  Cbc_getNumRows(Cbc_Model * model)
513  ;
515  COINLIBAPI int COINLINKAGE
516  Cbc_getNumCols(Cbc_Model * model)
517  ;
519  COINLIBAPI int COINLINKAGE
520  Cbc_getIterationCount(Cbc_Model * model)
521  ;
523  COINLIBAPI int COINLINKAGE
524  Cbc_isAbandoned(Cbc_Model * model)
525  ;
527  COINLIBAPI int COINLINKAGE
528  Cbc_isProvenOptimal(Cbc_Model * model)
529  ;
531  COINLIBAPI int COINLINKAGE
532  Cbc_isProvenPrimalInfeasible(Cbc_Model * model)
533  ;
535  COINLIBAPI int COINLINKAGE
536  Cbc_isProvenDualInfeasible(Cbc_Model * model)
537  ;
539  COINLIBAPI int COINLINKAGE
540  Cbc_isPrimalObjectiveLimitReached(Cbc_Model * model)
541  ;
543  COINLIBAPI int COINLINKAGE
544  Cbc_isDualObjectiveLimitReached(Cbc_Model * model)
545  ;
547  COINLIBAPI int COINLINKAGE
548  Cbc_isIterationLimitReached(Cbc_Model * model)
549  ;
551  COINLIBAPI double COINLINKAGE
552  Cbc_getObjSense(Cbc_Model * model)
553  ;
555  COINLIBAPI const double * COINLINKAGE
556  Cbc_getRowActivity(Cbc_Model * model)
557  ;
559  COINLIBAPI const double * COINLINKAGE
560  Cbc_getColSolution(Cbc_Model * model)
561  ;
562  COINLIBAPI void COINLINKAGE
563  Cbc_setColSolution(Cbc_Model * model, const double * input)
564  ;
566  COINLIBAPI const double * COINLINKAGE
567  Cbc_getRowPrice(Cbc_Model * model)
568  ;
570  COINLIBAPI const double * COINLINKAGE
571  Cbc_getReducedCost(Cbc_Model * model)
572  ;
574  COINLIBAPI const double* COINLINKAGE
575  Cbc_getRowLower(Cbc_Model * model)
576  ;
578  COINLIBAPI const double* COINLINKAGE
579  Cbc_getRowUpper(Cbc_Model * model)
580  ;
582  COINLIBAPI const double * COINLINKAGE
583  Cbc_getObjCoefficients(Cbc_Model * model)
584  ;
586  COINLIBAPI const double * COINLINKAGE
587  Cbc_getColLower(Cbc_Model * model)
588  ;
590  COINLIBAPI const double * COINLINKAGE
591  Cbc_getColUpper(Cbc_Model * model)
592  ;
594  COINLIBAPI double COINLINKAGE
595  Cbc_getObjValue(Cbc_Model * model)
596  ;
598  COINLIBAPI void COINLINKAGE
599  Cbc_printModel(Cbc_Model * model, const char * argPrefix)
600  ;
602  COINLIBAPI int COINLINKAGE
603  Cbc_isInteger(Cbc_Model * model, int i)
604  ;
606  COINLIBAPI double COINLINKAGE
607  Cbc_cpuTime(Cbc_Model * model)
608  ;
610  COINLIBAPI int COINLINKAGE
611  Cbc_getNodeCount(Cbc_Model * model)
612  ;
614  COINLIBAPI Cbc_Model * COINLINKAGE
615  Cbc_clone(Cbc_Model * model)
616  ;
618  COINLIBAPI Cbc_Model * COINLINKAGE
619  Cbc_setContinuous(Cbc_Model * model, int iColumn)
620  ;
622  COINLIBAPI void COINLINKAGE
623  Cbc_addSOS_Dense(Cbc_Model * model, int numObjects, const int * len,
624  const int ** which, const double * weights, const int type)
625  ;
627  COINLIBAPI void COINLINKAGE
628  Cbc_addSOS_Sparse(Cbc_Model * model, const int * rowStarts,
629  const int * rowIndices, const double * weights, const int type)
630  ;
632  COINLIBAPI void COINLINKAGE
633  Cbc_deleteObjects(Cbc_Model * model)
634  ;
636  COINLIBAPI void COINLINKAGE
637  Cbc_printSolution(Cbc_Model * model)
638  ;
640  COINLIBAPI int COINLINKAGE
641  Cbc_initialDualSolve(Cbc_Model * model)
642  ;
644  COINLIBAPI int COINLINKAGE
645  Cbc_initialPrimalSolve(Cbc_Model * model)
646  ;
648  COINLIBAPI int COINLINKAGE
649  Cbc_dual(Cbc_Model * model, int ifValuesPass)
650  ;
652  COINLIBAPI int COINLINKAGE
653  Cbc_primal(Cbc_Model * model, int ifValuesPass)
654  ;
656 #ifdef __cplusplus
657 }
658 #endif
659 #endif