An unnecessary duplicate removed.
1.1 --- a/src/work/athos/lp/lp_sample.cc Fri Apr 15 21:15:30 2005 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,96 +0,0 @@
1.4 -#include <iostream>
1.5 -#include <lemon/lp_glpk.h>
1.6 -using namespace lemon;
1.7 -
1.8 -int main()
1.9 -{
1.10 - //The following example is taken from the documentation of the GLPK library.
1.11 - //See it in the GLPK reference manual and among the GLPK sample files (sample.c)
1.12 - LpGlpk lp;
1.13 - typedef LpGlpk::Row Row;
1.14 - typedef LpGlpk::Col Col;
1.15 -
1.16 - lp.max();
1.17 -
1.18 - Col x1 = lp.addCol();
1.19 - Col x2 = lp.addCol();
1.20 - Col x3 = lp.addCol();
1.21 -
1.22 - //One solution
1.23 - // Row p = lp.addRow();
1.24 - // Row q = lp.addRow();
1.25 - // Row r = lp.addRow();
1.26 - // lp.setRow(p,x1+x2+x3 <=100);
1.27 - // lp.setRow(q,10*x1+4*x2+5*x3<=600);
1.28 - // lp.setRow(r,2*x1+2*x2+6*x3<=300);
1.29 -
1.30 - //A more elegant one
1.31 - //Constraints
1.32 - lp.addRow(x1+x2+x3 <=100);
1.33 - lp.addRow(10*x1+4*x2+5*x3<=600);
1.34 - lp.addRow(2*x1+2*x2+6*x3<=300);
1.35 - //Nonnegativity of the variables
1.36 - lp.colLowerBound(x1, 0);
1.37 - lp.colLowerBound(x2, 0);
1.38 - lp.colLowerBound(x3, 0);
1.39 - //Objective function
1.40 - lp.setObj(10*x1+6*x2+4*x3);
1.41 -
1.42 - lp.solve();
1.43 -
1.44 - if (lp.primalStatus()==LpSolverBase::OPTIMAL){
1.45 - printf("Z = %g; x1 = %g; x2 = %g; x3 = %g\n",
1.46 - lp.primalValue(),
1.47 - lp.primal(x1), lp.primal(x2), lp.primal(x3));
1.48 - }
1.49 - else{
1.50 - std::cout<<"Optimal solution not found!"<<std::endl;
1.51 - }
1.52 -
1.53 -
1.54 - //Here comes the same problem written in C using GLPK API routines
1.55 -
1.56 -// LPX *lp;
1.57 -// int ia[1+1000], ja[1+1000];
1.58 -// double ar[1+1000], Z, x1, x2, x3;
1.59 -// s1: lp = lpx_create_prob();
1.60 -// s2: lpx_set_prob_name(lp, "sample");
1.61 -// s3: lpx_set_obj_dir(lp, LPX_MAX);
1.62 -// s4: lpx_add_rows(lp, 3);
1.63 -// s5: lpx_set_row_name(lp, 1, "p");
1.64 -// s6: lpx_set_row_bnds(lp, 1, LPX_UP, 0.0, 100.0);
1.65 -// s7: lpx_set_row_name(lp, 2, "q");
1.66 -// s8: lpx_set_row_bnds(lp, 2, LPX_UP, 0.0, 600.0);
1.67 -// s9: lpx_set_row_name(lp, 3, "r");
1.68 -// s10: lpx_set_row_bnds(lp, 3, LPX_UP, 0.0, 300.0);
1.69 -// s11: lpx_add_cols(lp, 3);
1.70 -// s12: lpx_set_col_name(lp, 1, "x1");
1.71 -// s13: lpx_set_col_bnds(lp, 1, LPX_LO, 0.0, 0.0);
1.72 -// s14: lpx_set_obj_coef(lp, 1, 10.0);
1.73 -// s15: lpx_set_col_name(lp, 2, "x2");
1.74 -// s16: lpx_set_col_bnds(lp, 2, LPX_LO, 0.0, 0.0);
1.75 -// s17: lpx_set_obj_coef(lp, 2, 6.0);
1.76 -// s18: lpx_set_col_name(lp, 3, "x3");
1.77 -// s19: lpx_set_col_bnds(lp, 3, LPX_LO, 0.0, 0.0);
1.78 -// s20: lpx_set_obj_coef(lp, 3, 4.0);
1.79 -// s21: ia[1] = 1, ja[1] = 1, ar[1] = 1.0; /* a[1,1] = 1 */
1.80 -// s22: ia[2] = 1, ja[2] = 2, ar[2] = 1.0; /* a[1,2] = 1 */
1.81 -// s23: ia[3] = 1, ja[3] = 3, ar[3] = 1.0; /* a[1,3] = 1 */
1.82 -// s24: ia[4] = 2, ja[4] = 1, ar[4] = 10.0; /* a[2,1] = 10 */
1.83 -// s25: ia[5] = 3, ja[5] = 1, ar[5] = 2.0; /* a[3,1] = 2 */
1.84 -// s26: ia[6] = 2, ja[6] = 2, ar[6] = 4.0; /* a[2,2] = 4 */
1.85 -// s27: ia[7] = 3, ja[7] = 2, ar[7] = 2.0; /* a[3,2] = 2 */
1.86 -// s28: ia[8] = 2, ja[8] = 3, ar[8] = 5.0; /* a[2,3] = 5 */
1.87 -// s29: ia[9] = 3, ja[9] = 3, ar[9] = 6.0; /* a[3,3] = 6 */
1.88 -// s30: lpx_load_matrix(lp, 9, ia, ja, ar);
1.89 -// s31: lpx_simplex(lp);
1.90 -// s32: Z = lpx_get_obj_val(lp);
1.91 -// s33: x1 = lpx_get_col_prim(lp, 1);
1.92 -// s34: x2 = lpx_get_col_prim(lp, 2);
1.93 -// s35: x3 = lpx_get_col_prim(lp, 3);
1.94 -// s36: printf("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n", Z, x1, x2, x3);
1.95 -// s37: lpx_delete_prob(lp);
1.96 -// return 0;
1.97 -
1.98 - return 0;
1.99 -}