1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
public void resolveSimplexe(){
FormeStandard fs = new FormeStandard(LP);
DoubleMatrix P = fs.getP();
DoubleVector C = new DoubleVector(P.columns()-1);
DoubleMatrix A = new DoubleMatrix(P.rows()-1, P.columns()-1);
DoubleVector b = new DoubleVector(P.rows()-1);
boolean bool = true;
for(int j = 0; j < C.dimension(); j++)
C.setComponent(j, P.getElement(P.rows()-1, j));
for(int i = 0; i < A.rows(); i++)
for(int j = 0; j < A.columns(); j++)
A.setElement(i, j, P.getElement(i, j));
for(int i = 0; i < b.dimension(); i++)
b.setComponent(i, P.getElement(i, P.columns()-1));
while (bool){
if(!positifCost(C)){
System.out.println("J* = {"+J+"} est une base optimale"+
" et x* = ("+x+") est une solution optimale"+
"et Z* = "+Z);
bool = false;
}
else {
if(!positifElement(C, A)){
System.out.println("Pas de solution optimale");
bool = false;
}
else{
H = fixePositifElement(C, A);
fixePivot(b, C, A);
pivotage(r, s, P);
J = detectNewBase(P);
for(int i = 0; i < x.dimension(); i++)
if(J.contains(i))
x.setComponent(i, P.getElement(i, P.columns()-1)); //Sol. de base
else x.setComponent(i, 0); //Hors base
Z = P.getElement(P.rows()-1, P.columns()-1);
}
}
}
} |
Partager