Clp_C_Interface.h
Go to the documentation of this file.
1 /* $Id: Clp_C_Interface.h 1525 2010-02-26 17:27:59Z mjs $ */
2 /* Copyright (C) 2002, 2003 International Business Machines
3  Corporation and others. All Rights Reserved.*/
4 #ifndef ClpSimplexC_H
5 #define ClpSimplexC_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 Clp_Simplex * COINLINKAGE Clp_newModel(void);
32  COINLIBAPI void COINLINKAGE Clp_deleteModel(Clp_Simplex * model);
50  COINLIBAPI void COINLINKAGE Clp_loadProblem (Clp_Simplex * model, const int numcols, const int numrows,
51  const CoinBigIndex * start, const int* index,
52  const double* value,
53  const double* collb, const double* colub,
54  const double* obj,
55  const double* rowlb, const double* rowub);
56 
57  /* read quadratic part of the objective (the matrix part) */
58  COINLIBAPI void COINLINKAGE
59  Clp_loadQuadraticObjective(Clp_Simplex * model,
60  const int numberColumns,
61  const CoinBigIndex * start,
62  const int * column,
63  const double * element);
65  COINLIBAPI int COINLINKAGE Clp_readMps(Clp_Simplex * model, const char *filename,
66  int keepNames,
67  int ignoreErrors);
69  COINLIBAPI void COINLINKAGE Clp_copyInIntegerInformation(Clp_Simplex * model, const char * information);
71  COINLIBAPI void COINLINKAGE Clp_deleteIntegerInformation(Clp_Simplex * model);
73  COINLIBAPI void COINLINKAGE Clp_resize (Clp_Simplex * model, int newNumberRows, int newNumberColumns);
75  COINLIBAPI void COINLINKAGE Clp_deleteRows(Clp_Simplex * model, int number, const int * which);
77  COINLIBAPI void COINLINKAGE Clp_addRows(Clp_Simplex * model, int number, const double * rowLower,
78  const double * rowUpper,
79  const int * rowStarts, const int * columns,
80  const double * elements);
81 
83  COINLIBAPI void COINLINKAGE Clp_deleteColumns(Clp_Simplex * model, int number, const int * which);
85  COINLIBAPI void COINLINKAGE Clp_addColumns(Clp_Simplex * model, int number, const double * columnLower,
86  const double * columnUpper,
87  const double * objective,
88  const int * columnStarts, const int * rows,
89  const double * elements);
91  COINLIBAPI void COINLINKAGE Clp_chgRowLower(Clp_Simplex * model, const double * rowLower);
93  COINLIBAPI void COINLINKAGE Clp_chgRowUpper(Clp_Simplex * model, const double * rowUpper);
95  COINLIBAPI void COINLINKAGE Clp_chgColumnLower(Clp_Simplex * model, const double * columnLower);
97  COINLIBAPI void COINLINKAGE Clp_chgColumnUpper(Clp_Simplex * model, const double * columnUpper);
99  COINLIBAPI void COINLINKAGE Clp_chgObjCoefficients(Clp_Simplex * model, const double * objIn);
101  COINLIBAPI void COINLINKAGE Clp_dropNames(Clp_Simplex * model);
103  COINLIBAPI void COINLINKAGE Clp_copyNames(Clp_Simplex * model, const char * const * rowNames,
104  const char * const * columnNames);
105 
110  COINLIBAPI int COINLINKAGE Clp_numberRows(Clp_Simplex * model);
112  COINLIBAPI int COINLINKAGE Clp_numberColumns(Clp_Simplex * model);
114  COINLIBAPI double COINLINKAGE Clp_primalTolerance(Clp_Simplex * model);
115  COINLIBAPI void COINLINKAGE Clp_setPrimalTolerance(Clp_Simplex * model, double value) ;
117  COINLIBAPI double COINLINKAGE Clp_dualTolerance(Clp_Simplex * model);
118  COINLIBAPI void COINLINKAGE Clp_setDualTolerance(Clp_Simplex * model, double value) ;
120  COINLIBAPI double COINLINKAGE Clp_dualObjectiveLimit(Clp_Simplex * model);
121  COINLIBAPI void COINLINKAGE Clp_setDualObjectiveLimit(Clp_Simplex * model, double value);
123  COINLIBAPI double COINLINKAGE Clp_objectiveOffset(Clp_Simplex * model);
124  COINLIBAPI void COINLINKAGE Clp_setObjectiveOffset(Clp_Simplex * model, double value);
126  COINLIBAPI void COINLINKAGE Clp_problemName(Clp_Simplex * model, int maxNumberCharacters, char * array);
127  /* Sets problem name. Must have \0 at end. */
128  COINLIBAPI int COINLINKAGE
129  Clp_setProblemName(Clp_Simplex * model, int maxNumberCharacters, char * array);
131  COINLIBAPI int COINLINKAGE Clp_numberIterations(Clp_Simplex * model);
132  COINLIBAPI void COINLINKAGE Clp_setNumberIterations(Clp_Simplex * model, int numberIterations);
134  COINLIBAPI int maximumIterations(Clp_Simplex * model);
135  COINLIBAPI void COINLINKAGE Clp_setMaximumIterations(Clp_Simplex * model, int value);
137  COINLIBAPI double COINLINKAGE Clp_maximumSeconds(Clp_Simplex * model);
138  COINLIBAPI void COINLINKAGE Clp_setMaximumSeconds(Clp_Simplex * model, double value);
140  COINLIBAPI int COINLINKAGE Clp_hitMaximumIterations(Clp_Simplex * model);
148  COINLIBAPI int COINLINKAGE Clp_status(Clp_Simplex * model);
150  COINLIBAPI void COINLINKAGE Clp_setProblemStatus(Clp_Simplex * model, int problemStatus);
158  COINLIBAPI int COINLINKAGE Clp_secondaryStatus(Clp_Simplex * model);
159  COINLIBAPI void COINLINKAGE Clp_setSecondaryStatus(Clp_Simplex * model, int status);
161  COINLIBAPI double COINLINKAGE Clp_optimizationDirection(Clp_Simplex * model);
162  COINLIBAPI void COINLINKAGE Clp_setOptimizationDirection(Clp_Simplex * model, double value);
164  COINLIBAPI double * COINLINKAGE Clp_primalRowSolution(Clp_Simplex * model);
166  COINLIBAPI double * COINLINKAGE Clp_primalColumnSolution(Clp_Simplex * model);
168  COINLIBAPI double * COINLINKAGE Clp_dualRowSolution(Clp_Simplex * model);
170  COINLIBAPI double * COINLINKAGE Clp_dualColumnSolution(Clp_Simplex * model);
172  COINLIBAPI double* COINLINKAGE Clp_rowLower(Clp_Simplex * model);
174  COINLIBAPI double* COINLINKAGE Clp_rowUpper(Clp_Simplex * model);
176  COINLIBAPI double * COINLINKAGE Clp_objective(Clp_Simplex * model);
178  COINLIBAPI double * COINLINKAGE Clp_columnLower(Clp_Simplex * model);
180  COINLIBAPI double * COINLINKAGE Clp_columnUpper(Clp_Simplex * model);
182  COINLIBAPI int COINLINKAGE Clp_getNumElements(Clp_Simplex * model);
183  /* Column starts in matrix */
184  COINLIBAPI const CoinBigIndex * COINLINKAGE Clp_getVectorStarts(Clp_Simplex * model);
185  /* Row indices in matrix */
186  COINLIBAPI const int * COINLINKAGE Clp_getIndices(Clp_Simplex * model);
187  /* Column vector lengths in matrix */
188  COINLIBAPI const int * COINLINKAGE Clp_getVectorLengths(Clp_Simplex * model);
189  /* Element values in matrix */
190  COINLIBAPI const double * COINLINKAGE Clp_getElements(Clp_Simplex * model);
192  COINLIBAPI double COINLINKAGE Clp_objectiveValue(Clp_Simplex * model);
194  COINLIBAPI char * COINLINKAGE Clp_integerInformation(Clp_Simplex * model);
197  COINLIBAPI double * COINLINKAGE Clp_infeasibilityRay(Clp_Simplex * model);
198  COINLIBAPI double * COINLINKAGE Clp_unboundedRay(Clp_Simplex * model);
200  COINLIBAPI int COINLINKAGE Clp_statusExists(Clp_Simplex * model);
202  COINLIBAPI unsigned char * COINLINKAGE Clp_statusArray(Clp_Simplex * model);
204  COINLIBAPI void COINLINKAGE Clp_copyinStatus(Clp_Simplex * model, const unsigned char * statusArray);
205  /* status values are as in ClpSimplex.hpp i.e. 0 - free, 1 basic, 2 at upper,
206  3 at lower, 4 superbasic, (5 fixed) */
207  /* Get variable basis info */
208  COINLIBAPI int COINLINKAGE Clp_getColumnStatus(Clp_Simplex * model, int sequence);
209  /* Get row basis info */
210  COINLIBAPI int COINLINKAGE Clp_getRowStatus(Clp_Simplex * model, int sequence);
211  /* Set variable basis info (and value if at bound) */
212  COINLIBAPI void COINLINKAGE Clp_setColumnStatus(Clp_Simplex * model,
213  int sequence, int value);
214  /* Set row basis info (and value if at bound) */
215  COINLIBAPI void COINLINKAGE Clp_setRowStatus(Clp_Simplex * model,
216  int sequence, int value);
217 
219  COINLIBAPI void COINLINKAGE Clp_setUserPointer (Clp_Simplex * model, void * pointer);
220  COINLIBAPI void * COINLINKAGE Clp_getUserPointer (Clp_Simplex * model);
226  COINLIBAPI void COINLINKAGE Clp_registerCallBack(Clp_Simplex * model,
227  clp_callback userCallBack);
229  COINLIBAPI void COINLINKAGE Clp_clearCallBack(Clp_Simplex * model);
238  COINLIBAPI void COINLINKAGE Clp_setLogLevel(Clp_Simplex * model, int value);
239  COINLIBAPI int COINLINKAGE Clp_logLevel(Clp_Simplex * model);
241  COINLIBAPI int COINLINKAGE Clp_lengthNames(Clp_Simplex * model);
243  COINLIBAPI void COINLINKAGE Clp_rowName(Clp_Simplex * model, int iRow, char * name);
245  COINLIBAPI void COINLINKAGE Clp_columnName(Clp_Simplex * model, int iColumn, char * name);
246 
255  COINLIBAPI int COINLINKAGE Clp_initialSolve(Clp_Simplex * model);
257  COINLIBAPI int COINLINKAGE Clp_initialDualSolve(Clp_Simplex * model);
259  COINLIBAPI int COINLINKAGE Clp_initialPrimalSolve(Clp_Simplex * model);
261  COINLIBAPI int COINLINKAGE Clp_initialBarrierSolve(Clp_Simplex * model);
263  COINLIBAPI int COINLINKAGE Clp_initialBarrierNoCrossSolve(Clp_Simplex * model);
265  COINLIBAPI int COINLINKAGE Clp_dual(Clp_Simplex * model, int ifValuesPass);
267  COINLIBAPI int COINLINKAGE Clp_primal(Clp_Simplex * model, int ifValuesPass);
268 #ifndef SLIM_CLP
269 
270  COINLIBAPI void COINLINKAGE Clp_idiot(Clp_Simplex * model, int tryhard);
271 #endif
272 
273  COINLIBAPI void COINLINKAGE Clp_scaling(Clp_Simplex * model, int mode);
275  COINLIBAPI int COINLINKAGE Clp_scalingFlag(Clp_Simplex * model);
290  COINLIBAPI int COINLINKAGE Clp_crash(Clp_Simplex * model, double gap, int pivot);
297  COINLIBAPI int COINLINKAGE Clp_primalFeasible(Clp_Simplex * model);
299  COINLIBAPI int COINLINKAGE Clp_dualFeasible(Clp_Simplex * model);
301  COINLIBAPI double COINLINKAGE Clp_dualBound(Clp_Simplex * model);
302  COINLIBAPI void COINLINKAGE Clp_setDualBound(Clp_Simplex * model, double value);
304  COINLIBAPI double COINLINKAGE Clp_infeasibilityCost(Clp_Simplex * model);
305  COINLIBAPI void COINLINKAGE Clp_setInfeasibilityCost(Clp_Simplex * model, double value);
314  COINLIBAPI int COINLINKAGE Clp_perturbation(Clp_Simplex * model);
315  COINLIBAPI void COINLINKAGE Clp_setPerturbation(Clp_Simplex * model, int value);
317  COINLIBAPI int COINLINKAGE Clp_algorithm(Clp_Simplex * model);
319  COINLIBAPI void COINLINKAGE Clp_setAlgorithm(Clp_Simplex * model, int value);
321  COINLIBAPI double COINLINKAGE Clp_sumDualInfeasibilities(Clp_Simplex * model);
323  COINLIBAPI int COINLINKAGE Clp_numberDualInfeasibilities(Clp_Simplex * model);
325  COINLIBAPI double COINLINKAGE Clp_sumPrimalInfeasibilities(Clp_Simplex * model);
327  COINLIBAPI int COINLINKAGE Clp_numberPrimalInfeasibilities(Clp_Simplex * model);
334  COINLIBAPI int COINLINKAGE Clp_saveModel(Clp_Simplex * model, const char * fileName);
337  COINLIBAPI int COINLINKAGE Clp_restoreModel(Clp_Simplex * model, const char * fileName);
338 
341  COINLIBAPI void COINLINKAGE Clp_checkSolution(Clp_Simplex * model);
344  /******************** End of most useful part **************/
348  COINLIBAPI int COINLINKAGE Clp_getNumRows(Clp_Simplex * model);
350  COINLIBAPI int COINLINKAGE Clp_getNumCols(Clp_Simplex * model);
352  COINLIBAPI int COINLINKAGE Clp_getIterationCount(Clp_Simplex * model);
354  COINLIBAPI int COINLINKAGE Clp_isAbandoned(Clp_Simplex * model);
356  COINLIBAPI int COINLINKAGE Clp_isProvenOptimal(Clp_Simplex * model);
358  COINLIBAPI int COINLINKAGE Clp_isProvenPrimalInfeasible(Clp_Simplex * model);
360  COINLIBAPI int COINLINKAGE Clp_isProvenDualInfeasible(Clp_Simplex * model);
362  COINLIBAPI int COINLINKAGE Clp_isPrimalObjectiveLimitReached(Clp_Simplex * model) ;
364  COINLIBAPI int COINLINKAGE Clp_isDualObjectiveLimitReached(Clp_Simplex * model) ;
366  COINLIBAPI int COINLINKAGE Clp_isIterationLimitReached(Clp_Simplex * model);
368  COINLIBAPI double COINLINKAGE Clp_getObjSense(Clp_Simplex * model);
370  COINLIBAPI void COINLINKAGE Clp_setObjSense(Clp_Simplex * model, double objsen);
372  COINLIBAPI const double * COINLINKAGE Clp_getRowActivity(Clp_Simplex * model);
374  COINLIBAPI const double * COINLINKAGE Clp_getColSolution(Clp_Simplex * model);
375  COINLIBAPI void COINLINKAGE Clp_setColSolution(Clp_Simplex * model, const double * input);
377  COINLIBAPI const double * COINLINKAGE Clp_getRowPrice(Clp_Simplex * model);
379  COINLIBAPI const double * COINLINKAGE Clp_getReducedCost(Clp_Simplex * model);
381  COINLIBAPI const double* COINLINKAGE Clp_getRowLower(Clp_Simplex * model);
383  COINLIBAPI const double* COINLINKAGE Clp_getRowUpper(Clp_Simplex * model);
385  COINLIBAPI const double * COINLINKAGE Clp_getObjCoefficients(Clp_Simplex * model);
387  COINLIBAPI const double * COINLINKAGE Clp_getColLower(Clp_Simplex * model);
389  COINLIBAPI const double * COINLINKAGE Clp_getColUpper(Clp_Simplex * model);
391  COINLIBAPI double COINLINKAGE Clp_getObjValue(Clp_Simplex * model);
393  COINLIBAPI void COINLINKAGE Clp_printModel(Clp_Simplex * model, const char * prefix);
394  /* Small element value - elements less than this set to zero,
395  default is 1.0e-20 */
396  COINLIBAPI double COINLINKAGE Clp_getSmallElementValue(Clp_Simplex * model);
397  COINLIBAPI void COINLINKAGE Clp_setSmallElementValue(Clp_Simplex * model, double value);
399 #ifdef __cplusplus
400 }
401 #endif
402 #endif