> Thanks for your reply. Here is additional information about the > machine: > proc: Intel(R) Core(TM)2 CPU T7400 @ 2.16GHz; > cpu MHz : 2167.000 > cache size : 4096 KB > Here is the code: > double SolveLP (int **A, int *c, int *rhs, int numcols, int numrows) > { > double z; // value function > int ne = numcols*numrows;; // total # of nonzero elements > int k = 1; > int *ia = new int[ne]; > int *ja = new int[ne]; > double *ar = new double[ne]; > > > glp_prob *LP; > LP = glp_create_prob(); > > > // Read parametrs > > glp_set_obj_dir(LP, GLP_MAX); > > // setting righthand side (beta) > glp_add_rows(LP, numrows); > for (int i=1; i<=numrows; ++i) > glp_set_row_bnds(LP, i, GLP_UP, 0.0, rhs[i-1]); > > // setting x-vector bounds and obj. function coefficients > glp_add_cols(LP, numcols); > for (int j=1; j<=numcols; ++j){ > glp_set_col_bnds(LP, j, GLP_LO, 0.0, 0.0); > glp_set_obj_coef(LP, j, c[j-1]); > } > > > // read constraint matrix > > > for (int i=1; i<=numrows; ++i) > for (int j=1; j<=numcols; ++j){ > ia[k] = i; > ja[k] = j; > ar[k] = double(A[i-1][j-1]); > ++k; > } > > glp_load_matrix(LP, ne, ia, ja, ar); > > // Run simplex > glp_simplex(LP, NULL); > > > // Get obj. value > z = glp_get_obj_val(LP); > > glp_erase_prob(LP); // work with erase problem > //glp_delete_prob(LP); // doesn't work in loop > > return z; > } >
You need either reserve 0-th elements by declaring int *ia = new int[1+ne]; int *ja = new int[1+ne]; double *ar = new double[1+ne]; or initialize k to 0 rather than 1 and load the constraint matrix with the following call: glp_load_matrix(LP, ne, ia-1, ja-1, ar-1); Please consult the glpk reference manual for more details about passing arrays to glpk api routines. _______________________________________________ Help-glpk mailing list Help-glpk@gnu.org https://lists.gnu.org/mailman/listinfo/help-glpk