Buscar

PO1_Aula_08

Prévia do material em texto

Pesquisa Operacional I 
(CEP/CT025) – Aula 08
UNIVERSIDADE FEDERAL DO PIAUÍ
CAMPUS MINISTRO PETRÔNIO PORTELLA – CT
CURSO DE ENGENHARIA DE PRODUÇÃO
PROF. ÁLVARO LÉDO FERREIRA
CONTATO: a lvaro.ferre i ra@ufpi .edu.br 
9. Programação Inteira
9.1. Definições;
9.2. Aplicações;
9.3. Modelagem;
9.4. Modelagem de restrições especiais.
9.1. Definições
• Problemas em que pelo menos uma variável faz sentido apenas se 
tiver um valor inteiro (discreto);
• Também conhecida somente como Programação Inteira (PI);
• Discreto ≠ Contínua;
• Exemplo: alocar pessoa, máquinas e veículos;
• Igual ao problema de programação linear com um conjunto de 
restrições adicional (variável deve ter um valor inteiro);
9.1. Definições
• Se apenas algumas variáveis tiverem de ter valores inteiros: 
Programação Inteira Mista (PIM);
• Deve respeitar a hipótese da divisibilidade;
• Se todas as variáveis tiverem de ter valores inteiros: Programação 
Inteira Pura;
• Se a variável somente puder assumir os valores 0 ou 1 chamamos 
de variável binária, ou seja:
𝑥! = #1 se a decisão j for sim
0 se a decisão j for não
9.1. Definições
• Também conhecidas como variáveis 0-1;
• Problemas de PI que contêm apenas variáveis binárias: 
Programação Inteira Binária (PIB);
9.2. Aplicações
• Diversas aplicações em diferentes contextos:
• Problemas de programação linear com variáveis inteiras (ex: quantidade 
de unidades fabricadas de um determinado produto);
• Tomada de decisão (ex: investir em qual projeto);
• Ações sequenciais em redes;
• Problemas de transporte, etc.
9.2. Aplicações
• Exemplo 1: Uma empresa considera a possibilidade de expandir e 
construir uma nova fábrica em Parauapebas ou então em Marabá, 
ou quem sabe, até mesmo em ambas as cidades. A empresa 
também considera a possibilidade de construir no máximo um novo 
depósito, mas a escolha do local está restrita a uma cidade na qual a 
nova fábrica será construída. O Valor Presente Líquido (VPL) de cada 
uma dessas alternativas, assim como os respectivos investimentos 
são mostrados na tabela a seguir. Sabendo que a empresa possui um 
capital total de R$ 10 milhões, o objetivo é encontrar a combinação 
de alternativas que maximize o VPL.
9.2. Aplicações
Número de 
decisões Pergunta sim-ou-não Variável de 
decisão VPL Capital exigido
1 Construir a fábrica em
Parauapebas? 𝑥! R$ 9 milhões R$ 6 milhões
2 Construir a fábrica em Marabá? 𝑥" R$ 5 milhões R$ 3 milhões
3 Construir o depósito em
Parauapebas? 𝑥# R$ 6 milhões R$ 5 milhões
4 Construir o depósito em Marabá? 𝑥$ R$ 4 milhões R$ 2 milhões
Capital disponível: R$ 10 milhões
9.2. Aplicações
• Nesse problema todas as variáveis são binárias (PIB):
𝑥! = #1 se a decisão j for sim
0 se a decisão j for não (𝑗 = 1,2,3,4)
• A nossa função obje`vo é:
𝑍 = VPL total das decisões
9.2. Aplicações
• Com base no VPL para cada decisão, temos:
𝑍 = 9𝑥# + 5𝑥$ + 6𝑥% + 4𝑥&
• Como o capital disponível é de R$ 10 milhões:
6𝑥# + 3𝑥$ + 5𝑥% + 2𝑥& ≤ 10
9.2. Aplicações
• Além disso, um depósito (𝑥% ou 𝑥&) só pode ser construído se uma
fábrica (𝑥# ou 𝑥$) também for construída, respectivamente, logo:
𝑥% ≤ 𝑥# e 𝑥& ≤ 𝑥$
• Como a empresa deseja construir no máximo um depósito:
𝑥% + 𝑥& ≤ 1
9.2. Aplicações
• Finalmente, a modelagem fica:
𝑀𝐴𝑋 𝑍 = 9𝑥# + 5𝑥$ + 6𝑥% + 4𝑥&
𝑠. 𝑎.
6𝑥# + 3𝑥$ + 5𝑥% + 2𝑥& ≤ 10 (1)
𝑥% + 𝑥& ≤ 1 (2)
−𝑥# + 𝑥% ≤ 0 (3)
−𝑥$ + 𝑥& ≤ 0 (4)
𝑥! ≤ 1 (5)
𝑥! ≥ 0 (6)
𝑥! é inteira, para 𝑗 = 1,2,3,4 (7)
9.2. Aplicações
• Ou também:
𝑀𝐴𝑋 𝑍 = 9𝑥# + 5𝑥$ + 6𝑥% + 4𝑥&
𝑠. 𝑎.
6𝑥# + 3𝑥$ + 5𝑥% + 2𝑥& ≤ 10
𝑥% + 𝑥& ≤ 1
−𝑥# + 𝑥% ≤ 0
−𝑥$ + 𝑥& ≤ 0
𝑥! é binária, para 𝑗 = 1,2,3,4
9.2. Aplicações
• Exemplo bpico de muitas aplicações reais de programação inteira
com decisões do `po sim-ou-não;
• Restrição de alterna`vas mutuamente exclusivas (restrição 2);
• Restrições de decisões con`ngentes (restrições 3 e 4);
9.2. Aplicações
• Aplicação 1 – Análise de investimentos:
• Programação linear usada para tomar deciões sobre orçamento de 
capital com relação a quanto investir em vários projetos;
• Algumas decisões não envolvem quanto investir, mas sim se se deve
investir ou não uma quantia fixa;
• A gerência normalmente se depara com decisões sobre se deve ou não
realizar investimentos fixos;
• Em geral, decisões sobre orçamento de capital em relação a 
investimentos fixo são decisões sim-ou-não;
9.2. Aplicações
• Aplicação 1 – Análise de investimentos:
• Para cada decisão sim-ou-não: Devemos fazer certo investimento?
Sua variável de decisão = #1 se sim
0 se não
9.2. Aplicações
• Aplicação 2 – Escolher um local:
• Corporações abrem novas instalações em diversas partes do mundo;
• Antes de escolher determinado local, vários locais potenciais precisam
ser analisados e comparados;
• Cada local potencial envolve uma decisão do Lpo sim-ou-não;
• Para cada decisão sim-ou-não: Certo local deve ser escolhido para a 
localização de determinada nova instalação?
Sua variável de decisão = #1 se sim
0 se não
9.2. Aplicações
• Aplicação 3 – Desenho de redes de produção e distribuição:
• Fabricantes sofrem muita pressão compeLLva para que seus produtos
cheguem ao mercado de forma rápida e com baixos custos;
• Qualquer empresa que distribua seus produtos em uma área geográfica
extensa deve atentar ao seu desenho de rede de produção/distribuição;
• Esse desenho envolve responder os seguintes Lpos de decisão binários:
Ø Devemos manter aberta determinada fábrica?
Ø Devemos escolher certo local para uma nova fábrica?
Ø Devemos manter aberto dado centro de distribuição (CD)?
Ø Devemos escolher determinado local para um novo centro de 
distribuição?
9.2. Aplicações
• Aplicação 3 – Desenho de redes de produção e distribuição:
• Se cada área for atendida por um único centro de distribuição, temos 
outra decisão binária para cada combinação de área de mercado e CD:
Ø Determinado CD deve ser designado para atender certa área?
• Para cada uma das decisões binárias:
Sua variável de decisão = #1 se sim
0 se não
9.2. Aplicações
• Aplicação 4 – Despacho de mercadorias:
• Após desenhar e colocar em operação a rede de produção/distribuição, 
deve-se tomar decisões em relação a como despachar as mercadorias;
• Suponha que utilizem caminhões para fazer várias entregas para 
diferentes clientes;
• Torna-se necessário escolher uma rota (sequência de clientes) para 
cada caminhão;
9.2. Aplicações
• Aplicação 4 – Despacho de mercadorias:
• Cada candidato a uma rota deve responder à seguinte decisão:
Ø Devemos escolher certa rota para um dos caminhões?
• Para cada uma das decisões binárias:
Sua variável de decisão = #1 se sim
0 se não
• O objeLvo seria escolher as rotas que minimizassem o custo total para 
fazer as entregas;
9.2. Aplicações
• Aplicação 5 – Programação de aBvidades inter-relacionadas:
• Gerentes têm de programar diversos Lpos de aLvidades inter-
relacionadas;
Ø Quando devemos iniciar a produção para atender novos pedidos?
Ø Quando devemos iniciar a comercialização de novos produtos?
Ø Quando devemos fazer invesLmentos para expandir a produção?
• Para qualquer uma dessas aLvidades, a decisão sobre quando inciar 
pode ser expressa em termos de decisões sim-ou-não;
9.2. Aplicações
• Aplicação 5 – Programação de atividades inter-relacionadas:
• Deve haver uma variável para cada decisão em cada período possível no 
qual iniciar;
Ø Devemos iniciar certa atividade em determinado período:
Sua variável de decisão = #1 se sim
0 se não
• As variáveis relacionadas com uma atividade específica são alternativas
mutuamente excludentes (somente uma pode ter valor igual a 1).
9.2. Aplicações
• Aplicação 6 – Problema de designação de frotas:
• Dados diversos tipos diferentes de aeronaves existentes e uma 
programação de voo;
• O problema é alocar um tipo específico a cada trecho da programação 
de modo a maximizar o lucro e atender a programação definida;
• Se usar um avião muito pequeno em um trecho, pode deixar de atender 
possíveisclientes;
• Se usar um avião muito grande, sofrerá com despesas maiores do avião 
maior voando com assentos vazios;
9.2. Aplicações
• Aplicação 6 – Problema de designação de frotas:
• Para cada combinação Lpo de aeronave-trecho de voo, temos a 
seguinte decisão:
Ø Devemos alocar determinado Lpo de aeronave a certo trecho de voo?
Sua variável de decisão = #1 se sim
0 se não
9.2. Aplicações
• Aplicação 7 – Problema de escala de tripulação:
• Ao invés de alocar aviões a trechos de voo, alocamos sequências de 
trechos de voo a tripulações de pilotos e comissários;
• Para cada sequência viável de trechos de voo que parte de uma base de 
tripulação e retorna à mesma base::
Ø Determinada sequência de trechos de voo deveria ser alocada a uma
tripulação?
Sua variável de decisão = #1 se sim
0 se não
• O objeLvo é minimizar o custo total de disponibilizar tripulações que 
cubram cada trecho de voo programado.
9.3. Modelagem
9.3.1. Problema da mochila 0-1;
9.3.2. Problema de atribuição com variáveis inteiras;
9.3.3. Problema de cobertura;
9.3.4. Problema do caixeiro-viajante;
9.3.5. Problema de programação de produção
9.3.1. Problema da mochila 0-1
• Suponha que haja 𝑛 projetos para serem realizados;
• O 𝑗-ésimo projeto (𝑗 = 1,2, … , 𝑛) possui VPL de 𝑐! e requer 
investimento 𝑎'! (𝑖 = 1,2, … ,𝑚);
• Cada projeto é feito completamente ou não é feito;
• Para o período 𝑖 há disponibilidade orçamentária para realização 
dos projetos equivalente a 𝑏';
• O problema é escolher um grupo de projetos para serem realizados 
maximizando o VPL sem exceder o orçamento;
9.3.1. Problema da mochila 0-1
• Esse problema é conhecido como problema da mochila 0-1 
mul`dimensional;
• É um problema equivalente ao de decidir sobre o que deve ser 
colocado em uma mochila considerando-se as restrições de peso;
•Mul`dimensional refere-se ao caso com múl`plas restrições 𝑖;
• Para o caso de um único período o problema é denominado 
simplesmente problema da mochila 0-1;
9.3.1. Problema da mochila 0-1
• Vários problemas se encaixam na formulação descrita:
• Definição de carga de caminhões;
• Definição de pacotes a serem transportados em pallets;
• Orçamento de capital com variáveis inteiras.
9.3.1. Problema da mochila 0-1
• Formulação genérica do problema:
max𝑍 =&
!"#
$
𝑐!𝑥!
𝑠. 𝑎.
&
!"#
$
𝑎%!𝑥! ≤ 𝑏% 𝑖 = 1,2, … ,𝑚
𝑥! ∈ 0,1 (𝑗 = 1,2, … , 𝑛)
9.3.1. Problema da mochila 0-1
• Exemplo 01: A VVC, empresa de capital empreendedor, está 
avaliando oportunidades de investimento para os próximos três 
anos. A empresa tem um orçamento de 200 milhões, 250 milhões e 
150 milhões para os próximos três anos, respectivamente. A 
empresa deve definir onde os investimentos deve ser realizados de 
modo a maximizar o VPL, conforme a tabela a seguir.
9.3.1. Problema da mochila 0-1
Investimento
Investimento VPL 
investimentoAno 0 Ano 1 Ano 2
A 12 34 12 20
B 54 94 67 15
C 65 28 49 34
D 38 0 8 17
E 52 21 42 56
F 98 73 25 76
G 15 48 53 29
TOTAL 334 298 256 247
9.3.1. Problema da mochila 0-1
• Resumindo, a VVC quer saber se ela deve ou não inves`r em uma 
oportunidade de inves`mento;
• Chamaremos 𝑥! (𝑗 = 1,2, … , 𝑛) de realização no inves`mento 𝑗, ou 
seja:
𝑥! = #1 se sim
0 se não (𝑗 = 𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹)
9.3.1. Problema da mochila 0-1
• De forma a garantir que para cada ano o investimento total não 
exceda o orçamento do ano:
12𝑥( + 54𝑥) + 65𝑥* + 38𝑥+ + 52𝑥, + 98𝑥- + 15𝑥. ≤ 200
34𝑥( + 94𝑥) + 28𝑥* + 21𝑥, + 73𝑥- + 48𝑥. ≤ 250
12𝑥( + 67𝑥) + 49𝑥* + 8𝑥+ + 42𝑥, + 25𝑥- + 53𝑥. ≤ 150
9.3.1. Problema da mochila 0-1
• A função objetivo estabelece que o VPL deve ser o maior possível:
max𝑍 = 20𝑥( + 15𝑥) + 34𝑥* + 17𝑥+ + 56𝑥, + 76𝑥- + 29𝑥.
• Todas as variaveis são binárias (inteiras):
𝑥! ∈ 0,1 (𝑗 = 𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹, 𝐺)
9.3.1. Problema da mochila 0-1
• Resumindo:
max𝑍 = 20𝑥( + 15𝑥) + 34𝑥* + 17𝑥+ + 56𝑥, + 76𝑥- + 29𝑥.
s.a.
12𝑥( + 54𝑥) + 65𝑥* + 38𝑥+ + 52𝑥, + 98𝑥- + 15𝑥. ≤ 200
34𝑥( + 94𝑥) + 28𝑥* + 21𝑥, + 73𝑥- + 48𝑥. ≤ 250
12𝑥( + 67𝑥) + 49𝑥* + 8𝑥+ + 42𝑥, + 25𝑥- + 53𝑥. ≤ 150
𝑥! ∈ 0,1 (𝑗 = 𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹, 𝐺)
9.3.2. Problema de atribuição com variáveis 
inteiras;
• Suponha que haja 𝑛 pessoas e 𝑚 ordens de produção a serem 
realizadas, em que 𝑛 ≥ 𝑚;
• Cada ordem pode ser feita por apenas uma pessoa e cada pessoa 
pode fazer no máximo uma ordem;
• O custo incorrido quando a pessoa 𝑗 faz a ordem 𝑖 é 𝑐'!;
• O problema consiste em alocar as pessoas às ordens de modo a 
minimizar o custo total para finalizar todas as ordens;
9.3.2. Problema de atribuição com variáveis 
inteiras;
• Seja 𝑥'! a variável que corresponde à alocar a pessoa 𝑗 à ordem 𝑖:
min𝑍 =b
!/#
0
b
'/#
1
𝑐'!𝑥'!
𝑠. 𝑎.
b
!/#
0
𝑥'! = 1 (𝑖 = 1,2, … ,𝑚)
b
'/#
1
𝑥'! ≤ 1 (𝑗 = 1,2, … , 𝑛)
𝑥'! ∈ 0,1 (𝑖 = 1,2, … ,𝑚; 𝑗 = 1,2, … , 𝑛)
9.3.2. Problema de atribuição com variáveis 
inteiras;
• Exemplo 02: A administração de manutenção de uma empresa
montadora de aparelhos eletrônicos chamada Philight está
interessada em alocar seu pessoal de manutenção para quebras
ocorridas no turno da noite. A tabela a seguir apresenta os custos 
relacionados com os quatro mecânicos de manutenção e as 
atividades a serem executadas. Cada atividade pode ser feita por 
apenas um mecânico e cada um deles deve realizar pelo menos uma
atividade. Determine a alocação de mecânicos que garanta que 
todas as atividades sejam realizadas utilizando os quatro mecânicos
ao menor custo possível.
9.3.2. Problema de atribuição com variáveis 
inteiras;
Atividade
Custo de manutenção por mecânico 𝒊
𝒊 = 𝟏 𝒊 = 𝟐 𝒊 = 𝟑 𝒊 = 𝟒
Injetora (𝑗 = 1) 70 58 97 38
Estufa (𝑗 = 2) 53 81 68 68
Torno CNC (𝑗 = 3) 88 16 57 86
Furadeira (𝑗 = 4) 15 9 18 11
Ar condicionado (𝑗 = 5) 17 5 3 15
Afinadora (𝑗 = 6) 13 26 11 15
9.3.2. Problema de atribuição com variáveis 
inteiras;
• Seja 𝑥'! a alocação do mecânico 𝑖 à atividade 𝑗;
• Há seis atividades a serem realizadas (𝑛 = 6) e quatro mecânicos 
(𝑚 = 4);
• Cada atividade pode ser feita por apenas um mecânico;
• Cada mecânico deve realizar pelo menos uma atividade;
9.3.2. Problema de atribuição com variáveis 
inteiras;
• A função obje`vo fica:
min𝑍
= 70𝑥## + 58𝑥$# + 97𝑥%# + 38𝑥&# +⋯+ 13𝑥#2 + 26𝑥$2 + 11𝑥%2
+ 15𝑥&2
9.3.2. Problema de atribuição com variáveis 
inteiras;
• As restrições para cada mecânico ficam:
𝑥## + 𝑥#$ + 𝑥#% + 𝑥#& + 𝑥#3 + 𝑥#2 ≥ 1 𝑚𝑒𝑐â𝑛𝑖𝑐𝑜 𝑖 = 1
𝑥$# + 𝑥$$ + 𝑥$% + 𝑥$& + 𝑥$3 + 𝑥$2 ≥ 1 𝑚𝑒𝑐â𝑛𝑖𝑐𝑜 𝑖 = 2
𝑥%# + 𝑥%$ + 𝑥%% + 𝑥%& + 𝑥%3 + 𝑥%2 ≥ 1 𝑚𝑒𝑐â𝑛𝑖𝑐𝑜 𝑖 = 3
𝑥&# + 𝑥&$ + 𝑥&% + 𝑥&& + 𝑥&3 + 𝑥&2 ≥ 1 𝑚𝑒𝑐â𝑛𝑖𝑐𝑜 𝑖 = 4
9.3.2. Problema de atribuição com variáveis 
inteiras;
• As restrições para cada atividade ficam:
𝑥## + 𝑥$# + 𝑥%# + 𝑥&# = 1 injetora
𝑥#$ + 𝑥$$ + 𝑥%$ + 𝑥&$ = 1 estufa
𝑥#% + 𝑥$% + 𝑥%% + 𝑥&% = 1 torno CNC
𝑥#& + 𝑥$& + 𝑥%& + 𝑥&& = 1 furadeira
𝑥#3 + 𝑥$3 + 𝑥%3 + 𝑥&3 = 1 ar condicionado
𝑥#2 + 𝑥$2 + 𝑥%2 + 𝑥&2 = 1 ajinadora
9.3.2. Problema de atribuição com variáveis 
inteiras;
• As variáveis são binárias:
𝑥'! ∈ 0,1 (𝑖 = 1,2,3,4; 𝑗 = 1,2,3,4,5,6)
9.3.3. Problema de cobertura
• Possui várias versões (como o problema de localização da fábrica);
• Trata de uma grande variedade de problemas reais, como a 
alocação de clientes a rotas de entrega, tripulação à voos etc.;
• Seja 𝑗 (𝑗 = 1,2, … , 𝑛) um local potencial para contruir uma fábrica e 
𝑖 (𝑖 = 1,2, … ,𝑚) um cliente qualquer que deve ser atendido;
• Se uma planta for instalada em 𝑗, a instalação custa 𝑐!;
• Cada cliente 𝑖 tem um perfil de demanda e o custo variável de envio 
da planta 𝑗 para o cliente 𝑖 é definido como ℎ'!;
9.3.3. Problema de cobertura
• A variável 𝑥! define se uma planta será construída ou não em 𝑗;
• A demanda do cliente 𝑖 atendida pela planta 𝑗 é definida por 𝑦'!;
• Uma planta qualquer tem capacidade 𝑢! e cada cliente tem uma 
demanda 𝑏';
• O interesse é definir onde instalar fábricas de modoque clientes 
sejam atendidos ao custo mínimo;
9.3.3. Problema de cobertura
min𝑍 =b
!/#
0
𝑐!𝑥! +b
'/#
1
b
!/#
0
ℎ'!𝑦'!
𝑠. 𝑎.
b
!/#
0
𝑦'! = 𝑏' 𝑖 = 1,2, … ,𝑚
b
'/#
1
𝑦'! − 𝑢!𝑥! ≤ 0	 (𝑗 = 1,2, … , 𝑛)
𝑥! ∈ 0,1 , 𝑦'! ≥ 0 (𝑖 = 1,2, … ,𝑚; 𝑗 = 1,2, … , 𝑛)
9.3.3. Problema de cobertura
• Os custos que não dependem da localidade da planta não são 
considerados (exemplo: custos fixos);
• A receita gerada independe da localidade (considera-se que toda 
produção é vendida);
9.3.3. Problema de cobertura
• Exemplo 03: A CEARS está avaliando localidades no Rio Grande do 
Sul para construir três novos armazéns agrícolas. A empresa já possui 
armazéns mas está precisando expandir a sua capacidade devido ao 
crescimento da demanda. A figura abaixo apresenta as localidades 
escolhidas como possíveis armazéns, juntamente com as cinco 
regiões de clientes que foram selecionadas. A tabela abaixo oferece 
os detalhes referentes aos clientes e armazéns. A capacidade e a 
demanda são referentes a um ano de operações. Os custos logís`cos 
referem-se ao custo por tonelada transportada. Quais as três 
melhores localidades com o menor custo possível?
9.3.3. Problema de cobertura;
Opções de 
localidade do 
armazém
Custo 
(milhões)
Capacidade 
(kt.)
Custo logístico entre armazém e destino
Uruguaiana Pelotas Caxias do Sul Passo Fundo Porto Alegre
𝒊 = 𝟏 𝒊 = 𝟐 𝒊 = 𝟑 𝒊 = 𝟒 𝒊 = 𝟓
Alegrete (𝑗 = 1) 7 600 2,10 6,30 7,80 6,30 7,50
Caçapava do Sul (𝑗 =
2) 5 750 5,70 2,70 4,50 4,50 3,78
Tupanciretá (𝑗 = 3) 9 350 5,40 5,58 4,38 2,88 4,80
Vacaria (𝑗 = 4) 6 450 10,20 6,54 1,14 2,40 3,00
Santa Rosa (𝑗 = 5) 4 400 5,58 7,86 6,00 3,48 6,84
Demanda total (milhar de tonelada) 150 450 300 250 500
9.3.3. Problema de cobertura
• Considere a variável 𝑥! a presença do armazém na localidade 𝑗;
• Temos que levar em conta os dois custos: de construção do 
armazém e de logística;
• O armazém 𝑗 pode encaminhar seus produtos para qualquer cliente 
𝑖, chamaremos 𝑦'! a quantidade de produtos enviadas de 𝑗 para 𝑖;
9.3.3. Problema de cobertura
• Função objetivo:
min𝑍
= 7000𝑥# + 5000𝑥$ + 9000𝑥% + 6000𝑥& + 4000𝑥3 + 2,10𝑦##
+ 6,30𝑦$# + 7,80𝑥%# + 6,30𝑦&# + 7,50𝑦3# +⋯+ 5,58y#3
+ 7,86y$3 + 6,00y%3 + 3,48y&3 + 6,84y33
9.3.3. Problema de cobertura
• Restrições de capacidade de armazém:
𝑦## + 𝑦$# + 𝑦%# + 𝑦&# + 𝑦3# ≤ 600𝑥#
𝑦#$ + 𝑦$$ + 𝑦%$ + 𝑦&$ + 𝑦3$ ≤ 750𝑥$
𝑦#% + 𝑦$% + 𝑦%% + 𝑦&% + 𝑦3% ≤ 350𝑥%
𝑦#& + 𝑦$& + 𝑦%& + 𝑦&& + 𝑦3& ≤ 450𝑥&
𝑦#3 + 𝑦$3 + 𝑦%3 + 𝑦&3 + 𝑦33 ≤ 400𝑥3
9.3.3. Problema de cobertura
• Restrições de demanda:
𝑦## + 𝑦#$ + 𝑦#% + 𝑦#& + 𝑦#3 = 150
𝑦$# + 𝑦$$ + 𝑦$% + 𝑦$& + 𝑦$3 = 450
𝑦%# + 𝑦%$ + 𝑦%% + 𝑦%& + 𝑦%3 = 300
𝑦&# + 𝑦&$ + 𝑦&% + 𝑦&& + 𝑦&3 = 250
𝑦3# + 𝑦3$ + 𝑦3% + 𝑦3& + 𝑦33 = 500
9.3.3. Problema de cobertura
• Restrição de quantidade de armazéns:
𝑥# + 𝑥$ + 𝑥% + 𝑥& + 𝑥3 = 3
• Restrições de tipo de variável:
𝑥! ∈ 0,1 𝑗 = 1,2,3,4,5
𝑦! ≥ 0 (𝑖 = 1,2,3,4,5; 𝑗 = 1,2,3,4,5)
9.3.4. Problema do caixeiro-viajante
• Problema clássico de PI;
• Seja um conjunto de nós 𝑉 = {1,2, … , 𝑛} e um outro de arcos 𝐴;
• Os nós representam as cidades e os arcos os pares ordenados de 
cidades entre as quais uma viagem é possível;
• Para o arco 𝑖, 𝑗 ∈ 𝐴, 𝑐'! é o tempo de viagem da cidade 𝑖 para a 
cidade 𝑗;
• O problema é achar uma rota que inicia e termina na mesma cidade 
que visita todas as cidades apenas uma vez com o menor tempo;
9.3.4. Problema do caixeiro-viajante
• Suponha que 𝑥'! = 1 represente que a cidade 𝑗 foi visitada 
imediatamente depois da cidade 𝑖;
• Se isso não acontecer, 𝑥'! = 0;
• Para evitar soluções incovenientes, podemos fazer 𝑐!! = ∞;
• A formulação para este modelo é:
9.3.4. Problema do caixeiro-viajante
min𝑍 =b
'/#
0
b
!/#
0
𝑐'!𝑥'!
𝑠. 𝑎.
b
'/#
0
𝑥'! = 1 𝑗 = 1,2, … , 𝑛 𝑠𝑎í𝑑𝑎
b
!/#
0
𝑥'! = 1 𝑖 = 1,2, … , 𝑛 𝑐ℎ𝑒𝑔𝑎𝑑𝑎
∑𝑥'! ≤ 𝑠 − 1 𝑆 ⊂ 𝑉 	(𝑠𝑢𝑏 − 𝑟𝑜𝑡𝑎𝑠)
𝑥'! ∈ 0,1 	 (𝑗 = 1,2, … , 𝑛; 𝑖 = 1,2, … , )
9.3.4. Problema do caixeiro-viajante
• Restrições de saída, de chegada e binárias garantem que cada um 
dos 𝑥'! é 0 ou 1;
• As restrições de saída garantem que para cada cidade haverá 
apenas uma rota de saída (e de forma análoga para as chegadas);
• As restrições do grupo sub-rotas garantem que a solução ótima não 
contenha sub-rotas;
• As variáveis 𝑢' e 𝑢! são auxiliares e não têm um significado físico;
9.3.4. Problema do caixeiro-viajante
• As restrições de sub-rotas também podem ser definidas de forma 
alternativa;
• Considere um subconjunto de cidades 𝑆 com 𝑠 cidades, em que 2 ≤
𝑠 ≤ 𝑛;
• A seguinte inequação garante que sub-rotas não são formadas:
∑𝑥'! ≤ 𝑠 − 1 𝑆 ⊂ 𝑉 	(𝑠𝑢𝑏 − 𝑟𝑜𝑡𝑎𝑠)
9.3.4. Problema do caixeiro-viajante
• Exemplo 4: Uma empresa oferece serviço de enfermagem na casa 
de pacientes. A figura a seguir oferece um mapa de uma região com 
as residências (𝑃1, 𝑃2, 𝑃3, 𝑃4) que devem ser visitadas por um 
enfermeiro. O nó “Sede” representa o ponto de onde o enfermeiro 
começa e termina a sua jornada diária. Os valores sobre os arcos 
representam as distâncias em quilômetros entre dois nós. Busca-se 
minimizar a distância total percorrida no dia de modo que o 
enfermeiro passe o máximo de tempo possível atendendo pacientes.
• 𝑥'! = 1 (em que 𝑖, 𝑗 ∈ 𝑃1, 𝑃2, 𝑃3, 𝑃4, 𝑆𝑒𝑑𝑒 e 𝑖 ≠ 𝑗) representa 
que o enfermeiro visitou o nó 𝑗 imediatamente após o nó 𝑖;
9.3.4. Problema do caixeiro-viajante
𝑥!",$ + 𝑥!%,$ + 𝑥!&,$ + 𝑥!',$ = 1
𝑥$,!" + 𝑥$,!% + 𝑥$,!& + 𝑥$,!" = 1
⋮
𝑥!",$ + 𝑥$,!" ≤ 1
⋮
𝑥!',!% + 𝑥!%,!' + 𝑥!',!&
+ 𝑥!&,!' + 𝑥!%,!&
+ 𝑥!&,!% ≤ 2
⋮
𝑥!',!% + 𝑥!%,!' + 𝑥!',!&
+ 𝑥!&,!' + 𝑥!',!"
+ 𝑥!",!' + 𝑥!%,!&
+ 𝑥!&,!% + 𝑥!%,!"
+ 𝑥!",!% + 𝑥!&,!"
+ 𝑥!",!& ≤ 3
⋮
9.3.4. Problema do caixeiro-viajante
Para
Sede 𝑃1 𝑃2 𝑃3 𝑃4
De
Sede ∞ 5,0 3,8 2,2 2,4
𝑃1 5,0 9𝐸 + 99 2,6 3,1 5,1
𝑃2 3,8 2,6 9𝐸 + 99 1,6 2,8
𝑃3 2,2 3,1 1,6 9𝐸 + 99 2,3
𝑃4 2,4 5,1 2,8 2,3 9𝐸 + 99
9.3.4. Problema do caixeiro-viajante
• Função objetivo:
𝑀𝐼𝑁	𝑍
= 5,0𝑥45657# + 3,8𝑥45657$ + 2,2𝑥45657% + 2,4𝑥45657& + 5,0𝑥7#4565
+ 2,6𝑥7#7$ + 3,1𝑥7#7% + 5,1𝑥7#7& + 3,8𝑥7$4565 + 2,6𝑥7$7#
+ 1,6𝑥7$7% + 2,8𝑥7$7& + 2,2𝑥7%4565 + 3,1𝑥7%7# + 1,6𝑥7%7$
+ 2,3𝑥7%7& + 2,4𝑥7&4565 + 5,1𝑥7&7# + 2,8𝑥7&7$ + 2,3𝑥7&7%
9.3.4. Problema do caixeiro-viajante
• Restrições saída:
𝑥45657# + 𝑥45657$ + 𝑥45657% + 𝑥45657& = 1
𝑥7#4565 + 𝑥7#7$ + 𝑥7#7% + 𝑥7#7& = 1
𝑥7$4565 + 𝑥7$7# + 𝑥7$7% + 𝑥7$7& = 1
𝑥7%4565 + 𝑥7%7# + 𝑥7%7$ + 𝑥7%7& = 1
𝑥7&4565 + 𝑥7&7# + 𝑥7&7$ + 𝑥7&7% = 1
9.3.4. Problema do caixeiro-viajante
• Restrições chegada:
𝑥7#4565 + 𝑥7$4565 + 𝑥7%4565 + 𝑥7&4565 = 1
𝑥45657# + 𝑥7$7# + 𝑥7%7# + 𝑥7&7# = 1
𝑥45657$ + 𝑥7#7$ + 𝑥7%7$ + 𝑥7&7$ = 1
𝑥45657% + 𝑥7#7% + 𝑥7$7% + 𝑥7&7% = 1
𝑥45657& + 𝑥7#7& + 𝑥7$7& + 𝑥7%7& = 1
9.3.4. Problema do caixeiro-viajante
• Restrições de sub-rotas:
• Sub-rota de 2 nós?
• Sub-rota de 4 nós?
• Sub-rota de 3 nós?
9.3.5. Problema de Escalonamento
de Pessoal
• Consiste em alocar um conjunto de funcionários entre diferentes 
horários de trabalho;
• Os postos de atendimento devem atender sua demanda 
respeitando as restrições do sistema;
• Como as variáveis de decisão devem assumir valores inteiros, 
corresponde a um problema de programação inteira;
• Aplicações: enfermeiras, correios, bancos, centrais de atendimento 
telefônico, escala de funcionários em empresas de transporte;
9.3.5. Problema de Escalonamento
de Pessoal
• Considere uma empresa com 𝑗 (𝑗 = 1,… , 𝑛) turnos de trabalho;
• A empresa possui um custo diário 𝑐! de alocar um funcionário em 
um turno 𝑗;
• Uma quantidade mínima 𝑏8 de funcionários deve estar disponível 
em um determinado período 𝑘 (𝑘 = 1,… ,𝑚);
• Busca-se determinar a escala de funcionários que iniciará o trabalho 
no turno 𝑗 de forma a minimizar o custo total de mão de obra;
9.3.5. Problema de Escalonamento
de Pessoal
min𝑍 =b
!/#
0
𝑐!𝑥!
𝑠. 𝑎.
b
!
𝑥! ≥ 𝑏8 	 (𝑗 ∈ 𝑘)	 𝑘 = 1,… ,𝑚
𝑥!≥ 0	 𝑒	𝑖𝑛𝑡𝑒𝑖𝑟𝑜	 (𝑗 = 1,2, … , 𝑛)
9.3.5. Problema de Escalonamento
de Pessoal
• Exemplo 5: O banco PRINCE abriu agências bancárias e precisa 
contratar mão de obra. A escala da força de trabalho que será 
contratada deve ser definida. Busca-se escalonar os novos 
funcionários em turnos de trabalho de 8h consecutivas, de forma a 
satisfazer o nível de serviço desejado com o menor custo possível. O 
período correspondente a cada turno, além do custo diário por 
funcionário é apresentado na Tabela 1. Para que o nível de serviço 
seja atendido é necessário um número mínimo de funcionários por 
período, conforme Tabela 2. Formule o problema de programação 
inteira para determinar a mão de obra a ser contratada por turno, 
com o menor custo possível, respeitando as restrições.
9.3.5. Problema de Escalonamento
de Pessoal
Tabela 1 Tabela 2
Turno Período Custo diário por funcionário Período Número de funcionários necessários
1 06:01 – 14:00 R$ 100,00 06:01 – 08:00 22
2 08:01 – 16:00 R$ 80,00 08:01 – 10:00 35
3 10:01 – 18:00 R$ 85,00 10:01 – 12:00 54
4 14:01 – 22:00 R$ 130,00 12:01 – 14:00 42
5 22:01 – 06:00 R$ 150,00 14:01 – 16:00 60
16:01 – 17:00 44
17:01 – 18:00 35
18:01 – 20:00 30
20:01 – 22:00 25
22:01 – 06:00 18
𝑀𝑖𝑛	𝑍 = 100𝑥' + 80𝑥% + 85𝑥& + 130𝑥" + 150𝑥(
𝑠. 𝑎.
𝑥' ≥ 22
𝑥' + 𝑥% ≥ 35
𝑥' + 𝑥% + 𝑥& ≥ 54
𝑥' + 𝑥% + 𝑥& ≥ 42
𝑥% + 𝑥& + 𝑥" ≥ 60
𝑥& + 𝑥" ≥ 44
𝑀𝑖𝑛	𝑍 = 𝑥!
9.3.5. Problema de Escalonamento
de Pessoal
• Função objetivo:
𝑀𝐼𝑁	𝑍 = 100𝑥# + 80𝑥$ + 85𝑥% + 130𝑥& + 150𝑥3
9.3.5. Problema de Escalonamento
de Pessoal
• Restrições:
𝑥# ≥ 22	 (06: 01	– 	08: 00)
𝑥# + 𝑥$ ≥ 35	 (08: 01	– 	10: 00)
𝑥# + 𝑥$ + 𝑥% ≥ 54	 (10: 01	– 	12: 00)
𝑥# + 𝑥$ + 𝑥% ≥ 42	 (12: 01	– 	14: 00)
𝑥$ + 𝑥% + 𝑥& ≥ 60	 (14: 01	– 	16: 00)
𝑥% + 𝑥& ≥ 44	 (16: 01	– 	17: 00)
𝑥% + 𝑥& ≥ 35	 (17: 01	– 	18: 00)
𝑥& ≥ 30	 (18: 01	– 	20: 00)
𝑥& ≥ 25	 (20: 01	– 	22: 00)
𝑥3 ≥ 18	 (22: 01	– 	06: 00)
9.3.6. Problema de Corte
• Em diversos processos industriais, itens são produzidos a partir do 
corte de peças maiores;
• Estas peças podem estar disponíveis em estoque ou são fabricadas 
na própria indústria ou, ainda, compradas de terceiros;
• Essas peças podem ter apenas uma dimensão relevante para o 
problema de corte (unidimensional);
• Exemplo: o comprimento, tais como barras de aço, bobinas de 
papel, rolos de filme;
9.3.6. Problema de Corte
• Elas também podem ter duas dimensões (comprimento e largura);
• Exemplo: placas de madeira, tecido, chapas de aço; 
• Podem ter até três dimensões, tais como blocos de matéria-prima 
para colchões e travesseiros. 
• Será apresentado o problema de corte unidimensional;
9.3.6. Problema de Corte
• O problema consiste em cortar barras disponíveis de tamanho único 
𝐿, para a produção de 𝑚 tipos de itens (barras de tamanhos 
menores) com tamanhos 𝑙#, 𝑙$, …, 𝑙1, e demandas, 𝑏#, 𝑏$, …, 𝑏1, 
respectivamente;
• O objetivo é minimizar o número de barras usadas, dado um 
limitante superior de barras disponíveis 𝑛;
9.3.6. Problema de Corte
• Seja	𝑦' 	tal	que = #1 se	a	barra	i	é	usada
0 caso	contrário	
• 𝑥'! = número de vezes que o item 𝑗 é cortado na barra 𝑖;
9.3.6. Problema de Corte
min𝑍 =b
'/#
0
𝑦'
𝑠. 𝑎.
b
'/#
0
𝑥'! ≥ 𝑏! 	 𝑗 = 1,… ,𝑚
	
b
!/#
1
𝑙!𝑥'! ≤ 𝐿𝑦' 	 𝑖 = 1,… , 𝑛
𝑥'! ≥ 0	 𝑒	𝑖𝑛𝑡𝑒𝑖𝑟𝑜, ∀𝑖, 𝑗	|	𝑦' ∈ 0,1 , ∀𝑖
9.4. Modelagem de restrições especiais
• Variáveis binárias podem ser muito úteis para formular restrições 
especiais;
• Estas restrições têm por objetivo representar uma condição real 
difícil de ser modelada;
9.4. Modelagem de restrições especiais
• Exemplos de restrições especiais são:
• Restrições “ou – ou então” para 2 ou mais restrições;
• Restrições “se – então”;
• Decisões mutuamente excludentes;
• Restrições limitantes de decisões;
• Restrições para assumir um único valor;
• Representação de variáveis inteiras;
9.4.1. Restrições “ou – ou então”
• Considere o caso de uma restrição do tipo ≤;
• Neste caso, o lado direito impõe um limite para o quanto o lado 
esquerdo pode aumentar;
• Se o lado direito for muito grande (ou infinito), a restrição sempre 
será atendida;
• Logo, ela passa a não ter efeito e é como se não existisse;
• Esse artifício é usado para modelagem de condições do tipo “ou – 
ou então”;
9.4.1. Restrições “ou – ou então”
• Suponha o caso de uma formulação em que apenas uma de duas 
restrições deve ser atendida;
• Seja 𝑀 um valor extremamente grande comparado à região de 
viabilidade do problema;
• Por exemplo, suponha que duas restrições sejam definidas como:
3𝑥# + 2𝑥$ ≤ 18 +𝑀𝑦
	
𝑥# + 4𝑥$ ≤ 16 +𝑀 1 − 𝑦
𝑦 ∈ 0,1
9.4.1. Restrições “ou – ou então”
• De forma geral:
𝑎'#𝑥# + 𝑎'$𝑥$ +⋯+ 𝑎'0𝑥0 ≤ 𝑏' +𝑀𝑦
𝑎8#𝑥# + 𝑎8$𝑥$ +⋯+ 𝑎80𝑥0 ≤ 𝑏8 +𝑀(1 − 𝑦)
𝑦 ∈ {0,1}
9.4.1. Restrições “ou – ou então”
• No caso de 𝑚 restrições em que 𝐾 são atendidas:
𝑎##𝑥# + 𝑎#$𝑥$ +⋯+ 𝑎#0𝑥0 ≤ 𝑏# +𝑀𝑦#
⋮
𝑎1#𝑥# + 𝑎1$𝑥$ +⋯+ 𝑎10𝑥0 ≤ 𝑏1 +𝑀𝑦1
𝑦# +⋯+ 𝑦1 = 𝑚 − 𝐾
𝑦' , … , 𝑦1 ∈ {0,1}
9.4.2. Restrições “se – então”
• Suponha que 𝑥! e 𝑥' sejam duas deciões representadas por variáveis 
binárias;
• Suponha que a decisão 𝑥! = 1 só pode acontecer caso a decisão 
𝑥' = 1 também precise ocorrer;
• Essa condição pode ser modelada com a simples inequação:
𝑥' − 𝑥! ≥ 0
9.4.2. Restrições “se – então”
• Essa inequação permite que 𝑥' seja 0 ou 1;
• Caso 𝑥% = 1	 → 𝑥! = 0 ou 𝑥! = 1;
• Caso 𝑥% = 0 → 𝑥! = 0.
9.4.3. Decisões mutuamente excludentes
• Em muitos casos ocorrem situações em que apenas uma de duas 
variáveis deve ser escolhida;
• A modelagem matemática precisa garantir que se uma variável for 
igual a 1, a outra precise obrigatoriamente ser 0;
• Decisões mutuamente excludentes podem ser modeladas como:
𝑥' + 𝑥! = 1
𝑥' , 𝑥! ∈ 0,1
9.4.3. Decisões mutuamente excludentes
• Esse problema pode ser adaptado para 𝑗 variáveis de decisão:
𝑥# +⋯+ 𝑥! = 1
𝑥#, … , 𝑥! ∈ 0,1
9.4.4. Restrições limitantes de decisões
• Em alguns casos desejamos limitar a quantidade de variáveis que 
pode ser escolhida;
• Nesse caso podemos ter uma situação em que nenhuma variável 
seja escolhida;
• No caso em que no máximo uma das duas decisões possa
acontecer, temos:
𝑥' + 𝑥! ≤ 1
𝑥' , 𝑥! ∈ 0,1
9.4.4. Restrições limitantes de decisões
• Uma variação desse problema inclui o caso em que no máximo 𝑁 
variáveis possam ser escolhidas de um total de 𝑗 variáveis;
• A modelagem matemática para esse caso é:
𝑥# +⋯+ 𝑥! ≤ 𝑁
𝑥#, … , 𝑥! ∈ 0,1
9.4.5. Restrições para assumir um único valor
• Em alguns casos desejamos que uma função assuma somente um 
de 𝑁 valores possíveis;
• Nesse caso, podemos utilizar variáveis binárias para realizar a 
modelagem matemática;
• Um exemplo dessa modelagem é:
3𝑥# + 2𝑥$ = 6𝑦# + 12𝑦$ + 18𝑦%
𝑦# + 𝑦$ + 𝑦% = 1
𝑦#, 𝑦$, 𝑦% ∈ 0,1
9.4.6. Representação de variáveis inteiras
• Variáveis binárias também podem ser utilizadas para representar 
variáveis inteiras genéricas;
• Considere uma variável inteira genérica 𝑥 tal que seus limites sejam:
0 ≤ 𝑥 ≤ 𝑢
• E 𝑁 seja definido como o inteiro tal que:
2? ≤ 𝑢 ≤ 2?@#
9.4.6. Representação de variáveis inteiras
• A representação genérica de 𝑥 é:
𝑥 =b
'/A
?
2'𝑦'
• Por exemplo, considere a restrição a seguir (𝑁 = 2):
𝑥# ≤ 5
𝑥# = 𝑦A + 2𝑦# + 4𝑦$
𝑦A, 𝑦#, 𝑦% ∈ 0,1
Pesquisa Operacional I 
(CEP/CT025) – Aula 08
UNIVERSIDADE FEDERAL DO PIAUÍ
CAMPUS MINISTRO PETRÔNIO PORTELLA – CT
CURSO DE ENGENHARIA DE PRODUÇÃO
PROF. ÁLVARO LÉDO FERREIRA
CONTATO: a lvaro.ferre i ra@ufpi .edu.br

Continue navegando