Mercurial > pub > dyncall > bindings
comparison R/rdyncall/demo/glpk.R @ 0:0cfcc391201f
initial from svn dyncall-1745
| author | Daniel Adler |
|---|---|
| date | Thu, 19 Mar 2015 22:26:28 +0100 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:0cfcc391201f |
|---|---|
| 1 # Example from GLPK Reference Manual.. rewritten to R. | |
| 2 | |
| 3 dynport(glpk) | |
| 4 lp = glp_create_prob(); | |
| 5 glp_set_prob_name(lp, "sample"); | |
| 6 glp_set_obj_dir(lp, GLP_MAX); | |
| 7 glp_add_rows(lp, 3); | |
| 8 glp_set_row_name(lp, 1, "p"); | |
| 9 glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0); | |
| 10 glp_set_row_name(lp, 2, "q"); | |
| 11 glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0); | |
| 12 glp_set_row_name(lp, 3, "r"); | |
| 13 glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0); | |
| 14 glp_add_cols(lp, 3); | |
| 15 glp_set_col_name(lp, 1, "x1"); | |
| 16 glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); | |
| 17 glp_set_obj_coef(lp, 1, 10.0); | |
| 18 glp_set_col_name(lp, 2, "x2"); | |
| 19 glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0); | |
| 20 glp_set_obj_coef(lp, 2, 6.0); | |
| 21 glp_set_col_name(lp, 3, "x3"); | |
| 22 glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0); | |
| 23 glp_set_obj_coef(lp, 3, 4.0); | |
| 24 | |
| 25 ia = integer(1+1000) | |
| 26 ja = integer(1+1000) | |
| 27 ar = double(1+1000) | |
| 28 | |
| 29 #we index at 1 in C (second position).. but in R we start at initial position.. | |
| 30 ia[1]=1;ja[1]=1;ar[1]= 1.0; | |
| 31 ia[2]=1;ja[2]=2;ar[2]= 1.0; | |
| 32 ia[3]=1;ja[3]=3;ar[3]= 1.0; | |
| 33 ia[4]=2;ja[4]=1;ar[4]= 10.0; | |
| 34 ia[5]=3;ja[5]=1;ar[5]= 2.0; | |
| 35 ia[6]=2;ja[6]=2;ar[6]= 4.0; | |
| 36 ia[7]=3;ja[7]=2;ar[7]= 2.0; | |
| 37 ia[8]=2;ja[8]=3;ar[8]= 5.0; | |
| 38 ia[9]=3;ja[9]=3;ar[9]= 6.0; | |
| 39 | |
| 40 #now we prefix with '0' .. so that our values the above start at 1 in C. | |
| 41 | |
| 42 ia <- as.integer(c(0,ia)) | |
| 43 ja <- as.integer(c(0,ja)) | |
| 44 | |
| 45 glp_load_matrix(lp, 9, ia, ja, ar); | |
| 46 glp_simplex(lp, NULL); | |
| 47 z = glp_get_obj_val(lp); | |
| 48 x1 = glp_get_col_prim(lp, 1); | |
| 49 x2 = glp_get_col_prim(lp, 2); | |
| 50 x3 = glp_get_col_prim(lp, 3); | |
| 51 | |
| 52 print(list(z=z,x1=x1,x2=x2,x3=x3)) | |
| 53 glp_delete_prob(lp); |
