# HG changeset patch # User athos # Date 1119369537 0 # Node ID 389a94a1d9eb2adc16daf7633ca663f06fe492a0 # Parent 14ca1624e8e874be2b35c2c555eae8f49b0c41bc cplex test included diff -r 14ca1624e8e8 -r 389a94a1d9eb lemon/lp_base.h --- a/lemon/lp_base.h Tue Jun 21 14:57:17 2005 +0000 +++ b/lemon/lp_base.h Tue Jun 21 15:58:57 2005 +0000 @@ -151,7 +151,7 @@ ///Could not determine so far UNKNOWN = 4 }; - + ///The floating point type used by the solver typedef double Value; ///The infinity constant diff -r 14ca1624e8e8 -r 389a94a1d9eb lemon/lp_cplex.cc --- a/lemon/lp_cplex.cc Tue Jun 21 14:57:17 2005 +0000 +++ b/lemon/lp_cplex.cc Tue Jun 21 15:58:57 2005 +0000 @@ -45,17 +45,17 @@ //The routine CPXcloneprob can be used to create a new CPLEX problem //object and copy all the problem data from an existing problem //object to it. Solution and starting information is not copied. - newlp->lp = CPXcloneprob (env, lp, &status); + newlp->lp = CPXcloneprob(env, lp, &status); return *newlp; } int LpCplex::_addCol() { - int i = CPXgetnumcols (env, lp); + int i = CPXgetnumcols(env, lp); Value lb[1],ub[1]; lb[0]=-INF;//-CPX_INFBOUND; ub[0]=INF;//CPX_INFBOUND; - status = CPXnewcols (env, lp, 1, NULL, lb, ub, NULL, NULL); + status = CPXnewcols(env, lp, 1, NULL, lb, ub, NULL, NULL); return i; } @@ -67,18 +67,18 @@ sense[0]='L';//<= constraint Value rhs[1]; rhs[0]=INF; - int i = CPXgetnumrows (env, lp); - status = CPXnewrows (env, lp, 1, rhs, sense, NULL, NULL); + int i = CPXgetnumrows(env, lp); + status = CPXnewrows(env, lp, 1, rhs, sense, NULL, NULL); return i; } void LpCplex::_eraseCol(int i) { - CPXdelcols (env, lp, i, i); + CPXdelcols(env, lp, i, i); } void LpCplex::_eraseRow(int i) { - CPXdelrows (env, lp, i, i); + CPXdelrows(env, lp, i, i); } @@ -119,7 +119,7 @@ void LpCplex::_setCoeff(int row, int col, Value value) { - CPXchgcoef (env, lp, row, col, value); + CPXchgcoef(env, lp, row, col, value); } void LpCplex::_setColLowerBound(int i, Value value) @@ -130,7 +130,7 @@ lu[0]='L'; Value bd[1]; bd[0]=value; - status = CPXchgbds (env, lp, 1, indices, lu, bd); + status = CPXchgbds(env, lp, 1, indices, lu, bd); } @@ -142,7 +142,7 @@ lu[0]='U'; Value bd[1]; bd[0]=value; - status = CPXchgbds (env, lp, 1, indices, lu, bd); + status = CPXchgbds(env, lp, 1, indices, lu, bd); } //This will be easier to implement @@ -160,27 +160,27 @@ if (lb==-INF){ sense[0]='L'; - CPXchgsense (env, lp, cnt, indices, sense); - CPXchgcoef (env, lp, i, -1, ub); + CPXchgsense(env, lp, cnt, indices, sense); + CPXchgcoef(env, lp, i, -1, ub); } else{ if (ub==INF){ sense[0]='G'; - CPXchgsense (env, lp, cnt, indices, sense); - CPXchgcoef (env, lp, i, -1, lb); + CPXchgsense(env, lp, cnt, indices, sense); + CPXchgcoef(env, lp, i, -1, lb); } else{ if (lb == ub){ sense[0]='E'; - CPXchgsense (env, lp, cnt, indices, sense); - CPXchgcoef (env, lp, i, -1, lb); + CPXchgsense(env, lp, cnt, indices, sense); + CPXchgcoef(env, lp, i, -1, lb); } else{ sense[0]='R'; - CPXchgsense (env, lp, cnt, indices, sense); - CPXchgcoef (env, lp, i, -1, lb); - CPXchgcoef (env, lp, i, -2, ub-lb); + CPXchgsense(env, lp, cnt, indices, sense); + CPXchgcoef(env, lp, i, -1, lb); + CPXchgcoef(env, lp, i, -2, ub-lb); } } } @@ -197,9 +197,9 @@ // // //TODO Ezt kell meg megirni // // //type of the problem // // char sense[1]; -// // status = CPXgetsense (env, lp, sense, i, i); +// // status = CPXgetsense(env, lp, sense, i, i); // // Value rhs[1]; -// // status = CPXgetrhs (env, lp, rhs, i, i); +// // status = CPXgetrhs(env, lp, rhs, i, i); // // switch (sense[0]) { // // case 'L'://<= constraint @@ -214,18 +214,18 @@ // // //FIXME error // // } -// // status = CPXchgcoef (env, lp, i, -2, value_rng); +// // status = CPXchgcoef(env, lp, i, -2, value_rng); // } void LpCplex::_setObjCoeff(int i, Value obj_coef) { - CPXchgcoef (env, lp, -1, i, obj_coef); + CPXchgcoef(env, lp, -1, i, obj_coef); } void LpCplex::_clearObj() { - for (int i=0;i< CPXgetnumcols (env, lp);++i){ - CPXchgcoef (env, lp, -1, i, 0); + for (int i=0;i< CPXgetnumcols(env, lp);++i){ + CPXchgcoef(env, lp, -1, i, 0); } } @@ -241,10 +241,10 @@ LpCplex::SolveExitStatus LpCplex::_solve() { //CPX_PARAM_LPMETHOD - status = CPXlpopt (env, lp); + status = CPXlpopt(env, lp); if (status == 0){ //We want to exclude some cases - switch (CPXgetstat (env, lp)){ + switch (CPXgetstat(env, lp)){ case CPX_OBJ_LIM: case CPX_IT_LIM_FEAS: case CPX_IT_LIM_INFEAS: @@ -263,7 +263,7 @@ LpCplex::Value LpCplex::_getPrimal(int i) { Value x; - CPXgetx (env, lp, &x, i, i); + CPXgetx(env, lp, &x, i, i); return x; } @@ -271,7 +271,9 @@ { Value objval; //method = CPXgetmethod (env, lp); - status = CPXgetobjval (env, lp, &objval); + //printf("CPXgetprobtype %d \n",CPXgetprobtype(env,lp)); + status = CPXgetobjval(env, lp, &objval); + //printf("Objective value: %g \n",objval); return objval; } @@ -329,7 +331,8 @@ LpCplex::SolutionStatus LpCplex::_getPrimalStatus() { - int stat = CPXgetstat (env, lp); + int stat = CPXgetstat(env, lp); + //printf("A primal status: %d, CPX_OPTIMAL=%d \n",stat,CPX_OPTIMAL); switch (stat) { case 0: return UNDEFINED; //Undefined @@ -379,7 +382,7 @@ LpCplex::SolutionStatus LpCplex::_getDualStatus() { - int stat = CPXgetstat (env, lp); + int stat = CPXgetstat(env, lp); switch (stat) { case 0: return UNDEFINED; //Undefined @@ -395,7 +398,7 @@ LpCplex::ProblemTypes LpCplex::_getProblemType() { - int stat = CPXgetstat (env, lp); + int stat = CPXgetstat(env, lp); switch (stat) { case CPX_OPTIMAL://Optimal return PRIMAL_DUAL_FEASIBLE; @@ -414,11 +417,11 @@ void LpCplex::_setMax() { - CPXchgobjsen (env, lp, CPX_MAX); + CPXchgobjsen(env, lp, CPX_MAX); } void LpCplex::_setMin() { - CPXchgobjsen (env, lp, CPX_MIN); + CPXchgobjsen(env, lp, CPX_MIN); } } //namespace lemon diff -r 14ca1624e8e8 -r 389a94a1d9eb lemon/lp_skeleton.h --- a/lemon/lp_skeleton.h Tue Jun 21 14:57:17 2005 +0000 +++ b/lemon/lp_skeleton.h Tue Jun 21 15:58:57 2005 +0000 @@ -22,7 +22,7 @@ ///\file ///\brief A skeleton file to implement LP solver interfaces namespace lemon { - + ///A skeleton class to implement LP solver interfaces class LpSkeleton :public LpSolverBase { int col_num,row_num; diff -r 14ca1624e8e8 -r 389a94a1d9eb test/lp_test.cc --- a/test/lp_test.cc Tue Jun 21 14:57:17 2005 +0000 +++ b/test/lp_test.cc Tue Jun 21 15:58:57 2005 +0000 @@ -17,12 +17,17 @@ void lpTest(LpSolverBase & lp) { + + + typedef LpSolverBase LP; std::vector x(10); // for(int i=0;i<10;i++) x.push_back(lp.addCol()); lp.addColSet(x); +#ifndef GYORSITAS + std::vector y(10); lp.addColSet(y); @@ -174,7 +179,7 @@ ); } - +#endif } void aTest(LpSolverBase & lp) @@ -240,8 +245,9 @@ #endif #ifdef HAVE_CPLEX -// LpCplex lp_cplex; -// lpTest(lp_cplex); + LpCplex lp_cplex; + lpTest(lp_cplex); + aTest(lp_cplex); #endif return 0;