PIPS
|
#include <stdio.h>
#include <stdlib.h>
#include "boolean.h"
#include "arithmetique.h"
#include "vecteur.h"
#include "contrainte.h"
#include "sc.h"
#include "sommet.h"
#include "ray_dte.h"
#include "polyedre.h"
#include "matrix.h"
#include "plint.h"
Go to the source code of this file.
Macros | |
#define | MALLOC(s, t, f) malloc(s) |
package plint More... | |
Functions | |
Psommet | ligne_pivot (Psommet sys, int nb_som, no_som) |
Psommet ligne_pivot(Psommet sys, int nb_som, int * no_som): recherche de la ligne pivot dans l'algorithme dual du simplexe. More... | |
Variable | var_pivotd (Psommet eq, Psommet fonct) |
int var_pivotd(Psommet eq, Psommet fonct): recherche de la nouvelle variable pivot entrant dans la base au cours de l'execution de l'algorithme dual du simplexe More... | |
bool | dual_pivot_pas (Psommet *sys, Pvecteur *lvbase, int nb_som, Psommet fonct, int *nbvars, Pbase *b) |
bool dual_pivot_pas(Psommet * sys, Pvecteur * lvbase, int nb_som, Psommet fonct, int * nbvars, Pbase * b): execution d'un pas de l'algorithme dual du simplexe i.e. More... | |
bool | dual_pivot (Psysteme sys, Psysteme *syst_result, Psommet *fonct, int *nb_som, Pvecteur *lvbase) |
bool dual_pivot(Psysteme sys, Psysteme * syst_result, Psommet * fonct, int * nb_som, Pvecteur * lvbase): Algorithme dual du simplexe (c.f. More... | |
Psysteme | dual (Psysteme sys, Psommet fonct) |
Psysteme dual(Psysteme ps, Psommet fonct): Algorithme dual du simplexe avec initialisation des parametres. More... | |
Psysteme | dual_positive (Psysteme sys, Psommet fonct) |
Psysteme dual(Psysteme ps, Psommet fonct): Algorithme dual du simplexe avec initialisation des parametres.
resultat retourne par la fonction :
Psysteme : systeme final dont on peut deduire la valeur des differentes variables du systeme.
NULL : si le systeme initial est non faisable.
Les parametres de la fonction :
! Psysteme sys : systeme lineaire ! Psommet fonct : fonction economique du programme lineaire
Definition at line 351 of file pldual.c.
References dual_pivot(), and vect_rm().
Referenced by chernikova().
bool dual_pivot | ( | Psysteme | sys, |
Psysteme * | syst_result, | ||
Psommet * | fonct, | ||
int * | nb_som, | ||
Pvecteur * | lvbase | ||
) |
bool dual_pivot(Psysteme sys, Psysteme * syst_result, Psommet * fonct, int * nb_som, Pvecteur * lvbase): Algorithme dual du simplexe (c.f.
Programmation mathematique - tome 1 . M.MINOUX (83) )
resultat retourne par la fonction :
bool : == true si le systeme a une solution == false sinon
Le parametre SYST_RESULT est le systeme final (dont on peut deduire la valeur des differentes variables du systeme) . S'il est vide, c'est que le systeme initial est non faisable.
Les parametres de la fonction :
! Psysteme sys : systeme lineaire Psysteme syst_result: systeme lineaire resultant de l'execution ! Psommet fonct : fonction economique du programme lineaire ! Pvecteur lvbase : liste des variables de base du systeme ! int nb_som : nombre de contraintes du systeme
Definition at line 297 of file pldual.c.
References base_dup(), BASE_NULLE, dual_pivot_pas(), eq_in_ineq(), printf(), sommets_rm(), and var_ecart_sup().
Referenced by dual(), and dual_positive().
bool dual_pivot_pas | ( | Psommet * | sys, |
Pvecteur * | lvbase, | ||
int | nb_som, | ||
Psommet | fonct, | ||
int * | nbvars, | ||
Pbase * | b | ||
) |
bool dual_pivot_pas(Psommet * sys, Pvecteur * lvbase, int nb_som, Psommet fonct, int * nbvars, Pbase * b): execution d'un pas de l'algorithme dual du simplexe i.e.
on effectue le pivot
resultat retourne par la fonction :
bool : == false si l'on n'a pas pu effectuer un pas de l'algorithme dual == true si l'on a pu effectuer un pas de l'algorithme
le systeme est modifie. Si le systeme retourne est NULL, c'est que le systeme est non borne.
Les parametres de la fonction :
Psommet sys : systeme lineaire Psommet fonct : fonction economique du programme lineaire Pvecteur lvbase: liste des variables de base du systeme int nb_som : nombre de contraintes du systeme. int nbvars : nombre de variables du systeme. Pbase * b : liste des variables du systeme
recherche de la ligne pivot
recherche de la variable pivot
operation PIVOT
Definition at line 213 of file pldual.c.
References ligne_pivot(), lvbase_add(), lvbase_ote_no_ligne(), pivoter(), printf(), sommets_rm(), var_ecart_sup(), var_pivotd(), VARIABLE_DEFINED_P, and VARIABLE_UNDEFINED_P.
Referenced by dual_pivot(), plint_pas(), and plreal().
fonct | Psommet ??? |
Definition at line 365 of file pldual.c.
References dual_pivot(), sc_rm(), sol_positive(), and vect_rm().
Psommet ligne_pivot(Psommet sys, int nb_som, int * no_som): recherche de la ligne pivot dans l'algorithme dual du simplexe.
resultat retourne par la fonction : Psommet : prochaine contrainte "pivot"
Les parametres de la fonction :
Psommet sys : systeme lineaire int nb_som : nombre de contraintes du systeme int no_som : place de la contrainte dans le systeme (no de la ligne)
initialisation du minimum
Definition at line 66 of file pldual.c.
References typ_som::denominateur, min, printf(), typ_som::succ, TCST, value_posz_p, VALUE_TO_DOUBLE, vect_coeff(), and typ_som::vecteur.
Referenced by dual_pivot_pas(), and plint_pas().
int var_pivotd(Psommet eq, Psommet fonct): recherche de la nouvelle variable pivot entrant dans la base au cours de l'execution de l'algorithme dual du simplexe
resultat retourne par la fonction : int : variable "pivot" entrant dans la base
Les parametres de la fonction :
Psommet eq : contrainte du systeme Psommet fonct : fonction economique du programme lineaire
initialisation du minimum
pv = vect_tri(eq->vecteur, is_inferior_variable);
Definition at line 125 of file pldual.c.
References eq, min, printf(), Svecteur::succ, TCST, Svecteur::val, val_of, value_neg_p, value_posz_p, VALUE_TO_DOUBLE, VALUE_ZERO, var_of, vect_chg_coeff(), vect_coeff(), vect_compare(), vect_new(), vect_rm(), vect_sort(), Scontrainte::vecteur, and VECTEUR_NUL.
Referenced by dual_pivot_pas(), and plint_degen().