* 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;
mess j xj tresu.j;
*
si (abs (xj - tresu.j) > 1.d-5); lerr=vrai ; finsi;
fin loopvari;
*
* 7) code fonctionnement
*
si lerr; erre 5;
sinon; erre 0; finsi;
fin;
© Cast3M 2003 - All rights reserved.
Disclaimer