Algoritmo+de+foça+bruta+em+VBA+(com+gráfico)

=Algoritmo de força bruta com gráfico em VBA.= Para usar, basta consultar o Tutorial em Algoritmo de força Bruta

'.................................................................................... Sub Algoritmo_com_grafico

Dim maximo As Integer Dim valorx As Integer Dim valory As Integer Dim total As Integer maximo = 0 valorx = 0 valory = 0 For x = 0 To 70 For y = 0 To 40 If ((x + 2 * y <= 70) And (3 * x + 3 * y <= 120)) Then total = 15 * x + 25 * y

If (total > maximo) Then maximo = total valorx = x valory = y

End If End If Next y Next x Range("A1").Cells = "Programação Linear" Range("A2").Cells = "Lucro Máximo" Range("A3").Cells = maximo Range("B2").Cells = "Valor de x" Range("B3 ").Cells = valorx Range("C2").Cells = "Valor de y" Range("C3").Cells = valory

' 'Dar valores ao x e ao y

For grafico1_x = 0 To 120 For grafico1_y = 0 To 120 If ((grafico1_x + 2 * grafico1_y = 70)) Then

pontoG1_X = grafico1_x * 2 + 200 pontoG1_Y = -grafico1_y * 2 + 200

End If

If ((3 * grafico1_x + 3 * grafico1_y = 120)) Then

pontoG2_X = grafico1_x * 2 + 200 pontoG2_Y = -grafico1_y * 2 + 200

End If

Next grafico1_y Next grafico1_x

'

For grafico1_y2 = 0 To 120 For grafico1_x2 = 0 To 120 If ((grafico1_x2 + 2 * grafico1_y2 = 70)) Then

pontoG1_X2 = grafico1_x2 * 2 + 200 pontoG1_Y2 = -grafico1_y2 * 2 + 200

End If

If ((3 * grafico1_x2 + 3 * grafico1_y2 = 120)) Then pontoG2_X2 = grafico1_x2 * 2 + 200 pontoG2_Y2 = -grafico1_y2 * 2 + 200

End If

Next grafico1_x2 Next grafico1_y2

'desenhar as restrições com os pontos seleccionados.

ActiveSheet.Shapes.AddLine(pontoG1_X, pontoG1_Y, pontoG1_X2, pontoG1_Y2).Name = "grafico g(x)" ActiveSheet.Shapes.AddLine(pontoG2_X, pontoG2_Y, pontoG2_X2, pontoG2_Y2).Name = "grafico f(x)"

' 'pintar o polígono das respostas possíveis

For grafico1_x = 0 To 120 For grafico1_y = 0 To 120 If ((grafico1_x + 2 * grafico1_y <= 70) And (3 * grafico1_x + 3 * grafico1_y <= 120)) Then

pontoGP_X = grafico1_x * 2 + 200 pontoGP_Y = -grafico1_y * 2 + 200

With ActiveSheet.Shapes.AddShape(msoShapeRectangle, pontoGP_X, pontoGP_Y, 1, 1).TextFrame .Characters.Text = "Área de soluções" .HorizontalAlignment = xlHAlignCenter .VerticalAlignment = xlVAlignCenter End With

End If

Next grafico1_y Next grafico1_x

'-- 'desenhar gráfico

ActiveSheet.Shapes.AddLine(200, 100, 200, 250).Name = "Eixo dos y" ActiveSheet.Shapes.AddLine(190, 200, 350, 200).Name = "Eixo dos x"

End Sub

'................................................................

Ira mostrar o seguinte:
Como podem ver o programa ainda não esta completo, o gráfico encontrasse de pernas para o ar. O sombreado azul corresponde a todas as hipoteces possíveis para a resolução do exercício. (Ver algoritmo de Força bruta)

Faça o dowload do código. Para usar o exemplo consulte o tutorial "ALGORITMO DE FORÇA BRUTA VBA" para permitir macros.
==

Apercebei-me que que neste trabalho deveria ter sido feito usando classes para ser mais adaptável a outros problemas.