Hi Luca, This problem can be solved by inspection. You were given
> minimize { sum[from i=1 to 96] of {c1*x1(i)+c2*x2(i)+c3*x3(i)} } > with this constraints: > x1(i)+x2(i)+x3(i)=c4(i) > x1(i)+x3(i)=c5 > x1>=5 > 0<=x2<=1 binary > 0<=x3<=1 binary > > where x1, x2, x3 and c4 are vectors of 96 elements. c1,c2,c3,c5 are > contants. Subtracting the second equality from the first equality gives x2(i) = c4(i)-c5 which tells us a couple of things. First, because x2(i) is binary, not every choice of parameters will lead to a feasible MIP solution. c4(i) must be either c5 or c5 + 1. The second equality gives x1(i) = c5 - x3(i) >= 5 which tells us c5 >= 5 for feasible solutions for x1(i), and c5 >= 6 for nontrivial solutions for x3(i). Assuming feasibility for x1(i) and x2(i), we can substitute their solutions into the objective function obj = C + { sum[from i=1 to 96] of {(c3-c1)*x3(i)} } where C is a constant that I'm too lazy to write out. So it comes down to the values of (c3-c1). Provided c5 >= 6 then x3(i) = - sgn(c3-c1). If you still want to write a solver for the problem you should be careful about handling coefficients. Jeff On Fri, Jan 4, 2013 at 6:35 AM, lucacoopers <lucacoop...@hotmail.it> wrote: > > Hi Raniere Silva. > Thank you so much for your help. > I need to build the model with the c language without using the mathprog > and > standalone solver. > > an example of code to resolve a minimization problem that I have is as > follows: > > /* provaglpk.c */ > > #include <stdio.h> > #include <stdlib.h> > #include <glpk.h> > > int main(void) > { glp_prob *lp; > int ia[1+1000], ja[1+1000]; > double x3, x6; > double ar[1+1000], z, x1, x2, x4, x5; > lp = glp_create_prob(); > glp_set_prob_name(lp, "provaglpk"); > glp_set_obj_dir(lp, GLP_MIN); > glp_add_rows(lp, 1); > glp_set_row_name(lp, 1, "p"); > glp_set_row_bnds(lp, 1, GLP_FX, 600, 0.0); > glp_add_cols(lp, 6); > glp_set_col_name(lp, 1, "x1"); > glp_set_col_bnds(lp, 1, GLP_DB, 0, 240); > glp_set_obj_coef(lp, 1, 0.18); > glp_set_col_name(lp, 2, "x2"); > glp_set_col_bnds(lp, 2, GLP_DB, 0, 480); > glp_set_obj_coef(lp, 2, 0.17); > > glp_set_col_name(lp, 3, "x3"); > glp_set_col_bnds(lp, 3, GLP_DB, 0.0, 1.0); > glp_set_col_kind(lp, 3, GLP_IV); > glp_set_obj_coef(lp, 3, 0.2); > > glp_set_col_name(lp, 4, "x4"); > glp_set_col_bnds(lp, 4, GLP_DB, 0, 240); > glp_set_obj_coef(lp, 4, 0.18); > glp_set_col_name(lp, 5, "x5"); > glp_set_col_bnds(lp, 5, GLP_DB, 0, 480); > glp_set_obj_coef(lp, 5, 0.17); > glp_set_col_name(lp, 6, "x6"); > glp_set_col_bnds(lp, 6, GLP_DB, 0, 1); > glp_set_col_kind(lp, 6, GLP_BV); > glp_set_obj_coef(lp, 6, 0.2); > 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] = 48; > ia[4] = 1, ja[4] = 4, ar[4] = 1; > ia[5] = 1, ja[5] = 5, ar[5] = 1; > ia[6] = 1, ja[6] = 6, ar[6] = 48; > glp_load_matrix(lp, 6, ia, ja, ar); > int status; > status = glp_simplex(lp, NULL); > status = glp_intopt(lp, NULL); > z = glp_get_obj_val(lp); > x1 = glp_mip_col_val(lp, 1); > x2 = glp_mip_col_val(lp, 2); > x3 = glp_mip_col_val(lp, 3); > x4 = glp_mip_col_val(lp, 4); > x5 = glp_mip_col_val(lp, 5); > x6 = glp_mip_col_val(lp, 6); > printf("\nz = %f; x1 = %f; x2 = %f; x3 = %f; x4 = %f; x5 = %f; x6 = > %f\n",z, x1, x2, x3, x4, x5 ,x6); > glp_delete_prob(lp); > system("pause"); > return 0; > } > /* eof */ > > Tihs is a more complex problem. > > The solution that i need is like this. > > Do you help me? > > Thanks again! =) > -- > View this message in context: > http://old.nabble.com/Help%3A-How-to-build-MIP-model-tp34858053p34858521.html > Sent from the Gnu - GLPK - Help mailing list archive at Nabble.com. > > > _______________________________________________ > Help-glpk mailing list > Help-glpk@gnu.org > https://lists.gnu.org/mailman/listinfo/help-glpk >
_______________________________________________ Help-glpk mailing list Help-glpk@gnu.org https://lists.gnu.org/mailman/listinfo/help-glpk