/* # Program to create following LP model. Maximize Z = 10 x1 + 6 x2 + 4 x3 Subject to x1 + x2 + x3 <= 100 10x1 + 4x2 + 5x3 <= 600 2x1 + 2x2 + 6x3 <= 300 8x1 + 3x2 + 5x3 = 400 5x1 + 4x2 + 8x3 = 600 */ #include #include #include #include"glpk.h" int main() { LPX *lp; int ia[1+1000], ja[1+1000]; double ar[1+1000],Z,x1,x2,x3; lp = lpx_create_prob(); lpx_set_obj_dir(lp,LPX_MAX); /* Add 5 constraints/rows. */ lpx_add_rows(lp,5); lpx_set_row_name(lp, 1, "p"); lpx_set_row_bnds(lp, 1, LPX_UP , 0.0 , 100.0); lpx_set_row_name(lp, 2, "q"); lpx_set_row_bnds(lp, 2, LPX_UP , 0.0 , 600.0); lpx_set_row_name(lp, 3, "r"); lpx_set_row_bnds(lp, 3, LPX_UP , 0.0 , 300.0); lpx_set_row_name(lp, 4, "s"); lpx_set_row_bnds(lp, 4, LPX_FX , 400.0 , 400.0); lpx_set_row_name(lp, 5, "t"); lpx_set_row_bnds(lp, 5, LPX_FX , 600.0, 600.0); /* Add 3 variables/columns. */ lpx_add_cols(lp, 3); lpx_set_col_name(lp, 1, "x1"); lpx_set_col_bnds(lp, 1, LPX_LO, 0.0, 0.0); lpx_set_obj_coef(lp, 1, 10.0); lpx_set_col_name(lp, 2, "x2"); lpx_set_col_bnds(lp, 2, LPX_LO, 0.0, 0.0); lpx_set_obj_coef(lp, 2, 6.0); lpx_set_col_name(lp, 3, "x3"); lpx_set_col_bnds(lp, 3, LPX_LO, 0.0, 0.0); lpx_set_obj_coef(lp, 3, 4.0); ia[1]=1, ja[1]=1, ar[1]=1.0; ia[2]=1, ja[2]=2, ar[2]=1.0 ; ia[3]=1, ja[3]=3, ar[3]=1.0 ; ia[4]=2, ja[4]=1, ar[4]=10.0; ia[5]=2, ja[5]=2, ar[5]=4.0 ; ia[6]=2, ja[6]=3, ar[6]=5.0 ; ia[7]=3, ja[7]=1, ar[7]=2.0; ia[8]=3, ja[8]=2, ar[8]=2.0 ; ia[9]=3, ja[9]=3, ar[9]=6.0 ; ia[10]=4, ja[10]=1, ar[10]=8.0; ia[11]=4, ja[11]=2, ar[11]=3.0 ; ia[12]=4, ja[12]=3, ar[12]=5.0 ; ia[13]=5, ja[13]=1, ar[13]=5.0; ia[14]=5, ja[14]=2, ar[14]=4.0 ; ia[15]=5, ja[15]=3, ar[15]=8.0 ; lpx_load_matrix(lp, 15, ia, ja, ar); /* Verify LP file. */ lpx_write_cpxlp(lp, "output.lp"); lpx_simplex(lp); return 0; }