Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "glpk.h"
- int main()
- {
- glp_prob* mip;
- int ia[1+1000], ja[1+1000]; // store mat indices
- double ar[1+1000]; // store mat costs
- double z, x1, x2, x3;
- mip = glp_create_prob();
- glp_set_prob_name(mip, "sample");
- glp_set_obj_dir(mip, GLP_MAX);
- glp_add_rows(mip, 3);
- glp_set_row_name(mip, 1, "p");
- glp_set_row_bnds(mip, 1, GLP_UP, 0.0, 100.0);
- glp_set_row_name(mip, 2, "q");
- glp_set_row_bnds(mip, 2, GLP_UP, 0.0, 600.0);
- glp_set_row_name(mip, 3, "r");
- glp_set_row_bnds(mip, 3, GLP_UP, 0.0, 300.0);
- glp_add_cols(mip, 3);
- glp_set_col_name(mip, 1, "x1");
- glp_set_col_kind(mip, 1, GLP_IV);
- glp_set_col_bnds(mip, 1, GLP_LO, 0.0, 0.0);
- glp_set_obj_coef(mip, 1, 10.0);
- glp_set_col_name(mip, 2, "x2");
- glp_set_col_bnds(mip, 2, GLP_LO, 0.0, 0.0);
- glp_set_obj_coef(mip, 2, 6.0);
- glp_set_col_name(mip, 3, "x3");
- glp_set_col_bnds(mip, 3, GLP_LO, 0.0, 0.0);
- glp_set_obj_coef(mip, 3, 4.0);
- ia[1] = 1, ja[1] = 1, ar[1] = 1.0; /* a[1,1] = 1 */
- ia[2] = 1, ja[2] = 2, ar[2] = 1.0; /* a[1,2] = 1 */
- ia[3] = 1, ja[3] = 3, ar[3] = 1.0; /* a[1,3] = 1 */
- ia[4] = 2, ja[4] = 1, ar[4] = 10.0; /* a[2,1] = 10 */
- ia[5] = 3, ja[5] = 1, ar[5] = 2.0; /* a[3,1] = 2 */
- ia[6] = 2, ja[6] = 2, ar[6] = 4.0; /* a[2,2] = 4 */
- ia[7] = 3, ja[7] = 2, ar[7] = 2.0; /* a[3,2] = 2 */
- ia[8] = 2, ja[8] = 3, ar[8] = 5.0; /* a[2,3] = 5 */
- ia[9] = 3, ja[9] = 3, ar[9] = 6.0; /* a[3,3] = 6 */
- glp_load_matrix(mip, 9, ia, ja, ar);
- glp_iocp cparams;
- glp_init_iocp(&cparams);
- cparams.presolve = GLP_ON;
- int rc = glp_intopt(mip, &cparams);
- std::cout << "Return: ";
- switch (rc) {
- case 0: std::cout << "good\n"; break;
- case GLP_EBOUND: std::cout << "glp_ebound\n"; break;
- case GLP_EROOT: std::cout << "glp_eroot\n"; break;
- case GLP_ENOPFS: std::cout << "glp_enopfs\n"; break;
- case GLP_ENODFS: std::cout << "glp_enodfs\n"; break;
- case GLP_EFAIL: std::cout << "glp_efail\n"; break;
- case GLP_EMIPGAP: std::cout << "glp_emipgap\n"; break;
- case GLP_ETMLIM: std::cout << "glp_etmlim\n"; break;
- case GLP_ESTOP: std::cout << "glp_estop\n"; break;
- }
- z = glp_mip_obj_val(mip);
- x1 = glp_mip_col_val(mip, 1);
- x2 = glp_mip_col_val(mip, 2);
- x3 = glp_mip_col_val(mip, 3);
- int status = glp_mip_status(mip);
- printf("\nz = %g; x1 = %g; x2 = %g; x3 = %g\n",
- z, x1, x2, x3);
- glp_delete_prob(mip);
- std::cout << "Status: ";
- switch (status) {
- case GLP_UNDEF: std::cout << "glp_undef\n"; break;
- case GLP_OPT: std::cout << "glp_opt\n"; break;
- case GLP_FEAS: std::cout << "glp_feas\n"; break;
- case GLP_NOFEAS:std::cout << "glp_nofeas\n";break;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment