// 最適化処理 public SolverResult Simplex(bool messageFlg = true) { glp_smcp smcp = new glp_smcp(); GLPK.glp_init_smcp(smcp); if (!messageFlg) { smcp.msg_lev = GLPK.GLP_MSG_OFF; } return((SolverResult)GLPK.glp_simplex(problem, smcp)); }
static void Main(string[] args) { glp_prob lp; glp_smcp parm; SWIGTYPE_p_int ind; SWIGTYPE_p_double val; int ret; try { lp = GLPK.glp_create_prob (); Console.WriteLine ("Problem created"); // Define columns GLPK.glp_add_cols (lp, 3); GLPK.glp_set_col_name (lp, 1, "x1"); GLPK.glp_set_col_kind (lp, 1, GLPK.GLP_CV); GLPK.glp_set_col_bnds (lp, 1, GLPK.GLP_DB, 0, .5); GLPK.glp_set_col_name (lp, 2, "x2"); GLPK.glp_set_col_kind (lp, 2, GLPK.GLP_CV); GLPK.glp_set_col_bnds (lp, 2, GLPK.GLP_DB, 0, .5); GLPK.glp_set_col_name (lp, 3, "x3"); GLPK.glp_set_col_kind (lp, 3, GLPK.GLP_CV); GLPK.glp_set_col_bnds (lp, 3, GLPK.GLP_DB, 0, .5); // Create constraints // Allocate memory ind = GLPK.new_intArray (3); val = GLPK.new_doubleArray (3); // Create rows GLPK.glp_add_rows (lp, 2); // Set row details GLPK.glp_set_row_name (lp, 1, "c1"); GLPK.glp_set_row_bnds (lp, 1, GLPK.GLP_DB, 0, 0.2); GLPK.intArray_setitem (ind, 1, 1); GLPK.intArray_setitem (ind, 2, 2); GLPK.doubleArray_setitem (val, 1, 1.0); GLPK.doubleArray_setitem (val, 2, -.5); GLPK.glp_set_mat_row (lp, 1, 2, ind, val); GLPK.glp_set_row_name (lp, 2, "c2"); GLPK.glp_set_row_bnds (lp, 2, GLPK.GLP_UP, 0, 0.4); GLPK.intArray_setitem (ind, 1, 2); GLPK.intArray_setitem (ind, 2, 3); GLPK.doubleArray_setitem (val, 1, -1.0); GLPK.doubleArray_setitem (val, 2, 1.0); GLPK.glp_set_mat_row (lp, 2, 2, ind, val); // Free memory GLPK.delete_intArray (ind); GLPK.delete_doubleArray (val); // Define objective GLPK.glp_set_obj_name (lp, "z"); GLPK.glp_set_obj_dir (lp, GLPK.GLP_MIN); GLPK.glp_set_obj_coef (lp, 0, 1.0); GLPK.glp_set_obj_coef (lp, 1, -.5); GLPK.glp_set_obj_coef (lp, 2, .5); GLPK.glp_set_obj_coef (lp, 3, -1); // Solve model parm = new glp_smcp (); GLPK.glp_init_smcp (parm); ret = GLPK.glp_simplex (lp, parm); // Retrieve solution if (ret == 0) { write_lp_solution (lp); } else { Console.WriteLine ("The problem could not be solved"); } // Free memory GLPK.glp_delete_prob (lp); } catch (GlpkException ex) { Console.WriteLine ("Error caught"); ret = 1; } Environment.Exit (ret); }
static void Main(string[] args) { glp_prob lp; glp_smcp parm; SWIGTYPE_p_int ind; SWIGTYPE_p_double val; int ret; try { lp = GLPK.glp_create_prob(); Console.WriteLine("Problem created"); // Define columns GLPK.glp_add_cols(lp, 3); GLPK.glp_set_col_name(lp, 1, "x1"); GLPK.glp_set_col_kind(lp, 1, GLPK.GLP_CV); GLPK.glp_set_col_bnds(lp, 1, GLPK.GLP_DB, 0, .5); GLPK.glp_set_col_name(lp, 2, "x2"); GLPK.glp_set_col_kind(lp, 2, GLPK.GLP_CV); GLPK.glp_set_col_bnds(lp, 2, GLPK.GLP_DB, 0, .5); GLPK.glp_set_col_name(lp, 3, "x3"); GLPK.glp_set_col_kind(lp, 3, GLPK.GLP_CV); GLPK.glp_set_col_bnds(lp, 3, GLPK.GLP_DB, 0, .5); // Create constraints // Allocate memory ind = GLPK.new_intArray(3); val = GLPK.new_doubleArray(3); // Create rows GLPK.glp_add_rows(lp, 2); // Set row details GLPK.glp_set_row_name(lp, 1, "c1"); GLPK.glp_set_row_bnds(lp, 1, GLPK.GLP_DB, 0, 0.2); GLPK.intArray_setitem(ind, 1, 1); GLPK.intArray_setitem(ind, 2, 2); GLPK.doubleArray_setitem(val, 1, 1.0); GLPK.doubleArray_setitem(val, 2, -.5); GLPK.glp_set_mat_row(lp, 1, 2, ind, val); GLPK.glp_set_row_name(lp, 2, "c2"); GLPK.glp_set_row_bnds(lp, 2, GLPK.GLP_UP, 0, 0.4); GLPK.intArray_setitem(ind, 1, 2); GLPK.intArray_setitem(ind, 2, 3); GLPK.doubleArray_setitem(val, 1, -1.0); GLPK.doubleArray_setitem(val, 2, 1.0); GLPK.glp_set_mat_row(lp, 2, 2, ind, val); // Free memory GLPK.delete_intArray(ind); GLPK.delete_doubleArray(val); // Define objective GLPK.glp_set_obj_name(lp, "z"); GLPK.glp_set_obj_dir(lp, GLPK.GLP_MIN); GLPK.glp_set_obj_coef(lp, 0, 1.0); GLPK.glp_set_obj_coef(lp, 1, -.5); GLPK.glp_set_obj_coef(lp, 2, .5); GLPK.glp_set_obj_coef(lp, 3, -1); // Solve model parm = new glp_smcp(); GLPK.glp_init_smcp(parm); ret = GLPK.glp_simplex(lp, parm); // Retrieve solution if (ret == 0) { write_lp_solution(lp); } else { Console.WriteLine("The problem could not be solved"); } // Free memory GLPK.glp_delete_prob(lp); } catch (GlpkException) { Console.WriteLine("Error caught"); ret = 1; } Environment.Exit(ret); }