Nous allons illustrer le fonctionnement de GLPK en résolvant le problème
Le programme C ci-dessous modélise ce problème et l'envoie dans glpk.
#include<stdio.h> #include"glpk.h" int main() { LPX* lp = lpx_create_prob(); double coeffs[4+1]; int rows[4+1], cols[4+1]; lpx_set_obj_dir(lp, LPX_MAX); lpx_add_rows(lp, 2); lpx_set_row_bnds(lp, 1, LPX_UP, 0.0, 500.0); lpx_set_row_bnds(lp, 2, LPX_UP, 0.0, 600.0); lpx_add_cols(lp, 2); lpx_set_col_bnds(lp, 1, LPX_LO, 0.0, 0.0); lpx_set_col_bnds(lp, 2, LPX_LO, 0.0, 0.0); lpx_set_obj_coef(lp, 1, 10.); lpx_set_obj_coef(lp, 2, 12.); coeffs[1] = 10 ; rows[1] = 1 ; cols[1] = 1 ; coeffs[2] = 20 ; rows[2] = 1 ; cols[2] = 2 ; coeffs[3] = 20 ; rows[3] = 2 ; cols[3] = 1 ; coeffs[4] = 10 ; rows[4] = 2 ; cols[4] = 2 ; lpx_load_matrix(lp, 4, rows, cols, coeffs); lpx_simplex(lp); printf("valeur de la fonction objetif : %lf\n", lpx_get_obj_val(lp)); printf("quantite de produits A : %lf\n", lpx_get_col_prim(lp, 1)); printf("quantite de produits B : %lf\n", lpx_get_col_prim(lp, 2)); lpx_delete_prob(lp); return 1; }
N'oubliez pas de compiler vos sources avec l'option -lglpk (sinon, ça marche pas).