next up previous contents
suivant: Importation monter: Les fonctions précédent: Les fonctions   Table des matières

Exemple

Nous allons illustrer le fonctionnement de GLPK en résolvant le problème


\begin{displaymath}
\left
\lbrace
\begin{array}{l l l l l l}
max & 10x_1 & + & 1...
...x_2 & \leq & 600\\
& x_1, & x_2 & \geq & 0
\end{array}\right.
\end{displaymath}

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



klaus 2010-08-05