Graduação

GraduaçãoProgramação Linear e Otimização


Programação inteira


A programação inteira é um ramo da otimização ou programação matemática. Significa encontrar a melhor solução a partir de um conjunto de soluções possíveis. Enquanto a programação linear lida com equações lineares e algumas restrições, a programação inteira é um tipo especial onde as variáveis de solução devem ser inteiros. Essa restrição torna a programação inteira mais complexa e desafiadora, mas também mais aplicável em cenários reais onde alguns recursos podem ser apenas unidades inteiras.

O que é programação inteira?

A programação inteira envolve problemas matemáticos que visam otimizar uma função objetivo dada. À primeira vista, pode parecer programação linear, mas há uma diferença importante: na programação inteira, a probabilidade de uma função ser otimizada é constante, a menos que algumas ou todas as variáveis sejam inteiros. são limitados apenas.

A programação inteira pode ser usada para resolver uma variedade de problemas de otimização. Alguns exemplos incluem planejamento e programação, alocação de recursos e tomada de decisões em indústrias como logística, manufatura, telecomunicações e finanças.

Formulação matemática

A forma geral de um problema de programação linear pode ser expressa da seguinte forma:

Max ou Min: c1*x1 + c2*x2 + ... + cn*xn

sujeito a:

a11*x1 + a12*x2 + ... + a1n*xn (<=, = ou >=) b1
a21*x1 + a22*x2 + ... + a2n*xn (<=, = ou >=) b2
,
am1*x1 + am2*x2 + ... + amn*xn (<=, = ou >=) bm

x1, x2, ..., xn >= 0

Aqui, c denota os coeficientes da função objetivo, a denota os coeficientes das restrições e b denota as constantes do lado direito. O objetivo é encontrar os valores de x1, x2, ..., xn que maximizem ou minimizem a função objetivo. Faça o mínimo.

Na programação inteira, uma ou mais das variáveis x1, x2, ..., xn são restringidas a assumir apenas valores inteiros. Quando todas as variáveis são restringidas a serem inteiros, o problema é denominado problema de programação inteira pura. Quando apenas algumas das variáveis são inteiros, trata-se de um problema de programação inteira mista.

Exemplo

Problema simples de programação inteira

Vamos analisar um exemplo simples de programação inteira para entender esses conceitos. Suponha que uma empresa queira decidir qual é o número ideal de produtos A e B a serem produzidos. O lucro de uma unidade do produto A é de $3 e de $5 do produto B. A empresa não pode produzir mais de 7 unidades de A e 4 unidades do produto B em conjunto.

O modelo de programação inteira pode ser configurado da seguinte forma:

Max: 3A+5B

sujeito a:

a + b <= 7
b <= 4
A, B >= 0 e inteiro

Aqui, tanto A quanto B devem ser inteiros porque a empresa não pode fabricar uma fração de um produto. Este requisito é onde a programação inteira se torna mais complexa do que a simples programação linear.

Visualização das soluções inteiras

Para nosso exemplo, vamos visualizar a região viável e a solução. Considere as restrições plotadas no gráfico marcando especialmente os inteiros:

A B 2,4 3,4 4,3

No exemplo de SVG, a linha A + B = 7 e a linha B = 4 são esboçadas com pontos inteiros. Estes pontos têm (2,4), (3,4) e (4,3) estão incluídos.

Como nosso objetivo é maximizar nossa função objetivo 3A + 5B para os pontos de solução (3,4) e (4,3), os valores objetivos são:

  • Para o ponto (3,4): 3 * 3 + 5 * 4 = 9 + 20 = 29
  • Para o ponto (4,3): 3 * 4 + 5 * 3 = 12 + 15 = 27

Assim, o lucro máximo é obtido em (3,4), produzindo 3 unidades de A e 4 unidades de B.

Desafios na programação inteira

A programação inteira possui dificuldades inerentes que a programação linear geral não possui. Os problemas de programação linear podem ser resolvidos usando métodos como o algoritmo simplex, que navega eficientemente em regiões viáveis.

No entanto, adicionar restrições inteiras complica a busca por uma solução. Como os espaços matemáticos envolvidos na programação inteira não são formas convexas agradáveis, algoritmos especiais são necessários para visualização e cálculo, como:

  • Branch-and-bound: divide repetidamente o problema em subproblemas ("ramos"), encontra regiões viáveis e resolve programas lineares mais fáceis.
  • Figura de corte: Esta é uma adição ao relaxamento padrão da programação linear. Adiciona restrições para criar uma região viável mostrando apenas soluções inteiras.
  • Branch-and-Cut: Combina os métodos acima, proporcionando eficiência e maior praticidade na resolução de programas inteiros e inteiros mistos.

Aplicações de programação inteira

Devido à sua natureza, a programação inteira encontra amplas aplicações em várias áreas. Essas funções resolvem problemas em vez de explorar partes teóricas.

A seguir estão algumas das principais áreas de aplicação:

  • Fabricação: contratação, utilização de máquinas, mistura e distribuição.
  • Telecomunicações: Alocação de largura de banda, design de rede e roteamento.
  • Logística: gestão de inventário, roteirização de veículos e programação de pessoal.
  • Finanças: Seleção de portfólio e orçamento de capital.

Cada área faz uso de fatores que favorecem a programação inteira, como a natureza discreta e a otimização de escolhas explícitas entre possibilidades finitas.

Conclusão

A programação inteira serve como um recurso chave no campo da otimização. Sua funcionalidade acrescenta à praticidade, pois as restrições frequentemente vistas na realidade são naturalmente tratadas por suas soluções discretas. Sendo complexa na natureza e no cálculo, a programação inteira é um processo muito simples e caro. Independentemente disso, os métodos existentes tornam-no viável e amplamente aplicável. O potencial de otimização continua a crescer em adoção à medida que as indústrias avançam, impulsionadas em parte pelos avanços e pelo entendimento da programação inteira.


Graduação → 9.3


U
username
0%
concluído em Graduação


Comentários