* fichier : simpl1.dgibi ************************************************************************ ************************************************************************ graph='N'; saut page; ******************************************************************** * * Example de maximisation de "Numerical recipes" p 313 * * maximiser z=x1+x2+3x3-0.5x4 * * avec x1+2x3 inferieur ou egal a 740 * 2x2-7x4 inferieur ou egal a 0 * x2-x3+2x4 superieur ou egal a 0.5 * x1+x2+x3+x4 egal 9 * * * resultat: x1=0, x2=3.325, x3=4.725, x4=0.95 * ******************************************************************** mess ' test de l"operateur SIMPLE'; * * 1) creation des tables * tab1=table vecteur; tab2=table ; tab3=table ; * * 2) remplissage de la table decrivant la fonction * tab1.1=1.; tab1.2=1.; tab1.3=3.; tab1.4=-.5; * * 3) remplissage de la table decrivant les inegalite * ttab=table vecteur; tab2.1=ttab; ttab.0=740.; ttab.1=1.; ttab.3=2.; * ttab=table vecteur; tab2.2=ttab; ttab.0=-.5; ttab.2=-1.; ttab.3=1.; ttab.4=-2.; * ttab=table vecteur; tab2.3=ttab; ttab.2=2.; ttab.4=-7.; * * 4) remplissage de la table decrivant l'egalite * ttab=table vecteur; tab3.1=ttab; ttab.0=9.; ttab.1=1.; ttab.2=1.; ttab.3=1.; ttab.4=1.; * * 5) appel au SIMPLEX * ent1 tab4 tab5=simple tab1 tab2 tab3; * * 6) sortie des resultats et test d'erreur * tresu=table; tresu.1=0.; tresu.2=3.325; tresu.3=4.725; tresu.4=0.95; lerr=faux; mess ' indice valeur calculee valeur exacte'; j=0; repeter loopvari 4; j=j+1; si (non (existe tab4 j)); xj=0.; sinon; xj=tab4.j; finsi; * si (abs (xj - tresu.j) > 1.d-5); lerr=vrai ; finsi; fin loopvari; * * 7) code fonctionnement * fin;
© Cast3M 2003 - Tous droits réservés.
Mentions légales