I understand the pain of writing up your own matrix generator. Another possible idea is that perhaps your security system will allow a static "data" file that doesn't change (much like your "model" file), but use the new extensions the Xypron and Andrew developed to read the data from a database.
-Marc -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Fábio Moura Sent: Thursday, June 12, 2008 5:03 PM To: [email protected] Subject: Re: [Help-glpk] Passing arguments instead of an input file Hi, Marc. I had already seen this code. The problem is that the model we are implementing is a huge one, full of details and lots of different variables and creating it in memory would be a probably impossible task in the near future. Is it the only way, though? Maybe, instead of an text input file, I could pass a string (with the same contents)? I would have to rewrite some code, but could be it easier... Does anyone have tried it before? Best regards! FM On Thu, Jun 12, 2008 at 5:42 PM, Meketon, Marc <[EMAIL PROTECTED]> wrote: > See "sample.c" in the "examples" directory for a technique to create the > problem in memory and pass it to GLPK. > > Below is a cut and paste of "sample.c": > > /* sample.c */ > > #include <stdio.h> > #include <stdlib.h> > #include <glpk.h> > > int main(void) > { glp_prob *lp; > int ia[1+1000], ja[1+1000]; > double ar[1+1000], z, x1, x2, x3; > s1: lp = glp_create_prob(); > s2: glp_set_prob_name(lp, "sample"); > s3: glp_set_obj_dir(lp, GLP_MAX); > s4: glp_add_rows(lp, 3); > s5: glp_set_row_name(lp, 1, "p"); > s6: glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0); > s7: glp_set_row_name(lp, 2, "q"); > s8: glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0); > s9: glp_set_row_name(lp, 3, "r"); > s10: glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0); > s11: glp_add_cols(lp, 3); > s12: glp_set_col_name(lp, 1, "x1"); > s13: glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); > s14: glp_set_obj_coef(lp, 1, 10.0); > s15: glp_set_col_name(lp, 2, "x2"); > s16: glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0); > s17: glp_set_obj_coef(lp, 2, 6.0); > s18: glp_set_col_name(lp, 3, "x3"); > s19: glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0); > s20: glp_set_obj_coef(lp, 3, 4.0); > s21: ia[1] = 1, ja[1] = 1, ar[1] = 1.0; /* a[1,1] = 1 */ > s22: ia[2] = 1, ja[2] = 2, ar[2] = 1.0; /* a[1,2] = 1 */ > s23: ia[3] = 1, ja[3] = 3, ar[3] = 1.0; /* a[1,3] = 1 */ > s24: ia[4] = 2, ja[4] = 1, ar[4] = 10.0; /* a[2,1] = 10 */ > s25: ia[5] = 3, ja[5] = 1, ar[5] = 2.0; /* a[3,1] = 2 */ > s26: ia[6] = 2, ja[6] = 2, ar[6] = 4.0; /* a[2,2] = 4 */ > s27: ia[7] = 3, ja[7] = 2, ar[7] = 2.0; /* a[3,2] = 2 */ > s28: ia[8] = 2, ja[8] = 3, ar[8] = 5.0; /* a[2,3] = 5 */ > s29: ia[9] = 3, ja[9] = 3, ar[9] = 6.0; /* a[3,3] = 6 */ > s30: glp_load_matrix(lp, 9, ia, ja, ar); > s31: glp_simplex(lp, NULL); > s32: z = glp_get_obj_val(lp); > s33: x1 = glp_get_col_prim(lp, 1); > s34: x2 = glp_get_col_prim(lp, 2); > s35: x3 = glp_get_col_prim(lp, 3); > s36: printf("\nz = %g; x1 = %g; x2 = %g; x3 = %g\n", > z, x1, x2, x3); > s37: glp_delete_prob(lp); > return 0; > } > > /* eof */ > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Fábio Moura > Sent: Thursday, June 12, 2008 4:39 PM > To: [email protected] > Subject: [Help-glpk] Passing arguments instead of an input file > > Ladies and Gentlemen, > > I'm programming a C/C++ application with the GLPK API and I'm > currently using the function > > LPX *lpx_read_model(char *model, char *data, char *output) > > to read and translate the model and problem data. Unfortunately, due > to a security restriction of the system, I won't be able to write an > input file with the problem data and, therefore, "feed" my problem > instance with it (even though my code is open and I delete the input > file right after reading it).. > > Does anyone know a way of passing the problem data to a problem > instance as arguments of a function (C language)? I can't use an input > file with the problem data... > > Any ideas? > > Thanks in advance! > > -- > Fábio Lucas Carneiro de Moura > > > _______________________________________________ > Help-glpk mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/help-glpk > -- Fábio Lucas Carneiro de Moura _______________________________________________ Help-glpk mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-glpk _______________________________________________ Help-glpk mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-glpk
