Changeset 1405:3626c7f10f14 in lemon-0.x
- Timestamp:
- 05/05/05 17:43:43 (19 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1867
- Location:
- src/lemon
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/lemon/lp_base.h
r1397 r1405 432 432 virtual void _setColLowerBound(int i, Value value) = 0; 433 433 virtual void _setColUpperBound(int i, Value value) = 0; 434 virtual void _setRowLowerBound(int i, Value value) = 0;435 virtual void _setRowUpperBound(int i, Value value) = 0;434 // virtual void _setRowLowerBound(int i, Value value) = 0; 435 // virtual void _setRowUpperBound(int i, Value value) = 0; 436 436 virtual void _setRowBounds(int i, Value lower, Value upper) = 0; 437 437 virtual void _setObjCoeff(int i, Value obj_coef) = 0; … … 568 568 _setRowCoeffs(rows.floatingId(r.id),indices.size()-1, 569 569 &indices[0],&values[0]); 570 _setRowLowerBound(rows.floatingId(r.id),l-e.constComp()); 571 _setRowUpperBound(rows.floatingId(r.id),u-e.constComp()); 570 // _setRowLowerBound(rows.floatingId(r.id),l-e.constComp()); 571 // _setRowUpperBound(rows.floatingId(r.id),u-e.constComp()); 572 _setRowBounds(rows.floatingId(r.id),l-e.constComp(),u-e.constComp()); 572 573 } 573 574 … … 634 635 } 635 636 636 /// Set the lower bound of a row (i.e a constraint) 637 638 /// The lower bound of a linear expression (row) has to be given by an 639 /// extended number of type Value, i.e. a finite number of type 640 /// Value or -\ref INF. 641 void rowLowerBound(Row r, Value value) { 642 _setRowLowerBound(rows.floatingId(r.id),value); 643 }; 644 /// Set the upper bound of a row (i.e a constraint) 645 646 /// The upper bound of a linear expression (row) has to be given by an 647 /// extended number of type Value, i.e. a finite number of type 648 /// Value or \ref INF. 649 void rowUpperBound(Row r, Value value) { 650 _setRowUpperBound(rows.floatingId(r.id),value); 651 }; 652 /// Set the lower and the upper bounds of a row (i.e a variable) 637 // /// Set the lower bound of a row (i.e a constraint) 638 639 // /// The lower bound of a linear expression (row) has to be given by an 640 // /// extended number of type Value, i.e. a finite number of type 641 // /// Value or -\ref INF. 642 // void rowLowerBound(Row r, Value value) { 643 // _setRowLowerBound(rows.floatingId(r.id),value); 644 // }; 645 // /// Set the upper bound of a row (i.e a constraint) 646 647 // /// The upper bound of a linear expression (row) has to be given by an 648 // /// extended number of type Value, i.e. a finite number of type 649 // /// Value or \ref INF. 650 // void rowUpperBound(Row r, Value value) { 651 // _setRowUpperBound(rows.floatingId(r.id),value); 652 // }; 653 654 /// Set the lower and the upper bounds of a row (i.e a constraint) 653 655 654 656 /// The lower and the upper bounds of -
src/lemon/lp_cplex.cc
r1381 r1405 15 15 * 16 16 */ 17 18 #include "lp_cplex.h"17 #include <iostream> 18 #include<lemon/lp_cplex.h> 19 19 20 20 ///\file … … 66 66 } 67 67 68 LpSolverBase &LpCplex::_newLp() {return *(LpSolverBase*)0;} 69 LpSolverBase &LpCplex::_copyLp() {return *(LpSolverBase*)0;} 68 LpSolverBase &LpCplex::_newLp() 69 { 70 return *(LpSolverBase*)0; 71 } 72 LpSolverBase &LpCplex::_copyLp() { 73 return *(LpSolverBase*)0; 74 //Ez lesz majd CPXcloneprob (env, lp, &status); 75 } 70 76 71 77 int LpCplex::_addCol() … … 156 162 //FIXME error 157 163 } 158 164 159 165 int cnt=1; 160 166 int indices[1]; … … 166 172 CPXchgsense (env, lp, cnt, indices, sense); 167 173 CPXchgcoef (env, lp, i, -1, ub); 174 168 175 } 169 176 else{ … … 189 196 } 190 197 191 void LpCplex::_setRowLowerBound(int i, Value value)192 {193 //Not implemented, obsolete194 }195 196 void LpCplex::_setRowUpperBound(int i, Value value)197 {198 //Not implemented, obsolete199 // //TODO Ezt kell meg megirni200 // //type of the problem201 // char sense[1];202 // status = CPXgetsense (env, lp, sense, i, i);203 // Value rhs[1];204 // status = CPXgetrhs (env, lp, rhs, i, i);205 206 // switch (sense[0]) {207 // case 'L'://<= constraint208 // break;209 // case 'E'://= constraint210 // break;211 // case 'G'://>= constraint212 // break;213 // case 'R'://ranged constraint214 // break;215 // default: ;216 // //FIXME error217 // }218 219 // status = CPXchgcoef (env, lp, i, -2, value_rng);220 }198 // void LpCplex::_setRowLowerBound(int i, Value value) 199 // { 200 // //Not implemented, obsolete 201 // } 202 203 // void LpCplex::_setRowUpperBound(int i, Value value) 204 // { 205 // //Not implemented, obsolete 206 // // //TODO Ezt kell meg megirni 207 // // //type of the problem 208 // // char sense[1]; 209 // // status = CPXgetsense (env, lp, sense, i, i); 210 // // Value rhs[1]; 211 // // status = CPXgetrhs (env, lp, rhs, i, i); 212 213 // // switch (sense[0]) { 214 // // case 'L'://<= constraint 215 // // break; 216 // // case 'E'://= constraint 217 // // break; 218 // // case 'G'://>= constraint 219 // // break; 220 // // case 'R'://ranged constraint 221 // // break; 222 // // default: ; 223 // // //FIXME error 224 // // } 225 226 // // status = CPXchgcoef (env, lp, i, -2, value_rng); 227 // } 221 228 222 229 void LpCplex::_setObjCoeff(int i, Value obj_coef) … … 255 262 LpCplex::SolutionStatus LpCplex::_getPrimalStatus() 256 263 { 264 // CPX_STAT_ABORT_DUAL_OBJ_LIM 265 // CPX_STAT_ABORT_IT_LIM 266 // CPX_STAT_ABORT_OBJ_LIM 267 // CPX_STAT_ABORT_PRIM_OBJ_LIM 268 // CPX_STAT_ABORT_TIME_LIM 269 // CPX_STAT_ABORT_USER 270 // CPX_STAT_FEASIBLE_RELAXED 271 // CPX_STAT_INFEASIBLE 272 // CPX_STAT_INForUNBD 273 // CPX_STAT_NUM_BEST 274 // CPX_STAT_OPTIMAL 275 // CPX_STAT_OPTIMAL_FACE_UNBOUNDED 276 // CPX_STAT_OPTIMAL_INFEAS 277 // CPX_STAT_OPTIMAL_RELAXED 278 // CPX_STAT_UNBOUNDED 279 257 280 //Unimplemented 258 return OPTIMAL; 259 // int stat= lpx_get_status(lp); 260 // switch (stat) { 261 // case LPX_UNDEF://Undefined (no solve has been run yet) 262 // return UNDEFINED; 263 // break; 264 // case LPX_NOFEAS://There is no feasible solution (primal, I guess) 265 // case LPX_INFEAS://Infeasible 266 // return INFEASIBLE; 267 // break; 268 // case LPX_UNBND://Unbounded 269 // return INFINITE; 270 // break; 271 // case LPX_FEAS://Feasible 272 // return FEASIBLE; 273 // break; 274 // case LPX_OPT://Feasible 275 // return OPTIMAL; 276 // break; 277 // default: 278 // return UNDEFINED; //to avoid gcc warning 279 // //FIXME error 280 // } 281 int stat = CPXgetstat (env, lp); 282 switch (stat) { 283 case CPX_STAT_OPTIMAL://Optimal 284 return OPTIMAL; 285 break; 286 case CPX_STAT_INFEASIBLE://Infeasible 287 return INFEASIBLE; 288 break; 289 case CPX_STAT_UNBOUNDED://Unbounded 290 return INFINITE; 291 break; 292 case CPX_STAT_NUM_BEST://Feasible 293 return FEASIBLE; 294 break; 295 default: 296 return UNDEFINED; //Everything else comes here 297 //FIXME error 298 } 281 299 } 282 300 … … 290 308 LpCplex::Value LpCplex::_getPrimalValue() 291 309 { 292 //Unimplemented 293 return 0; 310 Value objval; 311 //method = CPXgetmethod (env, lp); 312 status = CPXgetobjval (env, lp, &objval); 313 return objval; 294 314 } 295 315 -
src/lemon/lp_cplex.h
r1398 r1405 66 66 virtual void _setColLowerBound(int i, Value value); 67 67 virtual void _setColUpperBound(int i, Value value); 68 virtual void _setRowLowerBound(int i, Value value);69 virtual void _setRowUpperBound(int i, Value value);68 // virtual void _setRowLowerBound(int i, Value value); 69 // virtual void _setRowUpperBound(int i, Value value); 70 70 virtual void _setRowBounds(int i, Value lower, Value upper); 71 71 virtual void _setObjCoeff(int i, Value obj_coef); -
src/lemon/lp_glpk.cc
r1379 r1405 176 176 } 177 177 178 void LpGlpk::_setRowLowerBound(int i, Value lo)179 {180 if (lo==INF) {181 //FIXME error182 }183 int b=lpx_get_row_type(lp, i);184 double up=lpx_get_row_ub(lp, i);185 if (lo==-INF) {186 switch (b) {187 case LPX_FR:188 case LPX_LO:189 lpx_set_row_bnds(lp, i, LPX_FR, lo, up);190 break;191 case LPX_UP:192 break;193 case LPX_DB:194 case LPX_FX:195 lpx_set_row_bnds(lp, i, LPX_UP, lo, up);196 break;197 default: ;198 //FIXME error199 }200 } else {201 switch (b) {202 case LPX_FR:203 case LPX_LO:204 lpx_set_row_bnds(lp, i, LPX_LO, lo, up);205 break;206 case LPX_UP:207 case LPX_DB:208 case LPX_FX:209 if (lo==up)210 lpx_set_row_bnds(lp, i, LPX_FX, lo, up);211 else212 lpx_set_row_bnds(lp, i, LPX_DB, lo, up);213 break;214 default: ;215 //FIXME error216 }217 }218 }219 220 void LpGlpk::_setRowUpperBound(int i, Value up)221 {222 if (up==-INF) {223 //FIXME error224 }225 int b=lpx_get_row_type(lp, i);226 double lo=lpx_get_row_lb(lp, i);227 if (up==INF) {228 switch (b) {229 case LPX_FR:230 case LPX_LO:231 break;232 case LPX_UP:233 lpx_set_row_bnds(lp, i, LPX_FR, lo, up);234 break;235 case LPX_DB:236 case LPX_FX:237 lpx_set_row_bnds(lp, i, LPX_LO, lo, up);238 break;239 default: ;240 //FIXME error241 }242 } else {243 switch (b) {244 case LPX_FR:245 lpx_set_row_bnds(lp, i, LPX_UP, lo, up);246 break;247 case LPX_UP:248 lpx_set_row_bnds(lp, i, LPX_UP, lo, up);249 break;250 case LPX_LO:251 case LPX_DB:252 case LPX_FX:253 if (lo==up)254 lpx_set_row_bnds(lp, i, LPX_FX, lo, up);255 else256 lpx_set_row_bnds(lp, i, LPX_DB, lo, up);257 break;258 default: ;259 //FIXME error260 }261 }262 }178 // void LpGlpk::_setRowLowerBound(int i, Value lo) 179 // { 180 // if (lo==INF) { 181 // //FIXME error 182 // } 183 // int b=lpx_get_row_type(lp, i); 184 // double up=lpx_get_row_ub(lp, i); 185 // if (lo==-INF) { 186 // switch (b) { 187 // case LPX_FR: 188 // case LPX_LO: 189 // lpx_set_row_bnds(lp, i, LPX_FR, lo, up); 190 // break; 191 // case LPX_UP: 192 // break; 193 // case LPX_DB: 194 // case LPX_FX: 195 // lpx_set_row_bnds(lp, i, LPX_UP, lo, up); 196 // break; 197 // default: ; 198 // //FIXME error 199 // } 200 // } else { 201 // switch (b) { 202 // case LPX_FR: 203 // case LPX_LO: 204 // lpx_set_row_bnds(lp, i, LPX_LO, lo, up); 205 // break; 206 // case LPX_UP: 207 // case LPX_DB: 208 // case LPX_FX: 209 // if (lo==up) 210 // lpx_set_row_bnds(lp, i, LPX_FX, lo, up); 211 // else 212 // lpx_set_row_bnds(lp, i, LPX_DB, lo, up); 213 // break; 214 // default: ; 215 // //FIXME error 216 // } 217 // } 218 // } 219 220 // void LpGlpk::_setRowUpperBound(int i, Value up) 221 // { 222 // if (up==-INF) { 223 // //FIXME error 224 // } 225 // int b=lpx_get_row_type(lp, i); 226 // double lo=lpx_get_row_lb(lp, i); 227 // if (up==INF) { 228 // switch (b) { 229 // case LPX_FR: 230 // case LPX_LO: 231 // break; 232 // case LPX_UP: 233 // lpx_set_row_bnds(lp, i, LPX_FR, lo, up); 234 // break; 235 // case LPX_DB: 236 // case LPX_FX: 237 // lpx_set_row_bnds(lp, i, LPX_LO, lo, up); 238 // break; 239 // default: ; 240 // //FIXME error 241 // } 242 // } else { 243 // switch (b) { 244 // case LPX_FR: 245 // lpx_set_row_bnds(lp, i, LPX_UP, lo, up); 246 // break; 247 // case LPX_UP: 248 // lpx_set_row_bnds(lp, i, LPX_UP, lo, up); 249 // break; 250 // case LPX_LO: 251 // case LPX_DB: 252 // case LPX_FX: 253 // if (lo==up) 254 // lpx_set_row_bnds(lp, i, LPX_FX, lo, up); 255 // else 256 // lpx_set_row_bnds(lp, i, LPX_DB, lo, up); 257 // break; 258 // default: ; 259 // //FIXME error 260 // } 261 // } 262 // } 263 263 264 264 void LpGlpk::_setRowBounds(int i, Value lb, Value ub) -
src/lemon/lp_glpk.h
r1398 r1405 61 61 virtual void _setColLowerBound(int i, Value value); 62 62 virtual void _setColUpperBound(int i, Value value); 63 virtual void _setRowLowerBound(int i, Value value);64 virtual void _setRowUpperBound(int i, Value value);63 // virtual void _setRowLowerBound(int i, Value value); 64 // virtual void _setRowUpperBound(int i, Value value); 65 65 virtual void _setRowBounds(int i, Value lower, Value upper); 66 66 virtual void _setObjCoeff(int i, Value obj_coef); -
src/lemon/lp_skeleton.cc
r1390 r1405 66 66 } 67 67 68 void LpSkeleton::_setRowLowerBound(int, Value)69 {70 }68 // void LpSkeleton::_setRowLowerBound(int, Value) 69 // { 70 // } 71 71 72 void LpSkeleton::_setRowUpperBound(int, Value)73 {74 }72 // void LpSkeleton::_setRowUpperBound(int, Value) 73 // { 74 // } 75 75 76 76 void LpSkeleton::_setRowBounds(int, Value, Value) -
src/lemon/lp_skeleton.h
r1390 r1405 69 69 /// \e 70 70 71 /// The lower bound of a linear expression (row) have to be given by an 71 // /// The lower bound of a linear expression (row) have to be given by an 72 // /// extended number of type Value, i.e. a finite number of type 73 // /// Value or -\ref INF. 74 // virtual void _setRowLowerBound(int i, Value value); 75 // /// \e 76 77 // /// The upper bound of a linear expression (row) have to be given by an 78 // /// extended number of type Value, i.e. a finite number of type 79 // /// Value or \ref INF. 80 // virtual void _setRowUpperBound(int i, Value value); 81 82 /// The lower and upper bound of a linear expression (row) have to be 83 /// given by an 72 84 /// extended number of type Value, i.e. a finite number of type 73 /// Value or -\ref INF. 74 virtual void _setRowLowerBound(int i, Value value); 75 /// \e 76 77 /// \e 85 /// Value or +/-\ref INF. 78 86 virtual void _setRowBounds(int i, Value lb, Value ub); 79 87 /// \e 80 88 81 /// The upper bound of a linear expression (row) have to be given by an82 /// extended number of type Value, i.e. a finite number of type83 /// Value or \ref INF.84 virtual void _setRowUpperBound(int i, Value value);85 89 86 90 /// \e
Note: See TracChangeset
for help on using the changeset viewer.