/home/coin/SVN-release/CoinAll-1.1.0/Clp/src/Clp_C_Interface.h

Go to the documentation of this file.
00001 /* Copyright (C) 2002, 2003 International Business Machines
00002    Corporation and others.  All Rights Reserved.*/
00003 #ifndef ClpSimplexC_H
00004 #define ClpSimplexC_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 Clp_Simplex * COINLINKAGE Clp_newModel(void);
00031   COINLIBAPI void COINLINKAGE Clp_deleteModel(Clp_Simplex * model);
00049   COINLIBAPI void COINLINKAGE Clp_loadProblem (Clp_Simplex * 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);
00055 
00056 /* read quadratic part of the objective (the matrix part) */
00057 COINLIBAPI void COINLINKAGE 
00058 Clp_loadQuadraticObjective(Clp_Simplex * model,  
00059                            const int numberColumns, 
00060                            const CoinBigIndex * start,
00061                            const int * column, 
00062                            const double * element);
00064   COINLIBAPI int COINLINKAGE Clp_readMps(Clp_Simplex * model,const char *filename,
00065               int keepNames,
00066               int ignoreErrors);
00068   COINLIBAPI void COINLINKAGE Clp_copyInIntegerInformation(Clp_Simplex * model,const char * information);
00070   COINLIBAPI void COINLINKAGE Clp_deleteIntegerInformation(Clp_Simplex * model);
00072   COINLIBAPI void COINLINKAGE Clp_resize (Clp_Simplex * model, int newNumberRows, int newNumberColumns);
00074   COINLIBAPI void COINLINKAGE Clp_deleteRows(Clp_Simplex * model, int number, const int * which);
00076   COINLIBAPI void COINLINKAGE Clp_addRows(Clp_Simplex * model, int number, const double * rowLower, 
00077                const double * rowUpper,
00078                const int * rowStarts, const int * columns,
00079                const double * elements);
00080 
00082   COINLIBAPI void COINLINKAGE Clp_deleteColumns(Clp_Simplex * model, int number, const int * which);
00084   COINLIBAPI void COINLINKAGE Clp_addColumns(Clp_Simplex * model, int number, const double * columnLower, 
00085                   const double * columnUpper,
00086                   const double * objective,
00087                   const int * columnStarts, const int * rows,
00088                   const double * elements);
00090   COINLIBAPI void COINLINKAGE Clp_chgRowLower(Clp_Simplex * model, const double * rowLower);
00092   COINLIBAPI void COINLINKAGE Clp_chgRowUpper(Clp_Simplex * model, const double * rowUpper); 
00094   COINLIBAPI void COINLINKAGE Clp_chgColumnLower(Clp_Simplex * model, const double * columnLower); 
00096   COINLIBAPI void COINLINKAGE Clp_chgColumnUpper(Clp_Simplex * model, const double * columnUpper); 
00098   COINLIBAPI void COINLINKAGE Clp_chgObjCoefficients(Clp_Simplex * model, const double * objIn); 
00100   COINLIBAPI void COINLINKAGE Clp_dropNames(Clp_Simplex * model);
00102   COINLIBAPI void COINLINKAGE Clp_copyNames(Clp_Simplex * model, const char * const * rowNames,
00103                  const char * const * columnNames);
00104   
00109   COINLIBAPI int COINLINKAGE Clp_numberRows(Clp_Simplex * model);
00111   COINLIBAPI int COINLINKAGE Clp_numberColumns(Clp_Simplex * model);
00113   COINLIBAPI double COINLINKAGE Clp_primalTolerance(Clp_Simplex * model);
00114   COINLIBAPI void COINLINKAGE Clp_setPrimalTolerance(Clp_Simplex * model,  double value) ;
00116   COINLIBAPI double COINLINKAGE Clp_dualTolerance(Clp_Simplex * model);
00117   COINLIBAPI void COINLINKAGE Clp_setDualTolerance(Clp_Simplex * model,  double value) ;
00119   COINLIBAPI double COINLINKAGE Clp_dualObjectiveLimit(Clp_Simplex * model);
00120   COINLIBAPI void COINLINKAGE Clp_setDualObjectiveLimit(Clp_Simplex * model, double value);
00122   COINLIBAPI double COINLINKAGE Clp_objectiveOffset(Clp_Simplex * model);
00123   COINLIBAPI void COINLINKAGE Clp_setObjectiveOffset(Clp_Simplex * model, double value);
00125   COINLIBAPI void COINLINKAGE Clp_problemName(Clp_Simplex * model, int maxNumberCharacters, char * array);
00126   /* Sets problem name.  Must have \0 at end.  */
00127   COINLIBAPI int COINLINKAGE 
00128     Clp_setProblemName(Clp_Simplex * model, int maxNumberCharacters, char * array);
00130   COINLIBAPI int COINLINKAGE Clp_numberIterations(Clp_Simplex * model);
00131   COINLIBAPI void COINLINKAGE Clp_setNumberIterations(Clp_Simplex * model, int numberIterations);
00133   COINLIBAPI int maximumIterations(Clp_Simplex * model);
00134   COINLIBAPI void COINLINKAGE Clp_setMaximumIterations(Clp_Simplex * model, int value);
00136   COINLIBAPI double COINLINKAGE Clp_maximumSeconds(Clp_Simplex * model);
00137   COINLIBAPI void COINLINKAGE Clp_setMaximumSeconds(Clp_Simplex * model, double value);
00139   COINLIBAPI int COINLINKAGE Clp_hitMaximumIterations(Clp_Simplex * model);
00147   COINLIBAPI int COINLINKAGE Clp_status(Clp_Simplex * model);
00149   COINLIBAPI void COINLINKAGE Clp_setProblemStatus(Clp_Simplex * model, int problemStatus);
00157   COINLIBAPI int COINLINKAGE Clp_secondaryStatus(Clp_Simplex * model);
00158   COINLIBAPI void COINLINKAGE Clp_setSecondaryStatus(Clp_Simplex * model, int status);
00160   COINLIBAPI double COINLINKAGE Clp_optimizationDirection(Clp_Simplex * model);
00161   COINLIBAPI void COINLINKAGE Clp_setOptimizationDirection(Clp_Simplex * model, double value);
00163   COINLIBAPI double * COINLINKAGE Clp_primalRowSolution(Clp_Simplex * model);
00165   COINLIBAPI double * COINLINKAGE Clp_primalColumnSolution(Clp_Simplex * model);
00167   COINLIBAPI double * COINLINKAGE Clp_dualRowSolution(Clp_Simplex * model);
00169   COINLIBAPI double * COINLINKAGE Clp_dualColumnSolution(Clp_Simplex * model);
00171   COINLIBAPI double* COINLINKAGE Clp_rowLower(Clp_Simplex * model);
00173   COINLIBAPI double* COINLINKAGE Clp_rowUpper(Clp_Simplex * model);
00175   COINLIBAPI double * COINLINKAGE Clp_objective(Clp_Simplex * model);            
00177   COINLIBAPI double * COINLINKAGE Clp_columnLower(Clp_Simplex * model);
00179   COINLIBAPI double * COINLINKAGE Clp_columnUpper(Clp_Simplex * model);
00181   COINLIBAPI int COINLINKAGE Clp_getNumElements(Clp_Simplex * model); 
00182   /* Column starts in matrix */
00183   COINLIBAPI const CoinBigIndex * COINLINKAGE Clp_getVectorStarts(Clp_Simplex * model); 
00184   /* Row indices in matrix */
00185   COINLIBAPI const int * COINLINKAGE Clp_getIndices(Clp_Simplex * model); 
00186   /* Column vector lengths in matrix */
00187   COINLIBAPI const int * COINLINKAGE Clp_getVectorLengths(Clp_Simplex * model); 
00188   /* Element values in matrix */
00189   COINLIBAPI const double * COINLINKAGE Clp_getElements(Clp_Simplex * model); 
00191   COINLIBAPI double COINLINKAGE Clp_objectiveValue(Clp_Simplex * model);
00193   COINLIBAPI char * COINLINKAGE Clp_integerInformation(Clp_Simplex * model);
00196   COINLIBAPI double * COINLINKAGE Clp_infeasibilityRay(Clp_Simplex * model);
00197   COINLIBAPI double * COINLINKAGE Clp_unboundedRay(Clp_Simplex * model);
00199   COINLIBAPI int COINLINKAGE Clp_statusExists(Clp_Simplex * model);
00201   COINLIBAPI unsigned char *  COINLINKAGE Clp_statusArray(Clp_Simplex * model);
00203   COINLIBAPI void COINLINKAGE Clp_copyinStatus(Clp_Simplex * model, const unsigned char * statusArray);
00204   /* status values are as in ClpSimplex.hpp i.e. 0 - free, 1 basic, 2 at upper,
00205      3 at lower, 4 superbasic, (5 fixed) */
00206   /* Get variable basis info */
00207   COINLIBAPI int COINLINKAGE Clp_getColumnStatus(Clp_Simplex * model,int sequence);
00208   /* Get row basis info */
00209   COINLIBAPI int COINLINKAGE Clp_getRowStatus(Clp_Simplex * model,int sequence);
00210   /* Set variable basis info (and value if at bound) */
00211   COINLIBAPI void COINLINKAGE Clp_setColumnStatus(Clp_Simplex * model,
00212                                                   int sequence, int value);
00213   /* Set row basis info (and value if at bound) */
00214   COINLIBAPI void COINLINKAGE Clp_setRowStatus(Clp_Simplex * model,
00215                                                int sequence, int value);
00216   
00218   COINLIBAPI void COINLINKAGE Clp_setUserPointer (Clp_Simplex * model, void * pointer);
00219   COINLIBAPI void * COINLINKAGE Clp_getUserPointer (Clp_Simplex * model);
00225   COINLIBAPI void COINLINKAGE Clp_registerCallBack(Clp_Simplex * model, 
00226                                                    clp_callback userCallBack);
00228   COINLIBAPI void COINLINKAGE Clp_clearCallBack(Clp_Simplex * model);
00237   COINLIBAPI void COINLINKAGE Clp_setLogLevel(Clp_Simplex * model, int value);
00238   COINLIBAPI int COINLINKAGE Clp_logLevel(Clp_Simplex * model);
00240   COINLIBAPI int COINLINKAGE Clp_lengthNames(Clp_Simplex * model);
00242   COINLIBAPI void COINLINKAGE Clp_rowName(Clp_Simplex * model, int iRow, char * name);
00244   COINLIBAPI void COINLINKAGE Clp_columnName(Clp_Simplex * model, int iColumn, char * name);
00245 
00254   COINLIBAPI int COINLINKAGE Clp_initialSolve(Clp_Simplex * model);
00256   COINLIBAPI int COINLINKAGE Clp_initialDualSolve(Clp_Simplex * model);
00258   COINLIBAPI int COINLINKAGE Clp_initialPrimalSolve(Clp_Simplex * model);
00260   COINLIBAPI int COINLINKAGE Clp_initialBarrierSolve(Clp_Simplex * model);
00262   COINLIBAPI int COINLINKAGE Clp_initialBarrierNoCrossSolve(Clp_Simplex * model);
00264   COINLIBAPI int COINLINKAGE Clp_dual(Clp_Simplex * model, int ifValuesPass);
00266   COINLIBAPI int COINLINKAGE Clp_primal(Clp_Simplex * model, int ifValuesPass);
00268   COINLIBAPI void COINLINKAGE Clp_scaling(Clp_Simplex * model, int mode);
00270   COINLIBAPI int COINLINKAGE Clp_scalingFlag(Clp_Simplex * model);
00285   COINLIBAPI int COINLINKAGE Clp_crash(Clp_Simplex * model, double gap,int pivot);
00292   COINLIBAPI int COINLINKAGE Clp_primalFeasible(Clp_Simplex * model);
00294   COINLIBAPI int COINLINKAGE Clp_dualFeasible(Clp_Simplex * model);
00296   COINLIBAPI double COINLINKAGE Clp_dualBound(Clp_Simplex * model);
00297   COINLIBAPI void COINLINKAGE Clp_setDualBound(Clp_Simplex * model, double value);
00299   COINLIBAPI double COINLINKAGE Clp_infeasibilityCost(Clp_Simplex * model);
00300   COINLIBAPI void COINLINKAGE Clp_setInfeasibilityCost(Clp_Simplex * model, double value);
00309   COINLIBAPI int COINLINKAGE Clp_perturbation(Clp_Simplex * model);
00310   COINLIBAPI void COINLINKAGE Clp_setPerturbation(Clp_Simplex * model, int value);
00312   COINLIBAPI int COINLINKAGE Clp_algorithm(Clp_Simplex * model); 
00314   COINLIBAPI void COINLINKAGE Clp_setAlgorithm(Clp_Simplex * model, int value);
00316   COINLIBAPI double COINLINKAGE Clp_sumDualInfeasibilities(Clp_Simplex * model); 
00318   COINLIBAPI int COINLINKAGE Clp_numberDualInfeasibilities(Clp_Simplex * model); 
00320   COINLIBAPI double COINLINKAGE Clp_sumPrimalInfeasibilities(Clp_Simplex * model); 
00322   COINLIBAPI int COINLINKAGE Clp_numberPrimalInfeasibilities(Clp_Simplex * model); 
00329   COINLIBAPI int COINLINKAGE Clp_saveModel(Clp_Simplex * model, const char * fileName);
00332   COINLIBAPI int COINLINKAGE Clp_restoreModel(Clp_Simplex * model, const char * fileName);
00333   
00336   COINLIBAPI void COINLINKAGE Clp_checkSolution(Clp_Simplex * model);
00339   /******************** End of most useful part **************/
00343   COINLIBAPI int COINLINKAGE Clp_getNumRows(Clp_Simplex * model);
00345   COINLIBAPI int COINLINKAGE Clp_getNumCols(Clp_Simplex * model);
00347   COINLIBAPI int COINLINKAGE Clp_getIterationCount(Clp_Simplex * model);
00349   COINLIBAPI int COINLINKAGE Clp_isAbandoned(Clp_Simplex * model);
00351   COINLIBAPI int COINLINKAGE Clp_isProvenOptimal(Clp_Simplex * model);
00353   COINLIBAPI int COINLINKAGE Clp_isProvenPrimalInfeasible(Clp_Simplex * model);
00355   COINLIBAPI int COINLINKAGE Clp_isProvenDualInfeasible(Clp_Simplex * model);
00357   COINLIBAPI int COINLINKAGE Clp_isPrimalObjectiveLimitReached(Clp_Simplex * model) ;
00359   COINLIBAPI int COINLINKAGE Clp_isDualObjectiveLimitReached(Clp_Simplex * model) ;
00361   COINLIBAPI int COINLINKAGE Clp_isIterationLimitReached(Clp_Simplex * model);
00363   COINLIBAPI double COINLINKAGE Clp_getObjSense(Clp_Simplex * model);
00365   COINLIBAPI const double * COINLINKAGE Clp_getRowActivity(Clp_Simplex * model);
00367   COINLIBAPI const double * COINLINKAGE Clp_getColSolution(Clp_Simplex * model);
00368   COINLIBAPI void COINLINKAGE Clp_setColSolution(Clp_Simplex * model, const double * input);
00370   COINLIBAPI const double * COINLINKAGE Clp_getRowPrice(Clp_Simplex * model);
00372   COINLIBAPI const double * COINLINKAGE Clp_getReducedCost(Clp_Simplex * model);
00374   COINLIBAPI const double* COINLINKAGE Clp_getRowLower(Clp_Simplex * model);
00376   COINLIBAPI const double* COINLINKAGE Clp_getRowUpper(Clp_Simplex * model);
00378   COINLIBAPI const double * COINLINKAGE Clp_getObjCoefficients(Clp_Simplex * model); 
00380   COINLIBAPI const double * COINLINKAGE Clp_getColLower(Clp_Simplex * model);
00382   COINLIBAPI const double * COINLINKAGE Clp_getColUpper(Clp_Simplex * model);
00384   COINLIBAPI double COINLINKAGE Clp_getObjValue(Clp_Simplex * model);
00386   COINLIBAPI void COINLINKAGE Clp_printModel(Clp_Simplex * model, const char * prefix);
00387   /* Small element value - elements less than this set to zero,
00388      default is 1.0e-20 */
00389   COINLIBAPI double COINLINKAGE Clp_getSmallElementValue(Clp_Simplex * model);
00390   COINLIBAPI void COINLINKAGE Clp_setSmallElementValue(Clp_Simplex * model,double value);
00392 #ifdef __cplusplus
00393           }
00394 #endif
00395 #endif

Generated on Sun Nov 14 14:06:31 2010 for Coin-All by  doxygen 1.4.7