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).