Guest User

Untitled

a guest
Jun 21st, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. #include <iostream>
  2. #include "glpk.h"
  3.  
  4. int main()
  5. {
  6. glp_prob* mip;
  7. int ia[1+1000], ja[1+1000]; // store mat indices
  8. double ar[1+1000]; // store mat costs
  9. double z, x1, x2, x3;
  10.  
  11. mip = glp_create_prob();
  12.  
  13. glp_set_prob_name(mip, "sample");
  14. glp_set_obj_dir(mip, GLP_MAX);
  15.  
  16. glp_add_rows(mip, 3);
  17. glp_set_row_name(mip, 1, "p");
  18. glp_set_row_bnds(mip, 1, GLP_UP, 0.0, 100.0);
  19. glp_set_row_name(mip, 2, "q");
  20. glp_set_row_bnds(mip, 2, GLP_UP, 0.0, 600.0);
  21. glp_set_row_name(mip, 3, "r");
  22. glp_set_row_bnds(mip, 3, GLP_UP, 0.0, 300.0);
  23.  
  24. glp_add_cols(mip, 3);
  25. glp_set_col_name(mip, 1, "x1");
  26. glp_set_col_kind(mip, 1, GLP_IV);
  27. glp_set_col_bnds(mip, 1, GLP_LO, 0.0, 0.0);
  28. glp_set_obj_coef(mip, 1, 10.0);
  29. glp_set_col_name(mip, 2, "x2");
  30. glp_set_col_bnds(mip, 2, GLP_LO, 0.0, 0.0);
  31. glp_set_obj_coef(mip, 2, 6.0);
  32. glp_set_col_name(mip, 3, "x3");
  33. glp_set_col_bnds(mip, 3, GLP_LO, 0.0, 0.0);
  34. glp_set_obj_coef(mip, 3, 4.0);
  35. ia[1] = 1, ja[1] = 1, ar[1] = 1.0; /* a[1,1] = 1 */
  36. ia[2] = 1, ja[2] = 2, ar[2] = 1.0; /* a[1,2] = 1 */
  37. ia[3] = 1, ja[3] = 3, ar[3] = 1.0; /* a[1,3] = 1 */
  38. ia[4] = 2, ja[4] = 1, ar[4] = 10.0; /* a[2,1] = 10 */
  39. ia[5] = 3, ja[5] = 1, ar[5] = 2.0; /* a[3,1] = 2 */
  40. ia[6] = 2, ja[6] = 2, ar[6] = 4.0; /* a[2,2] = 4 */
  41. ia[7] = 3, ja[7] = 2, ar[7] = 2.0; /* a[3,2] = 2 */
  42. ia[8] = 2, ja[8] = 3, ar[8] = 5.0; /* a[2,3] = 5 */
  43. ia[9] = 3, ja[9] = 3, ar[9] = 6.0; /* a[3,3] = 6 */
  44. glp_load_matrix(mip, 9, ia, ja, ar);
  45.  
  46. glp_iocp cparams;
  47. glp_init_iocp(&cparams);
  48. cparams.presolve = GLP_ON;
  49. int rc = glp_intopt(mip, &cparams);
  50. std::cout << "Return: ";
  51. switch (rc) {
  52. case 0: std::cout << "good\n"; break;
  53. case GLP_EBOUND: std::cout << "glp_ebound\n"; break;
  54. case GLP_EROOT: std::cout << "glp_eroot\n"; break;
  55. case GLP_ENOPFS: std::cout << "glp_enopfs\n"; break;
  56. case GLP_ENODFS: std::cout << "glp_enodfs\n"; break;
  57. case GLP_EFAIL: std::cout << "glp_efail\n"; break;
  58. case GLP_EMIPGAP: std::cout << "glp_emipgap\n"; break;
  59. case GLP_ETMLIM: std::cout << "glp_etmlim\n"; break;
  60. case GLP_ESTOP: std::cout << "glp_estop\n"; break;
  61. }
  62. z = glp_mip_obj_val(mip);
  63. x1 = glp_mip_col_val(mip, 1);
  64. x2 = glp_mip_col_val(mip, 2);
  65. x3 = glp_mip_col_val(mip, 3);
  66. int status = glp_mip_status(mip);
  67. printf("\nz = %g; x1 = %g; x2 = %g; x3 = %g\n",
  68. z, x1, x2, x3);
  69. glp_delete_prob(mip);
  70.  
  71. std::cout << "Status: ";
  72. switch (status) {
  73. case GLP_UNDEF: std::cout << "glp_undef\n"; break;
  74. case GLP_OPT: std::cout << "glp_opt\n"; break;
  75. case GLP_FEAS: std::cout << "glp_feas\n"; break;
  76. case GLP_NOFEAS:std::cout << "glp_nofeas\n";break;
  77. }
  78.  
  79. return 0;
  80. }
Add Comment
Please, Sign In to add comment