#include #include void solve(glp_prob* lp, int direction) { int retval, status; glp_set_obj_dir(lp, direction); retval= glp_simplex(lp, NULL); status= glp_get_status(lp); printf("======= %s is: %f, status is %s\n", direction == GLP_MIN ? "Min" : "Max", glp_get_obj_val(lp), retval == 0 && status == GLP_OPT ? "GOOD" : "BAD"); } int main() { glp_prob* lp; int iArray[]= {0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7}; int jArray[]= {0, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2}; double aArray[]= {0, 1., 647031449064., 1., 647032078518., 1., 647032381968., 1., 647042013534., 1., 647032038348., 1., 647032787700., 1., 647041996668.}; lp= glp_create_prob(); glp_add_rows(lp, 7); glp_set_row_bnds(lp, 1, GLP_UP, 0., 726267340506.); glp_set_row_bnds(lp, 2, GLP_UP, 0., 726267861126.); glp_set_row_bnds(lp, 3, GLP_UP, 0., 726268149468.); glp_set_row_bnds(lp, 4, GLP_UP, 0., 726277781940.); glp_set_row_bnds(lp, 5, GLP_LO, 726267401214., 0.); glp_set_row_bnds(lp, 6, GLP_LO, 726268194390., 0.); glp_set_row_bnds(lp, 7, GLP_LO, 726277416294., 0.); glp_add_cols(lp, 2); glp_set_col_name(lp, 1, "a0"); glp_set_col_bnds(lp, 1, GLP_FR, 0., 0.); glp_set_obj_coef(lp, 1, 1.0); glp_set_col_name(lp, 2, "a1"); glp_set_col_bnds(lp, 2, GLP_LO, 0., 0.); glp_set_obj_coef(lp, 2, 647031449064.); glp_load_matrix(lp, 14, iArray, jArray, aArray); solve(lp, GLP_MIN); solve(lp, GLP_MAX); // Scale and repeat glp_scale_prob(lp, GLP_SF_AUTO); solve(lp, GLP_MIN); solve(lp, GLP_MAX); return 0; }