#include #include glp_prob * ejecutar_modelo(){ /* declare variables */ glp_prob *lp; int ia[1+5], ja[1+5]; double ar[1+5], z, x1, x2; /* create problem */ lp = glp_create_prob(); glp_set_prob_name(lp, "short"); glp_set_obj_dir(lp, GLP_MAX); /* fill problem */ glp_add_rows(lp, 2); glp_set_row_name(lp, 1, "p"); glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 1.0); glp_set_row_name(lp, 2, "q"); glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 2.0); glp_add_cols(lp, 2); glp_set_col_name(lp, 1, "x1"); glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 1, 0.6); glp_set_col_name(lp, 2, "x2"); glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0); glp_set_obj_coef(lp, 2, 0.5); ia[1] = 1, ja[1] = 1, ar[1] = 1.0; /* a[1,1] = 1 */ ia[2] = 1, ja[2] = 2, ar[2] = 2.0; /* a[1,2] = 2 */ ia[3] = 2, ja[3] = 1, ar[3] = 3.0; /* a[2,1] = 3 */ ia[4] = 2, ja[4] = 2, ar[4] = 1.0; /* a[2,2] = 1 */ glp_load_matrix(lp, 4, ia, ja, ar); return lp; } int main(){ int maxThreads = omp_get_max_threads(); glp_prob * probs[maxThreads]; for(int i = 0; i < maxThreads; i++)probs[i] = NULL; int z1; glp_term_out(0); for(int i = 0; i < maxThreads; i++){ probs[i] = ejecutar_modelo(); } glp_term_out(0); #pragma omp parallel for private(z1) default(none) shared(probs,maxThreads) for(z1 = 0; z1< maxThreads;z1++){ int i = omp_get_thread_num(); glp_simplex(probs[i],NULL); } for(int i = maxThreads-1; i >=0; i--){ if(probs[i] != NULL){ glp_delete_prob(probs[i]); } } }