Académique Documents
Professionnel Documents
Culture Documents
Criterio de decisin
Maximizar
Minimizar
+MXj
Solucin ptima
Tipos de restricciones
Restricciones (
Se aade una variable de holgura, con costo (o ganancia) en la funcin
objetivo igual a 0.
Ejm:
2X1 - 4X2 <= 1, queda:
2X1 - 4X2 + X3 = 1 Cj de X3 en la funcin objetivo ser 0.
Restricciones (
Se resta una variable de exceso, con costo (o ganancia) en la funcin
objetivo igual a 0, y se suma una variable artificial con costo +M M
segn sea maximizacin o minimizacin.Ejm:
2X1 + 3X2 >= 1, queda:
2X1 + 3X2 - X3 + X4= 1 Cj de X3 en la funcin objetivo ser 0. y Cj de
X4 (artificial) es (M
Restricciones =Se le aade una variable artificial con costo +M M
segn sea maximizacin o minimizacin.Ejm:
2X1 + 3X2 = 8, queda:
Ejemplo 1
Siendo Xi la cantidad a producir del producto i.
Maximizar Z = X1 + X2 {Ganancia total en soles}
S.A.
5X1 + 3X2 <= 15 {Horas disponibles dep. A}
3X1 + 5X2 <= 15 {Horas disponibles dep. B}
Xj >= 0 ; j = 1, 2
Los problemas de Maximizacin, con todas sus restricciones <= y con la
condicin de no negatividad, se le llama Forma Estndar Forma
Norma
Aqu debemos conseguir una solucin bsica factible, empleando
las variables de holgura y/o artificiales, quedando
el sistema de ecuaciones as:
Maximizar Z = X1 + X2
S.A.
5X1 + 3X2 + X3 = 15
3X1 + 5X2 + X4 = 15
Xj >= 0 ; j = 1,2,3,4
Las variables bsicas son aquellas cuyos coeficientes forman
la matriz unitaria.
En este caos accidentalmente son las variables de holgura X3 y X4.
A continuacin construimos la siguiente tabla:
Cj
1
V.B. b
b/a
a>0
X X X X
1 2 3 4
X3
1
5
5
15/5=3
X4
1
3
5
15/3=5
0 -1 -1 0
Zj - Cj
V.B.
X1
X2
X3
X4
X1
3/5
1/5
X4
16/5 -3/5 1
-2/5
Zj - Cj
1/5
b/a
a>0
5
15/8
X1
X2
X3
X4
0
V.B.
X1
15/
1
8
5/16
X2
15/
0
8
-3/16 5/16
15/
0
4
1/8
Zj Cj
1/8
b/a
a>0
Solucin ptima:
X1* = 15/8
X2* = 15/8
Z * = 15/4
La solucin es nica: X1 * = 15/8 ; X2 * = 15/8 ; Z* = 14/4
IMPLEMENTACIN
El cdigo fuente esta realizado en Java con GUI que cuenta con solo una clase
llamada Interfaz.java
restricciones = Integer.parseInt(txtRestriccion.getText());
variables = Integer.parseInt(txtVariable.getText());
DefaultTableModel modelo = new DefaultTableModel();
modelo.setRowCount(restricciones + 1);
modelo.setColumnCount(variables + restricciones + 2);
array = new Object[variables + restricciones + 2];
EtiquetaX = new Object[variables + restricciones];
for (int i = 1; i < array.length - 1; i++) {
if (i < variables + 1) {
array[i] = "X" + i;
EtiquetaX[i - 1] = "X" + i;
} else {
array[i] = "S" + (i - variables);
EtiquetaX[i - 1] = "S" + (i - variables);
}
}
EtiquetaY = new Object[restricciones + 1];
for (int i = 0; i < restricciones; i++) {
modelo.setValueAt("S" + (i + 1), i, 0);
EtiquetaY[i] = "S" + (i + 1);
}
modelo.setValueAt("Z", restricciones, 0);
EtiquetaY[restricciones] = "Z";
array[array.length - 1] = "SOL";
modelo.setColumnIdentifiers(array);
table.setModel(modelo);
La accin del botn Aceptar en realidad nos redimensiona la tabla segn las
restricciones y variables, de manera que debemos adecuar nuestro problema
en las celdas de las tablas, esto requiere un conocimiento previo del mtodo
simplex.
Mtodos de la Clase:
-Mtodo Columna Pivote
public int ColumnaPivote() {
int pos = 0;
double aux = Matriz[restricciones][0];
for (int i = 1; i < restricciones + variables; i++) {
if (aux > Matriz[restricciones][i]) {
aux = Matriz[restricciones][i];
pos = i;
}
}
return pos;
}
Casos de prueba:
Para un:
Z=40X1+60X2
Restricciones:
2X1+X2<=70
X1+X2<=40
X1+3X2<=90
X1,X2>=0
Maximizar:
Solucin:
X1=15
X2=25
Z=2100
Solucin:
X1=60
X2=30
Z=5400