Skip to content

Commit 46d795e

Browse files
committed
Simplex de minimizar
1 parent c78ed4a commit 46d795e

2 files changed

Lines changed: 61 additions & 45 deletions

File tree

app/models/matriz minimizar/matrizMin.js

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,23 @@ class matrizMin {
2727
colBigNegative = i;
2828
}
2929
}
30+
//console.log(colBigNegative);
3031
return colBigNegative;
3132
}
3233

33-
getExitRow() {
34+
getExitRow(typeSimplex) {
3435
var arr = [];
3536
var rowSmallPositive = -1;
36-
var column = this.getEnterColumn();
37-
//#region Foi alterado de -1 para 1, para poder resolver o simplex de minimizar
38-
if (column == 1) {
39-
return 1;
40-
}
37+
var column = this.getEnterColumn();
38+
if (typeSimplex == 'max'){
39+
if (column == -1) {
40+
return -1
41+
}
42+
}else if (typeSimplex == 'min'){
43+
if (column == 1) {
44+
return 1
45+
}
46+
}
4147
for (var i = 0; i < this.rows - 2; i++) {
4248
arr.push(this.data[i][this.cols - 2] / this.data[i][column]);
4349
}
@@ -56,8 +62,8 @@ class matrizMin {
5662
return rowSmallPositive;
5763
}
5864

59-
getPivo() {
60-
return this.getExitRow() != -1 && this.getEnterColumn() != -1 ? this.data[this.getExitRow()][this.getEnterColumn()] : -1;
65+
getPivo(typeSimplex) {
66+
return this.getExitRow(typeSimplex) != -1 && this.getEnterColumn() != -1 ? this.data[this.getExitRow(typeSimplex)][this.getEnterColumn()] : -1;
6167
}
6268

6369
addInput(arr, column) {
@@ -119,26 +125,26 @@ class matrizMin {
119125
return frame;
120126
}
121127

122-
static generateNewSimplexFrame(simplex) {
128+
static generateNewSimplexFrame(simplex, typeSimplex) {
123129
var frame = new matrizMin(simplex.rows, simplex.cols);
124-
var pivoRow = simplex.getExitRow();
130+
var pivoRow = simplex.getExitRow(typeSimplex);
125131
if (pivoRow == -1){
126132
return frame;
127133
}
128134
var pivoColumn = simplex.getEnterColumn();
129135
if (pivoColumn == -1){
130136
return frame;
131137
}
132-
var pivoValue = simplex.getPivo();
133-
if (pivoValue == -1){
138+
var pivoValue = simplex.getPivo(typeSimplex);
139+
if (pivoValue == -1){
134140
return frame;
135141
}
136142

137143
var baseRow = [];
138144
for (var i = 0; i < simplex.cols; i++) {
139145
baseRow.push(simplex.data[pivoRow][i]);
140146
}
141-
//Daqui para baixo não esta pegando o código
147+
142148
for (var i = 0; i < baseRow.length - 1; i++) {
143149
baseRow[i] = baseRow[i] / pivoValue;
144150
}

simplexMin.js

Lines changed: 42 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,49 @@
11
const matrizMin = require('./app/models/matriz minimizar/matrizMin');
22
const mathjs = require('mathjs');
33

4+
//#region Maximizar
5+
6+
// var numDecisionVar = 3; // Quantidade de variáveis de decisão
7+
// var numConstraintVar = 3; // Quantidade de variáveis de restrição
8+
9+
// var line1 = [1, 1, 1, 100];
10+
// var line2 = [10, 4, 5, 600];
11+
// var line3 = [2, 2, 6, 300];
12+
// var line4 = [-10, -6, -4];
13+
// var matriz = new matrizMin(numConstraintVar + 1, numDecisionVar + 1);
14+
// for (var i = 0; i < numConstraintVar + 1; i++)
15+
// {
16+
// switch (i)
17+
// {
18+
// case 0:
19+
// matriz.addInput(line1, i);
20+
// break;
21+
// case 1:
22+
// matriz.addInput(line2, i);
23+
// break;
24+
// case 2:
25+
// matriz.addInput(line3, i);
26+
// break;
27+
// case 3:
28+
// matriz.addInput(line4, i);
29+
// break;
30+
// }
31+
// }
32+
33+
//#endregion
34+
35+
//#region Minimizar
436

537
var numDecisionVar = 2; // Quantidade de variáveis de decisão
638
var numConstraintVar = 2; // Quantidade de variáveis de restrição
739

840
var matriz = new matrizMin(numConstraintVar + 1, numDecisionVar + 1);
941

10-
// MIN Z = 2 *x1 - 3*x2
11-
//MAX Z = -2*x1 + 3*x2
12-
var line1 = [1, 1, 1, 100];
13-
var line2 = [10, 4, 5, 600];
14-
var line3 = [2, 2, 6, 300];
15-
var line4 = [-10, -6, -4];
42+
var line1 = [4,-1,6];
43+
var line2 = [1,1,4];
44+
var Z = [+2, -3];
1645

17-
for (var i = 0; i < numConstraintVar + 1; i++)
46+
for (var i = 0; i < numConstraintVar +1; i++)
1847
{
1948
switch (i)
2049
{
@@ -25,45 +54,26 @@ for (var i = 0; i < numConstraintVar + 1; i++)
2554
matriz.addInput(line2, i);
2655
break;
2756
case 2:
28-
matriz.addInput(line3, i);
29-
break;
30-
case 3:
31-
matriz.addInput(line4, i);
57+
matriz.addInput(Z, i);
3258
break;
3359
}
34-
}
35-
// var line1 = [4,-1,6];
36-
// var line2 = [1,1,4];
37-
// var Z = [+2, -3];
60+
}
61+
62+
//#endregion
3863

39-
// for (var i = 0; i < numConstraintVar +1; i++)
40-
// {
41-
// switch (i)
42-
// {
43-
// case 0:
44-
// matriz.addInput(line1, i);
45-
// break;
46-
// case 1:
47-
// matriz.addInput(line2, i);
48-
// break;
49-
// case 2:
50-
// matriz.addInput(Z, i);
51-
// break;
52-
// }
53-
// }
5464
matriz.print();
5565

5666
var simplexFrame = matrizMin.generateSimplexFrame(matriz);
5767

5868
simplexFrame.print();
59-
69+
var typeSimplex = 'min'//Coloque max ou min
6070
var iteratorCount = 0;
6171
//http://www.phpsimplex.com/pt/teoria_metodo_simplex.htm
6272
while (true)
6373
{
6474
if (simplexFrame.checkRowZ() == true) {
6575
iteratorCount++;
66-
simplexFrame = matrizMin.generateNewSimplexFrame(simplexFrame);
76+
simplexFrame = matrizMin.generateNewSimplexFrame(simplexFrame,typeSimplex);
6777
simplexFrame.print();
6878
}
6979
else

0 commit comments

Comments
 (0)