From 3abdb1e7384874b5c91b767d4c3ed05a2602e920 Mon Sep 17 00:00:00 2001 From: "juliano.souzaluz" <juliano.souza-luz@etu.hesge.ch> Date: Sun, 8 Jan 2023 19:34:37 +0100 Subject: [PATCH] =?UTF-8?q?condition=20de=20retour=20du=20tableau=20auxili?= =?UTF-8?q?aire=20=C3=A0=20revoir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Main.java | 3 +-- src/Simplex.java | 25 ++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/Main.java b/src/Main.java index bc537ad..0eb5357 100644 --- a/src/Main.java +++ b/src/Main.java @@ -83,10 +83,9 @@ public class Main { int phase = spx.which_phase(); if (phase != -1) { spx.tabAux(phase); - spx.printSimplex(spx.getTabAux(), "Tableau Auxiliaire", 3); } else { spx.pivot(); - spx.printSimplex(spx.getMatEcart(),"pivot", 3); + spx.printSimplex(spx.getMatEcart(), "pivot", 3); System.out.println("Nombre de pivot: " + spx.getNbPivot()); } diff --git a/src/Simplex.java b/src/Simplex.java index 1465fe5..cb4e4d7 100644 --- a/src/Simplex.java +++ b/src/Simplex.java @@ -11,9 +11,11 @@ public class Simplex { public Matrix getTabAux() { return tabAux; } + public Matrix getMatEcart() { return matEcart; } + public int getNbPivot() { return nbPivot; } @@ -79,14 +81,31 @@ public class Simplex { for (int j = 0; j < this.tabAux.getY(); j++) { if (i < this.matEcart.getX() && j < this.matEcart.getY()) this.tabAux.setData(i, j, this.matEcart.getData(i, j)); - else if(i == this.tabAux.getX() - 1) + else if (i == this.tabAux.getX() - 1) this.tabAux.setData(i, j, tabRes[j]); else - this.tabAux.setData(i, j, this.matEcart.getData(i, j-5)); + this.tabAux.setData(i, j, this.matEcart.getData(i, j - this.matEcart.getX())); } } - if(signe(this.tabAux.getData(this.tabAux.getX(), this.tabAux.getY()))) { + this.tabAux.matrixPrint("Tableau auxiliaire ", 2); + double valLastCase = this.tabAux.getData(this.tabAux.getX() - 1, this.tabAux.getY() - 1); + // si la dernière case est négative, il faut envoyer le tableau "basique" dans la méthode du pivot + if (valLastCase < 0) { + Matrix newMatEcart = this.matEcart; + newMatEcart.matrixFill(this.matEcart.getX(), this.matEcart.getY(), this.tabAux.getDatas()); + newMatEcart.matrixPrint("Nouvelle matrice ", 2); + this.matEcart = newMatEcart; + //this.matEcart = this.tabAux; + pivot(); + printSimplex(getMatEcart(), "pivot", 3); + System.out.println("Nombre de pivot: " + getNbPivot()); + } else if (valLastCase > 0) { + // si elle est positive , il n'y a pas de solutions admissibles + System.out.println("Il n'y a pas de solutions admissibles pour ce problème"); + } else // = 0 + { + System.out.println("Le min/max est 0"); } } -- GitLab