Une optimisation évidente de cet algorithme consiste à confier le soin des additions et multiplications à un ordinateur. On sera néanmoins attentif à ne pas sous-traiter la réflexion, qui constitue le coeur du métier d'ingénieur.
Le programme mk_simplex (LISTING 6) a pour
objectif de créer toutes les variables auxiliaires nécessaires à la
transformation des inéquations en équations et à la transformation
des contraintes non satisfaites par l'origine du problème initial
en contraintes satisfaites par l'origine d'un problème de plus grande
taille. Pour des raisons de commodité, les trois sortes de variables
s'appellent toutes
, l'indice variant de
à
pour les
variables naturelles, de
à
pour les variables "
"
et de
à la fin pour les variables "
".
En sortie,
contient les équations récrites,
est l'ensemble
de toutes les variables,
est l'ensemble des variables "
"
et
est la liste des coordonnées dont l'égalité à 0 caractérise
le point où l'on se trouve.
Le programme pt_vue (LISTING 7) est un programme
"cosmétique" destiné à récrire l'ensemble des équations
du point de vue du sommet où l'on se trouve. L'écriture effective
de ce programme est tout à fait simple (on utilise
pour résoudre),
mais est loin d'être optimale. En effet, une étape est caractérisée
par l'échange de rôles entre une variable "actuellement principale"
et une variable "actuellement auxiliaire" : une
résolution de proche en proche serait plus rapide.
Le programme avance (LISTING 10) exécute le déplacement
consistant en l'échange des rôles entre la variable principale
,
choisie par l'utilisateur, et la variable auxiliaire exerçant la contrainte
la plus forte. Le cas exceptionnel où l'on trouve un mouvement
ne se produit qu'en présence de contraintes redondantes.
Enfin, le programme randavance (LISTING 11) détermine quels sont les pivots possibles (variables ayant une influence positive sur la fonction de bénéfice) et en choisit un aléatoirement.