AULA 6
MODELOS DE PROGRAMAÇÃO INTEIRA
Autor: Anibal Tavares de Azevedo
INTRODUÇÃO À META-HEURÍSTICAS
PROBLEMAS DE PROGRAMAÇÃO INTEIRA
(Integer) Space: The last frontier
Designação
Mochila
Caixeiro
PROBLEMAS PROGRAMAÇÃO INTEIRA
Designação
Mochila
i
j
x
ij
Variáveis de Decisão
X
ij
= Quantidade transportada do nó i para o nó j.
x
i j
Origem
(fábrica)
Destino
(mercado)
1
2
x
22
1
2
x
21
x
12
x
11
Variáveis de Decisão
X
= Quantidade transportada da fábrica i para o mercado j.
1
2
x
22
1
2
x
21
x
12
x
11
∑
∑
=
=
=
n
j
j
m
i
i
d
f
1
1
n = no. de mercados
m = no. de fábricas
Restrição (implícita): tudo o que for produzido nas
fábricas (f
i
) deve ser consumido pelos mercados (d
i
).
Transporte
∑
∑
=
=
=
n
j
j
m
i
i
d
f
1
1
Modelo anterior supõe implicitamente
que tudo que é produzido será
consumido. Neste caso, o modelo de
transporte é dito balanceado.
Existem, porém, 2 casos nos quais esta restrição não é satisfeita:
Caso 1
Capacidade >
Demanda
Caso 2
Capacidade <
Demanda
m
i
f
x
n
j
i
ij
,
1
,
,
1
L
=
≤
∑
=
n
j
d
x
m
j
ij
=
,
=
1
,
L
,
∑
=
m
i
f
x
n
j
i
ij
,
1
,
,
1
L
=
=
∑
=
n
j
d
x
m
j
ij
≤
,
=
1
,
L
,
∑
=
Não precisa
transportar tudo !
1
2
x
22
1
2
x
21
x
12
x
11
3
mercado “fantasma”
Caso 1
Transporte
1
2
1
2
x
11
3
x
21
+ x
22
+ x
23
+ x
24
= f
2
4
x
12
x
13
x
14
x
21
x
22
x
23
x
24
3
x
31
x
32
x
33
x
34
x
11
+ x
12
+ x
13
+ x
14
= f
1
x
31
+ x
32
+ x
33
+ x
34
= f
3
1
2
1
2
11
3
x
12
+ x
22
+ x
32
= d
2
4
x
12
x
13
x
14
x
21
x
22
x
23
x
24
3
x
31
x
32
x
33
x
34
x
11
+ x
21
+ x
31
= d
1
x
14
+ x
24
+ x
34
= d
4
x
13
+ x
23
+ x
33
= d
3
Capacidade - Demanda
S.a.:
x
11
+ x
12
+ x
13
+ x
14
= 2.000
x
21
+ x
22
+ x
23
+ x
24
= 3.000
x
31
+ x
32
+ x
33
+ x
34
= 1.500
x
11
+ x
21
+ x
31
= 2.000
x
12
+ x
22
+ x
32
= 2.000
x
13
+ x
23
+ x
33
= 1.000
x
14
+ x
24
+ x
34
= 1.500
MODELO COMPLETO DETALHADO
Transporte
Min
25x
11
+ 20x
12
+ 30x
13
+
30x
21
+ 25x
22
+ 25x
23
+
20x
31
+ 15x
32
+ 23x
33
Cap. fábrica
Cap. mercado
1
2
x
22
1
2
x
21
x
12
x
11
3
fábrica “fantasma”
x
32
x
31
Caso 2
Min
S.a.:
MODELO COMPLETO GERAL
Transporte
m
i
f
x
n
j
i
ij
,
1
,
,
1
L
=
≤
∑
=
n
j
d
x
m
i
j
ij
,
1
,
,
1
L
=
≤
∑
=
∑∑
=
=
m
i
n
j
ij
ij
x
c
1
1
n = no. de mercados
m = no. de fábricas
Cap. fábrica
Cap. mercado
Min
S.a.:
MODELO COMPLETO GERAL
m
i
f
x
x
n
j
i
in
ij
,
1
,
,
1
1
=
=
L
+
∑
=
+
n
j
d
x
x
m
i
j
j
m
ij
,
1
,
,
1
1
=
=
L
+
∑
=
+
∑∑
=
=
m
i
n
j
ij
ij
x
c
1
1
Custo de transporte
Ax
b
Matriz A com elementos -1, 1 e 0 é
dita matriz unimodular.
Vetor só com
elementos
inteiros
X é solução inteira !!
(Bazaraa, 2nd, p.429)
i
j
x
ij
Variáveis de Decisão
X
ij
= 1 se operário i realiza a tarefa j e 0 caso contrário.
x
i j
Operário
Tarefa
1
2
x
22
1
2
x
21
x
12
x
11
n
m
=
n = no. de tarefas
m = no. operários
Restrições : todas as tarefas j devem ser alocadas a
pelo menos 1 operário e vice-versa.
1
1
2
x
12
x
11
Restrições : todas os
operários i
devem ser alocados a
pelo menos 1 tarefa
!
Problema de Designação
x
11
+ x
12
= 1
2
x
22
1
2
x
21
Restrições : todas os
operários i
devem ser alocados a
pelo menos 1 tarefa
!
x
21
+ x
22
= 1
Alocação do operário 2
1
2
1
x
21
x
11
Restrição : todas as
tarefas j
devem ser alocadas a
pelo menos 1 operário
!
Problema de Designação
x
11
+ x
21
= 1
1
2
x
22
2
x
12
Restrição : todas as
tarefas j
devem ser alocadas a
pelo menos 1 operário
!
x
12
+ x
22
= 1
Alocação para a tarefa 2
Min
S.a.:
MODELO COMPLETO GERAL
Problema de Designação
m
i
x
m
j
ij
1
,
1
,
,
1
L
=
=
∑
=
m
j
x
m
i
ij
1
,
1
,
,
1
L
=
=
∑
=
∑∑
=
=
m
i
m
j
ij
ij
x
c
1
1
custo para realizar a tarefa
m
j
i
x
ij
=
1
ou
0
,
,
=
1
,
L
,
Pelo menos 1
tarefa (j) para
cada operário(i)
Pelo menos 1
operário(i) para
Min
S.a.:
MODELO COMPLETO GERAL
m
i
x
m
j
ij
1
,
1
,
,
1
L
=
=
∑
=
m
j
x
m
i
ij
1
,
1
,
,
1
L
=
=
∑
=
∑∑
=
=
m
i
n
j
ij
ij
x
c
1
1
custo para realizar a tarefa
m
j
i
x
ij
=
1
ou
0
,
,
=
1
,
L
,
X é solução inteira !!
(Bazaraa, 2nd, p.429)
Caso particular do
modelo de transporte:
m = n e vetor b só com
elementos 1
i
j
x
i j
Máquina
Tarefa
i
j
x
ij
Variáveis de Decisão
X
ij
= 1 se a máquina i realiza a tarefa j e 0 caso contrário.
x
i j
Máquina
Tarefa
A Machine Company tem 4 máquinas e 4 tarefas
para serem realizadas. Cada máquina deve ser
designada para completar uma tarefa. O tempo
requerido para completar cada tarefa por cada
máquina é dado na tabela dada a seguir. A
Machine Company deseja minimizar o tempo total
de processamento para realizar as 4 tarefas.
Formule e resolva o problema de programação
linear correspondente.
Problema de Designação
Máquina
Tarefa 1
Tempo[h]
Tarefa 2
Tempo[h]
Tarefa 3
Tempo[h]
Tarefa 4
Tempo[h]
1
14
5
8
7
2
2
12
6
5
3
7
8
3
9
4
2
4
6
10
Tabela 1: Dados do problema de Designação
1
1
2
x
12
x
11
Restrições : todas os
operários i
devem ser alocados a
pelo menos 1 tarefa
!
Problema de Designação
x
11
+ x
12
= 1
1
2
1
x
21
x
11
Restrição : todas as
tarefas j
devem ser alocadas a
pelo menos 1 operário
!
x
11
+ x
21
= 1
Alocação para a tarefa 1
S.a.:
x
11
+ x
12
+ x
13
+ x
14
= 1
x
21
+ x
22
+ x
23
+ x
24
= 1
x
31
+ x
32
+ x
33
+ x
34
= 1
x
41
+ x
42
+ x
43
+ x
44
= 1
x
11
+ x
21
+ x
31
+ x
41
= 1
x
12
+ x
22
+ x
32
+ x
42
= 1
x
13
+ x
23
+ x
33
+ x
43
= 1
x
14
+ x
24
+ x
34
+ x
44
= 1
MODELO COMPLETO DETALHADO
Min
14x
11
+ 5x
12
+ 8x
13
+ 7x
14
+
2x
21
+ 12x
22
+ 6x
23
+ 5x
24
+
7x
31
+ 8x
32
+ 3x
33
+ 9x
34
+
2x
41
+ 4x
42
+ 6x
43
+ 10x
44
Restrições de
máquinas
Transporte
Restrições de
tarefas
Min
S.a.:
MODELO COMPLETO GERAL
m
i
x
m
j
ij
1
,
1
,
,
1
L
=
=
∑
=
m
j
x
m
i
ij
1
,
1
,
,
1
L
=
=
∑
=
∑∑
=
=
m
i
m
j
ij
ij
x
t
1
1
Tempo total
Restrições de
máquinas
Restrições de
tarefas
m
j
i
x
ij
≥
0
,
,
=
1
,
L
,
GLPK Lab for Windows
# MODELO DO PROBLEMA DE DESIGNAÇÃO
# Este problema encontra o menor custo de transporte # que atende as requisões de demanda e produção.
set I; /* máquina */
set J; /* tarefa */
param a{i in I}; /* alocação das i máquinas */
param b{j in J}; /* alocação das j tarefas */
param d{i in I, j in J}; /* tempo de realização */ /* Tempo de realização em horas */
param c{i in I, j in J} := d[i,j];
#Parametros para impressao dos resultados do modelo em arquivos.
param file, symbolic, default "ResumoDesignacao.txt"; /* Alocação da máquina i para a tarefa j */
var x{i in I, j in J} >= 0;
/* Minimização do tempo total de processamento */
minimize cost: sum{i inI, j in J} c[i,j] * x[i,j]; /* Alocação da máquina i */
s.t. supply{i inI}: sum{j in J} x[i,j] = a[i]; /* Alocação da tarefa j */
s.t. demand{j inJ}: sum{i in I} x[i,j] = b[j];
PARTE 1 - FORMULAÇÃO
Índices das variáveis
Dados
do
modelo
Variáveis
solve;
/* RELATORIO */
printf '\n'
>> file;
printf '---\n'
>> file;
printf 'Solucao Encontrada \n'
>> file;
printf '---\n'
>> file;
printf ' \n'
>> file;
printf '---\n'
>> file;
printf " Máquina Tarefa Tempo \n"
>> file;
printf{i in I} " %8s %8d %10g\n", i, sum{j in J} j * x[i,j],
sum{j in J} c[i,j] * x[i,j] >> file;
printf '---\n'
>> file;
printf 'Custo total (z): ' >> file;
printf ' %10.2f \n', cost >> file;
printf '---\n'>> file;
printf '\n' >> file;
PARTE 2 - FORMULAÇÃO
Corresponde ao índice da
tarefa assinalada à máquina i
GLPK Lab for Windows
data;
set I := Maq1 Maq2 Maq3 Maq4;
set J := 1 2 3 4;
param a := Maq1 1 Maq2 1 Maq3 1 Maq4 1;
param b := 1 1 2 1 3 1 4 1;
param d : 1 2 3 4 := Maq1 14 5 8 7 Maq2 2 12 6 5 Maq3 7 8 3 9 Maq4 2 4 6 10;
data;
set I := Maq1 Maq2 Maq3 Maq4;
set J := 1 2 3 4;
param a := Maq1 1 Maq2 1 Maq3 1 Maq4 1;
param b := 1 1 2 1 3 1 4 1;
param d : 1 2 3 4 := Maq1 14 5 8 7 Maq2 2 12 6 5 Maq3 7 8 3 9 Maq4 2 4 6 10;
end;
PARTE 3 - FORMULAÇÃO
Dados do
Modelo
GLPK Lab for Windows
Máquina
Tarefa 1
Tempo[h]
Tarefa 2
Tempo[h]
Tarefa 3
Tempo[h]
Tarefa 4
Tempo[h]
1
14
5
8
7
2
2
12
6
5
3
7
8
3
9
4
2
4
6
10
Solução encontrada para o problema de Designação
TEMA 1:
Suponha que uma empresa de consultoria deseja alocar
n consultores para n projetos diferentes e que cada consultor tem
interesses e afinidades para cada projeto medidos de acordo com
a tabela dada abaixo. Otimizar a soma das preferências.
Problema de Designação
Cij
Proj1
Proj2
Proj3
Proj4
1
2
5
8
7
2
14
12
5
6
3
7
3
8
9
4
6
10
2
4
x
ij
1 tarefa – 1 operário e 1 operário – 1 ou mais tarefas (cap. bi)
Designação Generalizada
M – operários
N – Tarefas
x
ij
1 tarefa – 1 operário e 1 operário – 1 ou mais tarefas (cap. bi)
M – operários
N – Tarefas
x
ij
bi – capacidade de recursos
do operário i
x
ij
1 tarefa – 1 operário e 1 operário – 1 ou mais tarefas (cap. bi)
Designação Generalizada
M – operários
N – Tarefas
x
ij
1
1
2
x
12
x
11
Restrições : todas os
operários i
devem ser alocados a
pelo menos 1 tarefa
!
a
11
x
11
+a
12
x
12
≤≤≤≤
b
1
Alocação do operário 1
Capacidade do operário 1
E
1
2
1
x
21
x
11
Restrição : todas as
tarefas j
devem ser alocadas a
pelo menos 1 operário
!
x
11
+ x
21
= 1
Alocação para a tarefa 1
Designação Generalizada
Min
S.a.:
MODELO COMPLETO GERAL
m
i
b
x
a
n
j
i
ij
ij
,
1
,
,
1
L
=
≤
∑
=
n
j
x
m
i
ij
1
,
1
,
,
1
L
=
=
∑
=
∑∑
=
=
m
i
n
j
ij
ij
x
c
1
1
Custo total
Capacidade e
recursos gastos
pelo operário i
Cada tarefa j tem
1 operário
n
j
m
i
x
ij
≥
0
,
=
1
,
L
,
,
=
1
,
L
,
Min
S.a.:
MODELO COMPLETO GERAL
m
i
b
x
a
n
j
i
ij
ij
,
1
,
,
1
L
=
≤
∑
=
n
j
x
m
i
ij
1
,
1
,
,
1
L
=
=
∑
=
∑∑
=
=
m
i
n
j
ij
ij
x
c
1
1
n
j
m
i
x
ij
≥
0
,
=
1
,
L
,
,
=
1
,
L
,
Ax
Matriz A com
elementos -1, 1 e 0 é
dita matriz unimodular,
mas com aij isto não
acontece mais com A !!
Min
S.a.:
MODELO COMPLETO GERAL
m
i
b
x
a
n
j
i
ij
ij
,
1
,
,
1
L
=
≤
∑
=
n
j
x
m
i
ij
1
,
1
,
,
1
L
=
=
∑
=
∑∑
=
=
m
i
n
j
ij
ij
x
c
1
1
n
j
m
i
x
ij
≥
0
,
=
1
,
L
,
,
=
1
,
L
,
USAR MÉTODOS DE
PROGRAMAÇÃO
INTEIRA !!
A Compact Consulting Company tem 2 consultores
e 4 tarefas para serem realizadas. Cada consultor
deve ser designado para completar uma tarefa. Os
custos cij, os recursos necessários para cada
consultor realizar cada tarefa aij e a capacidade de
cada consultor bi são dados nas tabelas a seguir.
Formule e resolva o problema de programação
linear correspondente.
Problema de Designação
cij
T1
T2
T3
T4
1
15
61
3
94
2
21
28
76
48
aij
T1
T2
T3
T4
1
31
69
14
87
2
23
20
71
86
bi
Cap.
1
1000
2
1000
GLPK Lab for Windows
# MODELO DO PROBLEMA GERAL DE DESIGNAÇÃO
# Este problema encontra a alocação que produz menor custo total de realização das tarefas respeitando a capacidade de cada consultor e utilização de recursos.
set I; /* consultor */ set J; /* tarefa */
param b{i in I}; /* capacidade i consultores */ param d{j in J}; /* alocação das j tarefas */ param c{i in I, j in J}; /* custo de realização */ param a{i in I, j in J}; /* utilização de recursos */ #Parametros para impressao dos resultados do modelo em arquivos. param file, symbolic, default "ResumoDesignacaoGeral.txt";
/* Alocação da máquina i para a tarefa j */ var x{i in I, j in J} binary;
/* Minimização do tempo total de processamento */ minimize cost: sum{i in I, j in J} c[i,j] * x[i,j];
/* Alocação do consultor i */
s.t. supply{i in I}: sum{j in J} a[i,j] * x[i,j] <= b[i]; /* Alocação da tarefa j */
s.t. demand{j in J}: sum{i in I} x[i,j] = d[j];
Índices das variáveis
Dados
do
modelo
Variáveis
binárias
Modelo
solve;
/* RELATORIO */
printf '\n'
>> file;
printf '---\n'
>> file;
printf 'Solucao Encontrada \n'
>> file;
printf '---\n'
>> file;
printf ' \n'
>> file;
printf '---\n'
>> file;
printf " Consultor Tarefa Alocação(1-Sim/0-Não) \n"
>> file;
printf{i in I, j in J} " %8s %8d %10g\n", i, j, x[i,j] >> file;
printf '---\n'
>> file;
printf 'Custo total (z): ' >> file;
printf ' %10.2f \n', cost >> file;
printf '---\n'>> file;
printf '\n' >> file;
PARTE 2 - FORMULAÇÃO
Índice do consultor i
assinalada à tarefa j
GLPK Lab for Windows
data;
set I := C1 C2;
set J := 1 2 3 4;
param b := C1 1000 C2 1000;
param d := 1 1 2 1 3 1 4 1;
param c : 1 2 3 4 := C1 15 61 3 94 C2 21 28 76 48;
param a : 1 2 3 4 := C1 31 69 14 87 C2 23 20 71 86;
data;
set I := Maq1 Maq2 Maq3 Maq4;
set J := 1 2 3 4;
param a := Maq1 1 Maq2 1 Maq3 1 Maq4 1;
param b := 1 1 2 1 3 1 4 1;
param d : 1 2 3 4 := Maq1 14 5 8 7 Maq2 2 12 6 5 Maq3 7 8 3 9 Maq4 2 4 6 10;
end;
PARTE 3 - FORMULAÇÃO
Dados do
Modelo
GLPK Lab for Windows
TEMA 2:
Considere existem 3 agentes (m = 3) para realizar 8
tarefas (n = 8). Os custos (cij), os recursos necessários para
realizar a tarefa j pelo agente i (aij) e as capacidades i de cada um
dos agentes (bi) são dados pelas tabelas dadas a seguir.
cij
T1
T2
T3
T4
T5
T6
T7
T8
1
15
61
3
94
86
68
69
51
2
21
28
76
48
54
85
39
72
3
21
21
46
43
21
3
84
44
x
ij
TEMA 2:
Dados relativos à aij e bi.
aij
T1
T2
T3
T4
T5
T6
T7
T8
1
31
69
14
87
51
65
35
54
2
23
20
71
86
91
57
30
74
3
20
55
39
60
83
67
35
32
x
ij
bi
Cap.
1
100
2
100
3
100
Designação
Mochila
Caixeiro
Problema da Mochila
Utilidade
Volume
Fornecer uma nota para cada item
(subjetivo !)
Medir para cada item (objetivo,
mas dá muito trabalho !)
Para o trabalho:
Para o praia:
Criar lista:
Heurística Problema da Mochila
Utilidade(U)
Volume(V)
Razão U/V
Item
7
7
5
6
3
4
Utilidade(U)
Volume(V)
Razão U/V
Item
7
7
1.0
5
6
0.83
3
4
0.75
CAP. MAX = 10
CAP. USADA = 7
Heurística Problema da Mochila
Utilidade(U)
Volume(V)
Razão U/V
Item
7
7
1.0
5
6
0.83
3
4
0.75
MAS...
CAP. MAX = 10
Itens
Mochila
P1
P2
P3
P4
x
1
= 1
x
4
= 0
Variável de decisão:
Item i participa (1) ou
não (0) da Mochila
Itens
Mochila
P1
P2
P3
P4
x
1
= 1
x
4
= 0
Problema da Mochila
Máximo
de itens
na mochila
Max
S.a.:
MODELO COMPLETO GERAL
∑
=
≤
n
i
i
i
x
b
v
1
∑
=
n
i
i
i
x
u
1
Utilidade total
Capacidade
da mochila
n
i
x
i
=
1
ou
0
,
=
1
,
L
,
Max
S.a.:
MODELO COMPLETO GERAL
Ax
Matriz A com
elementos -1, 1 e 0 é
dita matriz unimodular,
mas com vi isto não
acontece mais com A !!
Problema da Mochila
∑
=
≤
n
i
i
i
x
b
v
1
∑
=
n
i
i
i
x
u
1
Utilidade total
n
i
# MODELO DO PROBLEMA DA MOCHILA #
# Este problema encontra a mochila com o maior utilidade, # respeitando a capacidade da mesma.
#
/* input data */
param n, integer, >= 1; # número de itens
param p, integer, >= 1; # capacidade da mochila
set E:={1..n}; # conjunto de itens
param u{E} >=0; # utilidade dos itens
param v{E} >=0; # volume dos itens
#Parametros para impressao dos resultados do modelo em arquivos.
param file, symbolic, default "ResumoMochila.txt"; /* Variável */
var x{E} binary; /* Função Objetivo */
maximize TotalUtility: sum{i in E} u[i]*x[i]; /* Capacidade da Mochila */
s.t. capacity: sum{i inE} v[i]*x[i] <= p;
solve;
PARTE 1 - FORMULAÇÃO
# MODELO DO PROBLEMA DA MOCHILA #
# Este problema encontra a mochila com o maior utilidade, # respeitando a capacidade da mesma.
#
/* input data */
param n, integer, >= 1; # número de itens
param p, integer, >= 1; # capacidade da mochila
set E:={1..n}; # conjunto de itens
param u{E} >=0; # utilidade dos itens
param v{E} >=0; # volume dos itens
#Parametros para impressao dos resultados do modelo em arquivos.
param file, symbolic, default "ResumoMochila.txt"; /* Variável */
var x{E} binary; /* Função Objetivo */
maximize TotalUtility: sum{i in E} u[i]*x[i]; /* Capacidade da Mochila */
s.t. capacity: sum{i inE} v[i]*x[i] <= p;
solve;
GLPK Lab for Windows
PARTE 1 - FORMULAÇÃO
Dados
do
modelo
/* RELATORIO */
printf '\n'
>> file;
printf '---\n'
>> file;
printf 'Solucao Encontrada \n'
>> file;
printf '---\n'
>> file;
printf ' \n'
>> file;
printf '---\n'
>> file;
printf " Item Alocação (1-Sim/0-Não) \n"
>> file;
printf{i in E} " %8s %8d \n", i, x[i] >> file;
printf '---\n'
>> file;
printf 'Utilidade total (z): ' >> file;
printf ' %10.2f \n', TotalUtility >> file;
printf '---\n' >> file;
printf '\n' >> file;
PARTE 2 - FORMULAÇÃO
Indica qual item foi alocado
ou não na mochila !
GLPK Lab for Windows
/* Data section */
data;
param n:=3;
param p:=10;
param u:=[1] 7 [2] 5 [3] 3;
param v:= 1 7 2 6 3 4;
end;
/* Data section */
data;
param n:=3;
param p:=10;
param u:=[1] 7 [2] 5 [3] 3;
param v:= 1 7 2 6 3 4;
end;
PARTE 3 - FORMULAÇÃO
Dados do
Modelo
GLPK Lab for Windows
TEMA 3:
Considere que existem 8 itens para armazenar em uma
mochila com uma capacidade de 100. Elaborar um programa para
resolver o problema com os dados abaixo.
1
2
3
4
5
6
7
8
u
41
33
14
25
32
32
9
19
v
47
40
17
27
34
23
5
44
x
i
Métodos de Solução
Força Bruta
Enumerar todas as possibilidades de solução e
escolher a melhor.
1
1
0
2 ...
1
I
Índice do Projeto
Alocação (1) ou não (0) no Portifólio
Um computador capaz de fazer 1 milhão de avaliações de
soluções por segundo levaria 36 anos !!!
Se I = 50, então, o número de soluções possíveis é de:
2
50
≅≅≅≅
1,1 x10
15
Métodos de Solução
A evolução da espécie está relacionada com a
seleção natural
dos indivíduos mais adaptados
ao seu meio
.
Algoritmos Genéticos
Avaliar o “fitness” do indivíduo através da função objetivo
Projeto
Alocação
1
1
0
2 ...
1
I
∑ ∑
∑
∏
∑ ∑
= = = = = =
+
=
J j K k L i i L i ij k j j I i i J j ijj
c
x
w
d
S
c
x
w
V
1 1 1 1 1 1