Vous êtes sur la page 1sur 17

6-10-2018 PROGRAMA PARA

METODO SIMPLEX
Y DUAL SIMPLEX
LENGUAJE VB.NET

SOFIA FERNANDA DEL ROSARIO YOOL CUELLAR


UNIVERSIDAD MARIANO GALVEZ SEDE EL NARANJO
CARNET: 9490-16-4008
SECCION: “A”
INVESTIGACION DE OPERACIONES
ING. JOSUE FLORIAN
ESTRUCTURA
El proyecto consta de distintos formularios dependiendo la cantidad de variables y restricciones que
tenga el problema para plantear el método dual.

MENU:

FORMULARIO PARA SOLUCION DE METODO SIMPLES Y DUAL DE 2X2:

Como podemos ver el método nos perite extraer el método dual pero no nos permite modificarlo ya que
el método dual es un resultado de las variables y restricciones del primal.
EJEMPLO FUNCIONAMIENTO:

RESOLVIMOS EL PRIMAL Y SE MARCAN LOS PUNTOS OPTIMOS:

GENERAMOS EL MODELO DUAL


Y PROCEDEMOS A RESOLVER EL METODO DUAL

CON EL BOTON GRAFICA LLAMAMOS AL PROGRAMA QUE GENERA LA GRAFICA


SI EL NUMERO DE RESTRICCIONES CAMBIA EN EL MENU PRINCIPAL TAMBIEN NUESTRO FORMULARIO EL
CUAL FUNCIONA GENERANDO EL METODO DUAL SIN EMBARGO NO RESULEVE LOS PUNTOS OPTIMOS
SOLO GENERA EL MODELO ESTANDAR.
CODIGO FUENTE

‘MENU
Public Class MENUPRINCIPAL
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TextBox1.Text = "2" And TextBox2.Text = "2" Then
FORM2X2.Show()
Me.Hide()

End If
If TextBox1.Text = "2" And TextBox2.Text = "3" Then
form2x3.Show()
Me.Hide()
End If
If TextBox1.Text = "3" And TextBox2.Text = "3" Then
form3X3.SHOW()
Me.Hide()

End If
End Sub
End Class

FORMULARIO SOLUCION: 2X2


Public Class FORM2X2
'VARIABLES DEL PRIMAL
Dim x As Double
Dim y As Double
Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim y3 As Double
Dim x3 As Double

'VARIABLES DEL DUAL


Dim xx As Double
Dim yy As Double
Dim xx1 As Double
Dim xx2 As Double
Dim yy1 As Double
Dim yy2 As Double
Dim yy3 As Double
Dim xx3 As Double

rivate Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles C.TextChanged

End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


maxmin1.Items.Add("MAX")
maxmin1.Items.Add("MIN")
End Sub

Private Sub TextBox18_TextChanged(sender As Object, e As EventArgs) Handles


maxmin2.TextChanged

End Sub

Private Sub TextBox19_TextChanged(sender As Object, e As EventArgs) Handles


AA.TextChanged

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click


'LLENADO DEL METODO DUAL
If maxmin1.Text = "MIN" Then
maxmin2.Text = "MAX"
ElseIf maxmin1.Text = "MAX" Then
maxmin2.Text = "MIN"
End If

AA.Text = H.Text
BB.Text = B.Text
CC.Text = M.Text
DD.Text = D.Text
EE.Text = EEE.Text
FF.Text = I.Text

If (G.Text = "<=") Then


GG.Text = ">="
ElseIf (G.Text = ">=") Then
GG.Text = "<="
ElseIf (G.Text = "=") Then
GG.Text = "<>"
End If

HH.Text = A.Text
II.Text = F.Text
JJ.Text = J.Text
KK.Text = K.Text

If (L.Text = "<=") Then


LL.Text = ">="
ElseIf (L.Text = ">=") Then
LL.Text = "<="
End If

MM.Text = C.Text
NN.Text = N.Text
OO.Text = O.Text
PP.Text = P.Text
QQ.Text = Q.Text

End Sub
Private Sub Label26_Click(sender As Object, e As EventArgs)

End Sub

Private Sub Label25_Click(sender As Object, e As EventArgs) Handles Label25.Click

End Sub

Private Sub Label9_Click(sender As Object, e As EventArgs) Handles Label9.Click

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


If (maxmin1.Text = "MAX" And G.Text = "<=" And L.Text = "<=") Or (maxmin1.Text =
"MIN" And G.Text = ">=" And L.Text = ">=") Then
''inicio bien
'TEXTBOX YA EN VARIABLES
Dim AV As Double = A.Text
Dim CV As Double = C.Text
Dim DV As Double = D.Text
Dim FV As Double = F.Text
Dim HV As Double = H.Text
Dim IV As Double = I.Text
Dim KV As Double = K.Text
Dim MV As Double = M.Text
Dim QV As Double = Q.Text

Dim ZV1 As Double


Dim ZV2 As Double
Dim ZV3 As Double
Dim ZV4 As Double
Dim ZV5 As Double
Dim ZV6 As Double

'FIN DE LAS VARIABLES


If G.Text = "=" And L.Text = "=" Then
x = H.Text
y = M.Text
ElseIf P.Text = ">=" And G.Text <> "=" And L.Text <> "=" Then
x = Q.Text
y = Q.Text
End If
'DESPEJE DE LAS FORMULASPARA TRABAJARLAS
x1 = (HV - (FV * y)) / DV
y1 = (HV - (DV * x)) / FV
x2 = (MV - (KV * y)) / IV
y2 = (MV - (IV * x)) / KV

'INICIAMOS CRAMMER
Dim DS As Double
Dim DY As Double
Dim DX As Double

DS = (DV * KV) - (IV * FV)


DX = (HV * KV) - (MV * FV)
DY = (DV * MV) - (IV * HV)
x3 = DX / DS
y3 = DY / DS

''LLENADO DE LOS PUNTOS OPTIMOS SOLO A Y B FALTA Z


A1.Text = x1
B1.Text = y

A2.Text = x
B2.Text = y1

A3.Text = x2
B3.Text = y

A4.Text = x
B4.Text = y2

A5.Text = x
B5.Text = y

A6.Text = x3
B6.Text = y3

'SACAR EL VALOR DE Z
ZV1 = ((AV * x1) + (CV * y))
ZV2 = ((AV * x) + (CV * y1))
ZV3 = ((AV * x2) + (CV * y))
ZV4 = ((AV * x) + (CV * y2))
ZV5 = ((AV * x) + (CV * y))
ZV6 = ((AV * x3) + (CV * y3))

Z1.Text = ZV1
Z2.Text = ZV2
Z3.Text = ZV3
Z4.Text = ZV4
Z5.Text = ZV5
Z6.Text = ZV6

'CALCULAR LOS PUNTOS OPTIMOS


'primera funcion
Dim matriz(1, 5)
matriz(0, 0) = A1.Text
matriz(0, 1) = A2.Text
matriz(0, 2) = A3.Text
matriz(0, 3) = A4.Text
matriz(0, 4) = A5.Text
matriz(0, 5) = A6.Text

matriz(1, 0) = B1.Text
matriz(1, 1) = B2.Text
matriz(1, 2) = B3.Text
matriz(1, 3) = B4.Text
matriz(1, 4) = B5.Text
matriz(1, 5) = B6.Text

Dim RESTRICCION1 As Double


Dim RESTRICCION2 As Double
Dim pasa(6) As Integer
For inicial As Integer = 0 To 5
pasa(inicial) = 0
Next
For f As Integer = 0 To 5
RESTRICCION1 = (DV * matriz(0, f)) + (FV * matriz(1, f))
RESTRICCION2 = (IV * matriz(0, f)) + (KV * matriz(1, f))
'PRIMERA RESTRICCION
If (G.Text = ">=") Then

If RESTRICCION1 <= HV Then


pasa(f) = 1
Else
pasa(f) = 0

End If

ElseIf (G.Text = "<=") Then


If RESTRICCION1 <= HV Then
pasa(f) = 1
Else
pasa(f) = 0

End If
End If
'SEGUNDA RESTRICCION
If (L.Text = ">=") Then

If RESTRICCION2 >= MV Then


pasa(f) = 1
Else
pasa(f) = 0

End If

ElseIf (L.Text = "<=") Then


If RESTRICCION2 <= MV Then
pasa(f) = 1
Else
pasa(f) = 0

End If
End If
Next

'validacion de los pasa


If pasa(0) = 1 Then
A1.BackColor = Color.SkyBlue
B1.BackColor = Color.SkyBlue
Z1.BackColor = Color.SkyBlue
End If
If pasa(1) = 1 Then
A2.BackColor = Color.SkyBlue
B2.BackColor = Color.SkyBlue
Z2.BackColor = Color.SkyBlue
End If
If pasa(2) = 1 Then
A3.BackColor = Color.SkyBlue
B3.BackColor = Color.SkyBlue
Z3.BackColor = Color.SkyBlue
End If
If pasa(3) = 1 Then
A4.BackColor = Color.SkyBlue
B4.BackColor = Color.SkyBlue
Z4.BackColor = Color.SkyBlue
End If
If pasa(4) = 1 Then
A5.BackColor = Color.SkyBlue
B5.BackColor = Color.SkyBlue
Z5.BackColor = Color.SkyBlue
End If
If pasa(5) = 1 Then
A6.BackColor = Color.SkyBlue
B6.BackColor = Color.SkyBlue
Z6.BackColor = Color.SkyBlue
End If
'terminamos primera funcion

''bien
Else
MsgBox("VALIDA TUS SIGNOS")
End If
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click 'BOTON
PARA RESOLVER DUAL
'TEXTBOX YA EN VARIABLES
Dim AAV As Double = AA.Text
Dim CCV As Double = CC.Text
Dim DDV As Double = DD.Text
Dim FFV As Double = FF.Text
Dim HHV As Double = HH.Text
Dim IIV As Double = II.Text
Dim KKV As Double = KK.Text
Dim MMV As Double = MM.Text
Dim QQV As Double = QQ.Text

Dim ZZV1 As Double


Dim ZZV2 As Double
Dim ZZV3 As Double
Dim ZZV4 As Double
Dim ZZV5 As Double
Dim ZZV6 As Double = 0 'MMIENTRAS LE METO CRAMER ESTA ES 0

'FIN DE LAS VARIABLES


If GG.Text = "=" And LL.Text = "=" Then
xx = HH.Text
yy = MM.Text
ElseIf PP.Text = ">=" And GG.Text <> "=" And LL.Text <> "=" Then
xx = QQ.Text
yy = QQ.Text
End If
'DESPEJE DE LAS FORMULASPARA TRABAJARLAS
xx1 = (HHV - (FFV * yy)) / DDV
yy1 = (HHV - (DDV * xx)) / FFV
xx2 = (MMV - (KKV * yy)) / IIV
yy2 = (MMV - (IIV * xx)) / KKV
'INICIAMOS CRAMMER
Dim DDS As Double
Dim DDY As Double
Dim DDX As Double

DDS = (DDV * KKV) - (IIV * FFV)


DDX = (HHV * KKV) - (MMV * FFV)
DDY = (DDV * MMV) - (IIV * HHV)

xx3 = DDX / DDS


yy3 = DDY / DDS

''LLENADO DE LOS PUNTOS OPTIMOS SOLO A Y B FALTA Z


AA1.Text = xx1
BB1.Text = yy

AA2.Text = xx
BB2.Text = yy1

AA3.Text = xx2
BB3.Text = yy

AA4.Text = xx
BB4.Text = yy2

AA5.Text = xx
BB5.Text = yy

AA6.Text = xx3
BB6.Text = yy3

'LLENAR ZDUAL
ZZV1 = ((AAV * xx1) + (CCV * yy))
ZZV2 = ((AAV * xx) + (CCV * yy1))
ZZV3 = ((AAV * xx2) + (CCV * yy))
ZZV4 = ((AAV * xx) + (CCV * yy2))
ZZV5 = ((AAV * xx) + (CCV * yy))
ZZV6 = ((AAV * xx3) + (CCV * yy3))

ZZ1.Text = ZZV1
ZZ2.Text = ZZV2
ZZ3.Text = ZZV3
ZZ4.Text = ZZV4
ZZ5.Text = ZZV5
ZZ6.Text = ZZV6
'CALCULAR LOS PUNTOS OPTIMOS
'primera funcion
Dim matrizz(1, 5)
matrizz(0, 0) = AA1.Text
matrizz(0, 1) = AA2.Text
matrizz(0, 2) = AA3.Text
matrizz(0, 3) = AA4.Text
matrizz(0, 4) = AA5.Text
matrizz(0, 5) = AA6.Text

matrizz(1, 0) = BB1.Text
matrizz(1, 1) = BB2.Text
matrizz(1, 2) = BB3.Text
matrizz(1, 3) = BB4.Text
matrizz(1, 4) = BB5.Text
matrizz(1, 5) = BB6.Text

Dim RESTRICCION11 As Double


Dim RESTRICCION22 As Double
Dim pasas(6) As Integer
For inicial As Integer = 0 To 5
pasas(inicial) = 0
Next
For f As Integer = 0 To 5
RESTRICCION11 = (DDV * matrizz(0, f)) + (FFV * matrizz(1, f))
RESTRICCION22 = (IIV * matrizz(0, f)) + (KKV * matrizz(1, f))
'PRIMERA RESTRICCION
If (GG.Text = ">=") Then

If RESTRICCION11 <= HHV Then


pasas(f) = 1
Else
pasas(f) = 0

End If

ElseIf (GG.Text = "<=") Then


If RESTRICCION11 <= HHV Then
pasas(f) = 1
Else
pasas(f) = 0

End If
End If
'SEGUNDA RESTRICCION
If (LL.Text = ">=") Then

If RESTRICCION22 >= MMV Then


pasas(f) = 1
Else
pasas(f) = 0

End If

ElseIf (LL.Text = "<=") Then


If RESTRICCION22 <= MMV Then
pasas(f) = 1
Else
pasas(f) = 0

End If
End If
Next

'validacion de los pasa


If pasas(0) = 1 Then
AA1.BackColor = Color.SkyBlue
BB1.BackColor = Color.SkyBlue
ZZ1.BackColor = Color.SkyBlue
End If
If pasas(1) = 1 Then
AA2.BackColor = Color.SkyBlue
BB2.BackColor = Color.SkyBlue
ZZ2.BackColor = Color.SkyBlue
End If
If pasas(2) = 1 Then
AA3.BackColor = Color.SkyBlue
BB3.BackColor = Color.SkyBlue
ZZ3.BackColor = Color.SkyBlue
End If
If pasas(3) = 1 Then
AA4.BackColor = Color.SkyBlue
BB4.BackColor = Color.SkyBlue
ZZ4.BackColor = Color.SkyBlue
End If
If pasas(4) = 1 Then
AA5.BackColor = Color.SkyBlue
BB5.BackColor = Color.SkyBlue
ZZ5.BackColor = Color.SkyBlue
End If
If pasas(5) = 1 Then
AA6.BackColor = Color.SkyBlue
BB6.BackColor = Color.SkyBlue
ZZ6.BackColor = Color.SkyBlue
End If
'terminamos primera funcion

''bien

End Sub
Private Sub LIMPIAR()
maxmin2.Clear()
A.Clear()
B.Clear()
C.Clear()
D.Clear()
EEE.Clear()
F.Clear()
G.Clear()
H.Clear()
I.Clear()
J.Clear()
K.Clear()
L.Clear()
M.Clear()
N.Clear()
O.Clear()
P.Clear()
Q.Clear()

AA.Clear()
BB.Clear()
CC.Clear()
DD.Clear()
EE.Clear()
FF.Clear()
GG.Clear()
HH.Clear()
II.Clear()
JJ.Clear()
KK.Clear()
LL.Clear()
MM.Clear()
NN.Clear()
OO.Clear()
PP.Clear()
QQ.Clear()

A1.Clear()
A2.Clear()
A3.Clear()
A4.Clear()
A5.Clear()
A6.Clear()
B1.Clear()
B2.Clear()
B3.Clear()
B4.Clear()
B5.Clear()
B6.Clear()

AA1.Clear()
AA2.Clear()
AA3.Clear()
AA4.Clear()
AA5.Clear()
AA6.Clear()
BB1.Clear()
BB2.Clear()
BB3.Clear()
BB4.Clear()
BB5.Clear()
BB6.Clear()

AA4.BackColor = Color.White
BB4.BackColor = Color.White
ZZ4.BackColor = Color.White
AA3.BackColor = Color.White
BB3.BackColor = Color.White
ZZ3.BackColor = Color.White
AA2.BackColor = Color.White
BB2.BackColor = Color.White
ZZ2.BackColor = Color.White
AA1.BackColor = Color.White
BB1.BackColor = Color.White
ZZ1.BackColor = Color.White
A1.BackColor = Color.White
B1.BackColor = Color.White
Z1.BackColor = Color.White
A2.BackColor = Color.White
B2.BackColor = Color.White
Z2.BackColor = Color.White
A3.BackColor = Color.White
B3.BackColor = Color.White
Z3.BackColor = Color.White
A4.BackColor = Color.White
B4.BackColor = Color.White
Z4.BackColor = Color.White
A5.BackColor = Color.White
B5.BackColor = Color.White
Z5.BackColor = Color.White
A6.BackColor = Color.White
B6.BackColor = Color.White
Z6.BackColor = Color.White
AA5.BackColor = Color.White
BB5.BackColor = Color.White
ZZ5.BackColor = Color.White
AA6.BackColor = Color.White
BB6.BackColor = Color.White
ZZ6.BackColor = Color.White

End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click


LIMPIAR()

End Sub

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click


MENUPRINCIPAL.Show()
Me.Hide()

End Sub
End Class

‘FORMULARIO PARA YA SOLO GENERAR EL METODO DUAL


Public Class form2x3
Private Sub form2x3_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click


'LLENADO DEL METODO DUAL
If maxmin1.Text = "MIN" Then
maxmin2.Text = "MAX"
ElseIf maxmin1.Text = "MAX" Then
maxmin2.Text = "MIN"
End If

AA.Text = H.Text
BB.Text = B.Text
CC.Text = M.Text
RR.Text = B.Text
SS.Text = V.Text

DD.Text = D.Text
EE.Text = EEE.Text
FF.Text = I.Text
GG.Text = EEE.Text
TT.Text = R.Text

If (G.Text = "<=") Then


WW.Text = ">="
ElseIf (G.Text = ">=") Then
WW.Text = "<="
ElseIf (G.Text = "=") Then
WW.Text = "<>"
End If

HH.Text = A.Text
II.Text = F.Text
JJ.Text = J.Text
KK.Text = K.Text
LL.Text = S.Text
UU.Text = T.Text

If (L.Text = "<=") Then


AAA.Text = ">="
ElseIf (L.Text = ">=") Then
AAA.Text = "<="
End If

MM.Text = C.Text
NN.Text = N.Text

OO.Text = O.Text
VV.Text = "U"

If (U.Text = "<=") Then


BBB.Text = ">="
ElseIf (U.Text = ">=") Then
BBB.Text = "<="
End If

QQ.Text = Q.Text
End Sub

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click


MENUPRINCIPAL.Show()
Me.Hide()

End Sub
End Class

Vous aimerez peut-être aussi