0% acharam este documento útil (0 voto)
0 visualizações5 páginas

Extensão Simplex

O documento descreve como inserir dados em formato de strings para resolver problemas de programação linear usando o algoritmo Simplex. Os dados são fornecidos como matrizes e vetores, facilitando a entrada pelo usuário em plataformas como Niotron IDE ou MIT App Inventor. O processo inclui a conversão das strings em matrizes e vetores, a formulação do problema e a resolução utilizando o método Simplex.

Enviado por

Airton Menezes
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
0 visualizações5 páginas

Extensão Simplex

O documento descreve como inserir dados em formato de strings para resolver problemas de programação linear usando o algoritmo Simplex. Os dados são fornecidos como matrizes e vetores, facilitando a entrada pelo usuário em plataformas como Niotron IDE ou MIT App Inventor. O processo inclui a conversão das strings em matrizes e vetores, a formulação do problema e a resolução utilizando o método Simplex.

Enviado por

Airton Menezes
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

Entrada de dados como Strings: O usuário pode inserir os dados em

formato de texto, separados por vírgulas e ponto e vírgula (por exemplo, para A
pode-se usar "1,2,3;4,5,6" para representar uma matriz 2x3).

 Entrada de dados via strings: A entrada dos dados A, B, e C são


agora passadas como strings formatadas. Cada uma das entradas pode ser
separada por vírgulas e ponto e vírgula para representar as matrizes e os
vetores. Isso facilita a entrada de dados pelo usuário no Niotron IDE ou MIT
App Inventor.

Exemplo:

 A (matriz de coeficientes das restrições): "1,2; 3,4; 5,6"

 B (vetor das constantes): "7,8,9"

 C (vetor da função objetivo): "10,11"

 Funções de parsing: parse2DArray converte a string A_str em uma


matriz 2D e parseArray converte as strings B_str e C_str em vetores 1D.

Como usar:

1. O usuário insere os dados no formato de strings (por exemplo, utilizando


componentes TextBox no Niotron ou App Inventor).

2. O método SolveSimplex recebe essas entradas e resolve o problema de


programação linear.

Se você tiver dúvidas ou precisar de mais detalhes sobre como integrar


isso com a interface gráfica, estou à disposição! 😊
Como o Simplex Funciona:

O algoritmo Simplex é utilizado para resolver problemas de


programação linear, onde o objetivo é encontrar os valores ótimos de
variáveis (decisão) que minimizem ou maximizem uma função linear,
sujeita a um conjunto de restrições lineares. O algoritmo percorre a
solução a partir de um ponto inicial viável (geralmente um vértice da
região viável) e vai movendo-se até que a solução ótima seja encontrada.

A forma geral do problema de programação linear para


minimização é:

Minimizar: Z=c1x1+c2x2+...+cnxnZ = c_1 x_1 + c_2 x_2 + ... + c_n


x_nZ=c1x1+c2x2+...+cnxn

Sujeito a:

a11x1+a12x2+...+a1nxn≤b1a21x1+a22x2+...
+a2nxn≤b2...am1x1+am2x2+...+amnxn≤bmx1,x2,...,xn≥0\begin{align*}
a_{11} x_1 + a_{12} x_2 + ... + a_{1n} x_n &\leq b_1 \\ a_{21} x_1 + a_{22}
x_2 + ... + a_{2n} x_n &\leq b_2 \\ ... \\ a_{m1} x_1 + a_{m2} x_2 + ... +
a_{mn} x_n &\leq b_m \\ x_1, x_2, ..., x_n &\geq 0 \end{align*}a11x1+a12x2
+...+a1nxna21x1+a22x2+...+a2nxn...am1x1+am2x2+...+amnxnx1,x2,...,xn
≤b1≤b2≤bm≥0

Onde:

 ZZZ é a função objetivo que queremos minimizar.

 x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn são as variáveis de decisão.

 aija_{ij}aij são os coeficientes das restrições.

 b1,b2,...,bmb_1, b_2, ..., b_mb1,b2,...,bm são os limites das


restrições.

Exemplo Prático de Formulação:

Considere o seguinte problema de minimização:

Minimizar: Z=4x1+3x2Z = 4x_1 + 3x_2Z=4x1+3x2


Sujeito a:

2x1+x2≥4x1+2x2≥5x1,x2≥0\begin{align*} 2x_1 + x_2 &\geq 4 \\ x_1 +


2x_2 &\geq 5 \\ x_1, x_2 &\geq 0 \end{align*}2x1+x2x1+2x2x1,x2≥4≥5≥0

Passos para Resolver:

1. Reformulação das restrições:

Para usar o método Simplex, as desigualdades precisam ser


transformadas em igualdades. Para isso, adicionamos variáveis de folga
s1s_1s1 e s2s_2s2 para as restrições ≥\geq≥, transformando-as em ≤\leq≤.

As restrições passam a ser:

2x1+x2−s1=4x1+2x2−s2=5x1,x2,s1,s2≥0\begin{align*} 2x_1 + x_2 -


s_1 &= 4 \\ x_1 + 2x_2 - s_2 &= 5 \\ x_1, x_2, s_1, s_2 &\geq 0 \
end{align*}2x1+x2−s1x1+2x2−s2x1,x2,s1,s2=4=5≥0

2. Função Objetivo:

A função objetivo para a minimização permanece como


Z=4x1+3x2Z = 4x_1 + 3x_2Z=4x1+3x2. No algoritmo Simplex, os
coeficientes da função objetivo serão usados diretamente.

3. Tabela Simplex Inicial:

A tabela Simplex inicial seria montada da seguinte forma, com as


variáveis de decisão x1,x2x_1, x_2x1,x2, as variáveis de folga s1,s2s_1,
s_2s1,s2 e a função objetivo.

Bási x1x_ x2x_ s1s_ s2s_ La


ca 1x1 2x2 1s1 2s2 do Direito

s1s_
2 1 1 0 4
1s1

s2s_
1 2 0 1 5
2s2

ZZZ -4 -3 0 0 0

Aqui:
 A função objetivo ZZZ tem coeficientes negativos porque é uma
minimização.

 As variáveis s1s_1s1 e s2s_2s2 são introduzidas para transformar


as desigualdades em igualdades.

4. Resolução com o Método Simplex:

O algoritmo Simplex é executado iterativamente, realizando


pivoteamento até encontrar a solução ótima. Durante cada iteração, a
tabela é atualizada, e as variáveis básicas são alteradas até que a solução
ótima seja atingida.

No caso deste exemplo, após realizar as iterações, a solução


ótima será encontrada e os valores de x1x_1x1 e x2x_2x2 que minimizam
a função objetivo serão apresentados.

Como o Código Funciona:

No código fornecido, você pode fornecer os coeficientes AAA


(matriz das restrições), BBB (lado direito das restrições) e CCC
(coeficientes da função objetivo) como strings para o método
SolveSimplex. O método, então, resolve o problema de minimização
utilizando o algoritmo Simplex.

Exemplo de Entrada para o Método SolveSimplex:

Se quisermos resolver o exemplo acima, os valores para AAA,


BBB, e CCC seriam:

 A="2,1;1,2"A = "2,1;1,2"A="2,1;1,2"

 B="4,5"B = "4,5"B="4,5"

 C="4,3"C = "4,3"C="4,3"

A chamada para o método seria:

java

CopiarEditar

String resultado = [Link]("2,1;1,2", "4,5", "4,3");


E o retorno seria algo como:

csharp

CopiarEditar

[1.0, 2.0]

Isso indica que a solução ótima ocorre quando x1=1x_1 = 1x1=1 e


x2=2x_2 = 2x2=2, e você pode calcular o valor de ZZZ substituindo esses
valores na função objetivo:

Z=4(1)+3(2)=4+6=10Z = 4(1) + 3(2) = 4 + 6 = 10Z=4(1)+3(2)=4+6=10

Portanto, a solução ótima é Z=10Z = 10Z=10, com x1=1x_1 = 1x1=1


e x2=2x_2 = 2x2=2.

Você também pode gostar