Você está na página 1de 21

6.

PROGRAMAÇÃO INTEIRA
1
6. Programação Inteira

6.1 Introdução

A Programação Inteira (PI) é um caso de modelos de Programação Linear em que algumas ou


todas as variáveis de decisão tomam somente valores inteiros.
Há problemas reais de programação linear que exigem que algumas variáveis de decisão sejam
inteiras, como por exemplo:
 Nº de trabalhadores necessários para realizar uma tarefa;
 Nº de viaturas necessários para transportar uma mercadoria;
 Etc.

Áreas de aplicações:

Há muitas áreas onde se aplicam modelos de PI das quais pode-se citar as seguintes:
 Problema de afectação
 Problema da mochila
 Problema do viajante do comércio
 Problema de execução de projectos
 etc.

Modelo de Programa Inteira:

O modelo geral de um problema de PI

Max Min  Z  f x 
sujeito a :
g i x , ,  bi
X j  0;  xj Z

Existem três tipos de modelos de PI:


 Programação Inteira Pura: Todas as variáveis são de tipo inteiro
 Programação Mista‫ ׃‬Existem variáveis inteiras e reais
 Programação inteira 0-1‫ ׃‬As variáveis tomam 0 ou 1 (sim ou não; verdadeiro ou falso).

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
2
6. Programação Inteira

6.2 Métodos de resolução

6.2.1 Problema Relaxado

A primeira aproximação da solução de um problema de PI obtém-se resolvendo o seu Problema


Relaxado (PR).

O PR de um problema de PI é um problema de PL que se obtém do problema original, ignorando


a condição de que as variáveis sejam inteiras.
Dado um PI:
Max Z  f  x 
sa :
g i  x , ,  bi
X j  0;  xj Z

O PR será:

Max Z  f  x 
sa :
g i  x , ,  bi
X j 0

Teorema 1‫׃‬

Se o PR é impossivel, o PI também é impossível.

Caso contrário:

i. z I*  z R*  Limite superior (caso de maximização)


ii. z I*  z R*  Limite inferior (caso minimização)

Teorema 2‫׃‬

Se o PR é não acotado, o PI também é não acotado ou impossível.

Vamos estudar dois métodos de resolução:


1. Método de Ramificação e Limitação
2. Método de Planos de Corte de Gomory

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
3
6. Programação Inteira

6.2.2 Método de Ramificação e Limitação

O método de ramificação e limitação (branch and bound) é considerado o mais eficiente em


termos de cálculos.

Este método baseia-se em processos de ramificação, limitação e sondagem.


A ramificação consiste na partição da solução admissível do PR com valores não inteiros em
subproblemas com vista a prescindir das partes admissíveis do PR que não sejam para o PI. Isto
se leva a cabo introduzindo restrições mutualmente exclusivas que dêem soluções inteiras.

A limitação refere-se ao limite superior que se obtém como valor da função objectivo entre os
subproblemas obtidos no processo de ramificação. Tal limite utiliza-se para ordenar as soluções
óptimas dos subproblemas e assim determinar a solução óptima do PI.

A sondagem é um processo através do qual se decide se pode-se prescindir de alguns


subproblemas porque não podem conter a solução óptima.

O processo de ramificação termina quando se obtém uma solução inteira ou quando o PR não
tem soluçãol, ou quando o valor da função objectivo não é melhor que o limite .

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
4
6. Programação Inteira

Algoritmo de Ramificação e Limitação

1. Resolver o PR associado ao PI.


 Se a solução óptima de PR é inteira, parar, tal solução é também de PI.
 Caso contrário, determinar os limites:
caso de maximização : Z I  Z R*  Ls

caso de minimização : Z I  Z R*  Li

2. Ramificação:
 Suponhamos que o PR tem uma variável x j que toma um valor não inteiro x̂ j . Então

existe dois números inteiros consecutivos positivos tal que i1  xˆ j  i 2 .

Neste caso, criam-se dois subproblemas acrescentando ao PI as restrição x j  i1 e x j  i 2

 No caso de, na solução, existirem mais do que uma variável não inteira, escolhe-se a
variável que tem o valor que está mais longe de um inteiro para a ramificação, isto é, a
variável cuja parte decimal esteja mais próxima de 0,5. Em caso de empate escolhe-se
arbitrariamente uma das variáveis.
 No caso de programação mista, a ramificação só se faz sobre as variáveis inteiras.

3. Resolver os PR dos subproblemas obtidos.


 Se algumas das soluções dos subproblemas forem não inteiras, repete-se o processo de
ramificação.
 O processo de ramificação contínua até obter um subproblema com uma solução inteira,
ou quando não existe solução. O valor da função objectivo do subproblema torna-se o
novo limite superior (caso de maximização) ou novo limite inferior (caso de
minimização) dos respectivos subproblemas.

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
5
6. Programação Inteira

4. Sondagem:
 Todos os subproblemas cujos valores da função objectivo forem inferiores que os limites
são considerados terminais. Também são considerados terminais os subprogramas que
não têm soluções.
 O processo de ramificação prossegue a partir dos subproblemas cujas soluções não
inteiras produzem valores melhores que Z R* .
 Se todos os subproblemas forem terminais, parar. A solução vem dada pela melhor
solução inteira.
Exemplo:

Max Z  2 x1  x 2
sa
5 x1  8 x 2  68
x1  x 2  2
x2  6
x1 , x2  0 e inteiras

Resolução:

PR:

Max Z  2 x1  x 2
sa
5 x1  8 x 2  68
x1  x 2  2
x2  6
x1 , x 2  0

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
6
6. Programação Inteira

x2

9
8
7
(0;6) (4;6)
6

5 x2  6

4 (6.46; 4.46)

(4; 0)
0 1 2 3 4 6 7 8 9 10 11 12 13 14 x1
5x1  8x 2  68
x1  x 2  2

5x1  8x 2  68
x1 x2
0 8.5
13.6 0

x1  x 2  2
x1 x2
2 0
3 1

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
7
6. Programação Inteira

x2  6

(x1; x2) Z
(0; 0) 0
(0; 6) 6
(4; 6) 14
(6.46; 4.46) 17.38
(2; 0) 4

X R  6.46;4.46
Z R  17.38
A solução óptima não é inteira então não é solução do PI.
Z I  17.38  Ls
Como todas as variáveis estão a mesma distância em relação ao inteiro mais próximo
podemos escolher qualquer uma delas para ramificação. Escolhendo arbitrariamente x 2
temos ( 4  x 2  5 ) e novas restrições são: x 2  4 e x 2  5

PL1:
Max Z  2 x1  x 2
sa
5 x1  8 x 2  68
x1  x 2  2
x2  6
x2  4
x1 , x 2  0

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
8
6. Programação Inteira

x2

9
8
7

6
x2  6
5

4 (0;4) (6;4)
x2  4
3
2

1
(2;0)
0 1 2 3 4 6 7 8 9 10 11 12 13 14
x1 5x1  8x 2  68
x1  x 2  2

(x1; x2) Z
(0; 0) 0
(0; 4) 4
(6; 4) 16
(2; 0) 4

A solução é inteira então é terminal.

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
9
6. Programação Inteira

PL2:

Max Z  2 x1  x 2
sa
5 x1  8 x 2  68
x1  x 2  2
x2  6
x2  5
x1 , x 2  0

x2

9
8
7
(0;6) (4;6) x2  6
6
x2  5
5
(0;5) (5.6;5)
4
x2  5
3
2

0 1 2 3 4 6 7 8 9 10 11 12 13 14 x1
x1  x 2  2 5x1  8x 2  68

(x1; x2) Z
(0; 5) 5
(0; 6) 6
(4; 6) 14
(5.6; 5) 16.2

A solução óptima não é inteira e é melhor que a solução inteira anterior. Então há que
ramificar por Ramificado por x1 ( 5  x1  6 ) então:

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
10
6. Programação Inteira

x1  5 e x1  6

PL2.1

Max Z  2 x1  x 2
sa
5 x1  8 x 2  68
x1  x 2  2
x2  6
x2  5
x1  5
x1 , x 2  0

x2

9
8
7
(0;6) (4;6) x2  6
6
(5;5.38) x2  5
5
(0;5) (5;5)
4
x2  5
3
2
x1  5
1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 x1
5x1  8x 2  68
x1  x 2  2

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
11
6. Programação Inteira

(x1; x2) Z
(0; 5) 5
(0; 6) 6
(4; 6) 14
(5; 5.38) 15.38
(5; 5) 15

Esta solução não é inteira e é pior que a solução inteira obtida em PL1, então é terminal.

PL2.2:

Max Z  2 x1  x 2
sa
5 x1  8 x 2  68
x1  x 2  2
x2  6
x2  5
x1  6
x1 , x 2  0

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
12
6. Programação Inteira

x2
9

8
7

6 x2  6

5 x2  5

3
2

1 x1  6

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 x1
x1  x 2  2 5x1  8x 2  68

Este subproblema não tem solução, então é terminal.

A solução óptima vem dada pela solução do subproblema PL1:

x1  6
*

x2  4
*

Z *  16

O processo de ramificação e limitação pode ser representado em forma de árvore de maneira que
na raíz aparece o PR. Deste vértice inicial, partem dois arcos correspondentes a ramificação em
uma variável não inteira e os subproblemas nesses vértices são tomados a partir do PR
predecessor, adicionando respectivamente as restrições que figuram nos arcos e que para essa
variável de ramificação eliminam a solução óptima não inteira do problema da raíz. Com este
raciocínio, continua-se construíndo a árvore, terminando a ramificação quando se obtém uma
solução inteira ou quando o PR é não admissível, ou quando o valor da função objectivo não é
melhor que o limite. Em ambos casos diz-se que o vértice correspondente é Terminal.

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
13
6. Programação Inteira

Representando a solução do exemplo numa árvore temos:

PR
X=(6.46;4.46)
Z=17.38=Ls

x2  4 x2  5

PL1 PL2
X=(6;4) X=(5.6;5)
Z=16 Z=16.2

Terminal porque é inteira


x1  5 x1  6

PL2.1 PL2.2
X=(5;5.38) Não admissível
Z=15.38

Terminal porque é pior que PL1 Terminal porque é não admissível

Então, a solução do PI é a solução do PL1:


X *  6;4
Z *  16

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
14
6. Programação Inteira

6.2.3 Método de Planos de Corte de Gomory

No método de planos de corte, desenvolvida por Gomory, adiciona-se uma nova restrição em
cada etapa. Neste caso a região admissível vai sendo diminuída e não dividida como acontece
com o método de ramificação e limitação.

Algoritmo de Gomory:
Passo 0: Resolve-se o PR mediante o Método de Simplex. Se o PR não tem solução, parar, o
PI impossível. Caso contrário, ir ao passo 1.

Passo 1: Se a solução de PR é inteira ou seja, todas as variáveis têm valores inteiros, parar, a
solução é óptima. Caso contrário, ir ao passo 2.

Passo 2: No quadro óptimo de PR selecciona-se uma das variáveis x j com valor não inteiro

com o valor mais longe de um inteiro.


Em caso de empate, seleciona-se arbitrariamente uma das variáveis.
Considera-se a equação da restrição da variável seleccionada.

Passo 3: Reescrever cada termo da equação da restrição na forma de soma de um inteiro e


uma fracção própria positiva (entre 0 e 1).

Passo 4: Passar para o primeiro membro todos os termos com coeficientes fraccionários e
para o segundo membro todos os termos com coeficientes inteiros.

Passo 5: Exigir que o primeiro membro da equação obtida em 4 seja não negativa. A
desigualdade obtida será a nova restrição.

Passo 6: Introduzir uma variável de folga e resolver o problema pelo Método Dual de
Simplex.

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
15
6. Programação Inteira

Exemplo:

Max Z  x1  2 x 2
sa
4 x1  3 x 2  12
 x1  x 2  2
x1 , x 2  0 e int eiras.

PR:
Max Z  x1  2 x 2
sa
4 x1  3 x 2  12
 x1  x 2  2
x1 , x 2  0

Max Z  x1  2 x 2  0 x3  0 x 4
sa
4 x1  3x 2  x3  12
 x1  x 2  x4  2
x0

1:
1 2 0 0
B x1 x2 x3 x4 xb
0 x3 4 3 1 0 12
0 x4 -1 1* 0 1 2
Zj 0 0 0 0 0
Cj Zj 1 2 0 0

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
16
6. Programação Inteira

2:

Lˆ 2  L2 / 1  L2
Lˆ  L  3Lˆ
1 1 2

1 2 0 0
B x1 x2 x3 x4 xb

0 x3 7* 0 1 -3 6
2 x2 -1 1 0 1 2
Zj -2 2 0 2 4
Cj Zj 3 0 0 -2

3:
Lˆ1  L1 / 7
Lˆ 2  L2  Lˆ1

1 2 0 0
B x1 x2 x3 x4 xb
1 x1 1 0 1/7 -3/7 6/7
2 x2 0 1 1/7 4/7 20/7
Zj 1 2 3/7 5/7 46/7
Cj Zj 0 0 -3/7 -5/7

A solução óptima de PR não é inteira


x1*  6 / 7  0,86
x 2*  20 / 7  2,86

Como estão empatadas, escolhemos arbitrariamente x1 :

x1  1 / 7 x3  3 / 7 x 4  6 / 7  x1  1 / 7 x3   1  4 / 7 x 4  6 / 7  x1  1 / 7 x 3  x 4  4 / 7 x 4  6 / 7 
 1 / 7 x3  4 / 7 x 4  6 / 7   x1  x 4  1 / 7 x 3  4 / 7 x 4  6 / 7  0  1 / 7 x3  4 / 7 x 4  6 / 7

Introduzindo uma variável de folga x5 temos:


1 / 7 x3  4 / 7 x4  x5  6 / 7

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
17
6. Programação Inteira

Multiplicando por -1 e aplicar o Método Dual de Simplex:


 1 / 7 x3  4 / 7 x4  x5  6 / 7
1 2 0 0 0
B x1 x2 x3 x4 x5 xb
1 x1 1 0 1/7 -3/7 0 6/7
2 x2 0 1 1/7 4/7 0 20/7
0 x5 0 0 -1/7 -4/7* 1 -6/7
zj 1 2 3/7 5/7 0 46/7
Cj Zj 0 0 -3/7 -5/7 0

3/ 7 5/ 7
r3   3; r4   5 / 4  1,25
 1/ 7  4/7

Lˆ3  7 / 4 L3
Lˆ  L  3 / 7 Lˆ
1 1 3

Lˆ 2  L2  4 / 7 Lˆ3

1 2 0 0 0
B x1 x2 x3 x4 x5 xb
1 x1 1 0 1/4 0 -3/4 3/2
2 x2 0 1 0 0 1 2
0 x4 0 0 1/4 1 -7/4 3/2
zj 1 2 1/4 0 5/4 11/2
Cj Zj 0 0 -1/4 0 -5/4

A solução não é inteira já que x1 não inteira, então:

x1  1 / 4 x 3  3 / 4 x 5  3 / 2  x1  1 / 4 x 3   1  1 / 4x 5  1  1 / 2  x1  1 / 4 x 3  x 5  1 / 4 x 5  1  1 / 2 
 1 / 4 x 3  1 / 4 x 5  1 / 2  1  x1  x 5  1 / 4 x 3  1 / 4 x 5  1 / 2  0  1 / 4 x 3  1 / 4 x 5  1 / 2 
 1 / 4 x 3  1 / 4 x 5  x 6  1 / 2  1 / 4 x 3  1 / 4 x 5  x 6  1 / 2

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
18
6. Programação Inteira

1 2 0 0 0 0
B x1 x 2 x3 x 4 x5 x6 xb
1 x1 1 0 1/4 0 -3/4 0 3/2
2 x2 0 1 0 0 1 0 2
0 x4 0 0 1/4 1 -7/4 0 3/2
0 x6 0 0 -1/4* 0 -1/4 1 -1/2
zj 1 2 1/4 0 5/4 0 11/2
Cj Zj 0 0 -1/4 0 -5/4 0

1/ 4 5/ 4
r3   1; r4   5
 1/ 4  1/ 4
Lˆ 4  4 L4
Lˆ  L  1 / 4 Lˆ
1 1 4

Lˆ 2  L2
Lˆ 3  L3  1 / 4 Lˆ 4

1 2 0 0 0 0
B x1 x2 x3 x4 x5 x6 xb
1 x1 1 0 0 0 -1 1 1
2 x2 0 1 0 0 1 0 2
0 x4 0 0 0 1 0 1 1
0 x3 0 0 1 0 1 -3 2
zj 1 2 0 0 1 1 5
Cj Zj 0 0 0 0 -1 -1

Já que na solução óptima do PR os valores de x1 e x 2 são inteiros, encontramos a solução


óptima do problema de PI.

x1*  1
x 2*  2
Z*  5

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
19
6. Programação Inteira

Exercícios

1. Resolve os seguintes problemas através do algoritmo de ramificação e acotação:

b)

Max Z  3x1  4 x 2
sa
2 x1  x 2  6
2 x1  3 x 2  9
x1 , x 2  0 e int eiras.

c)

Min Z  2x 1  3x 2  x 3
s.a
x 1  2 x 2  3x 3  40
2x 1  x 2  6 x 3  80
x 1 ; x 2 ; x 3  0, e inteiras

d)

Max Z  4x 1  3x 2  2 x 3
s.a
5x 1  2 x 2  3x 3  40
3x 1  3x 2  2 x 3  7
- x 1  2x 2 - x 3  9
x  0 e x 1 ; x 2 inteiras

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018
20
6. Programação Inteira

2. Mediante o método de planos de corte de Gomory, determine as soluções óptimas dos

seguintes problemas:

a)

Max Z  2 x1  x 2
sa
5 x1  8 x 2  68
x1  x 2  2
x2  6
x1 , x2  0 e inteiras
b)
Min Z  - 2x 1  x 2
s.a
- 8x 1  2 x 2  6x 3  10
1/5x 1  1 / 5x 2  1
x 1 ; x 2 0, e inteiras

c)

Min Z  - 2x 1  x 2
s.a
- 8x 1  2 x 2  6x 3  10
1/5x 1  1 / 5x 2  1
x 1 ; x 2 0, e inteiras

d)

Max Z  2x 1  4x 2
s.a
x 1  2x 2  10
2x 1  x 2  6
x2  4
x 1 ; x 2  0, e inteiras

Fim

----------------------------------------------------------------------------------------------------------------
Domingos Uchavo, Maputo, 2018

Você também pode gostar