52 #define MALLOC(s,t,f) malloc(s)
80 printf(
" **** alg. dual - recherche de la ligne pivot \n");
84 if (sys) den = sys->denominateur;
87 for (som2 = sys;som2 != NULL
89 som2 = som2->
succ,nb_som1 --);
97 for (som1 = som2->
succ;som1 != NULL;som1 = som1->
succ)
135 printf(
" **** alg. dual - recherche de la variable pivot \n");
146 for(pv3 =pv; pv3->
succ!=NULL;pv3=pv3->
succ);
149 for (; pv!= NULL && !trouve; pv = pv->
succ) {
164 for (; pv!= NULL && trouve ;pv= pv->
succ) {
228 printf(
" *** alg. dual - un pas de l'algorithme \n");
236 if ((ligne_entrant != NULL))
240 var_entrant =
var_pivotd(ligne_entrant,fonct);
245 pivoter(*ps,ligne_entrant,var_entrant,fonct);
256 printf (
" --- alg. dual - le probleme n'est pas borne \n");
265 printf (
" --- alg. dual - plus de ligne pivot possible \n");
308 printf(
" ** algorithme dual du simplexe \n");
311 nbvars = sys->dimension;
313 som = sys_som_conv(sys,nb_som);
318 while( (som != (
Psommet) NULL) &&
320 &(sys->base)) ==
true) );
322 *syst_result = som_sys_conv(som);
324 (*syst_result)->dimension = sys->dimension;
325 (*syst_result)->base =
base_dup(sys->base);
331 return((
boolean) (som != (
Psommet) NULL));
360 dual_pivot(sys,&syst_result,&fonct,&nb_som,&lvbase);
374 dual_pivot(sys,&syst_result,&fonct,&nb_som,&lvbase);
#define VALUE_TO_DOUBLE(val)
#define value_posz_p(val)
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,...
Variable var_pivotd(Psommet eq, Psommet fonct)
int var_pivotd(Psommet eq, Psommet fonct): recherche de la nouvelle variable pivot entrant dans la ba...
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'algori...
Psysteme dual(Psysteme sys, Psommet fonct)
Psysteme dual(Psysteme ps, Psommet fonct): Algorithme dual du simplexe avec initialisation des parame...
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,...
Psysteme dual_positive(Psysteme sys, Psommet fonct)
void pivoter(Psommet sys, Psommet ligne, Variable var, Psommet fonct)
bool sol_positive(Psommet sys, Pvecteur lvbase, int nb_som)
bool sol_positive(Psommet sys, Pvecteur lvbase, int nb_som): Cette fonction teste si la solution est ...
Psommet eq_in_ineq(Psommet *sys, int *nb_som, Pvecteur *lvbase)
Psommet eq_in_ineq(Psommet * sys, int * nb_som, Pvecteur * lvbase): Transformation des egalites du sy...
Psommet var_ecart_sup(Psommet sys, int nb_som, Pvecteur *lvbase, int *nbvars, Pbase *b)
Psommet var_ecart_sup(Psommet sys, int nb_som, Pvecteur * lvbase, int * nbvars, Pbase *b): ajout des ...
void lvbase_ote_no_ligne(int no_ligne, Pvecteur *lvbase)
void lvbase_ote_no_ligne(int no_ligne, Pvecteur * lvbase): Elimination de la variable de base corresp...
void lvbase_add(Variable var, int no_ligne, Pvecteur *lvbase)
void lvbase_add(Variable var, int no_ligne, Pvecteur * lvbase): ajout d'un couple (variable de base,...
void sc_rm(Psysteme ps)
void sc_rm(Psysteme ps): liberation de l'espace memoire occupe par le systeme de contraintes ps;
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
struct typ_som * Psommet
structure de donnees Sommet
void sommets_rm(Psommet)
void sommets_rm(Psommet ps): liberation de l'espace memoire alloue a une liste de sommets
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
structure de donnees Sommet
#define VARIABLE_DEFINED_P(v)
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define VARIABLE_UNDEFINED_P(v)
#define BASE_NULLE
MACROS SUR LES BASES.
Pbase base_dup(Pbase b)
Pbase base_dup(Pbase b) Note: this function changes the value of the pointer.
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
int vect_compare(Pvecteur *pv1, Pvecteur *pv2)
for qsort, returns:
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...
void vect_chg_coeff(Pvecteur *ppv, Variable var, Value val)
void vect_chg_coeff(Pvecteur *ppv, Variable var, Value val): mise de la coordonnee var du vecteur *pp...
Pvecteur vect_sort(Pvecteur v, int *compare)
Pvecteur vect_sort(v, compare) Pvecteur v; int (*compare)();.