Apoio à Tomada de Decisão no Planeamento e

Transcrição

Apoio à Tomada de Decisão no Planeamento e
!
#$
%&&' #
"
!
(
)
$
(
*
-
+
.
+
)
#$
*
%&&' #
"
,
/
0
1
+
0
2
3
/
4
/
5
6
7
/
/
0
+
5
/
/
,
/ 7
+ /
/
)
4
! 3
0
!
3
8
0
)
+
9
3
0
1 9
+
3
3
/
0
9
0
3
7
4
)
7
0
9
-
4
3
1
9
2
4
4
0
,
1
0
9
9
0
1 9
/
,
3
:
1
9
,
/
0
7
1
6
3
2
"
0
;"
<
,
0
+
0
9
0
4
9
6
"
3
=
1
/
)
1
3
) 0
4
> =
4
4
?
9
0
6
4
4
> 4
4
=
0
//
4
> = > 4
0
+
?
/
40
9
?
=
/
//
=
6
4
?
/ 4
0
4
?
9
/
//
4
0
4
/
/
4
0
4 > 4
>
49
4
4
4
4
>
7
/
?0 (
0
/
4
0 @
4
9
6
=
/
0
3
?
4
>
40
?
/ 4
4 0
4
40
@
"
"?
0
; ""< 4
+ 4
>
4
4
/= /
9/
> /
6
?
4
/
/ 4
4
4
A
7
=
0
>
=
?
?
9
4
0
>
4
4
4
4
4
4
4
4
+
@
4
>
=
4
/ 4 /
=
?
0 4
4
""
/ 4
? / 4
0
4
0
/
-
3
+
-
)
+
+
/
/
$
-
B
!
, +
+
0 (
3
0C
"
/,3
/ 0
4 E0 8
F
+
3
D
/
2
+
8
/
;3
1
7
G
)
B
<+
4
3
+
/
+
G
F
+
3
9
2
0
+
0
+
# 4
/
D
E
0
:
G -
G -
7
0 *
+
9
H
A
3
1
4 +
4 0
G
+
+
+ 3
0
(
/
!
+
3
6
+
B
/
!
3
)
+
+
)
;
MM H%H%0NH
H%&IJHKL<+
6
H$
+
0.
$
H%&IJHKL
M "
3
" 0
$
3
08
0
(
6
+
4
(
0
3
( *
-
4!
0
0
4
O
/
7
7
7
N
N0N $
N0%
6
N0'
3
N0'0N
N0'0%
N0'0' $
N0I
N0L
,
%
N
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%
0000000000000000000000000000000000000000000000000000000000000000000000000000000I
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000J
4 ! 3
00000000000000000000000000000000000000000000000000J
4 ! 3
000000000000000000P
00000000000000000000000000000000N&
1
0000000000000000000000000000000000000000000000000000000000000000000000000000NI
7 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000NL
NK
7 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000NK
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000%%
000000000000000000000000000000000000000000000000000000000000000000000000%I
%0'0N
/
0000000000000000000000000000000000000000000000000000000000000%I
%0'0%
/
/
0000000000000000000000000000000000'&
%0I
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'I
%0N
%0%
%0'
'
4
'0N $
'0% A
'0'
3
'0I
'0L
! 3
3
4
'L
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'J
00000000000000000000000000000000000000000000'Q
:
4 ! 3
000000000000000000000000000I&
D
=
E
D
E00000000000000000000000000000000000000000II
! 3
0000000000000000000000000000000000000000000000000IJ
I
I0N
I0%
I0'
I0I
I0L
LN
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 L%
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 LI
I0%0N
/ 000000000000000000000000000000000000000000000000000000000000000000000000 LI
I0%0% $
,
00000000000000000000000000000000000000000000000000000000000 J&
I0%0'
0000000000000000000000000000000000000 JN
I0%0I /
000000000000000 JQ
$
,
82
1 00000000000000000000000000000000000000 QI
I0'0N
/ 000000000000000000000000000000000000000000000000000000000000000000000000 QJ
I0'0% A
$
,
82
1 QP
I0'0'
00000000000000000000000000000000000000000000000000000000000000000 P'
$
,
82
$
8
4 00000000 PQ
I0I0N (
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 PQ
I0I0%
/ 000000000000000000000000000000000000000000000000000000000000000000000000 KN
I0I0' A
0000000000000000000000000000000000000000000000000000000000000000000000 K%
I0I0I
0000000000000000000000000000000000000000000000000000000000000000000000000 KP
3
9 6
0000000000000000000000000000000000000000000000000 N&'
I0L0N
/
1 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 N&J
I0L0%
4
0000000000000000000000000000000000000000000000000000000000000000000000000 N&P
I0L0' $
9 6
00000000000000000000000000000000000000000000000000000000000000000000000000000 NNN
I0L0I
,
9 6
00000000000000000000000 NNI
I0L0L
00000000000000000000000000000000000000000000000000000000000000000000000 N%L
L
NIN
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 NI%
3
0000000000000000000 NII
L0%0N
/
1
0000000000000000000000000000000000000000000000000000000000000000000000000 NII
L0%0% A
3
00 NIQ
L0%0'
!
1 000000000000000000000000000000000000000000000000000000000000000000 NLI
L0'
000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 NLL
L0'0N
#
4
000 NLL
L0'0% $
00000000000000000000000000000000000000000000 NJL
0 (
1 000000000000000000000000000000000000000000000000000000000000000000000000000000000 NJL
0
7
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 NQN
0
$ 00000000000000000000000000000000000000000000000000 NQL
0 (
/
$00000000000000000000000000000000000000000000000000000000000000 NQL
L0'0'
00000000000000000000000000000000000000 NQJ
0
0000000000000000000000000000000000000000 NQQ
0
:
,000000000000000000000000000000000000000000000000000000000000 NK&
0
/
1
000000 NK%
0
/
00000000000000000000000000000000000000000000000000000000000000000 NK'
L0N
L0%
0
4
L0'0I 7
)
0
0
L0'0L
!
J
"
J0N
J0%
J0' (
J0'0N
J0'0%
J0'0'
J0I
!
J0L
Q
F
1
/
1
00000000000000000000000000000000000000000000000000%&&
0000000000000000000000000000000000000000000000000000000000000%&%
5
00000000000000000000000000000000000000000000000000000000000000%&%
00000000000000000000000000000000000000000000000000000000000000000%&'
00000000000000000000000000000000000000000000000000000000000000000000000%&K
%NN
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%NN
" R 000000000000000000000000000000000000000000000000000000%NI
"
000000000000000000000000000000000000000000000000000000000000000000000000000000%NQ
00000000000000000000000000000000000%NQ
0000000000000000000000000000000000000000000000000000000000000000000000000%%&
000000000000000000000000000000000000000000000000000000000000000000000%%'
4
0000000000000000000000000000000000000000000000000000000000000000000000%%I
/ 7 00000000000000000000000000000000000000000000000000000000000000000000000000000000000%%Q
%%K
%'L
/
N0NB
3
!
4 ! 3
00000Q
%0NB
000000000000000000000000000000000000000000000000000000000%N
%0%B
/ 4
00000000000000000000%'
%0'B
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000%'
%0IB
/
- 7
000000000000000000000000000000000000000000000000000000000000%I
%0LB
6
4
000000000000000000000000000000000000000000000000%L
%0JB
000000000000000000000000000000000000000000000000000000000000000000000%J
%0QB *
6
000000000000000000000000000%J
%0PB
000000000000000000000000000000000000000000000000000000000000000000000000000000000000%Q
%0KB
4
:
/
000000000000000000000000000000000000%Q
%0N&B 7
000000000000000000000000000000000000000000000000000000000000000000000%K
%0NNB
/
4 ,
0000000000000000000000000000000'N
%0N%B 7
0000000000000000000''
'0NB
;
ST
+ NKKNU< 'J
'0%B
1
4 ! 3
0000000000000000000000000000000000000000000000000000000000000I%
'0'B
)
4 ! 3
0000000000000000000000000000000000000IQ
I0NB
0000000000000000000000000000000000000000000000000000L'
I0%B
'9
V
0000000000000000000000000000000000000000000QQ
I0'B
1
2
1 000000000000PJ
I0IB
7
'9
0000PJ
I0LB
2
4 # NW
0000000000000K&
I0JB
2
4 # %W
0000000000000K&
I0QB
7
.V 00000000000000000000000000000000000000000000000000000000KN
I0PB $ 4
8$
/
000000000000000000000000000000N&&
I0KB
4
4
% 00000000000000000000000000000000000000000000000000000000000000000N&N
I0N&B
9 6
B
000000000000000000000000000000000000000NN%
I0NNB (
0000000000000000000000000000000000000000NNL
I0N%B
M000000000000000000000000000000000000000000000000000000000000000000NNP
I0N'B
0000000000000000000000000000000000000000000000000000000NNP
L0NB
1
$
:
000000000000000000000000000000000000000NQ'
L0%B
1
$
:
#
00000000000000NQI
J0NB
3 )
000000%NI
J0%B
/
=
0000000000000000000000000000000%NP
J0'B
!
1
4
000000000000000000%NK
J0IB
7
6
00000000000000000000000%NK
J0LB
7
J0JB "
J0QB
7
J0PB *
J0KB
J0N&B
000000000000000000000000000000000000000000000000000000000000 %%N
/
00000000000000000000000000000000000000000000000000000000000000000000000000000000 %%N
0000000000000000000000000000000000000000000000000000000000 %%%
:
00000000000000000000000000000000 %%'
7 ;
1 < 00000000000000000000000000000000000000000000000000000 %%L
3
"
#
R
!
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 %%J
%0NB
I0NB
I0%B
I0'B
I0IB
/
0000000000000000000000000000000000000000000000000000000000000000000000000000%%
'9
0000000000000000000000000000000000000PI
5
!/
/
I0'0000000000000000000000000000000000PJ
3
$$8 00KK
7
!
4
2
4
#
N 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N&Q
I0LB
7
!
4
2
4
#
% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N&P
I0JB "
!
$
$
000000000000000000000000000000000000000NNN
I0QB *
000000000000000000000000000000000000000000000000000000000000000000000000000000000NN'
I0PB .
$
$ 000000000000000000000000000000000000000000000000000000000NNI
I0KB
5
1 N %H
5
000000000000000000000000000N%Q
I0N&B
5
#
5
N 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N%K
I0NNB
5
#
5
% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N'&
I0N%B
5
1 .N$ .%$ H
5
000000000000000N'%
I0N'B
5
#
5
' 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N''
I0NIB
5
#
5
I 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N'I
I0NLB
5
# .N .%
N0000000000000000000000000N'L
I0NJB
6
5
L 00000000000000000000000000000000000000000000000000000000000000000000N'J
I0NQB
5
# .N$ .%$
L 000000000000000000N'Q
L0NB
/
# 7
0000000000000000000000000000000000000000NLN
L0%B X
,
/
# 7
0000000000000000000000000000000NL%
L0'B F 4
3
# 7
000000000000000000000000000000000000000000000000000000000000000NL%
L0IB "
1
3
# 7
00000000000000NL'
L0LB
5
000000000000000000000000000000000000000000000000000000000000000000%&I
L0JB
00000000000000000000000000000000000000000000000000%&J
L0QB
#
000000000%&Q
L0PB
#
7
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%&P
I0NB
I0%B /
I0'B
I0IB
I0LB A
I0JB A
I0QB A
I0PB A
I0KB
L0NB A
L0%B
L0'B
9
4
000000000000000000000000000000000000000000000000JI
0000000000JK
4
=9
000000000000000000000000000000000000QL
'9
00000000000000000000000000000000000000000000000000000000000000000000000000000000000P&
000000000000000000000000000000000000000000000000000000000000000000000000000000000000KI
, 4
:7
$$8000000000000000000000000000000000000000000KL
$$8 00000000000000000000000000000000000KJ
%9
$$800000000000000000000000000000000000000000000000000000000000000KP
"
% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000N%&
3
000000000000000NIK
A > ,9" 4
/
0000000000000000000000000000000000000000000000000000NPK
000000000000000000000000000000000000000000000000%&N
Capítulo 1
Introdução
O planeamento e escalonamento da produção para um sistema produtivo real, na
indústria papeleira, é uma tarefa extremamente complexa. Na presença de vários
objectivos, alguns dos quais conflituosos, e de um elevado número de restrições, é
necessário coordenar as interacções entre os diferentes níveis funcionais e
operacionais. O funcionamento do sistema depende da colocação de encomendas
para proceder ao planeamento e programação da produção, o que lhe confere muito
dinamismo e instabilidade. Para responder a elevados níveis da procura e por
motivos económicos é necessário explorar ao máximo a capacidade disponível, que
é limitada. À minimização de perdas de produção, inerentes ao processo de fabrico,
correspondem problemas muito complicados. Nestas condições, são necessários
mecanismos de planeamento adequados, eficientes e eficazes, mas também
suficientemente flexíveis para lidar com situações de instabilidade. O recurso a um
Sistema de Apoio à Decisão permite a elaboração dos planos e programas de
2
Capítulo 1
produção, e facilita a coordenação e cooperação das diferentes estruturas
envolvidas no processo.
Neste capítulo introdutório, apresentam-se os aspectos que motivaram a
elaboração desta dissertação e os objectivos que a orientaram. Enquadra-se o
trabalho na área do conhecimento de Investigação Operacional. Relatam-se as
contribuições e os resultados que se alcançaram, e descreve-se a organização do
texto.
1.1 Motivação
Em 1991, a empresa PORTUCEL - Empresa de Celulose e Papel de Portugal, EP,
estabeleceu com o ICAT (Instituto de Ciência Aplicada e Tecnologia) o projecto
Modelos de Planeamento/Sequenciamento da Produção, de cooperação entre a
universidade e a indústria. Este projecto visava a concepção e desenvolvimento de
um Sistema de Apoio à Decisão (SAD) para o planeamento da produção na fábrica
de Viana. A participação neste projecto originou a investigação dos problemas de
planeamento e escalonamento da produção com que se deparam os produtores na
indústria papeleira. Em [Respício, 1994] apresentam-se e discutem-se os
resultados alcançados. Posteriormente (1996/1997), no âmbito da colaboração
Universidade / Empresas, a Portucel Industrial - Empresa Produtora de Celulose,
SA, e o ICAT estabeleceram o projecto Adaptação e Extensão do Sistema de Apoio
ao Planeamento de Produção e Corte de Papel. O objectivo era expandir e adaptar,
para a fábrica de Cacia, o SAD já desenvolvido. Os resultados acabaram por ser
bastante amplos, não se resumindo a uma nova parametrização ou adição de
funcionalidades ao sistema já existente, e descrevem-se em [Captivo, Respício e
Rodrigues, 2000]. Apesar de se terem preservado algumas características do SAD
original, reformulou-se o modelo de tomada de decisão e, consequentemente, os
modelos associados a alguns dos subproblemas. Passaram ainda a tratar-se outros
subproblemas.
Ambas as fábricas produzem bobinas de papel kraftliner numa base de
produção por encomenda. Apesar de funcionarem segundo o mesmo processo
Introdução
3
produtivo, existem diferenças relativamente à coordenação entre as estruturas
funcionais intervenientes na tomada de decisão, à classificação dos artigos
produzidos e às características técnicas da produção.
O caso de estudo que suporta esta dissertação resulta da colaboração com a
fábrica de Cacia. O sistema produtivo, o modelo hierárquico, o SAD e os exemplos
que se apresentam derivam dessa experiência, salvo indicação em contrário.
A Portucel tem passado por várias reestruturações nos últimos anos. As suas
unidades têm um elevado posicionamento no mercado de pasta e papel, que é
especialmente competitivo e agressivo.
Hendry [Hendry, 1998] discute exaustivamente a questão da competitividade
em empresas no sector da produção por encomenda e sugere alterações de grande
impacto, nomeadamente:
•
Melhorar a exploração da capacidade;
•
Melhorar o fluxo da informação;
•
Melhorar a qualidade do planeamento;
•
Reduzir as perdas materiais e temporais1;
•
Utilizar previsão para antecipar a procura e melhorar os planos.
Neste contexto, a principal tese desta dissertação é a seguinte:
O apoio à tomada de decisão, na resolução do problema global de
planeamento e programação da produção, pode promover alterações de
grande impacto para o aumento da competitividade.
O processo produtivo do caso de estudo inclui um processo de corte unidimensional
cujo desempenho é uma componente fundamental no desempenho geral do sistema
produtivo. Este facto motivou o estudo dos problemas relacionados com o problema
de corte unidimensional. Apesar do elevado número de trabalhos na literatura da
área de corte e empacotamento (cf. capítulo 4) e do crescente interesse nesta área
1
Melhorar o value for money.
4
Capítulo 1
[Wang e Wäscher, 2002], existe uma lacuna na intersecção desta área com a área
de planeamento da produção. Uma excepção são os trabalhos [Hendry, Fok e Shek,
1996] e [Nonas e Thorstenson, 2000], que abordam aplicações específicas. Os
sistemas produtivos reais têm uma capacidade de produção limitada e, como tal, o
problema de corte deve ser encarado como uma componente dum problema mais
amplo: o problema de planeamento e escalonamento da capacidade. Este aspecto
conduz à formulação de uma outra tese mais concreta:
Num sistema produtivo que inclui um processo de corte unidimensional,
a integração do problema de corte com o problema de planeamento e
escalonamento da capacidade permite melhorar a exploração da
capacidade de produção.
1.2 Objectivos da investigação
O principal objectivo desta dissertação é a resolução do problema global de
planeamento e programação da produção no sistema produtivo do caso de estudo.
A dificuldade do problema global e a organização funcional e temporal da tomada
de
decisão
motivaram
uma
abordagem
hierárquica.
Identificaram-se
os
subproblemas a tratar, nomeadamente:
•
Problema de aceitação de encomendas;
•
Problema de planeamento e escalonamento da capacidade;
•
Problema de programação do corte;
•
Problema de previsão da procura1.
Paralelamente, percebeu-se a responsabilidade e interacção das estruturas
funcionais envolvidas no processo de tomada de decisão. Destas componentes
emergiu o modelo de decisão hierárquico (cf. capítulo 3), que expressa as
interacções entre os subproblemas e os agentes de decisão, e a hierarquia
necessária à sua coordenação. A concepção deste modelo permite estabelecer uma
1
Os modelos de previsão não se descrevem nesta dissertação, podendo ser consultados em [Captivo,
Respício e Rodrigues, 2000].
Introdução
5
correspondência entre o problema de aceitação de encomendas e o problema de
planeamento e escalonamento da produção.
Assim, tem-se como objectivos genéricos:
•
o estudo dos problemas associados ao planeamento e programação da
produção em ambiente que recorre ao corte unidimensional e
•
o desenvolvimento de ferramentas adequadas ao seu tratamento.
O trabalho percorre todo o corpo de problemas que se relacionam com o
Problema de Corte (PC) unidimensional (Cutting Stock Problem). Aborda-se um
caso particular do PC clássico – condiderando restrições particulares. Abordam-se
alguns dos seus subproblemas (a jusante) e uma extensão (a montante). Os
subproblemas incluem o problema de minimização dos movimentos das navalhas
num plano de corte e os problemas de sequenciamento de padrões de corte de
acordo com diferentes critérios. Integra-se o problema de corte com o problema de
planeamento da capacidade. Esta extensão constitui uma contribuição inovadora
para o corpo da literatura desta área. A formalização e a resolução exacta deste
novo problema constituem um desafio, cuja abordagem se relata nesta dissertação.
Tratou-se ainda o problema de escalonamento da capacidade.
Dado o problema do caso de estudo (cf. capítulo 2), outro objectivo, mais
concreto, foi o desenvolvimento de um sistema informático capaz de apoiar a
tomada de decisão nos vários níveis do planeamento e programação da produção
(cf. capítulo 6).
Por último, construíram-se modelos matemáticos para os subproblemas a
tratar e desenvolveram-se algoritmos adequados à sua resolução. A implementação
de alguns destes algoritmos, em ambiente de apoio à decisão, deu origem a
ferramentas informáticas de carácter modular, que se integraram no Sistema de
Apoio à Decisão.
6
Capítulo 1
1.3 Enquadramento
1.3.1 Planeamento hierárquico da produção
Os problemas de planeamento e escalonamento da produção em ambientes
industriais são na generalidade muito complicados. A necessidade de tomar
decisões com diferentes características — temporais, materiais e funcionais — na
presença de numerosos objectivos conflituosos, assim como as características
dinâmicas dos sistemas produtivos, conferem grande complexidade ao problema
global. O Planeamento Hierárquico da Produção (PHP) é uma abordagem clássica
que consiste em dividir o problema global em subproblemas que se interrelacionam. Referências fundamentais são os trabalhos de [Hax e Meal, 1975] e
[Bitran e Tirupati, 1993]. A passagem de uma situação multi-objectivo para vários
níveis de decisão e a estratificação da informação em diferentes níveis de
agregação (restrição do espaço de soluções) tornam possível o tratamento
computacional do problema global. Os níveis de tomada de decisão são
estabelecidos tendo em vista a coordenação das áreas funcionais da organização e
por forma a garantir a coerência das interdependências resultantes. A definição do
nível de agregação e da duração do horizonte de planeamento são aspectos
determinantes da adequação do modelo a desenvolver para cada um dos níveis de
tomada de decisão. Por outro lado, a tomada de decisão ao nível operacional é
adiada, tanto quanto possível, relativamente à sua implementação, reduzindo-se
assim o nível de incerteza. Miller [Miller, 2001] descreve vários casos de estudo em
que se utilizou uma abordagem hierárquica para o planeamento da produção.
As decisões relativas ao planeamento e escalonamento da produção organizamse em três níveis de decisão, definidos em termos de horizonte temporal, conforme
se ilustra na figura 1.1. Esta classificação é consensual e tem sido adoptada pela
maioria dos autores.
Introdução
7
Direcções de investimento e
posicionamento no mercado
• Localização
• Fábricas
• Capacidade
• Recursos
Nível estratégico
restrições
Planeamento agregado
• Afectação das vendas
• Afectação dos recursos à
produção de categorias
de produtos
Planeamento e escalonamento detalhado
• Programa de produção dos
itens (quantidades e
calendário)
Decisões
Muito agregada
com origem externa
mais
resposta
Nível táctico
restrições
2 anos ou
3 a 24
Agregada
com origem externa e interna
meses
resposta
Nível operacional
Nível de planeamento
alguns dias
a meses
Horizonte
Muito desagregada
com origem interna
Tipo de informação
Figura 1.1: Enquadramento clássico para o planeamento hierárquico de produção
Esta classificação das decisões não é necessariamente rígida, pois algumas
decisões têm um carácter intermédio e podem ser tomadas mais ou menos tarde na
hierarquia. Quanto mais elevado é o nível de tomada de uma decisão, maior é o
impacto da sua implementação no funcionamento da empresa. Numa abordagem
top-down, as decisões são tomadas sequencialmente ao longo da hierarquia. As
decisões tomadas nos níveis superiores limitam os conjuntos de possíveis
alternativas para as decisões a tomar nos níveis seguintes. Por outro lado, cada
nível reage às restrições impostas pelo nível que lhe antecede na hierarquia. Neste
tipo de hierarquia, não há garantia de que um plano definido no nível táctico
constitua um objectivo alcançável ao nível operacional. Uma decisão pouco realista,
tomada ao nível táctico, pode restringir as possíveis decisões ao nível operacional
de tal modo que, por mais sofisticado que seja o algoritmo de escalonamento, não
se conseguem eliminar os conflitos gerados. A admissibilidade de um plano
agregado pode coexistir com a inadmissibilidade de um plano detalhado, quando
algumas restrições de capacidade são violadas, [Axsäter, 1981]. Isto significa que
8
Capítulo 1
as restrições de capacidade podem eliminar a possibilidade de se atingir uma
agregação perfeita.
As decisões tomadas ao nível do plano agregado envolvem pessoas de diferentes
áreas (marketing, finanças, compras e produção). A utilização de técnicas de gestão
que mantenham todos os intervenientes com conhecimento do plano agregado e de
acordo em cumpri-lo, tanto quanto possível, são provavelmente tão importantes
como os modelos utilizados para estabelecer os planos, [Thomas e McClain, 1993].
Como refere Schneeweiss, no processo de gestão entre o planeamento e a
implementação existe uma hierarquia, ou seja, tem-se um processo normativo de
planeamento, numa situação em que é necessário incorporar conhecimento
empírico [Schneeweiss, 1999]. A relação entre os diferentes níveis organizacionais
de gestão não se resume a fazer corresponder o nível base à “operacionalização” dos
níveis mais elevados. Existe uma relação mais subtil, que se pode traduzir em
termos de instruções e antecipações, como se descreve no capítulo 3.
1.3.2 Apoio à decisão em planeamento hierárquico da produção
Métodos e técnicas de Investigação Operacional permitem obter soluções para os
subproblemas encontrados. A sua integração num ambiente interactivo, e de fácil
utilização, faculta a manipulação das soluções e a avaliação de cenários
alternativos. O responsável pelo planeamento fica disponível para se concentrar na
geração e análise de alternativas, explorando ao máximo a sua expertise na
resolução dos problemas. A gestão das inter-relações entre os vários subproblemas
tem um papel fundamental e apesar destas emergirem da formalização do sistema
real, a intervenção humana do agente de decisão influencia dinamicamente as suas
consequências.
Um SAD para o PHP inclui uma base de modelos que faculta a tomada de
decisão nos diferentes níveis. O Agente de Decisão (AD) pode concentrar-se num
determinado subproblema, mantendo uma perspectiva global e podendo interagir
com os modelos correspondentes aos subproblemas nos outros níveis. Uma das
principais características dum SAD é a flexibilidade. O sistema tem de ser
Introdução
9
suficientemente flexível para se poder adaptar às mudanças que o AD vai
requerendo no seu processo de percepção e avaliação de uma determinada
situação. A resolução de modelos matemáticos para gerar alternativas deve de ser
integrada com a extracção e a ordenação de informação, de uma forma fácil, mas
que represente o processo cognitivo do AD. Os resultados devem ser apresentados
num formato familiar para o utilizador e o sistema deve ser flexível no modo como
aceita a introdução das preferências do utilizador (nem sempre as correctas), assim
como nos mecanismos de interacção na geração de alternativas.
Num sistema em que intervêm vários agentes, com objectivos individuais
conflituosos, um SAD cuja utilização é partilhada pelos vários AD’s pode funcionar
como um mediador na tomada de decisão. O SAD permite análises o-que-se e a
geração de alternativas que optimizam um dado objectivo. Num processo de
negociação/cooperação, o AD pode tirar partido destas funções para antecipar a
reacção de outro participante simulando e avaliando a sua tomada de decisão.
O apoio à decisão usando modelos matemáticos, complexos e de difícil
percepção pelo AD, são integrados de forma a estabelecer uma correspondência
com a cognição do AD. Os métodos utilizados ajudam o AD e o sistema a reduzir a
complexidade computacional dos problemas. As necessidades e o contexto que se
estabelecem ao nível cognitivo determinam a selecção de métodos apropriados, a
sua organização para representar diferentes aspectos do problema e dos agentes de
decisão, assim como a organização do processamento [Kersten e Cray, 1996]. Estes
métodos suportam a computação necessária à construção de descrições e
determinam a sua implicação para a percepção e a racionalidade na tomada de
decisão. Em conjunto com outros métodos, como a extracção e o tratamento de
informação das bases de dados e a construção de interfaces, constituem o nível
instrumental da tomada de decisão (SAD). A subordinação do nível instrumental
ao nível cognitivo resulta da realização da comunicação entre o analista e os AD’s
envolvidos no processo. O projecto de um SAD que suporte vários AD’s e servindo
de mediador entre AD’s com objectivos conflituosos, é uma tarefa bastante
10
Capítulo 1
complicada. Os utilizadores requerem que o sistema corresponda às suas
representações para os problemas (mesmo quando estas são incorrectas), mas o
sistema deve fornecer racionalidade. O sistema não tem necessidades nem
capacidades cognitivas. Mas as necessidades e as capacidades cognitivas do AD
têm grande importância no processo de tomada de decisão e, como tal, deve
proporcionar-se alguma forma para o AD as expressar na interacção com o
sistema. De outro modo, o sistema torna-se inadequado pois não corresponde à
representação que o AD cria acerca do problema e do seu contexto.
1.3.3 Modelos e métodos de Investigação Operacional
A essência da Investigação Operacional é a descrição de problemas de decisão
através da formulação de modelos matemáticos e a posterior determinação de
decisões óptimas, por análise ou resolução explícita dos modelos. A complexidade e
as incertezas associadas ao problema de decisão enquadram-se de forma a permitir
uma manipulação analítica e a obtenção de uma solução. O modelo deve incluir as
variáveis de decisão essenciais ao processo de decisão, mas com um nível de
detalhe que permita uma abordagem analítica. Como o modelo é uma
representação da realidade, a sua solução pode não ser óptima para o problema de
decisão. Assim, as soluções dos modelos são elementos que apoiam a tomada de
decisão e os modelos devem ser concebidos de forma a facilitarem análises o-que-se.
O planeamento, o escalonamento e a programação da produção têm tido
bastante relevância no corpo de conhecimento da Investigação Operacional.
Actualmente, é uma área autónoma, com ligações muito fortes com outras áreas,
nomeadamente, a programação matemática, a optimização combinatória, a teoria
dos grafos, as meta-heurísticas e a teoria da complexidade. Os problemas nesta
área são, regra geral, muito complexos enquadrando-se muitos deles na categoria
NP-difícil (sobre questões de complexidade consultar [Garey e Johnson, 1979]). Por
outro lado, encontram-se inúmeras aplicações práticas. Apesar do grande número
de contribuições teóricas, do desenvolvimento tecnológico e do crescimento da
capacidade de processamento computacional, ainda não é possível resolver
Introdução
11
algumas instâncias reais de forma exacta e/ou em tempo real. Recorre-se então a
métodos ou técnicas heurísticas, que permitem obter soluções satisfatórias,
eventualmente óptimas. Muitas vezes, na prática, os problemas são resolvidos, com
grande regularidade e repetidamente, para conjuntos de dados diferentes. Assim,
os melhoramentos nos algoritmos de resolução, em termos de desempenho e de
qualidade das soluções obtidas, têm bastante impacto no desempenho global do
sistema produtivo.
Dada a natureza combinatória dos problemas de planeamento e escalonamento
da produção, os modelos de Programação Linear Inteira (PLI) e de Programação
Linear Inteira Mista (PLIM) são de grande aplicação nesta área. Nos últimos anos,
tem-se assistido a grandes desenvolvimentos na utilização da PLI, devido
essencialmente à concepção de novos algoritmos de resolução exacta (teoria dos
planos de corte e teoria das desigualdades válidas, algoritmos de decomposição), ao
aumento do poder computacional e ao desenvolvimento de programas mais
eficientes para a resolução de modelos lineares [Wolsey, 1998].
Na literatura encontram-se numerosos casos de aplicação de modelos de PLI e
PLIM ao problema de determinação de lotes1. Este problema consiste em
determinar as quantidades, de um mesmo produto ou de diferentes tipos de
produto, a produzir ao longo dum horizonte temporal. Regra geral, este problema
integra-se com o problema de escalonamento. A combinação de diferentes
parâmetros dá origem a diferentes tipos de problema. De entre estes parâmetros
salientam-se: o tipo de horizonte de planeamento (discreto/contínuo, finito/infinito);
a capacidade de produção (limitada/não limitada); a variação da procura (contínua
ou não, determinista/estocástica, estacionária/dinâmica); a presença de set-ups e/ou
start-up’s2 (tempos e/ou custos, dependentes/independentes da sequência); a
1
Este problema é designado, na literatura anglo-saxónica, por lot-sizing problem ou, alternativamente, por batching problem.
2
Por set-up entende-se a preparação do recurso produtivo necessária para proceder à produção
consecutiva de dois produtos, ou tipos de produto, diferentes. Por start-up entende-se a preparação
do recurso produtivo necessária para dar início à produção dum determinado produto ou tipo de
produto.
12
Capítulo 1
estrutura do produto (um/vários níveis, um/vários produtos); a política de produção
(com/sem atrasos, com/sem custos de atraso). Em [Kuik, Salomon e van
Wassenhove, 1994] apresenta-se uma taxonomia para estes problemas e
enquadram-se as respectivas abordagens de resolução presentes na literatura. O
trabalho de [Drexl e Kimms, 1997] sumaria as principais contribuições que se
encontram na literatura da especialidade.
O problema de corte, que se descreve no capítulo 4, é formulado em PLI.
Resolve-se a relaxação linear do respectivo modelo utilizando a técnica de geração
implícita de colunas ([Gilmore e Gomory, 1963]) e o método revisto do simplex com
variáveis limitadas. Geram-se novas colunas, resolvendo um problema saco
mochila inteiro com restrições adicionais, que também se formulou em PLI. Neste
caso, recorre-se a um algoritmo de programação dinâmica para resolver o
problema. Também se utiliza um modelo de PLI para formular matematicamente o
problema de planeamento da capacidade, ou problema de determinação de
quantidades com capacidade limitada (cf. capítulo 5). Para a sua resolução utilizase um algoritmo de partição e geração de colunas1, um método que consiste em
combinar o método de pesquisa em árvore com ramificação e limitação2 com a
técnica de geração implícita de colunas. O algoritmo desenvolvido inclui ainda a
geração e a introdução de planos de corte na raiz da árvore de pesquisa, de forma a
alcançar melhores resultados. O subproblema associado à geração de novas
colunas atractivas é um problema saco mochila múltiplo com variáveis binárias e
restrições adicionais. Para a sua resolução, concebeu-se um algoritmo de pesquisa
em árvore com ramificação e limitação especialmente adaptado às características
do problema.
O problema de sequenciamento de padrões de corte, considerando como critério
a minimização do número de movimentos das navalhas, que se descreve no
capítulo 4, relaciona-se com o problema do caixeiro viajante generalizado
1
Conhecido por branch-and-price na literatura anglo-saxónica.
2
Usualmente conhecido por branch-and-bound.
Introdução
13
assimétrico. Para a resolução deste problema, propõe-se um algoritmo heurístico,
baseado em regras de sequenciamento, e a extensão e adaptação de algumas
heurísticas aplicáveis ao problema do caixeiro viajante.
Os algoritmos que se baseiam em analogias com os processos da natureza
designam-se, genericamente, por meta-heurísticas. Nesta classe de algoritmos,
encontram-se, entre outros, a programação evolutiva, os algoritmos genéticos, o
simulated annealing, a pesquisa tabu e as redes neuronais. Apesar do interesse
por este tipo de algoritmos ter surgido há mais de cinco décadas [McCulloch e
Pitts, 1943]1, só recentemente se tornaram de aplicação prática, com o aumento da
capacidade de processamento computacional e, em especial, com o processamento
paralelo. Embora com objectivos diferentes, a aplicação destas técnicas é
partilhada pelas áreas de Investigação Operacional e de Inteligência Artificial. Por
exemplo, a tecnologia de redes neuronais é utilizada para resolver problemas de
previsão (Investigação Operacional), reconhecimento de padrões, modelação e
sistemas de classificação (Inteligência Artificial). A programação evolutiva baseiase no princípio de evolução das espécies. Os trabalhos de Holland da década de 70,
na concepção de algoritmos genéticos, são uma referência fundamental [Holland,
1995]. Os programas evolutivos adequam-se à resolução de problemas de
optimização “difíceis”, onde se enquadram, entre outros, muitos problemas de
sequenciamento/escalonamento
e
o
problema
do
caixeiro
viajante.
Em
[Michalewicz, 1994] apresenta-se uma descrição exaustiva das técnicas de
programação evolutiva e de múltiplos exemplos de aplicação.
Desenvolveu-se uma abordagem evolutiva para resolver um problema de
sequenciamento de padrões bi-objectivo (cf. capítulo 4). O problema considera em
simultâneo a minimização do espalhamento médio das encomendas e o problema
de minimização do número máximo de pilhas abertas2. Adaptou-se um algoritmo
1
Em 1943, McCulloch e Pitts sugeriam uma estrutura que, imitando um neurónio humano, era
capaz de representar qualquer expressão lógica finita.
2
Estes problemas são conhecidos na literatura anglo-saxónica, por minimisation of order spread
problem e minimisation of open stacks problem, respectivamente.
14
Capítulo 1
evolutivo multi-objectivo. Experimentou-se uma versão puramente evolutiva e
outra híbrida.
No capítulo 5 apresenta-se o problema de planeamento e escalonamento da
capacidade. Este problema consiste em determinar quantidades a produzir ao
longo dum horizonte discreto e a respectiva sequência de produção, considerando
tempos de mudança dependentes da sequência e permitindo atrasos na entrega. O
algoritmo de resolução é uma heurística com estrutura hierárquica. Numa
primeira fase integra as decisões relativas ao corte para determinação de
quantidades a produzir ao longo de um horizonte discreto. Numa segunda fase
resolve-se um problema de definição de quantidades e escalonamento num
horizonte temporal contínuo.
1.4 Contribuições e resultados
Esta dissertação apresenta várias contribuições teóricas e resultados práticos.
Como principais contribuições destacam-se as que se seguem.
•
A construção de um modelo de decisão hierárquico, que representa o
processo de tomada de decisão para o planeamento e escalonamento da
produção na organização.
•
O desenvolvimento de uma nova heurística para o problema de minimização
do número de padrões numa solução de corte (regra 3-optimal que permite a
combinação de três padrões de corte em dois). Testes computacionais
demonstraram a superioridade desta regra em relação às descritas na
literatura [Respício, Captivo e Paixão, 1996].
•
A concepção de um novo algoritmo para o problema de minimização do
número de movimentos das navalhas num programa de corte – problema
que se enquadra no âmbito do sequenciamento de padrões de corte.
•
A concepção de um novo algoritmo heurístico para o problema de
planeamento e escalonamento da capacidade integrando decisões relativas
ao corte.
Introdução
•
15
A identificação de um novo problema integrando o problema de planeamento
da capacidade com o problema de corte, e a respectiva formulação
matemática em PLI. Propõe-se um algoritmo exacto para resolver este
problema. O estudo computacional do desempenho deste algoritmo permitiu
concluir relativamente à sua adequação a instâncias reais.
•
A proposta dum problema de sequenciamento de padrões bi-objectivo e a
concepção de algoritmos evolutivos para o resolver. A experiência
computacional mostra a sua superioridade, face a uma heurística quasioptimal para um dos objectivos considerados [Yuen, 1995].
O principal resultado prático deste trabalho consiste na construção do SAD
(capítulo 6). O sistema integra, para além de outros, o módulo que corresponde à
implementação da heurística para o problema de planeamento e escalonamento da
capacidade, e a subsequente geração do plano agregado. Adicionalmente, fora do
âmbito da cooperação com a empresa, desenvolveram-se outros componentes
programados, nomeadamente:
•
Um módulo que implementa o algoritmo para a resolução do problema de
planeamento da capacidade integrado com o problema de corte.
•
Um módulo que implementa a regra 3-optimal desenvolvida para o problema
de minimização do número de padrões numa solução de corte.
•
Um módulo que implementa a heurística de sequenciamento de padrões de
corte, minimizando o número de movimentos das navalhas.
•
Um módulo que implementa as versões do algoritmo evolutivo para
resolução do problema de sequenciamento de padrões bi-objectivo.
1.5 Organização do texto
Este capítulo introdutório apresentou a motivação que esteve na origem deste
trabalho e o contexto em que ele se enquadra. Descreveram-se os objectivos, as
contribuições teóricas e os resultados práticos decorrentes desta dissertação.
O capítulo seguinte introduz o caso de estudo em que se baseou a investigação.
Apresenta-se o contexto específico do problema, descreve-se o processo de fabrico,
16
Capítulo 1
identificam-se os subproblemas de tomada de decisão e as responsabilidades das
diferentes estruturas funcionais envolvidas.
No capítulo 3 apresenta-se o desenho do modelo de decisão hierárquico.
Começa-se por dar uma perspectiva geral sobre o desenho de modelos de decisão.
Em particular, dá-se ênfase à criação de hierarquias em modelos de tomada de
decisão distribuída. Descreve-se um quadro teórico para os modelos de decisão
hierárquicos, introduzindo-se a terminologia respectiva. Em seguida, discutem-se
alguns aspectos de coordenação entre o “marketing” e a “produção”. Finalmente,
desenha-se o modelo que representa as diferentes fases de tomada de decisão e as
interacções entre as entidades envolvidas. Realçam-se as inter-relações entre os
modelos adoptados e as interacções dos agentes de decisão.
O problema de corte e os problemas de sequenciamento de padrões de corte são
abordados no capítulo 4. Faz-se uma revisão da literatura relacionada e discutemse alguns dos modelos propostos. Apresenta-se a formulação matemática adoptada
para o problema de corte do caso de estudo, com restrições particulares, e descrevese o método de resolução. Propõe-se uma heurística para o problema de
minimização do número de padrões numa solução de corte. Os testes
computacionais permitem avaliar e comparar o respectivo desempenho. Apresentase um algoritmo para o problema de minimização do número de movimentos das
navalhas num programa de corte e discute-se o desempenho do mesmo. Propõe-se o
problema de sequenciamento bi-objectivo considerando a minimização do
espalhamento médio das encomendas e a minimização do número máximo de
pilhas abertas. Sugere-se uma abordagem de resolução evolutiva e discute-se a
experiência computacional.
No capítulo 5, aborda-se o problema de planeamento e escalonamento da
capacidade. O problema é enquadrado na área dos problemas de definição de
quantidades
e escalonamento numa máquina, com tempos de mudança
dependentes da sequência. Propõe-se um algoritmo hierárquico, actuando em dois
níveis, que integra decisões relativas ao corte no problema de planeamento e
Introdução
17
escalonamento da capacidade. Apresenta-se um exemplo de aplicação desta nova
heurística. Evidenciam-se as vantagens do algoritmo e sugerem-se melhoramentos.
Neste capítulo propõe-se ainda uma formulação matemática para a integração do
problema de planeamento da capacidade com o problema de corte. Este novo
modelo resulta de estender o problema de corte clássico em duas direcções. Passase duma situação de período único para um horizonte temporal discreto, ao longo
do qual se tomam as decisões de como e quando cada item é cortado. Por outro
lado, considera-se uma situação multiproduto, em oposição à situação de produto
único. Assim, integram-se vários problemas de corte disjuntos que se relacionam,
em cada período do horizonte, por restrições de capacidade. Descreve-se um
algoritmo de partição e geração de colunas para a resolução do problema,
discutindo-se os aspectos comuns com outros algoritmos do mesmo tipo e os
detalhes particulares e inovadores. Expõem-se os resultados computacionais e
conclui-se relativamente à adequação do algoritmo a instâncias reais.
O capítulo 6 começa com a exposição de alguns aspectos relevantes na área dos
Sistemas de Apoio à Decisão. Em seguida, apresenta-se o SAD desenvolvido.
Mostra-se o seu contexto e procede-se a uma descrição sucinta das funcionalidades
disponibilizadas, enfatizando as componentes da respectiva base de modelos.
Ilustra-se a interacção entre o SAD e o responsável pelo planeamento, através de
exemplos reais. Conclui-se com uma apreciação dos resultados globais decorrentes
da utilização do SAD e criticam-se alguns aspectos.
Finalmente, no capítulo 7 resume-se o conteúdo da dissertação, evidenciam-se
as contribuições e resultados, tecem-se considerações críticas e perspectivam-se as
orientações do trabalho futuro.
18
Capítulo 1
Capítulo 2
Caso de estudo
Neste capítulo, apresenta-se o caso de estudo em que se baseou a investigação
desenvolvida. Começa-se por introduzir um contexto em que se salientam questões
relativas à importância do planeamento da produção para a competitividade da
empresa e apresenta-se a estrutura do produto. Em seguida, descreve-se o processo
produtivo. Expõe-se o problema global identificando os subproblemas que se
associam ao processo produtivo e as responsabilidades funcionais dentro da
empresa, e relacionando os subproblemas numa hierarquia temporal.
2.1 Contexto
A competitividade é fundamental para o sucesso de qualquer empresa. No caso das
empresas que produzem por encomenda, há uma especificidade dos artigos
produzidos que se encara muitas vezes como um factor de fidelidade dos clientes.
Em [Amaro, Hendry e Kingsman, 1999] esta noção é clarificada. Estes autores
apresentam um estudo sobre as estratégias de competitividade no sector da
20
Capítulo 2
produção por encomenda e concluem que um maior nível de especificidade dos
artigos é um factor de vantagem competitiva. No entanto, para empresas que
produzem com o mesmo grau de especificidade, os factores competitivos são o
preço, a qualidade e o cumprimento das datas de entrega, tal como se verifica para
os outros sectores.
De entre estes factores, o cumprimento das datas de entrega é o principal
critério do trabalho que se desenvolveu, tendo-se excluído questões relativas à
qualidade e à definição de preços. Para um sistema produtivo em que a capacidade
é limitada, o cumprimento das datas de entrega depende crucialmente de:
•
um processo de aceitação de encomendas fiável e coerente, e
•
um esquema de planeamento e programação da produção que explore ao
máximo a capacidade disponível.
Relativamente à liderança no sector de produção por encomenda, Hendry
([Hendry, 1998]) refere os aspectos principais a trabalhar para melhorar o
desempenho. Destacam-se aqueles que se consideraram neste trabalho e, para
cada um deles, identifica-se (a itálico) a forma como se introduziu:
•
Dar poder à força de trabalho: motivar o envolvimento dos funcionários
na resolução dos problemas; motivar a cooperação inter e intra equipas
— utilização partilhada do mesmo SAD.
•
Simplificar a produção: redução do volume de trabalhos em curso,
redução dos tempos entre operações, redução dos tempos de pesquisa de
produtos e promoção do trabalho em equipa — resolução do problema de
planeamento e escalonamento da capacidade e dos problemas de
sequenciamento de padrões de corte.
•
Explorar a capacidade: aumento da capacidade utilizada; redução de
tempos de mudança; utilizar a experiência passada para proceder a
previsões da procura a curto prazo — resolução do problema de
planeamento e escalonamento da capacidade e disponibilização de uma
ferramenta para previsão.
Caso de estudo
•
21
Melhorar a qualidade e o value for money: redução de perdas materiais e
temporais; responsabilização dos trabalhadores pela qualidade; redução
do trabalho em curso — resolução do problema de corte e dos problemas
de sequenciamento de padrões de corte, e utilização partilhada do SAD.
•
Implementar sistemas de controlo e planeamento apropriados e
actualizados: esquemas de planeamento e controlo perceptíveis pela
equipa; eficácia essencial no planeamento a médio e curto-prazos —
coordenação entre as diferentes estruturas por utilização partilhada do
SAD.
No mercado do papel, os preços oscilam, em função do “estado do mercado”
(assumindo uma conjuntura económica mundial estável), e seguem um ciclo autoregulado, que se ilustra na figura 2.1.
Diminui o preço
Aumenta
a procura
Aumenta o preço
Aumenta a
capacidade disponível
Diminui
a procura
Figura 2.1: O ciclo do preço no mercado do papel
Neste ciclo participam a globalidade dos clientes e dos produtores. É interessante
notar que acabam por ser os clientes que, involuntariamente, gerem a duração das
fases deste ciclo, pois ela depende da capacidade de armazenamento dos clientes e
do seu ciclo de reposição de stocks.
Neste caso de estudo, pressupõe-se a estabilidade do mercado e a situação mais
comum em que a empresa lida com falta de capacidade para satisfazer a procura.
Os clientes tentam colocar as encomendas o mais tarde possível, para não
suportarem os custos de armazenagem. Por este motivo, e porque há muitos
clientes que fazem uma gestão de stocks deficiente, ocorrem muitas encomendas
com carácter urgente.
22
Capítulo 2
Caracterização do produto
Os clientes encomendam quantidades (em toneladas) de bobinas especificando os
valores para os diferentes atributos apresentados na tabela 2.1.
Atributo
Unidade
tipo do papel
código
2 ou mais
2
gramagem do papel
g/m
9 ou mais
diâmetro das bobinas
cm
5 ou mais
largura das bobinas
cm
cerca de 800
Tabela 2.1: Atributos dos itens finais
O número de diferentes itens ou tipos de artigo (bobinas) que podem ser
produzidos ( 2 × 9 × 5 × 800 ≈ 72000 ) é muito grande, o que justifica uma política
de produzir basicamente por encomenda. Considera-se uma agregação dos itens
finais em famílias, segundo o conceito de [Hax e Meal, 1975]. Uma família é um
conjunto de itens que partilham um set-up comum e que consomem a mesma
quantidade de recursos por unidade produzida. Cada combinação dos atributos
relativos às características do papel (tipo/gramagem) define uma família. A
desagregação de uma família em itens finais é obtida considerando os atributos
relativos às características das bobinas (diâmetro/largura).
As quantidades que se encomendam correspondem, regra geral, a um número
não inteiro de bobinas, que se arredonda na conversão. Também é usual na
indústria papeleira usarem-se tolerâncias na satisfação das encomendas, ou seja,
os clientes aceitam receber quantidades aproximadas das encomendadas.
2.2 O Processo produtivo
Os itens finais são produzidos em duas fases. Na máquina do papel produz-se
continuamente uma folha de papel de uma dada família, que é enrolada num rolo
de grandes dimensões dando origem a um carretel, como se ilustra na figura 2.2.
Caso de estudo
23
enrolamento da folha
em carretel
Pasta+químicos+água
Figura 2.2: O processo de produção e enrolamento da folha em carretel
Posteriormente, na máquina de corte, cada carretel é cortado de forma a obter um
determinado conjunto de itens. A figura 2.3 ilustra o processo de corte.
carretel
largura do carretel
navalha
corte
desperdício
itens finais
w1
w2
w3
w4
largura do carretel = w1 + w2 + w3 + w4 + desperdício
Figura 2.3: O processo de corte
Estes processos repetem-se sequencialmente sem interrupções. Em cada instante,
ou está a ser produzido um carretel, ou está a ocorrer uma mudança da família a
ser produzida. Simultaneamente, na máquina de corte, ou está a ser cortado outro
carretel, ou está a ocorrer a preparação para um novo corte. O corte simultâneo
dum conjunto de bobinas denomina-se bobinagem. Variando o diâmetro do rolo em
carretel, pode-se cortar mais do que uma bobinagem utilizando a folha dum mesmo
carretel. Nesta dissertação, utiliza-se o termo carretel, ou seja, assume-se que um
carretel corta apenas uma bobinagem.
O processo produtivo enquadra-se nos processos de fabrico contínuo: todos os
itens são produzidos de acordo com a mesma sequência de operações e utilizando
as mesmas máquinas.
Os itens finais são embalados e catalogados consoante o seu destino e seguem
para armazém a partir de onde são expedidos. Os itens não afectados a nenhuma
encomenda constituem o stock livre.
24
Capítulo 2
2.3 Descrição do problema global
2.3.1 Identificação de subproblemas
A cada uma das fases de fabrico associa-se um problema específico, conforme se
ilustra na figura 2.4. Os problemas, que se descrevem em seguida, enquadram-se a
um nível táctico/operacional. Na fase de expedição encontra-se o problema de
carregamento de veículos, que não é abordado nesta dissertação.
carretéis
pasta
Máquina do papel
(Planeamento e
escalonamento da
capacidade)
...
carretéis
Máquina de corte
(Programação
do corte)
...
embalagem
itens
armazém
Camiões e contentores
(carregamento de veículos)
clientes
itens
porto marítimo
Figura 2.4: O processo de fabrico até expedição
O corte de carretéis de uma mesma família e com um determinado diâmetro dá
origem a itens da mesma família e diâmetro. Um padrão de corte (ou padrão) é um
conjunto de itens, cada um deles a cortar um determinado número de réplicas. Um
padrão de corte é admissível quando pode ser utilizado para cortar um carretel, ou
seja, as larguras dos itens que o constituem verificam as restrições técnicas da
máquina de corte. Uma solução de corte é um conjunto de padrões de corte
admissíveis em que cada um deles deve ser utilizado para cortar um determinado
número de carretéis.
O Problema de Corte (PC) consiste em obter uma solução de corte que permita
produzir um determinado conjunto de itens minimizando o desperdício resultante.
Caso de estudo
25
A cada um dos itens num padrão faz-se corresponder um destino, que pode ser
uma linha de encomenda ou o armazém, definindo uma ordem de corte. Um
programa de corte é uma sequência de ordens de corte.
O Problema de Programação do Corte consiste em determinar um programa de
corte que permita cortar os itens pedidos num conjunto de linhas de encomenda
(ou partes de linhas de encomenda), minimizando o desperdício resultante e
optimizando uma dada medida de desempenho. Ou seja, o problema de
programação do corte integra o PC com objectivos adicionais (por exemplo, a
minimização do espalhamento das encomendas no programa de corte) e a
respectiva afectação dos itens na solução aos pedidos dos clientes.
Para facilitar a compreensão destes problemas apresenta-se o seguinte exemplo
real. Considera-se o conjunto de pedidos apresentado na figura 2.5. São todos
referentes ao mesmo tipo de papel, à mesma gramagem e ao mesmo diâmetro.
Apenas se apresentam os atributos das linhas de encomenda relevantes para a
explanação. Assim, nessa figura, a coluna NBobs apresenta o número de bobinas
por produzir. Os nomes das restantes colunas são auto-explicativos.
Linha
00014993
00015121
00015122
00015157
00015257
00015442
00015445
00015447
00015452
00015453
00015459
00015460
00015461
00015483
00015517
Cliente
P 062 03113
E 030 03495
E 030 03495
E 030 03497
I 051 04470
I 047 08533
I 047 08533
I 047 08534
I 051 04474
I 051 04474
D 007 03326
D 007 03326
D 007 03326
PK 003 00395
P 130 03269
Largura
82.0
112.0
122.0
13.0
142.0
112.0
98.0
122.0
82.0
84.0
81.5
91.5
101.5
102.0
122.0
NBobs Peso
97
61.00
58
50.00
107
100.00
240
24.00
3
3.00
27
23.00
31
23.00
49
46.00
32
20.00
5
3.00
32
20.00
22
15.00
39
30.00
383
300.00
6
5.00
Figura 2.5: Conjunto de linhas de encomenda a cortar
Para cada largura, calcula-se o número total de bobinas a produzir (NBobinas),
passando-se assim a uma agregação dos pedidos, que se ilustra na figura 2.6.
26
Capítulo 2
Largura
13.0
81.5
82.0
84.0
91.5
98.0
101.5
102.0
112.0
122.0
142.0
NBobinas
240
32
129
5
22
31
39
383
85
162
3
Figura 2.6: Dados agregados por larguras
A figura 2.7 expõe uma solução de corte para uma largura de carretel de 420cm.
Cada linha refere-se a um padrão de corte. Na primeira coluna (IP) apresenta-se
uma indexação dos padrões de corte, apenas por questões de explicação do
exemplo. A segunda coluna (NCarretéis) corresponde ao número de carretéis a
cortar de acordo com o padrão associado. Segue-se o conjunto de larguras que
compõem o padrão e, por fim, exibe-se o desperdício resultante. Na subtabela
inferior, apresentam-se os indicadores da qualidade da solução.
IP NCarretéis Padrão
1
13
122.0 122.0
2
4
122.0 101.5
3
20
122.0 112.0
4
1
84.0
84.0
5
2
142.0 142.0
6
32
122.0 102.0
7
23
122.0
82.0
8
22
122.0 122.0
9
14
102.0 102.0
10
65
112.0 102.0
11
31
102.0 102.0
N. total de bobinagens
227
N. total de bobinas
1135
122.0
101.5
102.0
84.0
122.0
101.5
82.0
91.5
102.0
102.0
102.0
13.0
13.0
13.0
13.0
82.0
13.0
82.0
84.0
84.0
13.0
81.5
13.0
82.0
13.0
13.0
13.0
82.0
82.0
13.0
13.0
102.0
98.0
13.0
Desperdicio Medio
Perda de producao
Largura Media Aproveitada
Desperdício
2.0
0.0
2.0
0.0
1.0
0.0
13.0
0.0
2.5
6.0
2.0
3.0
1.8943cm
0.4510%
4.1811m
Figura 2.7: Uma solução de corte para o conjunto de larguras dado
Afectam-se as larguras em cada padrão às linhas de encomenda e obtêm-se as
ordens de corte. O programa resultante exibe-se na figura 2.8, onde os padrões são
desdobrados em conjuntos de números de linhas de encomenda. Para cada padrão,
exibem-se os números de linhas de encomenda a que se afectaram as larguras,
mantendo-se a ordem correspondente à ordem das larguras. Por exemplo, para o
padrão 1, cada item de largura 122.0cm fica afectado à linha de encomenda
00015122, e cada item de largura 13.0cm fica afectado à linha 00015157. O padrão
com índice 5 é usado para cortar dois subconjuntos de números de linhas de
Caso de estudo
27
encomenda. Para esse padrão, uma bobina de largura 142.0cm e outra de 122.0cm
foram afectadas a encomendas não consideradas para a elaboração do programa (a
carregado), por haver sobre-produção dessas larguras.
IP NCarretéis
1
13
2
4
3
10
3
3
3
6
3
1
4
1
5
1
5
1
6
32
7
23
8
22
9
14
10
58
10
7
11
31
Padrão
00015122
00015447
00015122
00015122
00015517
00015447
00015453
00015257
00015257
00015122
00015122
00015447
00015483
00015121
00015442
00015483
00015122
00015461
00015442
00015442
00015442
00015442
00015453
00015257
00015335
00015483
00014993
00015447
00015483
00015483
00015483
00015483
00015122
00015461
00015483
00015483
00015483
00015483
00015453
00015447
00015372
00015461
00014993
00015460
00015483
00015483
00015483
00015483
00015157
00014993
00015452
00014993
00014993
00014993
00015453
00015157
00015157
00015459
00014993
00015452
00014993
00015483
00015483
00015445
00015157 00015157 00015157
00015157
00015453
00015157
00015157 00015157 00015157
00015157 00015157
00015157
Figura 2.8: O programa de corte
A figura 2.9 apresenta o estado das linhas de encomenda após a afectação. As
colunas NProd e PesoProd indicam, respectivamente, o número de bobinas
afectadas e o respectivo peso. Podem verificar-se alguns desvios face aos valores de
peso pedido. As duas últimas linhas de encomenda (a carregado) não tinham sido
consideradas para a elaboração do programa e, como já explicado, procedeu-se à
afectação de uma bobina a cada uma dessas linhas.
Linha
00014993
00015121
00015122
00015157
00015257
00015442
00015445
00015447
00015452
00015453
00015459
00015460
00015461
00015483
00015517
00015335
00015372
Cliente
P 062
E 030
E 030
E 030
I 051
I 047
I 047
I 047
I 051
I 051
D 007
D 007
D 007
PK 003
P 130
I 047
SRL001
03113
03495
03495
03497
04470
08533
08533
08534
04474
04474
03326
03326
03326
00395
03269
08529
00002
Largura
82.0
112.0
122.0
13.0
142.0
112.0
98.0
122.0
82.0
84.0
81.5
91.5
101.5
102.0
122.0
122.0
142.0
NBobs NProd Peso PesoProd
97
97 61.00
61.14
58
58 50.00
49.93
107
107 100.00 100.34
240
241 24.00
24.08
3
3
3.00
3.27
27
27 23.00
23.24
31
31 23.00
23.35
49
50 46.00
46.89
32
31 20.00
20.17
5
5
3.00
3.23
32
32 20.00
20.05
22
22 15.00
15.47
39
40 30.00
31.21
383
382 300.00 299.49
6
6
5.00
5.63
?
1
?
0.94
?
1
?
1.09
Figura 2.9: Estado das linhas de encomenda após a afectação
Na ausência de uma ferramenta informática, o responsável pela programação do
corte procede à elaboração dos programas manualmente. Os padrões são
28
Capítulo 2
estabelecidos iterativamente, num processo de tentativa-e-erro, definindo os
grupos de linhas de encomenda a cortar em cada padrão e optando por “boas”
combinações de larguras. Para além da complexidade do problema de corte, neste
processo consideram-se simultaneamente dois tipos de dados (larguras e linhas de
encomenda), o que aumenta a dificuldade. Apesar disso, dada a experiência do
responsável, conseguem-se obter programas com alguma qualidade. No entanto, o
processo é extremamente moroso, a geração e avaliação de soluções alternativas é
incomportável em termos temporais, e o “sucesso” duma solução depende da
experiência e intuição humana. Em termos cognitivos, o responsável pelo
planeamento recorre a combinações de larguras que, devido a situações passadas,
já são conhecidas como sendo “boas”. Criam-se assim “padrões preferidos” e
desiste-se de procurar alternativas mais atractivas. Na construção do SAD
consideraram-se estes aspectos e disponibiliza-se a introdução/imposição de
“padrões preferidos”, de forma a avaliar a qualidade das soluções associadas.
Por Problema de Planeamento e Escalonamento da Capacidade entende-se a
afectação temporal da capacidade à produção de famílias ao longo de um horizonte
de planeamento táctico/operacional (1 a 3 meses). Consideram-se módulos de
produção com a duração de uma quinzena. A este nível trabalha-se com a
informação agregada relativamente às características dos produtos. Este problema
consiste em determinar, sequenciar e escalonar as quantidades a produzir de cada
família, satisfazendo a procura e maximizando a exploração da capacidade
disponível. O plano resultante, que denominamos por plano agregado, expressa os
instantes de início e de fim da produção das diferentes famílias, correspondendo
este intervalo à produção de um determinado número de carretéis. Mudanças da
produção de famílias têm associados tempos e custos que dependem da sequência
de produção. O intervalo de tempo durante o qual uma determinada família está a
ser produzida denomina-se na indústria papeleira por corrida1, sendo este termo
também utilizado para referir genericamente a família que lhe corresponde.
1
Este termo deriva do termo production run, utilizado em inglês.
Caso de estudo
29
A figura 2.10 ilustra um plano de produção agregado, para o período decorrente
de 97.06.23 até 97.08.29. Este plano permite produzir todas as encomendas e
partes de encomenda ainda não produzidas, com data de entrega anterior a
97.09.01. A primeira corrida refere-se a um programa para o tipo de papel KX e
gramagem 80, a ter início na data 97.06.23, e com duração de 3 dias e 7 horas.
Cada linha da tabela corresponde a uma corrida. As duas primeiras colunas
indicam o início da produção da respectiva corrida. A primeira coluna indica o
tempo decorrido desde o início do plano, em horas, enquanto que a segunda
corresponde à data em que a corrida se inicia. Em seguida mostra-se a duração do
programa em número de horas e a correspondente transformação para dias, horas
e minutos. As colunas Prod. e Gram. indicam, respectivamente, o tipo de produto e
a gramagem. As duas últimas colunas indicam, respectivamente, o peso do
programa e da correspondente mudança (set-up), em toneladas.
Calendário dos programas na máquina
Início
Duração
Hora
Data
relativa
(h) ( d h m)
0.0
970623
79.0= 3d 7h 1m
79.1
970626
32.4= 1d 8h23m
111.6
970627
25.8= 1d 1h49m
137.4
970628
20.1=
20h 8m
157.8
970629
11.2=
11h14m
169.1
970630
9.0=
8h59m
178.1
970630
4.1=
4h 3m
182.2
970630
1.8=
1h48m
184.3
970630
102.3= 4d 6h16m
286.7
970704
39.8= 1d15h50m
326.7
970706
30.6= 1d 6h33m
357.3
970707
18.9=
18h52m
376.4
970708
16.5=
16h31m
393.2
970709
12.2=
12h11m
405.6
970709
9.8=
9h48m
415.5
970710
103.8= 4d 7h49m
519.5
970714
13.5=
13h28m
533.3
970715
315.1=13d 3h 4m
848.4
970728
223.4= 9d 7h22m
1071.9
970806
86.6= 3d14h38m
1158.8
970810
41.8= 1d17h47m
1200.7
970812
1.4=
1h21m
1202.3
970812
153.4= 6d 9h25m
1355.8
970818
93.5= 3d21h29m
1449.4
970822
48.2= 2d 0h12m
1497.7
970824
45.2= 1d21h14m
1543.2
970826
28.8= 1d 4h45m
1572.1
970827
26.8= 1d 2h46m
1598.9
970828
19.5=
19h30m
1618.5
970829
7.7=
7h42m
Prod.
Gram.
KX
KX
KX
KX
KS
KS
KS
KS
KX
KX
KS
KS
KX
KS
KX
KX
KS
KX
KX
KX
KS
KS
KX
KX
KX
KX
KS
KS
KS
KS
80
70
90
85
60
65
70
90
80
70
60
65
90
70
85
80
60
80
70
90
60
80
90
80
70
85
60
70
90
80
Peso do
Programa
(t)
493.9
202.4
161.4
125.9
70.2
56.2
25.4
11.3
639.2
249.0
191.0
118.0
103.3
76.2
61.3
648.9
84.3
1969.2
1396.1
541.5
261.2
8.5
958.9
584.3
301.3
282.7
179.8
167.3
121.9
48.2
Figura 2.10: Exemplo dum plano agregado
Peso do
Setup
(t)
0.00
0.52
0.73
0.00
1.56
0.00
0.00
0.73
1.56
0.52
1.56
0.00
1.56
1.56
1.56
0.00
1.56
1.56
0.52
0.73
1.56
0.73
1.56
0.52
0.52
0.63
1.56
0.52
0.73
0.52
30
Capítulo 2
Na situação anterior à disponibilização do SAD, a ordem de processamento das
corridas era pré-definida. Em cada quinzena, para cada tipo de produto
percorriam-se todas as gramagens duas vezes (por ordem crescente e depois por
ordem decrescente), sendo a duração das corridas definida pelo tempo necessário
para produzir o peso pedido de cada família (aproximadamente). Esta regra,
apesar de coerente, pois tenta minimizar os tempos de mudança entre gramagens,
não é efectiva.
Na elaboração duma solução de corte faz-se a desagregação em relação às
características do produto duma corrida. A desagregação temporal, da informação
associada a uma solução de corte, resulta da afectação dos itens às encomendas e
do sequenciamento das ordens de corte que assim se obtêm.
2.3.2 Identificação das responsabilidades funcionais
Existem duas estruturas funcionais envolvidas no processo de tomada de decisão: o
Departamento de Marketing (“marketing”) e o Departamento de Produção
(“produção”).
Os problemas que se identificaram na secção anterior estão relacionados com
as fases do processo produtivo. O problema de planeamento e escalonamento da
capacidade associa-se com a produção dos carretéis na máquina do papel, e o
problema de programação do corte refere-se à fase de corte dos carretéis. A
“produção” é responsável pela tomada de decisão relativa a estes problemas. No
entanto, estritamente dependente do problema de planeamento e escalonamento
da capacidade, e a montante deste, tem-se o problema de aceitação de encomendas.
Este problema, da responsabilidade do “marketing”, consiste em dada uma
encomenda, duma determinada quantidade, de um dado item e com uma
determinada data de entrega, avaliar o impacto da sua aceitação no plano
agregado. A “produção” planeia e executa o fabrico dos artigos para satisfazer as
encomendas. Em termos temporais, as decisões do “marketing” são tomadas
primeiro e definem as quantidades a produzir e as respectivas datas de entrega.
No entanto, estas decisões estão condicionadas pelas restrições da “produção”, que
Caso de estudo
31
define os valores da capacidade. A velocidade de funcionamento da máquina do
papel pode ser corrigida dentro de dados limites, o que permite uma ligeira
adequação dos valores da capacidade às quantidades a produzir. Velocidades muito
elevadas conduzem a problemas de qualidade no papel. Por outro lado, a
velocidade tem de se adaptar à qualidade da pasta que está a ser produzida, ou
seja, o valor da capacidade é estabelecido dinamicamente.
A aceitação de encomendas com datas impraticáveis congestiona ainda mais o
sistema. A promessa de entrega, num espaço de tempo irrealista, acontece como
uma tentativa de agradar ao cliente, mas acaba por ter o efeito contrário quando
não se cumpre esse prazo. Por outro lado, este tipo de actuação conduz a um ciclo
vicioso pois os clientes têm tendência a antecipar a colocação de encomendas, em
virtude de experimentarem atrasos em relação às datas prometidas. Os conflitos
entre o “marketing” e a “produção” acabam por resultar na degradação do
desempenho geral do planeamento.
A figura 2.11 sumaria os problemas de tomada de decisão, as respectivas
responsabilidades das estruturas funcionais e os horizontes temporais. Em termos
temporais, podem-se identificar três níveis de tomada de decisão.
Estruturas funcionais
Marketing
Tomada de decisão
Horizonte temporal
Problema de aceitação
de encomendas
1 dia até vários meses
restrições
Problema de
planeamento e
escalonamento da
capacidade
Produção
1 a 3 meses
restrições
Problema de
programação do corte
1 a vários turnos
restrições
Operação
Implementação
Figura 2.11: Responsabilidades funcionais e horizontes temporais
32
Capítulo 2
No primeiro nível, tem-se o problema de aceitação de encomendas. O horizonte
temporal vai de 1 dia até vários meses. Este horizonte não se enquadra na
caracterização clássica do planeamento hierárquico. Mas, na prática, dada a
relação que a empresa privilegia com alguns clientes, admitem-se tempos de
entrega muito reduzidos. A determinação da data de entrega pode resultar dum
processo de negociação com o cliente, com várias interacções, e em que também se
estabelece o preço.
O “marketing” funciona como duplo interface, fazendo a comunicação entre os
clientes e a “produção”. Na interacção com os clientes definem-se os preços e na
interacção com a “produção” definem-se as datas de entrega. A proposta dum
modelo para o problema de aceitação de encomendas que determinasse estas duas
variáveis foi rejeitada pela empresa. De acordo com as condições expressas pelo
“marketing”, os preços não poderiam ser parâmetros do sistema. Para este
problema, dada uma proposta de encomenda, o SAD apenas deveria funcionar
como um avaliador da exequibilidade da data de entrega. Optou-se por classificar
os clientes, numa escala de preferências, de modo a poder avaliar alterações das
datas de entrega de encomendas já aceites. Em caso de escassez da capacidade e
face a uma proposta de encomenda dum cliente prioritário, através duma regra de
prioridade (cf. capítulo 6), determina-se a encomenda (ou conjunto de encomendas)
a adiar, por forma a libertar a capacidade requerida.
O impacto da aceitação duma encomenda, no plano agregado, não se pode
medir por um acréscimo em termos de quantidades pedidas. É necessário avaliar
as alterações resultantes em termos da combinação de larguras na solução de corte
que define a corrida associada. O exemplo, que se descreve de seguida, ilustra este
problema.
Assuma-se que a largura do carretel é 420cm. Considerem-se duas encomendas
distintas de artigos da mesma família e diâmetro: numa encomenda pedem-se 21
bobinas de 120cm, e na outra 42 bobinas de 60cm. Ambas as encomendas têm o
mesmo peso. Mas, como se mostra na figura 2.12 (encomendas separadas), para
Caso de estudo
33
cortar a primeira são necessário 7 carretéis, originando um desperdício de 7
bobinas de 60cm, enquanto que para cortar a segunda bastam 6. Neste caso, a
diferença é de apenas um carretel, mas, se usarmos múltiplos das quantidades
encomendadas a diferença cresce proporcionalmente.
Se se combinarem as duas encomendas, podem-se aproveitar as 7 bobinas de
60cm que eram desperdício na primeira situação para cortar 7 bobinas da segunda
encomenda. Desta combinação resulta a poupança de um carretel, como se ilustra
na figura 2.12 (encomendas combinadas).
Encomendas separadas
7X
6X
120
60
120
60
60
= 21 X
120
60
60
60
60
= 42 X
60
= 21 X
60
= 35 X
120
+7X
60
120
+7X
60
60
Encomendas combinadas
7X
5X
120
60
120
60
60
120
60
60
60
60
Figura 2.12: Exemplo de corte para duas encomendas com o mesmo peso
No segundo nível, procede-se ao planeamento e escalonamento da produção.
Define-se o plano agregado e elaboram-se os programas de corte para as diferentes
famílias. Os planos gerados são dinâmicos e adaptáveis a alterações. Gera-se o
plano agregado para um horizonte de 1 a 3 meses. Estabelece-se a programação do
corte para a primeira corrida (ou as primeira corridas) do primeiro período, o que
corresponde à desagregação da informação relativa a esse subplano, em termos
temporais e da caracterização do produto. Os programas de corte são enviados à
“operação” para execução e referem-se a um horizonte temporal de 1 a vários
turnos. O subplano remanescente passa a ser o plano actual.
A “operação”, que está integrada no Departamento de Produção, e onde se
enquadram os operadores de produção, é responsável por executar os programas de
corte definidos no nível anterior. A este nível compete também detectar algum tipo
34
Capítulo 2
de falhas na qualidade dos produtos acabados (defeitos no papel), ajustar o
funcionamento do equipamento e reformular os programas de corte para resolver
eventuais falhas da produção. Na “operação”, o horizonte temporal para a tomada
de decisão é de um ou mais turnos.
2.4 Replaneamento
Quando se implementa o programa relativo à primeira corrida (ou às primeiras) do
primeiro período no plano agregado, imediatamente ocorrem alterações ao plano.
Recebem-se novas encomendas, e encomendas já aceites podem ser revistas:
canceladas, adiadas ou adiantadas. Podem também ocorrer alterações na
implementação dos programas: faltas de qualidade obrigam à reprogramação dos
itens defeituosos e desvios na velocidade da máquina do papel podem levar à
redefinição da capacidade disponível. O plano é reformulado sempre que se inicia
um novo período de produção ou sempre que ocorrem alterações significativas dos
dados. Tem-se portanto um esquema de replaneamento misto, pois combina-se um
esquema de horizonte rolante com um esquema de revisões por alterações (cf.
[Martinich, 1997], capítulo 14). O plano está permanentemente actualizado de
acordo com o estado da informação, o que é uma vantagem. Idealmente, não se
deveriam reformular os planos com muita regularidade, mas apenas identificar as
alterações resultantes e relatá-las. No entanto, neste caso de estudo, a aceitação de
uma encomenda “urgente” de grande dimensão, pode provocar grandes alterações
no plano agregado, devido à forte interdependência dos problemas (ver modelo
hierárquico no capítulo 3). Desta forma, este esquema de replaneamento é também
por si só instável e acaba por conferir ainda mais nervosismo ao sistema. Mas,
dada a organização do trabalho na empresa, um esquema de replaneamento mais
relaxado poderia vir a traduzir-se na descoordenação entre as diferentes unidades
funcionais.
Capítulo 3
O modelo hierárquico de
tomada de decisão
Neste capítulo, começa-se por dar uma perspectiva de classificação dos modelos de
tomada de decisão. Em seguida, discutem-se alguns aspectos referentes à criação
de hierarquias para decisão distribuída. Neste contexto, enfatizam-se os
mecanismos de interacção entre os agentes de decisão humanos. Discute-se a
importância dos mecanismos de agregação/desagregação da informação para os
sistemas
hierárquicos
e
descreve-se
um
enquadramento
teórico
para
o
planeamento hierárquico. Expõem-se ainda alguns conceitos referentes à
coordenação entre o “marketing” e a “produção”, salientando a necessidade de
cooperação entre estas unidades funcionais com interesses conflituosos. A
finalizar, apresenta-se o desenho do modelo hierárquico que representa o processo
de decisão para o caso em estudo. Identificam-se os níveis de tomada de decisão, os
modelos a utilizar em cada um deles, as interacções entre os modelos e as
interacções entre os agentes de decisão.
36
Capítulo 3
3.1 Modelos de decisão
No trabalho de [Koopman e Pool, 1991] discute-se uma categorização dos modelos
de tomada de decisão. O modelo clássico ou racional é um modelo normativo que
define a forma “ideal” de tomar a decisão numa perspectiva quantitativa. Assumese que o AD conhece todas as alternativas possíveis e que, entre elas, procura uma
alternativa com lucro máximo. Este modelo é limitativo, pois pressupõe que:
•
só existe um AD;
•
para resolver o problema apenas se considera um único objectivo, que pode
ser expresso em termos quantitativos; e
•
é sempre possível encontrar a “melhor” alternativa.
O modelo racional pode adaptar-se, dando origem ao modelo de informação. Neste
modelo, o AD intervém processando a informação e considerando a experiência do
passado. A tomada de decisão é influenciada pelas preferências, o conhecimento e a
intuição do AD.
Estabelecer
objectivos
Rever
objectivos
Rever ou
actualizar
objectivos
Seguimento e
controlo
Pesquisar e/ou
gerar
alternativas
Comparar e
avaliar
alternativas
Recomeçar
pesquisa
Corrigir se
necessário
Implementar
decisões
Escolher
Figura 3.1: O processo de tomada de decisão (adaptado de [Koopman e Pool, 1991])
A tomada de decisão individual quando expandida e integrada numa organização
apropriada dá origem ao modelo organizacional. A criação de várias estruturas
funcionais, com diferentes competências, aumenta a capacidade de processamento
da informação. No entanto, a divisão de tarefas pelas estruturas cria uma visão
limitada do problema e pode originar conflitos. Criam-se então mecanismos de
O modelo hierárquico de tomada de decisão
controlo e coordenação que permitem ultrapassar estas questões. O modelo
organizacional pode ser adaptado a diferentes contextos.
No modelo organizacional, o AD posiciona-se num mundo, onde coexiste com os
outros participantes do processo de decisão, e que inclui também o ambiente onde
todos trabalham [Kersten e Cray, 1996]. O ambiente é constituído por entidades
que não são individuais. Caracteriza-se pela informação do passado, do presente e
de eventuais perspectivas futuras e pode ser instável. O AD tem necessidades e
valores que são considerados nos problemas que vai resolvendo para diferentes
estados do mundo. Esses estados impõem restrições no conjunto das possíveis
alternativas a considerar para a resolução dos problemas. Por outro lado, a tomada
de decisão exige que o AD considere também as necessidades e valores dos outros
participantes e as eventuais reacções às suas próprias decisões. Os mecanismos de
cooperação e negociação permitem coordenar este tipo de envolvimento, em que
existem interdependências entre os vários participantes dum processo de tomada
de decisão. As decisões têm de ser percebidas em termos das necessidades do AD e
da sua relação com as outras entidades no mundo.
3.2 Hierarquias em tomada de decisão distribuída
Segundo Brehmer, um sistema permite a tomada de decisão distribuída quando é
possível que diferentes pessoas funcionem autonomamente sem pôr em perigo os
objectivos do sistema [Brehmer, 1991]. Inversamente, um sistema requer a tomada
de decisão distribuída quando os seus propósitos só podem ser alcançados se
alguns dos indivíduos no sistema funcionarem de forma independente.
No caso em estudo, o problema de decisão, enquadra-se na área da tomada de
decisão distribuída. No problema global de tomada de decisão, um indivíduo
sozinho não consegue abranger toda a tomada de decisão, antes as diferentes
tarefas têm de ser realizadas individualmente. Assim, há a necessidade de
coordenar os indivíduos, que se organizam em estruturas. Por outro lado, é
necessário coordenar estas estruturas, o que introduz aspectos temporais. Cada
estrutura tem um campo de actuação numa determinada escala temporal que
37
38
Capítulo 3
requer um dado nível de controlo. E assim o sistema tem uma organização
hierárquica. Existe a necessidade de regular a complexidade do problema de
comando e controlo. Criam-se níveis de coordenação e controlo hierárquico. No
entanto, os níveis inferiores não podem ser completamente controlados pelos níveis
superiores.
De acordo com o tipo de decomposição que se utiliza, existem diferentes
estratégias para a coordenação dum sistema hierárquico [Rasmussen, 1991], que
consistem em manipular os níveis inferiores, relativamente a:
•
Objectivos ou parâmetros dos objectivos;
•
Restrições no domínio de acção;
•
Variáveis de interacção entre unidades (estimação ou previsão);
•
Informação disponível (quantidade e qualidade).
Uma organização distribuída encara dois tipos de problemas: informação e
confiança [Brehmer, 1991]. Em relação à questão da informação, a mesma
informação pode ser utilizada sob diferentes formas, nos vários níveis do sistema.
A informação deve ser transformada adequadamente para processamento nos
níveis inferiores. O nível de confiança estabelece a necessidade de monitorização
entre os diferentes níveis. Quanto mais elevado for, mais partido a organização
pode tirar da capacidade de processamento da informação, para efectuar as tarefas
em cada nível. Numa organização onde o nível de confiança é baixo, criam-se
esquemas de monitorização e controlo muito fortes, o que pode conduzir a um
direccionamento da capacidade de processamento da informação para tarefas não
essenciais. Por outro lado, os níveis inferiores resistem à disponibilização da
informação pelas novas tecnologias, o que facilita o controlo pelos níveis
superiores. Quando os esquemas de monitorização são demasiado fortes, os
indivíduos controlados tendem a deixar essa tarefa para os níveis superiores,
perdendo-se a automonitorização. Este mecanismo conduz a uma diminuição de
confiança e, ciclicamente, aumenta-se a necessidade de controlo.
O modelo hierárquico de tomada de decisão
Num processo de tomada de decisão individual, o AD aceita uma alternativa
que preencha os seus requisitos. Quando existe mais do que um AD, uma
alternativa aceitável para um dos AD pode não ser aceitável para outro. De acordo
com Kersten, o processo de negociação envolve a pesquisa duma alternativa
(solução) que seja admissível (tecnicamente possível de implementar) e aceitável
para os AD’s envolvidos [Kersten, 1987]. Numa relação de negociação, o poder
relativo de cada negociador estabelece-se pela extensão da dependência que cada
parceiro tem do outro [Anderson, 1992]. Os indivíduos tendem a aceder aos níveis
de poder relativo dentro de uma relação e aí escolhem o tipo de relação: competir,
acomodar, colaborar ou desistir da negociação com o outro. O nível de conflito é
estabelecido pela forma como os parceiros compreendem a sua relação. A percepção
da construção da relação como sendo uma mais valia pode conduzir a ganhos
conjuntos numa relação simbiótica. Ela pode motivar a negociação, mesmo que tal
signifique a perda de lucros para um dos parceiros, no caso em que tal seja mais
valorado do que as perdas em questão. A simbiose é uma ideologia de negociação
em que o processo origina ganhos conjuntos. A comunicação é aberta e a
informação é partilhada. A estratégia “win-win” permite que nenhum dos parceiros
tenha perda. Ambos estabelecem esforços que permitam o maior lucro conjunto,
mesmo que esse lucro seja aparentemente afecto a apenas um dos parceiros. Os
princípios da negociação simbiótica incluem a necessidade das pessoas se
separarem do problema. Assim, os parceiros percebem o seu trabalho conjunto
para resolver o problema, focando o interesse num objectivo comum e não em
preferências pessoais. Neste caso, devem-se especificar critérios objectivos que
permitam estabelecer soluções para o ganho mútuo.
No processo de tomada de decisão do caso em estudo, o problema de aceitação
de encomendas conduz muitas vezes a um processo de negociação entre o
“marketing” e a “produção”. O responsável pela aceitação das encomendas não
pode ignorar a admissibilidade da produção dessa encomenda para a data prevista
e o impacto que essa aceitação pode ter na produção das encomendas já aceites. Ou
39
40
Capítulo 3
seja, tem de existir um compromisso com a exequibilidade das opções tomadas nas
fases mais avançadas do processo, abandonando-se a perspectiva de “o que se
passa daqui para a frente já não me diz respeito”.
O nível médio de gestão numa hierarquia organizacional, que no caso de estudo
corresponde ao “marketing”, tem um papel determinante para o processo global de
tomada de decisão, dada a diversidade das suas funções, onde se destacam:
•
Interface com entidades externas à companhia (clientes, fornecedores e
parceiros);
•
Interface com outros níveis de gestão mais elevados;
•
Alocação dos recursos produtivos;
•
Antecipação da situação no nível inferior, de forma a assegurar que se
possa proceder à implementação das decisões tomadas.
O acesso à informação para a tomada de decisão distribuída é feito através dum
sistema de informação centralizado, o que pode tornar o sistema vulnerável.
Devem-se implementar regras de segurança que restrinjam as acções disponíveis
para os utilizadores nos diferentes níveis de tomada de decisão. As regras que se
concretizaram, para o caso em estudo, apresentar-se-ão na secção 6.4.
3.3 Enquadramento teórico para o planeamento hierárquico
Um dos maiores desafios num modelo hierárquico de planeamento refere-se à
construção dum mecanismo de agregação/desagregação da informação no caso em
que os modelos usam diferentes parâmetros.
Axsäter aborda o problema de agregação/desagregação [Axsäter, 1981]. Dada a
definição das variáveis do modelo hierárquico, determina condições que garantem
a coerência da desagregação de um plano agregado.
Günther
apresenta
um
modelo
hierárquico
para
o
planeamento
e
escalonamento da produção de detergentes, [Günther, 1986]. O modelo consiste em
quatro níveis de decisão, organizados numa estrutura estritamente top-down.
Günther identifica os subproblemas de planeamento agregado, escalonamento e
O modelo hierárquico de tomada de decisão
sequenciamento
das
quantidades,
determinação
41
de
ordens
de
produção,
distribuição e expedição, e descreve heurísticas para a sua resolução.
Um esquema robusto de agregação/desagregação para o problema de
planeamento e escalonamento da produção é tratado em [Lasserre e Mercé, 1990].
Assume-se que a procura é desconhecida, mas limitada, e considera-se um modelo
hierárquico com dois níveis, separando os dois subproblemas. Estabelecem-se
condições, necessárias e suficientes, para que o plano agregado obtido no nível
superior seja admissível para a desagregação pelo nível inferior. Em caso de
inadmissibilidade de um plano agregado, introduzem-se as condições violadas no
modelo superior, e determina-se uma nova solução. Assim, sugere-se que as
condições derivadas sejam introduzidas no modelo no nível superior, o que consiste
numa antecipação explícita do modelo no nível inferior. Este mecanismo confere
grande complexidade computacional ao modelo no nível superior e, portanto, não
se apresentam aplicações práticas da abordagem.
A coerência da agregação/desagregação é também abordada em [Dauzère-Péres
e Lasserre, 1994]. Neste trabalho considera-se também um modelo com dois níveis
em que o nível superior consiste na determinação de quantidades (lot-sizing) e no
nível inferior procede-se ao escalonamento da produção das quantidades.
Apresenta-se uma abordagem iterativa em que se introduzem restrições no modelo
do nível superior até que se determine a inadmissibilidade ou um plano integrado
admissível. O modelo é coerente e apresentam-se resultados de aplicação.
Sönher e Schneeweiss apresentam uma abordagem hierárquica de integração
para um sistema de planeamento e controlo da produção [Söhner e Schneeweiss,
1995]. O sistema consiste nas componentes MPS (Master Production Scheduling),
MRP (Material Requirements Planning) e CRP (Capacity Requirements Planning),
organizadas hierarquicamente, mas considerando uma antecipação explícita dos
níveis inferiores. É testada a admissibilidade da integração.
Schneeweiss apresenta um enquadramento teórico para o planeamento
hierárquico [Schneeweiss, 1995, 1999], onde se consideram os vários tipos de
42
Capítulo 3
interacção entre os diferentes níveis da hierarquia. Recorrendo a uma antecipação
reactiva
exacta
e
explícita,
pode-se
derivar
uma
solução
que
optimiza
simultaneamente o esquema de agregação e o modelo hierárquico [Schneeweiss,
1999, cap. 6]. Este enquadramento descreve uma situação de planeamento
hierárquico pela sobreposição de dois modelos de decisão, conforme se passa a
apresentar.
Descreve-se um modelo de decisão M pelo seu conjunto de alternativas A e a
sua estrutura de preferências (sistema de critérios) C. Considera-se ainda o estado
da informação no momento em que a decisão é tomada: IT(t0) e IB(t1), para o nível
superior e o nível inferior, respectivamente. Tem-se assim uma definição para os
modelos nos dois níveis:
— o modelo-superior MT(CT, AT, IT(t0)) e
— o modelo-base MB(CB, AB, IB(t1)).
A figura 3.2 ilustra as interacções entre os dois níveis deste modelo hierárquico.
Modelo Hierárquico
Nível superior
Modelo-superior
AF(IN)
antecipação
IN
instrução
Modelo-base
antecipado
RE*
reacção
Decisão final
IN*
instrução
Nível base
modelo-base
Figura 3.2: Interacções no modelo hierárquico
O nível superior transmite a sua decisão ao nível base na forma duma instrução
IN. A estimação das componentes do modelo-base permite determinar uma função
antecipação AF(IN), que antecipa a reacção do nível inferior à sua instrução.
Obtém-se assim um modelo-base antecipado, que o nível superior utiliza para
O modelo hierárquico de tomada de decisão
calcular uma estimativa da decisão óptima a obter pelo nível base aB*, em função
da instrução IN, e como tal da sua própria decisão óptima aT*. A instrução que
melhor se adequa ao critério do modelo superior é IN*=IN(aT*). O nível base recebe
esta instrução, integra-a no seu modelo de decisão e explicita a sua reacção RE*.
O critério do nível superior pode ser decomposto em duas componentes: o
critério privado, que depende unicamente do nível superior, e o critério top-down
que explicita a função de antecipação da reacção do nível base. A optimização do
critério no nível superior conduz à decisão óptima neste nível, aT*, que depende da
componente privada do critério no nível superior, da componente top-down relativa
à antecipação da instrução associada e do estado da informação disponível para o
nível superior no momento em que é tomada a decisão IT(t0).
Distinguem-se dois tipos de antecipação: a antecipação reactiva, que considera
uma possível reacção do nível base, e a antecipação não reactiva, ou inexistente,
em que não há reacção do nível base. A antecipação reactiva distingue-se em:
explícita exacta, aproximada explícita e implícita. Interessa-nos a antecipação
reactiva explícita e exacta. Neste caso, a estrutura matemática de MB é totalmente
conhecida pelo nível superior. O estado da informação difere entre o instante em
que é tomada a decisão no nível superior e o instante em que se aplica o modelo do
nível base. Ou seja, apenas algumas características de MB podem ser conhecidas. A
função de antecipação pode ser conhecida sem recorrer a aproximações. É explícita
porque antecipa o comportamento do nível base no momento em que é tomada a
decisão pelo modelo do nível superior. É exacta porque a informação conhecida pelo
modelo do nível superior é processada de forma exacta – dado um determinado
estado da informação, a antecipação é exacta. O nível base processa a informação
num instante posterior ao da tomada de decisão pelo nível superior. A introdução
dos aspectos particulares do nível base pode conduzir a resultados diferentes dos
que foram antecipados pelo modelo superior.
43
44
Capítulo 3
Nesta perspectiva, o modelo hierárquico que se concebeu para o problema do
caso de estudo (cf. secção 3.5), considera no modelo do nível superior uma
antecipação reactiva exacta e explícita do modelo base.
3.4 Coordenação entre o “marketing” e a “produção”
Em termos organizacionais, o “marketing” e a “produção” têm funções de gestão
separadas, com diferentes competências e com diferente âmbito de actuação. No
entanto, o “marketing” (a estrutura no nível superior de gestão) acaba por definir o
espaço de soluções para os subproblemas a resolver pela “produção” (no nível base
de gestão). Na literatura apresentam-se vários modelos que integram a tomada de
decisão pelo “marketing” e pela “produção” [Eliashberg e Steinberg, 1993]. Este
tipo de abordagem é conhecido por tomada de decisão conjunta do “marketing” e
“produção” (marketing-production joint decision-making). Regra geral, os modelos
integram os problemas de definição de preços e aceitação de encomendas com o
problema de definição dos planos de produção. Na taxonomia de coordenação de
Whang [Whang, 1995] este tipo de abordagem corresponde à perspectiva de
tomada de decisão por um único agente – tomada de decisão centralizada.
Implicitamente, assume-se que uma entidade (AD) tem acesso a toda a informação
necessária para tomar a decisão conjunta e autoridade para proceder à sua
implementação. Num sistema produtivo complexo, este tipo de abordagem torna-se
impraticável.
Por
outro
lado,
o
processo
envolve
estruturas
funcionais
independentes que se coordenam para a tomada de decisão nos pontos de
intersecção. Este tipo de abordagem corresponde a uma perspectiva de equipa na
taxonomia de Whang, que assume a existência de diferentes parceiros, cada um
deles com algumas restrições no acesso à informação e com diferentes campos de
actuação, que cooperam para atingir um objectivo global.
O principal objectivo do “marketing” é a maximização das vendas enquanto que
o objectivo da “produção” é a minimização dos custos. O objectivo organizacional é
a maximização dos lucros a longo prazo, ou seja, a maximização da diferença entre
as vendas e os custos. A estrutura organizacional põe a trabalhar para um mesmo
O modelo hierárquico de tomada de decisão
objectivo agentes com desejos individuais conflituosos. A importância atribuída ao
cumprimento das datas de entrega é o principal ponto de conflito entre as duas
funções, como se identifica no estudo apresentado em [Swamidass, Baines e
Darlow, 2001]. Aparentemente, após ter conseguido estabelecer uma venda, o
“marketing” dissocia-se do cumprimento da data de entrega, deixando a
responsabilidade para a “produção”. Este comportamento pode ser um foco de
conflito, pois a “produção” “sente” que esta responsabilidade não é partilhada e
reage negativamente.
A investigação na área de resolução de conflitos entre o “marketing” e a
“produção” encontra-se dividida em duas categorias: a abordagem de integração,
em que a tomada de decisão é conjunta, e a abordagem de coordenação, que
corresponde à tomada de decisão descentralizada usando variáveis de coordenação
que funcionam como interfaces, [Mukhopadhyay e Gupta, 1998]. A tomada de
decisão conjunta permite, regra geral, obter melhores resultados que a tomada de
decisão descentralizada. Aparentemente, o “marketing” apresenta relutância em
relação a este tipo de abordagem, e por isso ela tem tido pouca aplicação. Estes
autores também identificam que as abordagens de coordenação têm sucesso na
concepção da cooperação entre as duas estruturas funcionais, que podem manter a
sua identidade. Desta forma, pode-se construir um conjunto de interfaces
mantendo a separação funcional e reduzindo o conflito.
O “marketing” e a “produção” têm interesses, relativos às encomendas, que são
potencialmente conflituosos. Quando estes interesses não são coordenados
correctamente podem verificar-se suboptimizações dos planos. Por outro lado, como
os AD’s nos diferentes níveis estão a trabalhar em diferentes escalas temporais,
vêm o sistema global com perspectivas diferentes. Numa companhia que pretenda
um desempenho de alto nível, é fundamental que o “marketing”/vendas e a
“produção” trabalhem em cooperação. Este factor é especialmente importante para
sistemas versáteis que trabalham numa política de produção por encomenda, que
produzem artigos personalizados e que têm de competir no mercado para garantir
45
46
Capítulo 3
a preferência dos clientes. Foi neste sentido que se concebeu o modelo hierárquico
que se apresenta na secção seguinte, que se enquadra como sendo uma abordagem
de coordenação entre o “marketing” e a “produção”.
3.5 O modelo hierárquico de tomada de decisão
O planeamento e escalonamento da capacidade posiciona-se entre diferentes níveis
de gestão de uma companhia, fazendo a comunicação entre a política geral da
empresa e as restrições da produção. A cooperação entre os diferentes níveis de
tomada de decisão e o compromisso em seguir o plano agregado são factores
fundamentais para a eficácia dum sistema de planeamento de produção. É também
necessária a coordenação do “marketing” e da “produção” face ao problema da
consulta dos clientes e aceitação de encomendas. O modelo hierárquico, que se
representa na figura 3.3, foi desenhado para traduzir funcionalmente o processo de
tomada de decisão do caso de estudo. Como já se referiu, as linhas que orientaram
esta concepção incluem:
•
obter soluções para o nível superior que sejam coerentes para o nível
inferior, ou seja, que a desagregação não as torne inadmissíveis; e
•
estabelecer uma estrutura de coordenação que promova a redução dos
conflitos entre o “marketing” e a “produção”.
Consideram-se dois níveis de tomada de decisão: o Nível Superior (NS) e o Nível
Inferior (NI). Estão envolvidos Agentes de Decisão (AD) de dois níveis de gestão:
•
o Agente de Decisão no nível Médio de Gestão (ADMG), responsável pela
tomada de decisão no NS (“marketing”); e
•
o Agente de Decisão a um nível Baixo de Gestão (ADBG), responsável pela
tomada de decisão no NI (“produção”).
O modelo hierárquico de tomada de decisão
47
Nível Superior (NS) – Nível Médio de Gestão
ADMG
Modelo de planeamento
e escalonamento
da capacidade
Modelo de
optimização
do corte
Instruções(NS)
Nível Inferior (NI) – Nível Baixo de Gestão
ADBG
Modelo de
previsão
FeedBack(NI)
Modelo de
previsão
Modelo de optimização do programa de corte
Instruções(NI)
Interacção
Dados
Implementação
SI
Figura 3.3: Dependências hierárquicas na tomada de decisão
O ADMG é responsável pela aceitação das encomendas. Os seus objectivos são
responder aos pedidos dos clientes, captar o maior volume possível de encomendas,
fixar os preços tão altos quanto possível, e manter os clientes satisfeitos. Como a
capacidade de produção é limitada, o critério de optimização no NS é a
maximização da utilização da capacidade, satisfazendo as encomendas. A tomada
de decisão diz respeito a quando é que os itens podem ser produzidos e não a como
vão ser produzidos. Mas, como uma parte da capacidade de produção é
desperdiçada no corte, a forma como se cortam os itens restringe a maximização da
utilização da capacidade, tanto mais quanto maior for a procura. Por este motivo, o
modelo do nível superior resulta da integração do modelo de optimização do corte
(cf. capítulo 4) com o modelo de planeamento e escalonamento da capacidade (cf.
capítulo 5). Utiliza-se assim uma antecipação reactiva explícita e exacta do modelo
no nível inferior. Apesar do modelo integrar um processo de desagregação da
informação para optimização das soluções geradas, este processo nunca é visível
para o AD que trabalha no nível superior. Na sua interacção com o modelo de
planeamento e escalonamento da capacidade a informação apresenta-se agregada.
Ele interage com o modelo para simular diferentes cenários, e avalia as
consequências de aceitar uma encomenda para uma determinada data em função
48
Capítulo 3
dos indicadores da qualidade das soluções geradas. O modelo pode propor
eventuais alterações a encomendas já aceites, e é da responsabilidade do ADMG
efectuar ou não essas alterações, podendo ser necessário reiniciar a negociação com
outro ou outros clientes.
O modelo de previsão destina-se a facultar, ao nível estratégico/táctico, a
monitorização da evolução da procura de papel e, ao nível táctico/operacional, o
apoio ao planeamento de produção e à programação do corte, e a tomada de
decisões mais criteriosas sobre a constituição de stocks. Para um número
significativo de itens é possível estabelecer previsões relativamente seguras da
procura potencial. Caso essas previsões sejam tomadas em consideração nos planos
de produção, espera-se conseguir o escoamento dos stocks entretanto constituídos
num prazo relativamente reduzido.
Em situações de excesso de capacidade, o ADMG interage com o modelo de
previsão [Captivo, Respício e Rodrigues, 2000] para determinar as características
dos itens que se prevê virem a ser encomendados a curto prazo. Antecipa-se assim
a colocação de encomendas, e a respectiva produção, o que conduz a uma
exploração mais efectiva da capacidade de produção. Especificamente, os benefícios
directos e indirectos do modelo de previsão incluem: a redução do número de
encomendas não aceites (por a saturação temporária da capacidade de produção); o
aproveitamento mais racional das capacidades de produção em períodos de procura
mais baixa do que o normal; a redução do prazo de entrega das encomendas; e a
redução do desperdício nos planos de corte (ao sugerir um maior número de
possibilidades a explorar na definição dos planos de produção).
A aceitação de encomendas condiciona o NI sob a forma de instruções do NS. A
estas instruções, o NI reage sob a forma de feedback. O modelo de planeamento e
escalonamento da capacidade permite coordenar a tomada de decisão dos dois
níveis. As suas componentes agregadas funcionam como variáveis de coordenação
entre os ADs. O ADBG interage com este modelo para planear e escalonar a
produção de famílias. Nesta tarefa, partilha o critério de optimização do NI: a
O modelo hierárquico de tomada de decisão
maximização da utilização da capacidade, satisfazendo as encomendas. O modelo
integrado permite que os diferentes níveis na hierarquia executem a sua função,
apercebendo-se o sistema como um todo, embora com um enfoque diferente no
nível de agregação da informação.
O planeamento operacional é da responsabilidade do ADBG. As suas funções
consistem na programação da produção garantindo a satisfação da procura sem
atrasos, incluindo a programação do corte (conforme os modelos no capítulo 4). A
minimização da perda de produção é o critério de optimização no NI. Podem-se
alcançar economias de escala antecipando a produção de itens que se prevê serem
encomendados num curto espaço de tempo. Para decidir relativamente às
características desses itens o ADBG também interage com o modelo de previsão.
Os programas de corte que se determinam no NI são transmitidos à operação
sob a forma de instruções a executar de seguida. Neste nível, a implementação,
ocorre também a tomada de decisão em relação à correcção de falhas de produção.
O operador de produção interage com o modelo de optimização do corte para
conceber programas de corte de pequena dimensão. Isto permite-lhe decidir
relativamente à produção de itens que tenham ficado em falta quando se executam
os programas concebidos pelo NI. Esta tomada de decisão não se representa porque
só tem implicações com os outros níveis em termos dos resultados – criação de
atrasos no cumprimento dos planos ou não satisfação de partes de encomendas.
Caso ocorra uma alteração de grande impacto no plano, por exemplo devida a uma
avaria nas máquinas, o facto é comunicado em toda a hierarquia através do fluxo
de interacção entre os AD’s. Isto significa que a interacção entre os agentes de
decisão também constitui uma variável de coordenação do sistema. Os resultados
da produção conduzem à actualização dos dados no Sistema de Informação (SI) e à
subsequente realimentação de ambos os níveis com a informação actualizada.
49
50
Capítulo 3
Capítulo 4
Programação do Corte
Neste capítulo, apresentam-se os subproblemas encontrados ao nível da
optimização do corte. Começa-se por descrever o problema geral, que se enquadra
na área dos problemas multi-critério e que se aborda duma forma hierárquica.
Descreve-se o problema de corte e revê-se a bibliografia relacionada. Apresenta-se
a formulação utilizada para o problema de corte do caso de estudo, descreve-se o
respectivo algoritmo de resolução e o algoritmo para o problema de afectação de
bobinas às encomendas dos clientes. Descreve-se o Problema de Minimização do
Número de Padrões (PMNP), propõe-se uma nova regra heurística para o PMNP e
avalia-se a sua qualidade por comparação com outras heurísticas. Em seguida
abordam-se os subproblemas de sequenciamento de padrões. Apresenta-se o
Problema de Minimização do número de Movimentos das Navalhas (PMMN), para
o qual se propõem algumas heurísticas. Discute-se o desempenho das heurísticas
propostas. Descrevem-se o Problema de Minimização do Espalhamento das
Encomendas (PMEE) e o Problema de Minimização das Pilhas Abertas (PMPA).
52
Capítulo 4
Propõe-se um modelo bi-objectivo em que se integram os dois critérios e apresentase uma abordagem de resolução utilizando algoritmos evolutivos. Discutem-se os
resultados computacionais, que permitem estabelecer uma relação entre os
objectivos e revelam a aplicabilidade desta abordagem num contexto real. A
finalizar tecem-se alguns comentários ao trabalho apresentado e perspectivam-se
possíveis evoluções.
4.1 Introdução
O Problema de Programação do Corte consiste em determinar um programa de
corte que permita cortar um conjunto de itens – pedidos correspondentes a um
conjunto de linhas de encomenda, ou partes de linhas de encomenda –
minimizando o desperdício resultante e optimizando eventuais critérios adicionais.
Entre soluções de corte com o mesmo valor de desperdício associado, prefere-se
uma solução que corte o número mínimo de padrões, [Haessler, 1975] e [Johnston,
1990].
Dada uma solução de corte, a afectação dos itens às encomendas dos clientes e
o sequenciamento dos padrões origina um programa de corte. Um problema de
sequenciamento consiste em determinar uma permutação de padrões que optimize
um dado critério. Os critérios utilizados relacionam-se com aspectos do fluxo de
trabalho – limitações físicas do espaço de trabalho e do armazém, e a eficiência da
organização do trabalho, em termos logísticos e temporais. Exemplos de objectivos
relacionados com ambos os aspectos são a minimização do espalhamento das
encomendas e a minimização do número de encomendas parcialmente produzidas
(pilhas abertas). A minimização do número de movimentos nas navalhas para
cortar um programa de corte é um objectivo que se relaciona com a eficiência da
execução em termos temporais. Os problemas de sequenciamento relacionam-se
com o Problema do Caixeiro Viajante (PCV), mas não existe uma matriz de custos
predeterminada. Ou seja, o valor da função objectivo, regra geral, só pode ser
calculado conhecendo a permutação completa. Estes problemas, com um único
Programação do corte
53
objectivo são, no geral, NP-difíceis. As abordagens heurísticas e metaheurísticas
têm-se revelado apropriadas para a sua resolução.
Para resolver o problema de programação do corte, no caso de estudo, utiliza-se
uma abordagem de resolução hierárquica.
Selecção das encomendas
ou partes de encomenda a
cortar
Agregação dos pedidos por
larguras
Determinação duma solução
de corte
Afectação dos itens na
solução de corte às
encomendas
Sequenciamento de padrões
Figura 4.1: Determinação de um programa de corte
Numa primeira fase, seleccionam-se as encomendas ou partes de encomenda a
cortar. Os pedidos correspondentes referem-se a bobinas da mesma família e com
igual diâmetro. Calcula-se o número de bobinas a cortar para cada largura, o que
corresponde a agregar os dados por largura. Considerando estes dados, resolve-se o
problema clássico de corte uni-dimensional. O critério de optimização é a
minimização do desperdício associado ao corte. O espaço de soluções é definido por
restrições de satisfação da procura, dentro dos limites impostos pela tolerância, e
restrições de carácter técnico. O modelo matemático que se utilizou e o respectivo
método de resolução descrevem-se em 4.2.2 e 4.2.3, respectivamente. Em seguida,
procede-se à afectação dos itens às encomendas dos clientes e geram-se as ordens
de corte, obtendo-se um programa de corte. A afectação tem por objectivo
minimizar o número de padrões que cortam cada encomenda e descreve-se o
algoritmo de resolução em 4.2.4.
54
Capítulo 4
Os problemas de sequenciamento de padrões foram tratados fora do âmbito do
caso de estudo. A secção 4.3 é dedicada ao Problema de Minimização do Número de
Padrões (PMNP). Descreve-se uma nova heurística para este problema e comparase o seu desempenho com outras abordagens. Na secção 4.4, aborda-se o Problema
de Minimização do número de Movimentos das Navalhas (PMMN). Descrevem-se
algumas heurísticas para o problema e apresenta-se um estudo comparativo. Na
secção 4.5, propõe-se um novo problema de sequenciamento que resulta de
considerar como objectivos a minimização do espalhamento médio das encomendas
e a minimização do número máximo de pilhas abertas. Aproximou-se o conjunto
óptimo de Pareto utilizando diferentes versões de um algoritmo evolutivo para
optimização multi-objectivo. As experiências computacionais indicam que esta
abordagem é adequada para resolução de instâncias reais do problema. Por outro
lado, permitem tirar conclusões acerca da relação de variação entre os respectivos
problemas de objectivo único. Este estudo responde, em termos práticos, às
conjecturas teóricas de Yanasse [Yanasse, 1997].
4.2 Problema de Corte
4.2.1 Revisão da bibliografia
O Problema de Corte (PC) tem sido alvo de um grande interesse na literatura da
especialidade. Este problema enquadra-se na área dos problemas de corte e
empacotamento, que constitui um corpo de literatura bastante vasto. Problemas
relacionados são o Problema Saco-Mochila (PSM), Problema de Bin-Packing (PBP)
(que lhe é equivalente1), Problema de Sortidos. Como surveys podemos encontrar os
trabalhos de [Dyckhoff, 1990] e [Dowsland e Dowsland, 1992]. Nesta dissertação
trata-se apenas com o problema de corte unidimensional, 1/V/I/R na tipologia de
1
Embora estruturalmente se trate do mesmo problema, as características das instâncias induzem a
designações diferentes. No PC os itens a cortar são em número elevado (da ordem dos milhares),
distribuídos por um número relativamente pequeno de larguras (da ordem de meia centena). No
BPP o número de itens a cortar é aproximadamente igual ao número de diferentes larguras.
Programação do corte
55
Dyckhoff, e algumas das suas extensões. Por este motivo, referências a trabalhos
fora deste contexto, que não sejam relevantes, são omitidas.
O PC é equivalente ao PBP que é fortemente NP-completo [Garey e Johnson,
1979] e, como tal, o PC também é fortemente NP-completo. Para alguns autores, as
instâncias do PC dividem-se em difíceis e fáceis. As instâncias difíceis são aquelas
onde a largura média dos itens a produzir é aproximadamente metade da largura
da peça original. Nestas instâncias torna-se mais difícil obter combinações de
larguras aproveitando a largura disponível. Para as instâncias fáceis as soluções
heurísticas têm boa qualidade.
O artigo de Kantorovich
parece ser o primeiro trabalho onde o PC é
identificado [Kantorovich, 1960]. Este artigo, escrito em russo no original em 1939,
foi traduzido para inglês e publicado apenas em 1960. Gera-se uma lista de
padrões de corte seguido de uma aplicação de Programação Linear (PL). A solução
linear é arredondada e assumida como sendo a óptima. Na realidade o
arredondamento da solução linear pode nem sequer conduzir a uma solução
admissível. Por outro lado, a geração de todos os padrões nos problemas reais não é
uma tarefa exequível.
Os trabalhos de Gilmore e Gomory – [Gilmore e Gomory, 1961] e [Gilmore e
Gomory, 1963] – marcam a “história” do PC. A formulação matemática utilizada e
o desenvolvimento da técnica da geração implícita de colunas, são ainda hoje a
base das abordagens utilizadas para o problema. No primeiro trabalho, o problema
é formulado através do modelo de Programação Linear Inteira, (4.1)-(4.3), em que
os padrões são representados por colunas que não é necessário conhecer a priori.
Assume-se que se pretende cortar d1,..., d m unidades de itens com larguras
w1,...,w m , respectivamente.
min ∑ j =1 x j
n
(4.1)
sujeito a:
∑ j =1 aij x j
n
≥ di ,
i = 1,..., m
(4.2)
x j ≥ 0 e inteiro,
j = 1,..., n
(4.3).
56
Capítulo 4
A j-ésima coluna, [a1j a2j
amj ]T , da matriz de restrições representa o j-ésimo
padrão de corte admissível, onde aij é o número de itens da i-ésima largura
cortados nesse padrão. A variável de decisão x j , j = 1,..., n , é o número de peças a
cortar usando o j-ésimo padrão. A função objectivo em (4.1) é a minimização do
número total de peças a cortar. As restrições (4.2) garantem a obtenção do número
de itens em falta. Em (4.3) assegura-se que as variáveis de decisão são inteiras e
não negativas. Quando se utiliza uma formulação de colunas, o problema genérico,
que inclui todas as possíveis colunas, neste caso (4.1)-(4.3), denomina-se por
Problema Mestre (PM). Por Problema Mestre Restrito (PMR) entende-se o
problema que resulta de considerar a formulação do PM apenas com um
subconjunto de colunas. Gilmore e Gomory propõem resolver a relaxação linear do
problema original da forma que se passa a descrever. Cria-se um PMR inicial com
tantas colunas como o número de itens a cortar e onde em cada uma dessas
colunas
se
corta
apenas
um item, tantas vezes quantas as possíveis.
Iterativamente resolve-se a relação linear do PMR actual, pelo método do simplex.
Quando numa iteração do simplex não existe uma coluna candidata à base,
averigua-se se existe alguma coluna não considerada e que seja atractiva – com
custo reduzido apropriado para entrar na base. Para tal, resolve-se um problema –
o subproblema de geração de colunas – em que se maximiza a contribuição da
coluna para a redução do valor da função objectivo. Quando não existe nenhuma
coluna que possa melhorar o valor actual da função objectivo, atingiu-se um óptimo
linear. A solução obtida é linear e o seu arredondamento está “próximo” do óptimo
inteiro. A solução linear é arredondada por uma heurística.
Os trabalhos de Haessler, [Haessler, 1971, 1975], apresentam um método de
redução exaustiva repetida, que consiste em elaborar uma solução construindo e
fixando os padrões um a um. Este método heurístico tem como objectivo adicional
controlar o número de padrões na solução. Consideram-se, implicitamente,
critérios adicionais relacionados com a qualidade da solução, tais como o número
Programação do corte
57
de movimentos das navalhas ou reprocessamento de alguns itens, que o autor
refere como não linearidades.
Dada uma lista residual de pedidos, constrói-se um padrão que satisfaça um
determinado nível de aspiração. Determina-se o número máximo de vezes que o
padrão pode ser cortado e fixa-se a sua utilização. Para cada pedido, calcula-se o
número de itens cortados no padrão e actualiza-se a lista residual de pedidos.
Repete-se esta sequência de passos até esgotar a lista de pedidos. Para construir
um novo padrão, calculam-se dois descritores: a estimativa do número total de
peças necessárias para satisfazer os pedidos residuais e o número médio de itens a
cortar em cada uma dessas peças. Estabelecem-se restrições a verificar pelo novo
padrão em relação aos seguintes parâmetros: valor máximo permitido para o
desperdício; número máximo e mínimo de itens no padrão e número mínimo de
repetições para o padrão. Quando não é possível encontrar um padrão que
verifique as restrições, estas são sistematicamente relaxadas por ajustamento dos
respectivos parâmetros.
Até à última década, os desenvolvimentos sobre este problema concentraram-se
essencialmente em processos heurísticos. A existência de tolerâncias em várias das
indústrias onde se aplica permite que, na prática, as soluções heurísticas sejam
bastante satisfatórias, se não óptimas.
Goulimis [Goulimis, 1990] apresenta uma abordagem de resolução exacta no
âmbito da indústria do papel. Utiliza-se uma formulação de colunas em PLI,
considerando explicitamente os padrões que podem ser utilizados, onde o objectivo
é a minimização do desperdício global e as restrições de satisfação da procura
envolvem tolerâncias. Considera-se uma variável adicional que conta o total de
carretéis a utilizar. Gera-se previamente um conjunto de padrões admissíveis. O
problema é resolvido através dum algoritmo que combina uma fase de introdução
de planos de corte de Gomory, seguida da aplicação dum algoritmo de pesquisa em
árvore com ramificação e limitação com restrições sobre o valor das variáveis. As
instâncias de Programação Linear são resolvidas recorrendo a um pacote de
58
Capítulo 4
software. Esta abordagem conduz a soluções não óptimas, dado que apenas se
consideram os padrões “mais eficientes” quando o número de padrões admissíveis é
“demasiado grande”. Os resultados, relativos a um conjunto de 500 instâncias
difíceis geradas aleatoriamente, reportam um total de 11% de problemas não
resolvidos, sendo de notar que estas instâncias são de pequena dimensão (em
média 12 itens por instância e um máximo de 4 itens por padrão). A abordagem
revela-se inadequada para problemas fáceis.
O PC continua a ser um desafio para os investigadores. O desenvolvimento
tecnológico e os avanços em termos de investigação fundamental contribuíram
decisivamente para o panorama actual. Esta evolução pode ser ilustrada por duas
citações referidas em [Hinxman, 1980]. A primeira é acerca da abordagem de
Gilmore e Gomory e do desenvolvimento sucessivo de procedimentos para o
subproblema Saco-Mochila: “Stainton1 observa que dum ponto de vista prático o
custo de proceder como eles (referindo-se a Gilmore e Gomory) prescrevem seria
proibitivo – o custo computacional seria superior a quaisquer poupanças que se
pudessem obter na utilização do ferro”. A segunda refere-se ao corpo reduzido de
literatura nesta área no final da década de 70 e alerta que “a quantidade de
literatura referente ao problema de corte é muito limitada, o que se deve ao facto
de muitos modelos, procedimentos e programas terem sido desenvolvidos por
empresas e mantidos confidenciais.” 2
A formulação de Gilmore e Gomory, para além de suportar a maior parte das
abordagens ao PC, permitiu estabelecer algumas propriedades importantes. A
propriedade do arredondamento superior, conhecida por integer round-up property
(IRUP) na literatura anglo-saxónica, verifica-se para um problema de minimização
em programação linear inteira, se para qualquer instância, o óptimo é igual ao
1
Não se consultou o trabalho referido. A referência é Stainton, R. S., 1977, “The cutting stock
problem for the stock-holder of steel reinforcement bars”, Operational Research Quartely, 28, pp
139-149.
2
Esta citação refere-se ao trabalho Abraham, P. M., Kirby, S. J. e Ng, Y. G., 1976, “Production
schedule of a float glass process plant”, Systems Engineering Science and Industrial Mangement,
University of Liverpool, que não se consultou.
Programação do corte
59
arredondamento superior do limite inferior dado pelo óptimo da relaxação linear. O
problema de corte clássico goza de IRUP para algumas classes de instâncias
[Marcotte, 1985], embora seja NP-difícil decidir se uma determinada instância
goza de IRUP [Marcotte, 1986]. A propriedade de arredondamento superior
modificada,
conhecida
por
modified
integer
round-up
property
(MIRUP),
introduzida em [Scheithauer e Terno, 1995b], verifica-se se o óptimo não excede o
arredondamento superior do óptimo da relaxação linear acrescido de uma unidade.
Existe a conjectura de que o problema de corte clássico goza de MIRUP
[Scheithauer e Terno, 1995b] e não foi ainda encontrada nenhuma instância para a
qual o gap de linearidade seja pelo menos de 2 unidades [Scheithauer et al, 2001].
Os trabalhos relevantes da última década, com excepção da heurística de
Wäscher e Gau, [Wäscher e Gau, 1996], concentram-se no desenvolvimento de
abordagens exactas para o PC. Após se ter revelado a eficiência do método de
partição e geração de colunas, que resulta da combinação da geração implícita de
colunas com o método de pesquisa em árvore com ramificação e limitação, na
resolução do problema de corte binário [Vance et al, 1996], vários autores
desenvolveram, com sucesso, algoritmos de partição e geração de colunas para a
obtenção de soluções óptimas para o PC. De entre estes trabalhos salientam-se
[Scheithauer e Terno, 1995a], [Vance, 1998], [Vanderbeck, 1999], [Vanderbeck,
2000b], [Valério de Carvalho, 1999], [Degraeve e Schrage, 1999] e [Degraeve e
Peeters, 2002]. No capítulo 5, descreve-se este método mais detalhadamente, assim
como as abordagens que se apresentam nos trabalhos acima referidos. Em
[Scheithauer et al, 2001] introduz-se outro tipo de abordagem exacta, que combina
a técnica de geração implícita de colunas com a introdução de planos de corte de
Chvatal-Gomory. Em [Belov e Scheithauer, 2002], esta ideia é retomada e
adaptada ao PC em que as peças originais têm diferentes dimensões.
Recentemente, Schilling e Georgiadis apresentam uma extensão do PC que
integra outros aspectos, para além da minimização do desperdício [Schilling e
Georgiadis, 2002]. Numa formulação, em PLIM, a função objectivo é a
60
Capítulo 4
maximização do lucro e integra receitas, custos da matéria prima, custos de
mudança entre padrões e custos de reciclagem. As variáveis incluem a forma como
é cortado cada carretel, e resolve-se o modelo através de pesquisa em árvore com
ramificação e limitação no GAMS/CPLEX. Este modelo é bem adaptado às
características dos problemas reais e promissor para aplicação prática, embora os
resultados computacionais apenas refiram problemas de dimensão modesta. Nos
exemplos apresentados, o número máximo de larguras considerado é 9 e o número
máximo de rolos por padrão é 6, o que corresponde a instâncias de pequena
dimensão.
4.2.2 Modelo de optimização do corte
Para resolver as instâncias do Problema de Corte, no caso de estudo, utilizou-se
um modelo de PI, que se baseia na formulação de Gilmore e Gomory (4.1)-(4.3).
Para um determinado diâmetro e família calcula-se o número de itens d1,..., dm , de
cada largura, w 1 ,...,w m , i =1,...,m , respectivamente, a produzir num mesmo
programa de corte (agregando informação relativa a encomendas diferentes).
Assume-se uma tolerância α na satisfação dos pedidos. A formulação resultante é
a seguinte.
[PC1] min ∑ j =1 x j
n
(4.1)
sujeito a:
n
(1 − α ) d i  ≤ ∑ j =1aij x j ≤ (1 + α ) d i  ,
i = 1, ..., m
x j ≥ 0 e inteiro,
j = 1, ..., n .
(4.4)
As restrições em (4.4) garantem que o número de itens obtido para cada largura
está compreendido entre os limites impostos pela tolerância. A experiência prática
com a formulação original (4.1)-(4.3) mostrou que as soluções originavam muita
sobreprodução. A introdução dum limite superior sobre o número de itens cortados
para cada largura garante a não sobreprodução, eliminando a criação de stocks. É
curioso verificar que, na generalidade, as abordagens que se apresentam na
Programação do corte
61
literatura da especialidade, utilizam formulações em que as restrições de
satisfação da procura têm sinal de maior ou igual, descurando este aspecto de
grande importância nos problemas reais. A largura de carretel não utilizada num
padrão pode ser aproveitada, pelo responsável pelo planeamento, para cortar itens
extra a afectar a encomendas no plano actual ou a encomendas a satisfazer no
futuro.
Introduzindo variáveis auxiliares inteiras y i , i = 1,..., m , que representam o
desvio absoluto em relação ao número exacto de itens pedidos para cada largura,
obtém-se a formulação final, em PLI, com variáveis limitadas.
[PC2] min ∑ j =1 x j
n
sujeito a:
∑ j =1 aij x j − y i = (1 − α )di  ,
i = 1,..., m
x j ≥ 0 e inteiro,
j = 1,..., n
0 ≤ y i ≤ 2α d i  e inteiro,
i = 1,..., m
n
(4.5)
(4.6).
As restrições em (4.5) garantem a obtenção do número mínimo de itens e, em
conjunto com a imposição de limites nas variáveis em (4.6), asseguram que não se
criam stocks.
4.2.3 Algoritmo de resolução do problema de corte
Para resolver o modelo do problema de corte [PC2] optou-se por utilizar a
heurística
de
Gilmore
e
Gomory,
descrita
anteriormente,
com
algumas
modificações. O objectivo era o desenvolvimento duma ferramenta de suporte à
tomada de decisão. O algoritmo calcula soluções heurísticas de boa qualidade, e
permite facilmente introduzir alterações numa solução e proceder à consequente
reavaliação. Na situação real do caso em estudo, não é necessária a obtenção de
soluções exactas. A existência de tolerância na satisfação da procura fornece aos
responsáveis pelo planeamento alguma flexibilidade na geração de possíveis
soluções.
62
Capítulo 4
Resolve-se a relaxação linear do PM utilizando a técnica da geração implícita
de colunas. Em cada iteração, resolve-se a relaxação linear (RL) do PMR actual
utilizando o método revisto do Simplex com variáveis limitadas. Devido à
existência de tolerância na satisfação da procura, o arredondamento da solução
final conduz a um plano de corte aproximado do óptimo.
No subproblema de geração de colunas, integram-se as restrições definidas
pelas limitações técnicas da máquina de corte, de forma a que as colunas geradas
representem padrões de corte admissíveis. Considere-se que o número máximo de
itens a cortar num padrão é N . A largura dum carretel é W e, devido a restrições
do equipamento, a largura utilizada no corte de um padrão deve ser pelo menos
W b . Num padrão de corte podem-se cortar no máximo N s itens com largura não
superior a w s , que se denominam itens “pequenos”. Só são produzidos itens cuja
largura não seja inferior a w st , a largura mínima comercializável. Colunas a
introduzir no problema mestre restrito podem ser geradas, conforme são
necessárias, resolvendo o seguinte subproblema saco-mochila com restrições
adicionais.
[PSM] max∑i =1 bi ai
m
(4.7)
sujeito a:
W b ≤
∑i aiw i ≤ W

∑i ai ≤ N
s

∑i :w i ≤w s ai ≤ N
ai ≥ 0 e inteiro,
W − ∑ aiw i ≥ w st
i

a
∑i i < N

ou 
∑
a < N s , se W − ∑i aiw i ≤ w s
i :w i ≤w s i

s
s
∑i :w ≤w s ai ≤ N , se W − ∑i aiw i > w
i

i = 1,..., m
(4.8)
(4.9)
onde os bi ’s são os valores das variáveis duais para a solução óptima da relaxação
linear do problema mestre restrito actual, e ai é o número de itens da largura i a
cortar no padrão.
Programação do corte
63
A função objectivo em (4.7) maximiza a contribuição para a redução do valor da
função objectivo da RL do PMR actual pela eventual introdução da coluna gerada.
A condição (4.8) explicita duas situações que ocorrem alternativamente:
− ou a soma das larguras dos itens no padrão está compreendida entre a largura
mínima utilizável e a largura do carretel, e então o número total de itens e o
número total de itens “pequenos” não podem exceder os respectivos valores
máximos; ou
− a largura não aproveitada tem de ser utilizada para cortar um item adicional
cuja largura é não inferior à largura mínima que se pode comercializar, o
número de itens cortados é inferior ao número máximo e, se a largura não
aproveitada só é suficiente para cortar um item “pequeno”, então o número de
itens “pequenos” é inferior ao respectivo valor máximo, se não o número de itens
“pequenos” não excede o respectivo valor máximo.
Uma coluna (a1,...,am )T , gerada pela resolução deste problema é atractiva se o seu
custo reduzido é negativo, ou seja, se
∑i =1 bi ai
m
> 1 . Neste caso, introduz-se a
coluna no PMR actual, dando origem a um novo PMR, e resolve-se em seguida a
sua relaxação linear.
Para resolver o subproblema utiliza-se um algoritmo de programação dinâmica
baseado no algoritmo apresentado em [Gilmore e Gomory, 1963] com as
modificações necessárias para garantir as restrições adicionais, e que se apresenta
em algoritmo 4.1.
Indexam-se os itens são por ordem não decrescente dos valores de lucro por
unidade de largura, ou seja, de acordo com:
bi
b
≥ i +1 , i = 1,..., m − 1
w i w i +1
(4.8).
Introduz-se uma variável am +1 com largura w m +1 = 1 e lucro bm +1 = 0 .
Um m-vector x = (x 1,..., x m ) diz-se uma extensão dum s-vector y = (y 1,..., y s ) ,
m ≥ s , quando as primeiras s componentes de x coincidem com as componentes
de y . Um m-vector x = (x 1,..., x m ) é lexicograficamente maior do que um s-vector
64
Capítulo 4
y = (y 1,..., y s ) sse ∃ i , 1 ≤ i < min {m, s} para o qual as primeiras i componentes de
x coincidem com as componentes de y e x i +1 > y i +1 .
Início de Saco-Mochila
Passo 1
Reindexar os itens de acordo com (4.8);
z * = 1 ; zˆ = 0 ; Wˆ = 0 ; W * = 0 ; n̂ = 0 ; n̂ s = 0 ;
Para ( i = 1 até i = m ) fazer ai* = 0 ;
Passo 2
{* Determinar o maior vector candidato a admissível *}
Para ( k = 1 até k = m ) fazer
a = W −Wˆ w ;
k
(
Se ( w k
) 
k
≤ws
(
) então ak = min ak , N − nˆ, N s − nˆ s
) senão ak = min( ak , N − nˆ ) ;
Se ( nˆ + ak = N e Wˆ + ak w k ≤ W
) então ak = ak − 1 ;
ˆ
ˆ
W = W + w k ak ; zˆ = zˆ + bk ak ; nˆ = nˆ + ak ; Se ( w k ≤ w s ) então nˆ s = nˆ s + ak ;
− w st
Passo 3
{* Testar a admissibilidade do vector actual e se melhora a melhor solução actual *}
Se (Wˆ ≥ W b ou (Wˆ < W b e Wˆ ≤ W − w st )) então
Se ( zˆ > z * ou ( zˆ = z * e Wˆ > W * )) então
{ * guardar solução *}
Para ( i = 1 até i = m ) fazer ai* = ai ;
W * = Wˆ ; z * = zˆ ;
Passo 4
{* Determinar o maior índice k tal que ak ≠ 0 *}
k = m ; Enquanto ( k > 1 e ak = 0 ) fazer k = k − 1 ;
Passo 5
{* Decrementar ak e testar se uma extensão permite melhoramentos *}
ak = ak − 1 ; nˆ = nˆ − 1 ; Wˆ = Wˆ − w k ; zˆ = zˆ − bk ;
Se ( w k ≤ w s ) então nˆ s = nˆ s − 1 ;
W * −Wˆ
bk +1 > z * − zˆ então Seguir para Passo 7
Se
w k +1
senão continuar
Passo 6
{* Uma extensão da solução actual não conduz a melhoramentos *}
i = k − 1 ; Enquanto ( i > 0 e ai = 0 ) fazer i = i − 1 ;
k = i ; {* k é o maior índice i, 1 ≤ i ≤ k − 1 tal que ai ≠ 0 *}
Se ( k = 0 ) então Terminar senão Seguir para Passo 5
Passo 7
{*Construir uma extensão da solução actual (parcialmente admissível) *}
Para ( i = k + 1 até i = m ) fazer
 W − Wˆ 
ai = 
;
 wi 
(
Se ( wi ≤ ws ) então ai = min ai , N − nˆ, N s − nˆ s
) senão
ai = min( ai , N − nˆ ) ;
Se ( nˆ + ai = N e Wˆ + wi ai ≤ W − wst ) então ai = ai − 1 ;
Wˆ = Wˆ + wi ai ; zˆ = zˆ + bi ai ; nˆ = nˆ + ai ; Se ( wi ≤ ws ) então nˆ s = nˆ s + ai ;
Seguir para Passo 3
Fim de Saco-Mochila
Algoritmo 4.1: Algoritmo para o subproblema saco-mochila
Programação do corte
65
O algoritmo gera, por ordem lexicográfica decrescente, uma sequência de vectores
da forma (a1,..., am ) . Para uma solução não final (a1,..., am ) , o lucro é zˆ = ∑i =1 bi ai ,
m
m
a largura utilizada tem o valor Wˆ = ∑i =1w i ai e o número total de objectos já
introduzidos na solução é nˆ =
∑i =1 ai ,
m
dos quais nˆ s = ∑i =1,...,m :w
i
a
≤w s i
são
objectos “pequenos”. Os vectores gerados representam soluções que verificam as
restrições de largura máxima e de limite sobre o número de objectos (Wˆ ≤ W ,
nˆ ≤ N , nˆ s ≤ N s , e nˆ < N se Wˆ ≤ W − w st ). Uma solução (a1,..., am ) é candidata a
óptima se verifica as restrições de largura mínima: verifica Wˆ ≥ W b ou verifica
(
)
* , tem
Wˆ < W b e Wˆ ≤ W − w st . A melhor solução obtida guarda-se em a* = a1*,...,am
lucro z * e utiliza uma largura total com valor W * .
O algoritmo inicia com z * = 1 (pretende-se uma solução de valor superior a 1) e
W
*
= 0 . O primeiro vector gerado é o maior vector
∑i =1w i ai
m
<W
(a1,..., am )
que satisfaz
e verifica as condições sobre os limites no número de objectos
(calcula-se no Passo 2). Testa-se então se o lucro associado excede o lucro do
melhor vector já encontrado e se se verificam as condições relativas à largura
mínima (Passo 3). Se sim, actualiza-se a solução. Se não, avalia-se se uma
extensão do maior vector, menor do que (a1,..., am ) , pode melhorar a solução actual.
Seja k o maior índice tal que ak ≠ 0 (pesquisa-se no Passo 4). Então, (a1,..., ak )
tem todas as componentes não nulas de (a1,..., am ) e a sua última componente é não
nula. No maior m-vector, menor do que (a1,..., am ) , o valor da componente k é
inferior a ak − 1 , ou seja, é uma extensão de (a1,..., ak − 1) . Para que essa extensão
melhore z * é necessário que, ao relaxar a restrição de integralidade em ak +1 ,
fazendo ak +1 = (W −Wˆ ) / w k +1 , se verifique um melhoramento (avaliação no Passo
5). Neste caso, calcula-se a maior extensão de
(a1,..., ak
− 1) que satisfaz as
condições de admissibilidade em relação à largura máxima, e aos limites no
número de objectos (no Passo 7). Retorna-se ao teste de melhoramento de z * e
procede-se à sua eventual actualização (Passo 3). Se no teste do Passo 5,
(a1,..., ak
− 1) não tem uma extensão atractiva e se k > 1 , o próximo vector que pode
ter uma extensão que conduza a um melhoramento é o maior ( k − 1 )-vector, menor
66
Capítulo 4
que (a1 ,..., a k − 1) . No Passo 6, o algoritmo determina se é possível construir esse
vector e, se sim, retorna ao Passo 5 para testar a existência duma extensão que
possa conduzir a melhoramentos. Caso contrário, a melhor solução foi encontrada e
o algoritmo termina.
O valor final de z * é o máximo pretendido quando o algoritmo termina no
Passo 6, devido à ordem pela qual os vectores são gerados e testados no Passo 3.
Começa-se por testar o maior vector admissível para o qual zˆ > 1 . Sucessivamente,
no Passo 3, testa-se se o próximo vector que verifica as restrições sobre a largura
máxima e sobre o número máximo de objectos também verifica as restrições de
largura mínima e se zˆ > z * . Como de cada vez que se verifica um melhoramento
no Passo 3, se guarda o vector associado e se actualiza a melhor solução já
encontrada, no final, a solução óptima está em a* .
Comentários sobre a implementação
A experiência do caso de estudo mostrou que a abordagem utilizada, embora
baseada numa técnica não recente e não exacta, é adequada à resolução dos
problemas reais com que se deparam os responsáveis pelo planeamento do corte.
Os valores típicos para os parâmetros do modelo são os seguintes:
−
W =420.0 (largura máxima utilizável num carretel, em cm);
−
W b =410.0 (largura mínima a cortar num carretel, em cm);
−
N =8 (número máximo de rolos por padrão);
−
N s =4 (número máximo de rolos “pequenos” por padrão);
−
w s =33.0 (largura máxima dum item “pequeno”, em cm);
−
w st =10.5 (largura mínima comercializável, em cm);
Os valores para os parâmetros W , W b e w st variam em função do tipo de papel e
da gramagem a cortar. Para os parâmetros N s e N , os valores são regra geral
constantes, embora os responsáveis do planeamento aceitem aumentar esses
valores, uma a duas unidades, dependendo da distribuição dos pedidos e das
condições da produção.
Programação do corte
67
O algoritmo foi codificado em Pascal e compilado em Turbo Pascal 6.0. O
programa resultante aceita um máximo de 60 larguras diferentes. O programa
integrou-se no Sistema de Apoio à Decisão e funciona duma forma interactiva,
conforme se ilustra no capítulo 6.
4.2.4 Afectação dos itens numa solução de corte às encomendas
Dada uma solução de corte, estabelece-se a correspondência entre cada um dos
itens que a constituem e o destino respectivo. Este processo corresponde à
desagregação dos dados relativos a larguras em linhas de encomenda (diferentes
linhas de encomenda podem corresponder a pedidos para uma mesma largura). O
objectivo é a minimização do número de padrões que cortam cada encomenda. No
caso de estudo não se implementaram processos de sequenciamento dos padrões de
corte e o processo de afectação estabelece um plano de corte tendo em vista a
minimização do espalhamento das encomendas.
Dado que a solução de corte não é exacta, pode acontecer que ocorra
subprodução ou sobreprodução de algumas larguras. Na elaboração interactiva dos
programas de corte, é o responsável pelo planeamento que gere estas questões. As
faltas são controladas durante a construção da solução de corte. Em relação às
bobinas em excesso, a afectação resulta da interacção do responsável pelo
planeamento, que confirma, ou não, as sugestões que lhe são propostas, como se
ilustrará no exemplo de aplicação do algoritmo.
O algoritmo de afectação também é utilizado como componente dum
procedimento para o planeamento e escalonamento da capacidade, que se
apresenta em 5.2, onde se executa sem a intervenção do responsável pelo
planeamento. Nesse caso, as faltas são ignoradas e as bobinas em excesso são
afectadas a stock. Pressupõe-se assim, que existe um cliente fictício – stock. As
bobinas afectadas a este cliente, na realidade, são livres e permanecem em
armazém até uma possível afectação a uma linha de encomenda.
Para resolver este problema, utiliza-se uma heurística que se descreve no
algoritmo 4.2. Começa-se por calcular, para cada padrão P j , o número de bobinas
68
Capítulo 4
ainda não afectadas BNAP( P j ), que inicialmente é o número total de bobinas
cortadas no padrão. Da mesma forma, para cada cliente C i , calcula-se o número
de bobinas ainda não afectadas BNAC(C i ), que no início é a soma das bobinas
pedidas em todas as linhas de encomenda associadas ao cliente i. Para cada padrão
e cada linha de encomenda, calcula-se o número de bobinas que podem ser
afectadas: para as larguras coincidentes, é o mínimo entre o número de pedidas e o
número de cortadas no padrão; caso contrário, é zero. Estes valores dão origem a
uma matriz de “possíveis afectações”. Para cada cliente, somam-se os valores de
“possíveis afectações” de cada padrão às suas linhas e obtém-se o número de
bobinas desse padrão, pedidas pelo cliente, que podem ser satisfeitas.
Como, num mesmo padrão se podem cortar bobinas iguais que se destinam a
linhas de encomenda diferentes, a afectação das bobinas de cada padrão, conduz à
geração de ordens de corte. Cada ordem de corte corresponde ao corte dum dado
número de carretéis – de acordo com as larguras no padrão – produzindo bobinas
que se destinam ao mesmo conjunto de linhas de encomenda. O exemplo de
aplicação do algoritmo, que se apresentará, ilustra como se processa a
determinação de ordens de corte. Estabelecem-se primeiro as ordens de corte que
permitam satisfazer completamente ou “estar mais perto” de satisfazer
completamente o maior número de linhas de encomenda. Assim, afectam-se as
bobinas no padrão de forma a gerar o menor número possível de ordens de corte,
ou seja, o menor número possível de destinos para o total dessas bobinas.
Em cada iteração, determina-se o padrão que tem o maior número de bobinas
ainda não afectadas. Enquanto existirem linhas de encomenda não satisfeitas, às
quais essas bobinas possam ser afectadas, procede-se à correspondente afectação.
Dada a afectação parcial actual, e dado o padrão que se está a tratar,
iterativamente, identifica-se o cliente ao qual se pode afectar o maior número
possível de bobinas. Procede-se a todas as possíveis afectações às linhas de
encomenda desse cliente, actualizando as ordens de corte no padrão.
Programação do corte
69
Quando, num dado padrão ainda existem bobinas por afectar e já não existem
pedidos por satisfazer, para cada largura de bobina não afecta, pesquisa-se no
conjunto de pedidos se existe alguma linha de encomenda à qual se pode afectar no
limite superior da tolerância (em relação ao peso pedido) e sugerem-se as possíveis
afectações nestas condições. Caso contrário, sugere-se afectar as bobinas em
sobreprodução a possíveis linhas de encomenda, que não tinham sido consideradas
no conjunto de pedidos e cuja produção esteja planeada para períodos posteriores.
Quando também não existem linhas nessas condições, ou quando o algoritmo é
utilizado sem a interacção do responsável pelo planeamento, as bobinas por afectar
são consideradas stock.
O processo termina quando já não existem nenhum padrão com bobinas por
afectar.
Início de Afectação
Para todo o j, calcular BNAP( P j );Para todo o i, calcular BNAC( C i );
calcular a matriz de “possíveis afectações”;
Enquanto ( ∃j : BNAP( P j )>0) {* existem bobinas por afectar *}
fazer
seja P j o padrão para o qual BNAP( P j ) é o máximo; {* escolher o padrão a afectar *}
em caso de empate escolher o que pode afectar o maior número de bobinas a linhas de
encomenda parcialmente satisfeitas.
Enquanto (existem linhas de encomenda que podem ser afectadas a P j e BNAP( P j )>0)
fazer
seja C i o cliente com maior número de bobinas que podem ser afectadas de P j ; em caso
de empate, escolher o que tiver maior número de linhas de encomenda já parcialmente
satisfeitas;
proceder a todas as possíveis afectações de bobinas em P j às linhas de C i ;
actualizar as ordens de corte associadas a P j ;
actualizar os valores da matriz de “possíveis afectações”;
Para todo o j, actualizar BNAP( P j );Para todo o i, actualizar BNAC( C i );
Fim de Enquanto
Enquanto (BNAP( P j )>0) {* os pedidos estão satisfeitos e existem bobinas por afectar *}
fazer
Para cada largura de bobina ainda não afecta em P j fazer
Se existe uma linha sobre essa largura “abaixo” do limite superior da tolerância (peso)
então afectar a essa linha de encomenda
senão afectar a uma linha fora do programa (ou a stock)
Fim de Enquanto
Fim de Enquanto
Fim de Afectação
Algoritmo 4.2: Afectação dos itens na solução de corte às encomendas dos clientes
70
Capítulo 4
Exemplo de aplicação do algoritmo Afectação
Considere-se que se pretende elaborar um programa de corte para o seguinte
conjunto de pedidos, com 10 linhas de encomenda distribuídas por 4 clientes.
Cliente
1
2
3
4
Linha de
encomenda
1
2
3
4
5
6
7
8
9
10
Largura
82
13
84
112
122
102
122
142
82
122
Número
de Bobinas
10
2
5
20
10
20
2
4
10
8
Total
10
37
26
18
Agregando os pedidos de larguras iguais, obtém-se o seguinte conjunto de pedidos.
Largura
13
82
84
102
112
122
142
Total
Número
de Bobinas
2
20
5
20
20
20
4
91
Considere-se que, para este conjunto de pedidos, se obteve a seguinte solução de
corte com três padrões.
padrões
número de
carretéis
1
20
P3
2
Total de bobinas
P1
P2
13
0
0
1
2
82
0
1
0
20
84
5
0
0
5
larguras
102
112
0
0
1
1
0
0
20
20
122
0
1
1
22
142
0
0
2
4
Esta solução de corte produz um total de 93 bobinas, enquanto que no conjunto de
pedidos o total de bobinas é 91, ou seja, na solução existem 2 bobinas em
sobreprodução. Para cada padrão e para cada cliente, calcula-se o número de
bobinas ainda não afectadas, BNAP e BNAC, respectivamente. Calcula-se e a
matriz de “possíveis afectações” – número de bobinas que se podem afectar de cada
padrão a cada linha de encomenda.
Programação do corte
Ci
1
2
71
BNAC( C i )
linha
largura
10
37
1
2
3
4
5
6
7
8
9
10
82
13
84
112
122
102
122
142
82
122
3
26
4
18
P1
P3
P2
10
2
5
20
10
20
2
BNAP( P j )
5
2
2
4
10
8
8
80
8
Como ainda estão por afectar todas as bobinas, tem-se a seguinte afectação parcial
(NA significa “não afectadas”).
P1
número de
carretéis
1
P2
20
0
20-NA
0
P3
2
2-NA
0
0
padrões
13
0
82
0
84
5-NA
larguras
102
112
0
0
122
0
142
0
20-NA 20-NA 20-NA
0
0
0
2-NA 4-NA
Começa-se por escolher o padrão que tem o maior BNAP, ou seja, o P2 . Em
seguida, escolhe-se o cliente ao qual se pode afectar o maior número possível de
bobinas de P2 . É o cliente 2, porque tem 30 bobinas nestas condições – 20 da linha
4 mais 10 da linha 5 – enquanto o cliente 1 tem 10, o 3 tem 22 e o quatro tem 18.
As linhas 4 e 5 são integralmente satisfeitas por bobinas de P2 . Como o padrão
corta 20 carretéis e desses, em apenas 10 vão ser cortadas bobinas da linha 5, o
padrão desdobra-se em 2 ordens de corte: OC 1 e OC 2 .
A afectação parcial passa a ser a que se segue.
padrões
ordens
de corte
13
82
84
1
0
0
5-NA
OC 1
10
0
10-NA
0
10-NA 10-L4 10-L5
0
OC 2
10
0
10-NA
0
10-NA 10-L4 10-NA
0
2
2-NA
0
0
P1
P2
P3
larguras
102
112
número de
carretéis
0
0
0
0
122
142
0
0
2-NA 4-NA
Actualizam-se os valores de bobinas por afectar e a matriz de “possíveis
afectações”, passando a ter-se a seguinte situação.
72
Capítulo 4
Ci
1
2
3
BNAC( C i )
linha
largura
10
7
1
2
3
4
5
6
7
8
9
10
82
13
84
112
122
102
122
142
82
122
26
4
18
P1
P3
P2
10
2
5
0
0
20
2
BNAP( P j )
5
0
2
4
10
8
8
50
8
Agora, C 3 é o cliente ao qual se pode afectar o maior número possível de bobinas
de P2 – que é 22; 20 da linha 6 e 2 da linha 7. Afectam-se as 20 bobinas de largura
102 à linha 6 e distribuem-se pelas OC 1 e OC 2 . No P2 estavam por afectar 10
bobinas da largura 122 (na OC 2 ), das quais 2 são afectadas à linha 7. Isto leva a
um desdobramento da OC 2 em OC 2 e OC 3 . A OC 2 , onde ficam as bobinas que se
acabaram de afectar, passa a cortar 2 carretéis. A OC 3 vai cortar os restantes 8 e
fica com 8 bobinas não afectadas da largura 122.
Passa a ter-se a seguinte afectação parcial.
padrões
ordens número de
de corte carretéis
82
84
1
0
0
5-NA
OC 1
10
0
10-NA
0
10-L6 10-L4 10-L5
0
OC 2
2
0
2-NA
0
2-L6
2-L4
2-L7
0
OC 3
8
0
8-NA
0
8-L6
8-L4 8-NA
0
2
2-NA
0
0
0
P1
P2
larguras
102
112
13
P3
0
0
0
122
142
0
0
2-NA 4-NA
Os valores de bobinas por afectar e a matriz de “possíveis afectações” passam a ser
como se segue.
Ci
1
2
3
4
BNAC( C i )
linha
largura
10
7
1
2
3
4
5
6
7
8
9
10
82
13
84
112
122
102
122
142
82
122
4
18
BNAP( P j )
P1
P2
10
P3
2
5
0
0
0
0
5
0
0
4
10
8
8
28
8
Programação do corte
73
Das bobinas ainda não afectadas em P2 , afecta-se o máximo possível a C 4 . Têm-se
ainda, 20 bobinas por afectar da largura 82, das quais se afectam 10 à linha 9. A
OC 1 , onde se afectam as 10 bobinas da linha 9 fica completa. As 8 bobinas da
largura 122 ainda não afectadas em OC 3 , afectam-se à linha 10, que fica
satisfeita. Por fim, afectam-se as 10 bobinas da largura 82 (ainda não afectadas em
OC 2 e OC 3 ) à linha 1, terminando a afectação de P2 .
padrões
ordens
de corte
13
82
84
1
0
0
5-NA
OC 1
10
0
10-L9
0
10-L6 10-L4 10-L5
0
OC 2
2
0
2-L1
0
2-L6
2-L4
2-L7
0
8
0
8-L1
0
8-L6
8-L4 8-L10
0
2
2-NA
0
0
0
P1
P2
larguras
102
112
número de
carretéis
OC 3
P3
0
0
0
122
142
0
0
2-NA 4-NA
Passam a ter-se os seguintes valores de bobinas por afectar e de “possíveis
afectações”.
Ci
1
2
3
4
BNAC( C i )
linha
largura
0
7
1
2
3
4
5
6
7
8
9
10
82
13
84
112
122
102
122
142
82
122
4
0
BNAP( P j )
P1
P2
0
P3
2
5
0
0
0
0
5
0
0
4
0
0
0
0
8
O padrão com maior número de bobinas não afectadas é P3 . Deste padrão, começase por afectar 4 bobinas de largura 142 à linha 8 (do cliente 3) e em seguida 2 de
largura 13 à linha 2 (de C 2 ). Sobram 2 bobinas de largura 122. Percorrem-se as
linhas já completas, para avaliar se se pode afectar alguma no limite da tolerância.
Assuma-se que a afectação está a decorrer interactivamente – é solicitado ao
responsável pelo planeamento a confirmação da afectação da sobreprodução.
Considerando uma tolerância de 10%, sugere-se afectar 1 bobina extra à linha 5. O
pedido era de 10 bobinas e exceder-se-ia o limite de tolerância no peso, se se
afectassem as 2 bobinas. Sugere-se afectar a outra bobina a uma linha por
74
Capítulo 4
programar – seja a linha 35. O responsável pelo planeamento aceita as sugestões.
O P3 dá origem a duas ordens de corte – OC 4 e OC 5 – cada uma delas cortando
um carretel.
Passa-se a ter a seguinte afectação parcial.
padrões
ordens
de corte
13
82
84
1
0
0
5-NA
OC 1
10
0
10-L9
0
10-L6 10-L4 10-L5
0
OC 2
2
0
2-L1
0
2-L6
2-L4
0
8-L4 8-L10
P1
P2
P3
larguras
102
112
número de
carretéis
0
0
122
142
0
0
2-L7
OC 3
8
0
8-L1
0
8-L6
OC 4
1
1-L2
0
0
0
0
1-L5
OC 5
1
1-L2
0
0
0
0
1-L35 2-L8
0
2-L8
Finalmente, afectam-se as 5 bobinas cortadas em P1 à linha 3 dando origem à
sexta ordem de corte. As ordens de corte são reindexadas e obtém-se o seguinte
programa de corte final.
ordens
de corte
OC 1
OC 2
OC 3
OC 4
OC 5
OC 6
número de
carretéis
1
10
2
8
1
1
13
0
0
0
0
1-L2
1-L2
82
0
10-L9
2-L1
8-L1
0
0
84
5-L3
0
0
0
0
0
larguras
102
112
0
0
10-L6 10-L4
2-L6
2-L4
8-L6
8-L4
0
0
0
0
122
142
0
0
10-L5
0
2-L7
0
8-L10
0
1-L5 2-L8
1-L35 2-L8
Para cada linha de encomenda, o número de bobinas programadas é exactamente o
número de bobinas pedidas, com excepção da linha 5 que tem uma bobina extra. A
linha 35, que não tinha sido considerada para cortar neste programa, passa a ter
uma bobina já programada e, para esta linha, actualiza-se o respectivo valor de
bobinas por programar.
4.3 Problema de Minimização do Número de Padrões
O Problema de Minimização do Número de Padrões (PMNP) pode ser definido
como o problema de encontrar uma solução de corte em que se considera como
objectivo adicional a minimização do número de padrões utilizados.
Programação do corte
75
Teorema
O PMNP é NP-difícil.
Prova
Considere-se que a procura de cada item é unitária. Neste caso, o problema reduzse ao PC: porque cada padrão não pode ser utilizado mais do que uma vez. O PC é
equivalente ao PBP que é fortemente NP-completo [Garey e Johnson, 1979].
Logo, o PMNP é NP-difícil.
❏
Considere-se uma solução de corte predeterminada. Os algoritmos k-combinação
(k-combining) permitem obter soluções heurísticas para o PMNP, de qualidade
razoável. Estas heurísticas, baseiam-se na filosofia das heurísticas k-optimal,
desenvolvidas para o Problema do Caixeiro Viajante, e testam iterativamente se é
possível reduzir a cardinalidade da solução, mantendo a sua qualidade em termos
de desperdício resultante.
Um algoritmo k-combinação consiste em, dada uma solução de corte, avaliar
para cada subconjunto de k padrões, se é possível substituí-lo por um conjunto de
k-1 padrões, cortando o mesmo conjunto de itens. Sempre que tal é possível,
actualiza-se a solução ocorrendo uma k-combinação. Para proceder ao teste e à
eventual substituição dos padrões utiliza-se um procedimento, que se designa por
regra k-combinação. Sempre que se encontra uma k-combinação, ela é efectuada e
recomeça-se o processo até que não existam mais k-combinações.
Início de k-combinação geral
i=2;
Enquanto (i<k) fazer
Repetir
Para cada subconjunto de i padrões fazer
Testar se é possível combinar em i-1 padrões por regra i-combinação;
Se pode combinar então actualizar solução de corte
Até nenhuma i-combinação ser detectada;
i=i+1;
Fim de Enquanto
Fim de k-combinação geral
Algoritmo 4.3: Algoritmo geral para uma heurística k-combinação
76
Capítulo 4
Por motivos de eficiência computacional, com excepção do algoritmo que se esboça
em [ESGWI, 1996], apenas se desenvolveram regras 2 e 3-combinação.
Recentemente, em [Vanderbeck, 2000b] e [Schilling e Georgiadis, 2002]
apresentam-se abordagens exactas, embora a sua aplicabilidade aos problemas
reais não tenha sido ainda demonstrada.
4.3.1 Revisão da bibliografia
Em [Johnston, 1984] explora-se uma regra 2-combinação que permite obter todas
as possíveis combinações de dois padrões. Esta regra consiste no seguinte:
“Considerem-se dois padrões P1 e P2 a cortar, respectivamente, r1 e r2 vezes,
valores cujo ratio é p:q. Os padrões são combináveis se diferem 0 mod(p + q ) no
número de vezes que cortam cada largura.”
Uma regra 3-combinação que obtém todas as combinações de 3 padrões em 2 é
referida
em
[Johnston,
1986].
Três
padrões
P1 ,
P2
e
P3 ,
cortados,
respectivamente, r1 , r2 e r3 vezes, podem ser combinados em P1′ e P2′ a cortar r1′
e r2′ vezes, respectivamente, se e só se para cada largura, o número total de itens
cortados no triplo original pode ser escrito como uma combinação linear não
negativa de r1′ e r2′ onde r2′ = r1 + r2 + r3 − r1′ . Esta regra pode apresentar tempos
de execução longos pois pode ser necessário testar todos os possíveis valores para
r1′ , desde 1 até à parte inteira de (r1 + r2 + r3) / 2 . Por outro lado, os valores do
número total de itens para cada largura podem ser grandes, obrigando a testar um
elevado número de possíveis coeficientes.
Em [Allwood e Goulimis, 1988] e [Goulimis, 1990] é apresentada uma regra 3combinação, a regra da escada, que permite identificar, embora parcialmente,
pares de padrões resultantes de combinar de três padrões. Esta regra só pode ser
aplicada quando se verifica um conjunto de pré-condições muito específicas:
1.
O desperdício em cada padrão é menor do que a menor largura no
conjunto de padrões;
2.
Não existe nenhuma largura repetida em cada padrão;
3.
Dois dos padrões originais são cortados igual número de repetições.
Programação do corte
77
A figura 4.2 ilustra a regra de Goulimis na combinação dum triplo de padrões
P1 , P2 e P3 a cortar, respectivamente, r1 , r2 e r3 vezes, num par P1′ e P2′ a
cortar r1′ e r2′ . Os padrões originais são divididos em duas secções. Por secção
entende-se o conjunto de uma ou várias larguras. Para que os padrões possam ser
combinados é necessário que se consigam estabelecer secções de forma a que P1
partilhe uma secção com P2 , e que P2 partilhe uma secção com P3 . A regra
consiste em cortar num mesmo padrão ( P1′ ) as secções que são cortadas r1 vezes
( S1 e S6 ) e no outro as secções cortadas r1 + r2 vezes ( S3 e S4 ).
Padrões originais
P1
S1
r1
S2
P2
S3=S2
r2
S4
P3
S5=S4
S6
r3 = r1
Padrões resultantes
P1′
P2′
S1
r1′ = r1
S6
S3
S4
r2′ = r1 +r2
Figura 4.2: Aplicação da regra 3-combinação de Goulimis
A primeira abordagem que considera aspectos de sequenciamento de padrões em
simultâneo com minimização do desperdício é apresentada em [Johnston, 1995].
Utilizando pesquisa em árvore, procuram-se padrões atractivos que vão sendo
fixados de forma a manter o valor do desperdício numa região admissível. Essa
região é determinada previamente, através de geração implícita de colunas
convencional num modelo de Programação Linear.
Em [Respício, Captivo, e Paixão, 1996] apresenta-se uma nova regra
3-combinação, que se descreve em 4.3.2. Compara-se o desempenho desta regra
com as de Johnston e de Goulimis. Curiosamente, quando este trabalho foi
apresentado, o 29º Grupo de Estudo com a Indústria da Universidade de Oxford
estudou o PMNP, sob proposta da empresa Greycon, tendo produzido o relatório
78
Capítulo 4
[ESGWI, 1996]. Neste trabalho, esboça-se uma nova regra k-combinação geral, que
se testa sobre quatro instâncias reais fornecidas pela Greycon. Os resultados não
são conclusivos quanto à qualidade da regra.
Recentemente, Vanderbeck [Vanderbeck, 2000b] formula o Problema de Corte
através dum modelo de programação inteira quadrática, em que minimiza o
número de padrões impondo um limite superior sobre o número de peças a cortar.
Este limite é dado pela solução óptima do PC associado, que se resolve
previamente. O modelo é decomposto e reformulado de forma a obter um modelo de
PLI que é resolvido através dum algoritmo de partição e geração de colunas. Este
trabalho constitui uma contribuição inovadora pois descreve uma abordagem
exacta para a resolução do problema. No entanto, na nossa opinião, os resultados
parecem enviesados. O autor apresenta uma redução da ordem de 64% do número
de padrões em relação ao valor dado pela solução do PC, mas utilizou o PC com
restrições de igualdade para a satisfação da procura, o que restringe muito o
espaço de soluções e faz aumentar o número de diferentes padrões na solução final.
Por outro lado, em 16 instâncias, 25% não foram resolvidas em 2 horas de CPU,
três das quais de dimensão reduzida (7, 11 e 14 itens, respectivamente).
Em [Schilling e Georgiadis, 2002] considera-se uma formulação para o PC que
inclui custos de mudança de padrão, o que, dada uma estrutura de custos
adequada, permite obter soluções de cardinalidade mínima.
4.3.2 Heurística para o Problema de Minimização do Número de Padrões
A nova regra que se propõe, 3-combinação R, baseia-se na ideia de Johnston, mas
restringe o número de combinações lineares a averiguar e descreve-se de seguida.
Regra 3-combinação R
Considere-se um triplo de padrões P1 , P2 e P3 , cortados r1 , r2 e r3 vezes,
respectivamente. Estes padrões podem ser combinados em P1′ e P2′ , a cortar r1′ e
r2′ vezes, respectivamente, se para cada largura i no triplo de padrões original,
Programação do corte
79
1≤i ≤m , o número total de itens cortados, d i , pode ser escrito como uma
combinação linear não negativa de r1′ e r2′ , onde
−
r1′ divide dmin , com dmin= min { d i , 1 ≤ i ≤ m } , e
−
r2′ = r1 + r2 + r3 − r1′ .
O algoritmo 4.4 descreve a regra 3-combinação R. Como se pretende um algoritmo
de utilização geral, considera-se que um padrão é admissível se a largura não
excede a largura máxima utilizável, W, e se o número total de rolos cortados não
excede o respectivo limite N. Durante a construção dos novos padrões, designam-se
por Ŵj e N̂ j os valores actuais para a largura utilizada e o número de itens no
padrão j, respectivamente. Dado o triplo de padrões original, começa-se por fazer
uma lista, ordenada por ordem não crescente, das larguras w i e do correspondente
número de rolos cortados d i , e calcula-se dmin= min { d i , 1 ≤ i ≤ m } . Como os
padrões resultantes se obtêm por inserção sequencial das larguras, utilizando esta
ordenação introduzem-se primeiro as larguras que têm mais hipótese de esgotar a
largura total admissível. Pressupõe-se que, se existir um par de padrões que corte
esse conjunto de rolos, um desses padrões, será cortado um número de vezes igual
a dmin ou igual a um dos números que o dividem (incluindo a unidade). Neste
caso, para a largura (ou uma das larguras) a cortar o número mínimo de vezes, a
combinação linear terá um coeficiente nulo, ou seja, todas as bobinas com essa
largura são cortadas num só padrão. Para cada par r1′ e r2′ , nas condições
especificadas, percorre-se a lista de larguras e, para cada uma, tenta-se inserir o
máximo número possível de itens no padrão a ser cortado o maior número de
vezes. Em seguida, testa-se se o remanescente ainda pode ser inserido no outro
padrão, sem que sobrem itens e garantindo a admissibilidade.
A função min (x 1,..., x k ) corresponde à função mínimo de um conjunto de
valores, para o correspondente número de argumentos. A operação P j ⊕ aij
representa a “adição” de aij réplicas do item i ao padrão Pj , e inclui a soma de aij
unidades à componente i do vector que o representa, a actualização de Wˆ j para
Wˆ j + aijw i , e a actualização de Nˆ j para Nˆ j + aij .
80
Capítulo 4
Para percorrer os números que dividem dmin , utilizou-se factorização directa,
que é o método mais simples para encontrar os divisores dum número. Considerese que se pretende factorizar k. Percorrem-se sequencialmente os inteiros até
 k ,
testando para cada um deles se a divisão é exacta. Basta pesquisar os inteiros
menores ou iguais a
 k ,
pois
(  k  + 1 )⋅  k  > k ,
e para cada factor que se
encontra, fica também determinado o respectivo cofactor (que excede
Algoritmo regra 3-combinação R
Fazer lista ordenada de larguras e número de rolos: w i , d i .
dmin = min( d1,..., d m ) ;
r1′ =d min ;
Repetir
r2′ =r1 + r2 + r3 −r1′ ;
Se r1′ < r2′ então trocar os valores r1′ e r 2′ ;
Wˆ1 = 0; Wˆ2 = 0; Nˆ 1 = 0; Nˆ 2 = 0; Para ( i =1 até i = m ) fazer { ai1 = 0; ai 2 = 0 };
combina = true; i =1 ;
{* tentar construir padrões admissíveis a cortar r1′ e r2′ vezes *}
Enquanto (combina) e ( i ≤ m ) fazer
{* testar combinação para as várias larguras *}
Se ( d i div r1′ > 0 )
então {* di “cabe” em P1′ *}
ai1 = min(N − Nˆ 1, d i div r1′, (W −Wˆ1) / w i ) ;
resto =d i −ai 1 r1′ ;
Se ( resto mod r2′ = 0 )
então {* tentar pôr o resto em P2′ *}
ai 2 = min(N − Nˆ 2, resto div r2′ , (W −Wˆ2 ) / w i ) ;
Se ( ai 2 = resto div r2′ )
então {* actualiza padrões *}
P1′ = P1′⊕ai 1 ;
P2′ = P2′ ⊕ai 2 ;
senão combina = false ; {* não combinou para esta largura *}
senão combina = false ; {* não combinou para esta largura *}
senão {* di “não cabe” em P1′ , testar em P2′ *}
Se ( d i mod r2′ = 0 )
então
ai 2 = min(N −Nˆ 2 , d i div r2′ , (W −Wˆ2 )/w i ) ;
Se ( ai 2 =d i div r2′ )
então {* actualiza P′2 *}
P2′ = P2′ ⊕ai 2 ;
senão combina = false ; {* não combinou para esta largura *}
senão combina = false ; {* não combinou para esta largura *}
Fim de Enquanto
Se não(combina) então r1′ = Pr óximo _ divisor (d min , r1′) ;
Até combina ou ( r1′ = 0 )
Fim de Algoritmo regra 3-combinação R.






Algoritmo 4.4: Regra 3-combinação R
 k ).
Programação do corte
81
A função Próximo_divisor(A,B), dado B, devolve o próximo divisor de A, a
testar, que pode ser o próximo factor de A entre 1 e
 A , ainda não testado, ou
um cofactor. Se já foram testados todos os divisores, devolve 0.
Tendo-se determinado d min , no início do processo, o passo do ciclo é executado
no máximo 2
 d min 
vezes, ou seja, esta regra é O
(  dmin  ).
Este valor é
totalmente dependente do terno de padrões a analisar. Na prática, verifica-se que
este valor é, regra geral, de uma ordem de grandeza pequena. Para testar
exaustivamente todas as possíveis combinações lineares, têm de se testar todos os
pares ( r1′ , r2′ ) com
1 ≤ r1′ ≤ (r1 + r2 + r3) / 2 , ou seja, a regra exaustiva é
O ((r1 + r 2 + r3 )/2) .
Exemplo de aplicação da regra 3-combinação R
Considere-se o seguinte triplo de padrões P1 , P2 e P3 a cortar 1, 3 e 4 vezes,
respectivamente.
Larguras
Largura
rj
Pj
r1 =1
P1
242
242
161
P2
161
161
161
160
P3
161
160
160
160
r2 = 3
r3 = 4
645
643
160
641
A largura máxima a cortar num padrão é 645cm e o número máximo de rolos num
padrão é 6.
A lista de larguras e número de itens cortados para cada largura é
wi
di
i
1
2
3
242
161
160
2
14
15
d min= 2 , e inicia-se r1′ =d min = 2 e r2′ = 8−r1′ = 6 .
Trocam-se os valores r1′ = 6 e r 2′ = 2 . P1′ e P2′ são iniciados como vazios, e, para
ambos, iniciam-se os valores da largura e do número de rolos cortados como nulos.
82
Capítulo 4
Inserir item 1: não pode ser inserido em P1′ ( d1 =2<6), é inserido uma vez em P2′
( a12 =d1 div r2′ =1 ) esgotando d1 ( d1 mod r 2′ = 0 ).
r j′
P j′
r1′ = 6
P1′
vazio
0
0
r2′ = 2
P2′
242
242
1
Larguras
Wˆ j
Nˆ j
Inserir item 2: é inserido 2 vezes em P1′ ( a21 = d 2 div r1′ = 2 ), sobram 2 rolos e
insere-se a largura uma vez em P2′ ( 2 div r 2′ =1 ), esgotando a quantidade
( 2 mod r 2′ = 0 ).
r j′
P j′
r1′ = 6
P1′
161
161
322
2
r2′ = 2
P2′
242
161
403
2
Larguras
Wˆ j
Nˆ j
Inserir item 3: não é possível, porque d3 =15 não se pode escrever como uma
combinação linear de 6 e de 2. Não é possível fazer a combinação usando os valores
r1′ = 6 e r 2′ = 2 .
Actualiza-se r1′ =1 (cofactor de 2 na decomposição de d min= 2 ) e r2′ = 8−r1′ = 7 .
Trocam-se r1′ = 7 e r2′ =1 . P1′ e P2′ são iniciados como vazios.
Inserir item 1: não pode ser inserido em P1′ , é inserido duas vezes em P2′
( a12 =d1 div r2′ = 2 e d1 mod r2′ = 0 ).
r j′
P j′
r1′ = 7
P1′
vazio
r2′ =1
P2′
242
Larguras
242
Wˆ j
Nˆ j
0
0
484
2
Inserir item 2: é inserido duas vezes em P1′ ( a21 = d 2 div r1′ = 2 ), esgotando-se a
quantidade deste item não se insere em P2′ ( 0 mod r2′ = 0 e a22 = 0 div r2′ = 0 ).
r j′
P j′
r1′ = 7
P1′
161
161
362
2
r2′ =1
P2′
242
242
484
2
Larguras
Wˆ j
Nˆ j
Programação do corte
83
Inserir item 3: é inserido duas vezes em P1′ ( a31 =d3 div r1′ = 2 ), sobra 1 rolo que é
inserido em P2′ ( 1 mod r2′ = 0 e a31 =1div r 2′ =1 ).
r j′
P j′
r1′ = 7
P1′
161
161
160
r2′ =1
P2′
242
242
160
Larguras
Wˆ j
160
Nˆ j
642
4
644
3
Os padrões P1′ e P2′ , na tabela acima, a cortar 7 e 1 vezes, respectivamente, são
admissíveis e permitem obter os mesmos itens que o triplo original de padrões.
4.3.3 Resultados computacionais
Testou-se o desempenho da regra proposta, utilizando um conjunto de dados
relativos a 22 instâncias reais fornecido pelo produtor do caso em estudo.
Comparou-se a nova regra com a regra exaustiva de Johnson e a regra da escada
de Goulimis. Os algoritmos foram codificados em Pascal, e utilizou-se o compilador
Borland Pascal 7.0. Os tempos de execução referem-se a testes executados num
computador com processador Pentium IV 1600MHz com 256Mb de RAM.
Na implementação dos algoritmos utilizou-se o esquema geral k-combinação.
Efectuam-se primeiro as combinações de ordem 2 e depois passa-se às combinações
de ordem 3. Um parâmetro para a complexidade do problema, que se designa por
CC, é dado pelo produto entre o número médio de rolos por padrão e o número total
de padrões.
A tabela 4.1 apresenta as características das instâncias e os resultados obtidos
por aplicação dos três algoritmos. A coluna #I é o índice da instância; as colunas n
e m apresentam o número de padrões na solução e o número de larguras do
problema; a coluna v é o valor para o parâmetro de dificuldade do problema de
corte (largura média/largura total); #c é o número total de carretéis cortados na
solução; a coluna #r é o número total de rolos cortados; #rp é o número médio de
rolos por padrão; #mrp é o número máximo de rolos por padrão; %D é a
percentagem relativa de desperdício associado; CC é o número médio de rolos por
padrão multiplicado pelo número total de padrões. Cada uma das quatro colunas
84
Capítulo 4
sob o título #Reduções apresenta o número de padrões reduzidos por aplicação de
cada uma das regras: 2C, 3CG, 3CR e 3CJ, que correspondem, respectivamente, às
regras 2-combinação, 3-combinação de Goulimis, 3-combinação R, e 3-combinação
de Johnston. Em relação aos valores que se apresentam nestas colunas, os
resultados das regras 3-combinação incluem também as reduções obtidas por 2combinação. As colunas que se seguem, sob o título %Reduções, apresentam a
percentagem de reduções em relação ao número de padrões original. As quatro
últimas colunas apresentam os tempos de execução para cada uma das regras, em
milésimos de segundo. A última linha da tabela apresenta os valores médios para
as respectivas colunas.
#I
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n
9
15
7
10
6
14
9
13
9
14
21
6
22
12
15
9
9
10
28
16
28
27
14.1
m
v
10 .39
15 .39
11 .37
10 .36
6 .38
17 .40
13 .39
14 .39
11 .39
16 .38
22 .40
9 .40
23 .38
12 .38
21 .39
11 .34
9 .39
11 .34
34 .36
21 .33
31 .38
32 .38
16 .38
#c
150
55
31
64
27
106
48
90
55
45
87
37
95
71
56
17
49
33
147
58
128
146
72.5
#r
450
192
96
200
81
346
176
279
169
167
273
111
298
218
204
67
151
147
495
245
447
491
241
#rp #mrp %D
CC
3.00
3 0.56 27.0
3.40
5 1.54 51.0
3.14
4 0.37 22.0
3.33
5 0.50 33.3
3.00
3 2.07 18.0
3.36
4 0.97 47.0
3.75
5 0.93 33.7
3.23
4 1.65 41.9
3.11
4 0.89 28.0
4.07
6 0.21 57.0
3.33
5 0.54 70.0
3.00
3 0.57 18.0
3.33
4 0.51 73.3
3.09
4 1.50 37.1
3.86
5 0.10 57.9
4.22
6 0.19 37.9
3.22
5 0.79 29.0
4.60
6 0.36 46.0
3.50
4 0.10 98.0
4.44
6 0.13 71.0
3.82
6 0.19 107.0
3.59
5 0.16 97.0
3.52 4.6 0.67 50.06
# R e d u ç õ e s % R e d u ç õ e s
2C 3CG 3CR 3C J
2C 3CG 3CR 3C J
0
0
0
0
0
0
0
0
0
1
3
3
0
7
20
20
0
0
0
0
0
0
0
0
0
0
1
1
0
0
10
10
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
11
11
1
2
2
2
8
15
15
15
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
5
5
5
5
0
1
1
1
0
8
8
8
0
1
1
1
0
7
7
7
1
1
3
3
11
11
33
33
0
0
1
1
0
0
11
11
0
0
1
1
0
0
10
10
0
0
0
0
0
0
0
0
0
0
3
3
0
0
19
19
0
1
1
1
0
4
4
4
0
0
1
1
0
0
4
4
.14 .37 .91 .91 1.06 2.56 7.11 7.11
-3
2C
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
1
0.2
CPU seg. 10
3CG 3CR
0
3
3
24
0
2
0
7
0
1
1
15
1
5
1
14
0
4
4
16
7
51
0
1
7
50
1
8
5
27
1
2
0
5
1
9
16 125
5
42
34 146
119
14
5
31
3C J
54
214
11
59
6
145
36
161
30
155
501
7
425
69
210
14
42
68
1076
298
1419
1115
278
Tabela 4.1: Resultados de aplicação das regras 3-combinação
Os resultados mostram que, das 22 instâncias, é possível reduzir a cardinalidade
por 3-combinação em 13 instâncias. Para a instância 13, não houve melhorias por
combinação de três padrões, a redução que se alcança é obtida pela regra 2C.
As regras 3CR e 3CJ apresentam soluções de igual qualidade. Ou seja, a nova
regra 3CR executa todas as possíveis reduções por 3-combinação, reduzindo em
cerca de 90% o esforço computacional da regra exaustiva 3CJ.
A regra 3CG só consegue reduzir a cardinalidade em 5 instâncias (2, 8, 14, 15 e
21) e, para essas, em 2 casos (2, 16) não atinge a totalidade de reduções. Para o
Programação do corte
85
conjunto global das instâncias, é possível efectuar 17 reduções por 3-combinação,
que não são detectadas pela regra 2C. Destas, a regra 3CG apenas consegue
detectar 5, ou seja, cerca de 30% das possíveis reduções. Em comparação, a regra
3CR detecta a totalidade das reduções (mais 70% que a 3CG), apesar de um esforço
computacional adicional de 75% que não é relevante pois, para todas as instâncias
este é inferior a 1 segundo de CPU.
O número médio de reduções é da ordem de 7%, para o conjunto total de
instâncias. Para as instâncias em que é possível efectuar reduções, a média de
reduções possíveis por 3-combinação é da ordem de 12%, enquanto que por 2combinação é de apenas 1.8%.
Não se evidencia uma relação entre a percentagem de reduções obtidas e algum
indicador. Em [ESGWI, 1996], afirma-se que “o número de reduções parece estar
relacionado com a percentagem de desperdício na solução original” e “para valores
de perda inferiores a 1% o número de reduções é reduzido, notando-se maiores
reduções para valores de perda superiores a 5%.” Esta afirmação faz sentido, pois
um valor maior de desperdício relativo cria mais oportunidades de combinação das
larguras. O estudo não é conclusivo pois estudam-se apenas 4 instâncias reais, 2
com perda superior a 5%, uma com perda de 4.2% e outra com perda inferior a
0.2%. Ou seja, esta afirmação não foi deduzida a partir das experiências realizadas
e fica por esclarecer se é proveniente da experiência da Greycon.
Nas experiências computacionais testou-se um conjunto de instâncias para o
qual a percentagem média de perda é 0.67%. O valor máximo (2,07%) ocorre para a
instância 5, e para essa instância não foram encontradas reduções por combinação
de 3 padrões. Os resultados parecem indicar uma tendência crescente da
percentagem de reduções em função do número máximo de rolos num padrão. Em
relação a este parâmetro, as instâncias dividem-se em quatro grupos, a que
correspondem os valores 3, 4, 5 e 6, respectivamente. Dentro destes grupos foi feita
uma ordenação por ordem crescente do valor de perda relativa, como se apresenta
na tabela 4.2.
86
Capítulo 4
Número máximo de rolos por padrão
3
4
5
6
Ordenação das instâncias
1, 12 e 5
19, 3, 13, 9, 6, 14 e 8
15, 22, 4, 11, 17, 7 e 2
20, 21, 16, 10 e 18
Tabela 4.2: Distribuição das instâncias no gráfico da figura 4.3
No gráfico na figura 4.3, apresenta-se a percentagem de reduções obtida por
aplicação das regras 3CJ, 3CR e 3CG. O índice das instâncias está em abcissa e
ordenaram-se os dados por ordem crescente do número máximo de rolos por padrão
(#mrp) e por ordem crescente do valor de perda relativa, para igual valor de #mrp.
% Reduções
40
30
20
10
0
Instâncias 1
12
5
19
3
13
9
6
14
8
15
22
4
11
17
7
2
3C G
0
0
0
0
0
5
0
0
8
15
7
0
0
0
0
0
7
0
4
11
0
0
3C R
0
0
0
0
0
5
0
0
8
15
7
4
10
0
11
11
20 19
4
33
0
10
3C J
0
0
0
0
0
5
0
0
8
15
7
4
10
0
11
11
20 19
4
33
0
10
20 21
16
10 18
Figura 4.3: Comparação da percentagem de reduções no número de padrões
O gráfico da figura 4.4 evidencia a relação entre o tempo de execução de cada
algoritmo e o número médio de rolos por padrão vezes o número de padrões (CC).
1400
CPU
1200
3CJ
1000
3CR
800
3CG
600
400
200
CC
0
0,00
20,00
40,00
60,00
80,00
100,00
120,00
Figura 4.4: Comparação de tempos de execução para os algoritmos 3-combinação
Programação do corte
87
A regra 3CR apresenta um comportamento bastante estável, para o conjunto de
instâncias testado. O seu tempo de execução parece ter um crescimento linear em
função de CC. Para a regra 3CJ, comparável em termos da qualidade de
resultados, o tempo de execução cresce exponencialmente em função de CC.
No contexto da abordagem utilizada para a programação do corte no caso em
estudo, a regra 3CR adequa-se à implementação em ambiente de apoio à decisão,
para reduzir a cardinalidade das soluções de corte. A sua eficácia e desempenho
(esforço computacional inferior a 0,2 segundo para todas as instâncias estudadas)
permite que durante a geração duma solução de corte, interactivamente, o
responsável pelo planeamento possa em simultâneo avaliar eventuais reduções da
cardinalidade da solução.
4.4 Problema de Minimização do Número de Movimentos
das Navalhas
O tempo necessário para cortar por completo um determinado conjunto de padrões
de corte é função da velocidade da máquina e dos tempos mortos que decorrem
entre o término de um corte e o início do seguinte. Nas máquinas em que as
navalhas são posicionadas manualmente, a soma destes tempos pode-se tornar
bastante elevada. Não havendo directivas relativamente à sequência pela qual os
padrões devem ser cortados, é o operador que escolhe a sequência que lhe parece
mais favorável1. No entanto, mesmo para planos de cardinalidade reduzida (por
exemplo, 6 padrões e 10 larguras), essa tarefa torna-se extremamente complexa.
4.4.1 Formulação
Dada uma solução de corte, o Problema de Minimização do Número de Movimentos
das Navalhas (PMMN) consiste em encontrar uma permutação de padrões e a
1
Este tipo de “solução” é completamente desaconselhável. Se o tempo necessário para cortar uma
solução de corte tiver duração superior a um turno, o operador do primeiro turno pode escolher a
“parte melhor” deixando o restante para o próximo, com as eventuais consequências que essa acção
possa causar.
88
Capítulo 4
permutação das larguras em cada padrão de forma a que o número de movimentos
das navalhas necessários para cortar o plano seja mínimo.
As larguras, em cada padrão, são cortadas justapostas e alinhadas a um dos
extremos (versão single-ended do problema). Neste caso, isto traduz-se em manter
a navalha mais à esquerda sempre na mesma posição. Para remover ou introduzir
uma navalha, opera-se sobre a mais à direita e deslocam-se as restantes. A função
de custos difere da considerada nas restantes abordagens na literatura, que
admitem ser possível introduzir uma navalha entre outras duas, sem as mover.
Esta diferença traduz-se numa formulação para o PMMN com componentes
distintas das já existentes na literatura, e que se passa a descrever.
Considere-se uma solução de corte definida pelo conjunto de padrões P1,..., Pn .
Representa-se o padrão Pj por um multiconjunto ordenado, composto pelas
larguras que corta, e com cardinalidade n j . Designa-se por l ij a largura do rolo a
cortar na i -ésima posição do padrão j , i = 1,..., n j , j = 1,..., n . Uma permutação
dos índices dos padrões Π = (π 1 ,..., π n ) representa uma sequência de corte para os
padrões. Analogamente, denota-se por Φ j = (φ1j ,...,φnj ) ∈ Γ(n j ) , a permutação dos
j
índices das larguras que representa a respectiva ordem de corte no padrão j, onde
Γ(n j ) representa o conjunto de permutações de cardinalidade n j .
As navalhas que não são necessárias para um corte permanecem na posição
que equivale à largura máxima utilizável W. Dadas duas permutações de larguras
Φ i e Φ j , i = 1,..., n , j>1, para cortar o padrão j após o i-ésimo, v kj (Φ i , Φ j ) = 1
indica se é necessário reposicionar a k-ésima navalha, k ≤ n j + 1 , onde
v kj
(Φi , Φ j )
0, se k ≤ n + 1 e k l i = k l j
∑q =1 φq , i ∑q =1 φq , j .
i

=
1, caso contrário

O custo de mudar do padrão i para o padrão j, ou seja, o número total de
movimentos nas navalhas para cortar j após i, é dado por
n +1
c ij = ∑k j= 2 v kj (Φ i , Φ j ) ,
onde Φ i ∈ Γ(ni ) e Φ j ∈ Γ(n j ) estão fixas.
Programação do corte
89
O PMMN consiste em encontrar uma permutação Π e a correspondente
sequência de permutações de larguras Φ Π = (Φπ1, ..., Φπ j , ..., Φπ n ) que permitem
minimizar o valor da função
n −1
z (Π, ΦΠ ) = nπ1 + 1 + ∑ j =1 cπ j ,π j +1 .
Nesta função, a parcela nπ1 + 1 é o número de navalhas a posicionar para cortar o
primeiro padrão da sequência, e cπ j ,π j +1 , 1 ≤ j ≤ n − 1 , é o número de movimentos
necessários para cortar dois padrões consecutivos na sequência.
O conjunto de soluções do problema, cresce exponencialmente com o número de
padrões e com o número de larguras por padrão. A dimensão duma instância é
aproximada por n! m1!
mn! , onde m j é o número de diferentes larguras cortadas
por Pj , ou seja, é O( n! N !n ), onde N é o número máximo de rolos que podem ser
cortados num padrão.
Exemplo
Considere-se a solução de corte dada por P1 = (140, 120, 110, 50), P2 = (160, 100,
60, 60) e P3 = (140, 120, 70, 50, 30). As figuras 4.5 e 4.6 ilustram diferentes
soluções de sequenciamento. As navalhas que têm de ser posicionadas estão
marcadas com uma “setinha”. As navalhas que se mantêm na mesma posição dum
corte para o outro estão marcadas com uma linha tracejada. O número de navalhas
que têm de se posicionar para cortar cada sequência de larguras está indicado à
direita do padrão.
Na primeira solução, a sequência de corte dos padrões é dada pela permutação
identidade
e
as
permutações
de larguras em cada padrão são dadas,
respectivamente, por Φ1 = (2, 1, 3, 4), Φ2 = (3, 4, 1, 2) e por Φ3 = (4, 3, 2, 1, 5). O
número total de movimentos das navalhas necessários para cortar essa sequência é
12. Note-se que para cortar P3 após P2 , posiciona-se uma navalha adicional, pois a
cardinalidade de P3 é superior à de P2 em uma unidade. Se se cortasse P2 após
P3 , usando as mesmas permutações de larguras, o número de movimentos entre os
dois padrões seria apenas 2.
90
Capítulo 4
5
P1
120
140
110
50
4
P2
60
60
160
100
3
P3
50
70
120
140
30
Figura 4.5: Contagem do número de movimentos nas navalhas – 1ª solução
Na segunda solução, Π = (1, 3, 2) representa a sequência de corte dos padrões. As
permutações de larguras em cada padrão são dadas por Φ1 = (2, 1, 4, 3),
Φ2 = (1, 2, 3, 4) e Φ3 = (2, 1, 4, 3, 5), respectivamente. O número total de
movimentos das navalhas necessários para cortar essa sequência é 9.
5
P1
120
140
50
110
2
P3
120
140
50
70
30
2
P2
160
100
60
60
Figura 4.6: Contagem do número de movimentos nas navalhas – 2ª solução
O PMMN relaciona-se com o Problema do Caixeiro Viajante Generalizado (PCVG).
Num PCV pretende-se encontrar um circuito de custo mínimo que visite um dado
conjunto de cidades. No PCVG as cidades a visitar não estão definidas à partida e
estão
agrupadas
em
conjuntos
mutuamente
exclusivos
e
exaustivos
(agrupamentos), a partir dos quais uma, e exactamente uma, cidade de cada
conjunto deve ser visitada.
Pretende-se encontrar um caminho Hamiltoneano de custo mínimo sobre os
padrões (grupos de cidades) visitando uma e uma só permutação de larguras em
cada padrão (cidade). O grafo associado é assimétrico porque o custo de mudar de
um padrão para outro pode ser diferente se se reverter a ordem de corte –
introduzir uma navalha requer um posicionamento, enquanto que removê-la não.
A figura 4.7 ilustra uma instância do PCVG com cinco agrupamentos de nós e um
Programação do corte
91
possível circuito no grafo. Para facilitar a exposição, não se apresentam as ligações
entre todos os pares de nós que se encontram em diferentes agrupamentos.
Figura 4.7: Exemplo de um circuito para o PCVG
4.4.2 Revisão da bibliografia
O PMMN foi introduzido por Pierce, que descreveu possíveis abordagens
recorrendo a heurísticas, a programação dinâmica, e a programação inteira
[Pierce, 1970].
A heurística que se apresenta em [Goulimis, 1990] itera em dois passos. No
primeiro passo, dada uma permutação de padrões, encontra a melhor permutação
de larguras para cada padrão. Este problema é identificado como um problema de
fluxos numa rede e resolvido por Programação Dinâmica. No segundo passo, dada
a permutação de larguras em cada padrão, encontra a melhor permutação de
padrões. Este problema é um PCV e é resolvido por uma heurística 2-optimal.
Em [Respício, Captivo, e Paixão, 1996] relaciona-se o problema com o Problema
do Caixeiro Viajante Assimétrico Generalizado (PCVAG). A literatura relativa a
esta classe de problemas desencoraja o uso de abordagens exactas. Em [Noon e
Bean, 1991] apresenta-se uma abordagem baseada na Relaxação Lagrangeana
para resolver problemas onde a dimensão relativa ao número de nós é no máximo
104. Em [Fischetti, Salazar e Toth, 1997] trata-se a versão simétrica do problema
duma forma exacta. Apresentam-se procedimentos de separação, exactos e
heurísticos, para algumas classes de desigualdades que definem facetas do
problema. Estes procedimentos são utilizados num algoritmo de ramificação e
corte (branch-and-cut algorithm). A dimensão dos problemas resolvidos é muito
92
Capítulo 4
pequena comparativamente com o que se pode encontrar nas instância reais do
PMMN. Os autores resolvem problemas com um máximo de 442 nós agrupados
num número de conjuntos da ordem de um quinto do número de nós (88 conjuntos
com 5 nós em cada). Considere-se uma instância real do PMMN. No caso do
número máximo de itens por padrão ser 6, o número máximo de permutações
intrapadrão é da ordem de 720 (número médio de nós por conjunto). Para um
problema com 10 padrões, têm-se 7200 nós agrupados em 10 conjuntos.
Em [Respício, Captivo e Paixão, 1996] apresentam-se heurísticas de ordenação
baseadas nas ideias das heurísticas desenvolvidas para o PCV.
Finalmente, em [Easwaran et al, 1996] apresenta-se a aplicação de um
algoritmo evolutivo ao PMMN. Utiliza-se uma representação dos indivíduos,
especial para este problema, e adaptam-se alguns dos operadores genéticos
desenvolvidos para o PCV.
Provavelmente devido à grande complexidade do PMMN, o corpo da literatura
dedicado a este problema é extremamente reduzido, apesar da sua importância na
prática. Os resultados para o PCVG que se têm vindo a apresentar na literatura
são também pouco motivadores, sendo que a versão assimétrica do problema
parece ter sido ignorada. Na abordagem que se apresenta em [Schilling e
Georgiadis, 2002] o PMMN é integrado na formulação do PC, que se resolve de
forma exacta. Como já se referiu anteriormente, não é claro que esta abordagem se
adeqúe
a
problemas
reais
de
dimensão
razoável.
Justifica-se
assim
o
desenvolvimento de abordagens heurísticas e meta-heurísticas para a resolução
das instâncias reais deste problema.
4.4.3 Heurísticas de resolução
Considere-se uma solução de corte definida pelo conjunto de padrões P1,..., Pn , que
cortam r1,..., rn rolos, respectivamente, e onde aij é o número de vezes que a
largura w i é cortada no padrão j , i = 1,..., m , j = 1,..., n . O número máximo de
rolos que podem ser cortados num padrão é N.
Programação do corte
93
Heurística de Ordenação
A heurística de ordenação tem por base o cálculo das medidas Apai e Env j , que
permitem relacionar as larguras e os padrões entre si, e que se passam a
descrever.
Seja
1, se w i é cortada no padrão j
, i = 1,..., m , j = 1,..., n .
δ ij = 
0, caso contrário
O número total de vezes que a largura wi "aparece" nos padrões de corte é dado
por
Apai = ∑ j =1 aij , i = 1,..., m .
n
Uma medida do envolvimento do padrão j com os restantes padrões na solução é
dada por
Env j =
m
m
i =1
i =1
∑ Apai δ ij ∑ aij , j = 1,..., n .
A heurística de ordenação, que se descreve no algoritmo 4.5, estabelece para cada
padrão, uma permutação de larguras onde as larguras cortadas mais vezes são
colocadas o mais à esquerda possível, ou seja, as larguras em cada padrão são
ordenadas por ordem não crescente de Apa. Para larguras com igual valor desta
medida, desempata-se colocando primeiro a de maior valor de largura. Este
procedimento coloca a largura mais cortada (ou a maior das larguras mais
cortadas) na primeira posição de todos os padrões que a cortam e assim
sucessivamente. Em seguida, os padrões são ordenados por ordem não crescente de
Env . Na solução que se obtém, o primeiro padrão é o que corta o maior número de
larguras “mais cortadas”. Esta ordenação agrupa os padrões que potencialmente
cortam mais larguras em comum. A heurística é totalmente míope relativamente
às somas das primeiras k larguras em cada padrão, ou seja, às posições absolutas
das navalhas.
94
Capítulo 4
Início de Ordenação
Passo 1. Para ( i = 1 até i = m ) calcular Apai ;
Passo 2. Para ( j = 1 até j = n ) calcular Env j ;
Passo 3. Para ( j = 1 até j = n ) ordenar as larguras em P j por ordem não crescente de Apai ;
Passo 4. Ordenar os padrões por ordem não crescente de Env j .
Fim de Ordenação.
Algoritmo 4.5: Heurística Ordenação
Esta heurística é 2(nN log N). O passo 1 é 2(m). O passo 2 é 2(n). Ordenar as
larguras em cada padrão é majorado por 2(N log N), logo o passo 3 é 2(nN log N).
Finalmente, o passo 4 é 2(n log n).
Heurísticas construtivas base-PCV
Adaptaram-se ao PMMN as seguintes heurísticas construtivas desenvolvidas para
o PCV: vizinho mais próximo, vizinho mais afastado e inserção de custo mínimo.
Os algoritmos são análogos, e utilizam-se os mesmos nomes para os referir,
assumindo-se a respectiva adaptação ao PMMN. Na adaptação, para calcular o
custo de fixar um padrão na solução é necessário avaliar as permutações das suas
larguras. Optou-se por avaliar estes custos em tempo de execução, em alternativa
a calcular e guardar as permutações à partida. Apesar desta opção ser
extremamente dispendiosa em termos de esforço computacional, justifica-se por
questões de manutenção de memória. Para melhorar as soluções obtidas por estas
heurísticas construtivas, implementou-se uma heurística de melhoramento 2optimal.
A complexidade dos algoritmos que se apresentam em seguida, depende do
número de padrões na solução (n) e do número máximo de rolos que podem ser
cortados em cada padrão (N), que majora o número de itens cortados em cada
padrão. Apesar de N ser constante para uma categoria de instâncias, o seu valor
influencia bastante o desempenho dos algoritmos e, como tal, é explicitamente
considerado na análise correspondente.
O algoritmo 4.6 descreve a heurística do vizinho mais próximo para o PMMN.
Começa-se por iniciar todos os padrões como “livres”. A primeira posição da
sequência é preenchida com o padrão, e respectiva permutação de larguras, que
Programação do corte
95
corresponde à primeira posição da solução obtida pela heurística Ordenação.
Marca-se este padrão como fixo. Constrói-se o resto da solução, fixando
iterativamente o “próximo” padrão da sequência e a respectiva permutação de
larguras. Avalia-se o custo de mudança entre o último padrão na sequência e cada
permutação de larguras de cada padrão ainda livre, e escolhe-se o padrão para o
qual ocorre a permutação de menor custo. Fazendo um paralelismo com o PCVG,
para sucessor dum dado nó, escolhe-se o nó e respectivo agrupamento, a que
corresponde a ligação de custo mínimo. O custo da solução final é dado por zˆ .
Início de vizinho mais próximo para o PMMN
Passo 1. Iniciar todos os padrões como livres; fixos=0;
Passo 2. Para ( j = 1 até j = n ) calcular Env j ;
Passo 3.
Encontrar j tal que Env j = max {Env i : 1 ≤ i ≤ n } ;
i
ordenar as larguras em P j por ordem não crescente de Apai ; fixar Φ j ;
zˆ = 1 + n j ; π1 = j { * fixar P j como escalonado no início da sequência *};
k = j ; fixos=1;
Passo 4.
Enquanto (fixos<n) fazer
Encontrar j: c kj = min c ki : Φ i ∈ Γ(ni ) ∧ Pi livre
i
{
}
fixar Φ j ; fixos=fixos+1; zˆ = zˆ + c kj ;
π fixos = j { * fixar P j como escalonado *};
k = j ;
Fim de Enquanto
Fim de vizinho mais próximo para o PMMN.
Algoritmo 4.6: Heurística vizinho mais próximo para o PMMN
A heurística vizinho mais próximo para o PMMN é 2( n 2N ! ). A complexidade do
algoritmo depende do Passo 4, cujo ciclo é executado 2( n ) vezes. Em cada passo
deste ciclo, avaliam-se as permutações das larguras de todos os padrões livres,
operação que é 2( nN ! ). Logo, o algoritmo é 2( n 2N ! ).
O algoritmo para a heurística do vizinho mais afastado para o PMMN é em
tudo idêntico ao algoritmo 4.6, excepto na escolha do padrão a fixar em cada
iteração do Passo 4. Alternativamente a fixar o padrão livre com ligação de custo
mínimo (e respectiva permutação de larguras de custo mínimo), determina-se para
cada padrão livre, qual a permutação de larguras que tem o custo mínimo e
escolhe-se o padrão ao qual está associado o máximo desses custos mínimos. Isto
96
Capítulo 4
significa que o padrão j a fixar é aquele ao qual corresponde o custo
c kj = max  c k = min {c ki : Φ i ∈ Γ(ni ) ∧ Pi livre } : P livre  .
i


O algoritmo 4.7 descreve a heurística inserção de custo mínimo para o PMMN.
Início de inserção de custo mínimo para o PMMN
Passo 1. Iniciar todos os padrões como livres; fixos=0;
Passo 2. Para ( j = 1 até j = n ) calcular Env j ;
Passo 3. Encontrar j tal que Env j = max{Env i : 1 ≤ i ≤ n} ;
i
Encontrar
tal que
cj +c
j
{
}
= min c ji + c ij : Φ i ∈ Γ(ni ), Φ j ∈ Γ(n j ) ∧ Pi livre ;
i
Definir um circuito de cardinalidade 2 formado por P j e P e fixar Φ j e Φ ;
fixos=2; zˆ = 1 + c j + c
j
;
Passo 4. Enquanto (fixos<n) fazer
Encontrar j, k e :
{
}
c kj + c j − c k = min c k ′j ′ + c j ′ ′ − c k ′ ′ : Φ j ′ ∈ Γ(n j ′) ∧ Pj ′ livre ∧ P ′ segue Pk ′ no circuito ;
j ′, k ′, ′
fixar Φ j ;
fixar P j após Pk e seguido de P , definindo um circuito de cardinalidade fixos+1;
fixos=fixos+1;
zˆ = zˆ + c kj + c j − c k ;
Fim de Enquanto
Passo 5. Encontrar k e : c k = max{c ij : Pi é seguido por Pj no circuito } ;
i,j
Remover a ligação entre Pk e P ;
zˆ = zˆ − c k ;
Definir a sequência: π1 =
, π n = k e restantes posições dadas pela ordem no circuito;
Fim de inserção de custo mínimo para o PMMN.
Algoritmo 4.7: Heurística inserção de custo mínimo para o PMMN
Começa-se por iniciar todos os padrões como “livres”. Dado o padrão que apresenta
maior valor de Env, escolhe-se um outro, e as respectivas permutações de larguras
em ambos, de forma a construir um circuito de custo mínimo, de cardinalidade 2.
Esse circuito passa a ser a solução actual e calcula-se o seu custo. Iterativamente,
amplia-se o circuito actual por inserção de um padrão ainda livre, até atingir uma
solução de cardinalidade n. O padrão a inserir, a posição onde se insere, e a sua
permutação de larguras são determinados de forma a que o acréscimo no custo
total do circuito tenha valor mínimo. Ao inserir o padrão, fixa-se a correspondente
permutação de larguras e actualiza-se o custo do circuito actual.
Programação do corte
97
Para obter a sequência final, determina-se o par de padrões consecutivos com o
maior custo de mudança e remove-se essa ligação. O segundo padrão desse par
passa a ser o primeiro elemento da sequência final e o resto da sequência obtém-se
fixando os padrões pela ordem em que se apresentavam no circuito. Actualiza-se o
custo da solução zˆ , subtraindo-lhe o custo da ligação que se removeu.
A heurística inserção de custo mínimo para o PMMN é 2( n 3N ! + nN !2 ). Os
passos 3 e 4 determinam a complexidade do algoritmo. No passo 3, define-se um
circuito de custo mínimo de cardinalidade 2, avaliando todas as permutações de
larguras do padrão j e dos restantes n-1 padrões, ou seja, 2( nN !2 ) operações. O
passo 4 é executado n-2 vezes. Na iteração k, o circuito actual tem k+1 padrões.
Para cada par de padrões consecutivos no circuito, que são k+1, avalia-se o custo
de inserir entre eles cada um dos padrões livres, que são n-k-1. Para avaliar o
as e sequenciam-se por ordem não decrescente de data de conclusão. Faz-se
corresponder a cada data o número de??horas que decorre
fazem-se assim
2( N ! (k + 1)(n − k − 1) ) operações. O número total de operações no ciclo é
n −2
2  ∑k =1 N ! (k + 1)(n − k − 1) , ou seja, é 2( n 3N ! ). Logo, o algoritmo é


3
2
2( nON algoritmo
! + nN ! ). 4.8 descreve a heurística 2-optimal para melhoramento duma
solução do PMMN. Considere-se a solução representada pela permutação Π , a
correspondente sequência de permutações de larguras Φ Π = (Φπ 1 ,..., Φπ j ,..., Φπ n ) e
o custo, dado por z = z (Π, Φ Π ) . A heurística testa, para cada par de posições, se é
possível reduzir o custo da solução, trocando os índices na permutação e mantendo
fixas as correspondentes permutações das larguras da solução original. Se a troca é
atractiva, actualiza-se a solução Π , o seu custo z , e recomeça-se. O algoritmo
termina quando, para uma dada solução, não existem trocas favoráveis.
Dada uma solução, pesquisar se existe uma troca 2-optimal que corresponda a
um melhoramento é 2( n 2 ). O ciclo principal é executado n vezes e na iteração k
avaliam-se n-k trocas, ou seja, no total avaliam-se
∑k =1 n − k
n
trocas, o que é
2( n 2 ). O ciclo principal é executado pelo menos uma vez mas, não se pode dar um
limite superior para o pior caso. O ciclo é repetido sempre que se encontra uma
98
Capítulo 4
troca que reduza pelo menos uma unidade ao custo da solução, o que apenas
garante que o ciclo é repetido um número finito de vezes.
Início de 2-optimal para o PMMN
j = 1 ; Π̂ = Π ;
Enquanto ( j ≤ n ) fazer
i = j +1 ;
Enquanto ( i ≤ n ) fazer
ˆ , Φ Π̂ ) ;
Trocar πˆ i com πˆ j ; zˆ = z (Π
Se ( zˆ < z )
então
ˆ ; z = zˆ ; {* actualizar solução *}
Π=Π
j = 1 ; i = n + 1 ; {* sair do ciclo e recomeçar a pesquisa *}
senão
Trocar πˆ i com πˆ j ; i = i + 1 ; {* repor a solução e continuar a pesquisa *}
Fim de enquanto
j = j +1 ;
Fim de enquanto
Fim de 2-optimal para o PMMN.
Algoritmo 4.8: Heurística 2-optimal para o PMMN
4.4.4 Testes computacionais
Os algoritmos, que se descreveram na secção anterior, foram codificados em
Pascal, e, os códigos resultantes foram compilados no Borland Pascal 7.0. Os
tempos de execução referem-se a testes executados num computador com
processador Pentium IV 1600MHz com 256Mb de RAM.
Nos testes, utilizou-se o mesmo conjunto de dados reais utilizado em 4.3.3, após
as possíveis reduções de cardinalidade das soluções de corte. Os dados foram
alterados relativamente ao número de padrões e ao número médio de rolos por
padrão. A tabela 4.3 apresenta as características das instâncias e os resultados
obtidos por aplicação dos três algoritmos. A coluna #I é o índice da instância; as
colunas n e m apresentam, respectivamente, o número de padrões e o número de
larguras da instância; #rp é o número médio de rolos por padrão; #mrp é o número
máximo de rolos por padrão; CC é o número médio de rolos por padrão
multiplicado pelo número total de padrões; dim é a dimensão aproximada do
problema (número total de soluções admissíveis). Cada uma das sete colunas sob o
Programação do corte
99
título Valor do objectivo – NM, apresenta o número mínimo de movimentos das
navalhas obtido pela aplicação da heurística correspondente:
•
Ord – ordenação;
•
MP – vizinho mais próximo;
•
MP2 – vizinho mais próximo seguida de 2-optimal;
•
MA – vizinho mais afastado;
•
MA2 – vizinho mais afastado seguida de 2-optimal;
•
CI – inserção de custo mínimo e
•
CI2 – inserção de custo mínimo seguida de 2-optimal.
As seis últimas colunas, sob o título CPU (10-3 seg.), indicam os tempos de execução
dos algoritmos respectivos, em milésimos de segundo. Não se apresentam os
valores para a heurística Ordenação pois, para cada uma das instâncias, o tempo
de execução é inferior a um milésimo de segundo. As instâncias apresentam-se por
ordem não decrescente de CC. Na última linha, apresentam-se os valores médios
para os valores nas respectivas colunas.
CPU (10-3 seg.)
Valor do objectivo – NM
#I
5
12
3
17
16
1
9
7
4
14
8
2
18
6
15
10
20
13
11
22
19
21
n
6
6
7
8
6
9
9
8
9
11
11
12
9
14
14
14
13
21
21
26
28
27
m
6
9
11
9
11
10
11
13
10
12
14
15
11
17
21
16
21
23
22
32
34
31
#rp #mrp
3.00
3
3.00
3
3.14
4
3.13
4
4.17
5
3.00
3
3.11
4
3.75
5
3.44
5
3.09
4
3.18
4
3.42
5
4.56
6
3.36
4
3.86
5
4.07
6
4.54
6
3.33
4
3.33
5
3.58
5
3.50
4
3.81
6
13
16 3.52
4.6
CC
18
18
22
25
25
27
28
30
31
34
35
41
41
47
54
57
59
70
70
93
98
103
Dim
3.0E+07
3.0E+07
6.0E+09
3.0E+11
9.0E+11
4.0E+12
1.0E+13
4.0E+14
1.0E+15
6.0E+16
2.0E+17
1.0E+21
4.0E+21
7.0E+24
1.0E+29
4.0E+31
5.0E+32
2.0E+40
3.0E+40
1.0E+56
5.0E+59
1.0E+63
Ord
13
12
12
17
20
20
19
20
20
25
24
27
28
37
41
46
48
56
57
81
70
93
MP MP2
12
12
12
12
12
11
18
14
17
16
14
13
17
15
22
19
18
16
22
21
20
20
26
26
23
21
31
31
31
30
40
35
42
38
43
40
46
44
62
58
56
51
72
66
MA MA2
15
12
13
12
17
11
19
15
20
18
21
14
20
14
24
19
23
16
27
21
25
20
30
26
30
21
39
31
43
32
51
34
50
39
61
39
62
46
88
61
83
57
96
70
CI
12
12
11
15
16
14
14
19
17
21
20
27
20
31
30
34
40
39
44
57
55
67
CI2
12
12
11
14
16
13
13
19
16
21
20
26
20
31
30
33
38
38
43
56
53
65
46.6
5.0E+61 35.7 29.8 27.8 38.9 28.5 28.0 27.3
MP MP2
0
1
0
0
1
1
3
3
4
4
1
1
1
1
6
6
1
2
1
2
2
2
2
3
24
24
3
4
10
12
71
73
49
51
9
12
18
22
23
38
16
34
49
63
13
16
MA MA2
CI CI2
0
0
1
2
0
0
1
1
0
0
2
2
1
0
20
20
2
0
15
16
1
1
4
5
1
1
8
8
2
0
15
16
1
1
5
6
1
1
13
14
1
1
14
15
1
2
22
23
9
1 204 204
2
58
37
38
6
3
63
64
22
4 863 864
16
3 513 515
5
16 133 137
5
13 239 242
13
43 221 228
12
47 407 419
24
45 2481 2488
6
11
240
242
Tabela 4.3: Resultados relativos aos algoritmos de sequenciamento para o PMMN
Os resultados permitem concluir que a heurística Ordenação apresenta soluções de
qualidade pobre, tendo atingido o melhor valor encontrado, apenas para uma
100
Capítulo 4
instância de pequena dimensão (a 12). Para cada instância, o melhor valor
encontrado foi obtido pela aplicação da heurística CI2, com excepção da instância
19, para a qual esta heurística é superada pela MP2. Em relação à qualidade dos
resultados, a heurística MP2 sucede a CI2 – permite obter o melhor valor
encontrado para 14 instâncias, e em média o valor obtido está a 1.8% do melhor
encontrado. Para as heurísticas que não incluem a fase 2-optimal, a CI é a que
apresenta melhores resultados – atinge o melhor valor encontrado em 10
instâncias, todas elas com um valor do factor de dimensão inferior a 50. Para esta
heurística, o tempo despendido para efectuar melhoramentos 2-optimal não é
significativo (inferior a 1%). A fase 2-optimal permite uma redução média, do valor
do objectivo, da ordem de 2.5%. Para a heurística MP, a fase 2-optimal requer
cerca de 23% de esforço computacional extra, conduzindo a um melhoramento
médio da ordem de 7%. Das heurísticas base-PCV, a heurística MA é a que
apresenta resultados de pior qualidade. A fase 2-optimal aplicada à MA, requer
um esforço adicional de cerca de 83% a que corresponde a um melhoramento médio
de cerca de 36%. Neste caso, na fase 2-optimal, detecta-se um elevado número de
trocas que melhoram a solução e de cada vez que se efectua uma troca, a solução
actual é reprocessada, o que explica o elevado esforço relativo adicional.
O gráfico da figura 4.8 apresenta a evolução do melhor valor encontrado (NM)
para a função objectivo, em função do indicador CC. O custo da solução cresce
linearmente em função de CC.
NM
60
40
Melhor valor
encontrado
20
CC
0
0
20
40
60
80
100
Figura 4.8: Melhor valor encontrado para NM em função de CC
120
Programação do corte
101
A heurística CI2 é a que apresenta melhores resultados. O tempo de execução da
CI2 depende do número máximo de rolos por padrão. O esforço computacional é
praticamente consumido na totalidade pela execução da heurística CI, que como já
se referiu anteriormente é 2( n 3N ! + nN !2 ).
O gráfico na figura 4.9 mostra a evolução do tempo de execução da CI2, em
função do número máximo de rolos por padrão (#mrp) e da dimensão do problema
(Dim). O índice das instâncias está em abcissa e ordenaram-se os dados por ordem
crescente de #mrp e, para igual valor de #mrp, por ordem não decrescente de Dim.
Os dados foram truncados, em ordenada, no valor 900, não se apresentando a
barra total relativa à instância 21, a que corresponde o valor real de 2488. O
gráfico mostra que, para o mesmo valor de #mrp, o tempo de execução da CI2,
cresce exponencialmente em função de n.
900
CPU (mili. seg.)
800
700
600
500
400
300
200
100
0
instâncias
5
12
1
3
17
9
14
8
6
13
19
16
7
4
2
15
11
22
18
20
10
#mrp
3
3
3
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
6
6
6
6
n
6
6
9
7
8
9
11
11
14
21
28
6
8
9
12
14
21
26
9
13
14
27
C I2 C pu
2
1
5
3
20
8
14
15
38
137 419
16
16
6
23
64 242 228 204 515 864 2488
21
Figura 4.9: Desempenho da heurística CI2
Conclusões e comentários
Recomenda-se a aplicação da heurística CI2 para a resolução de problemas reais. É
a heurística que apresenta melhores resultados. Apesar de requerer um acréscimo
de esforço computacional, adequa-se a ser implementada num ambiente de apoio à
decisão. Para as instâncias reais que se testaram, o seu tempo de execução médio
foi inferior a meio segundo, sendo o maior valor observado inferior a 3 segundos –
102
Capítulo 4
para a instância de maior dimensão, a 21, com um número máximo de rolos por
padrão com valor 6 e com 27 padrões.
Uma das lacunas na implementação das heurísticas base-PCV, é ter-se fixado
como primeiro padrão na sequência, o padrão na primeira posição da solução da
heurística ordenação, e a correspondente permutação de larguras. A questão
relativa à posição do padrão é parcialmente corrigida pela fase de melhoramentos
2-optimal. Fica aberta a questão de quanto se poderia melhorar, se se testassem,
na primeira posição, todas as permutações de larguras de todos os padrões. Na
heurística CI, apesar de se predeterminar um dos padrões a incluir na solução
inicial, já se testam todas as permutações nesse padrão.
Apesar do objectivo ser avaliar o comportamento dos algoritmos na resolução de
instâncias reais, importa salientar que para as instâncias testadas, o número
máximo de itens por padrão é oito. Isto significa que o bom desempenho dos
algoritmos se deve essencialmente à dimensão das instâncias. A estratégia das
heurísticas construtivas base-PCV e da 2-optimal inclui testar todas as
permutações de itens em cada padrão. Fica por estudar a maior dimensão das
instâncias para a qual seria razoável continuar a aplicar estes algoritmos.
A função objectivo que se considerou difere das apresentadas na literatura, o
que impede de estabelecer comparações com os resultados obtidos por outros
autores. Por outro lado, a quantidade de resultados/instâncias que se encontram
na literatura são de reduzida dimensão. Mais ainda, os autores, quando
contactados não se mostraram disponíveis para fornecer os exemplos que testaram
nos seus trabalhos. No início do século XXI, o PMMN
tem a “idade” que o
problema de corte tinha na década de 70, e ironicamente, aplica-se ao PMMN a
citação que em [Hinxman, 1980] se aplicava ao PC (cf. 4.2.1) “a quantidade de
literatura referente ao problema é muito limitada, o que se deve ao facto de muitos
modelos, procedimentos e programas terem sido desenvolvidos por empresas e
mantidos confidenciais”.
Programação do corte
103
4.5 Problema de sequenciamento bi-objectivo
Os itens produzidos são de grande dimensão física, o que dificulta a sua
movimentação e armazenamento temporário enquanto se encontram em espera
para serem catalogados e seguirem para armazém. Quando o número de itens em
espera para serem catalogados é elevado, torna-se difícil a distinção de itens iguais
ou "quase iguais" destinados a clientes diferentes. Para além disso, existem
também limitações físicas do espaço de trabalho. Estes factores conduzem muitas
vezes a perdas de produtividade que é necessário minimizar. De seguida,
apresentam-se duas medidas que, embora diferentes, permitem avaliar a
qualidade dum plano de corte neste contexto.
Dada uma sequência de padrões de corte e considerada uma encomenda, o
espalhamento da encomenda (order spread) é a "distância" entre o primeiro e o
último rolo (relativamente à ordem pela qual serão cortados de acordo com a
sequência dada) destinados a satisfazer a encomenda de um mesmo cliente. Para
avaliar esta distância considera-se o número de padrões que se cortam desde o
início até ao término do corte da encomenda, embora existam outras formas de o
quantificar (e.g., contar o número de carretéis). Assim, dada uma encomenda, o seu
espalhamento é 0, se todos os rolos que se destinam a satisfazê-la forem obtidos no
mesmo padrão; é 1, se todos os rolos forem cortados por dois padrões consecutivos;
e, assim, consecutivamente. Como critério de optimização, considera-se a
minimização do valor médio do espalhamento das encomendas num plano (existem
variantes como, por exemplo, considerar o valor máximo de espalhamento).
Esta medida relaciona-se com a avaliação individual da distribuição das
encomendas no plano. Para a calcular, conta-se o número de padrões necessários
para cortar cada encomenda, sem se considerar a componente temporal.
Enquanto não se conclui o corte duma encomenda, os rolos já produzidos ficam
em espera para serem catalogados. Assim, durante o corte dum determinado
plano, é criada um fila de encomendas parcialmente produzidas, que denominamos
por pilhas abertas (open stacks). Após o corte dum determinado padrão, a pilha
104
Capítulo 4
para uma dada encomenda diz-se aberta quando já se iniciou, mas ainda não se
concluiu o seu corte. O número de encomendas nessa situação, num dado instante,
é o número de pilhas abertas. Como critério de optimização, considera-se a
minimização do número máximo de pilhas abertas num plano (existem variantes
como, por exemplo, considerar o valor médio ou o valor total).
O número de pilhas abertas relaciona-se com a avaliação das encomendas em
termos de conjunto, ao longo do tempo. Para o calcular, dado um plano, conta-se o
número de encomendas com pilha aberta, em cada momento da execução do plano.
Em algumas abordagens, o sequenciamento faz-se considerando que cada
largura/item corresponde a uma encomenda. Após a afectação dos itens às
encomendas, por “encomenda” pode-se entender uma linha de encomenda, ou todas
as linhas de encomenda que correspondem à mesma encomenda dum dado cliente.
Sem perda de generalidade, utilizar-se-á o termo item para referenciar qualquer
uma destas situações.
A experiência de colaboração com a empresa que disponibilizou o caso em
estudo, mostrou que os responsáveis pelo planeamento não conseguiam estabelecer
uma preferência relativamente aos critérios a considerar no problema de
sequenciamento de padrões de corte. Quando inquiridos sobre qual destas duas
medidas preferiam optimizar referiram que a sua decisão só podia ser tomada
comparando diferentes sequências. Este facto motivou a proposta do problema de
sequenciamento de padrões bi-objectivo que considera (i) a minimização do número
máximo de pilhas abertas e (ii) a minimização do espalhamento médio das
encomendas. Dada a escassez do espaço, a escolha do objectivo (i) decorre da
necessidade de minimizar a ocorrência de enganos na catalogação dos produtos
acabados, na eventualidade do pior caso. O objectivo (ii) relaciona-se com a
qualidade dos planos obtidos, relativamente ao espalhamento em termos médios. A
resolução do problema bi-objectivo permite adquirir conhecimento acerca do espaço
de soluções que não seria adquirido com a resolução dos correspondentes
problemas de objectivo único. As abordagens de resolução de objectivo único
Programação do corte
105
exploram o espaço de decisão em apenas uma direcção, e podem perder-se soluções
eficientes do problema bi-objectivo.
Como refere Horn, na tomada de decisão multi-objectivo, existem três modos
gerais de procedimento [Horn, 1997]:
1) decidir relativamente a uma função de utilidade que avalie as soluções e
depois proceder à pesquisa das soluções;
2) proceder à pesquisa de soluções e só depois à tomada de decisão; e
3) integrar a pesquisa de soluções com a tomada de decisão.
A abordagem que se desenvolveu integra-se na categoria 2. Aproxima-se o conjunto
de soluções não dominadas utilizando um algoritmo evolutivo de optimização
multi-objectivo. Obtém-se assim um conjunto de soluções potencialmente não
dominadas, cuja análise permite ao agente de decisão a escolha da solução a
implementar.
Outra motivação para resolver este problema bi-objectivo advém da seguinte
questão “Qual a extensão máxima aceitável de perda de qualidade num objectivo
para se optimizar o outro objectivo?”.
Linhares e Yanasse mostram que o PMEE e o PMPA conduzem a soluções
potencialmente diferentes [Linhares e Yanasse, 2002]. As abordagens disponíveis
na literatura da especialidade têm-se dedicado apenas aos problemas com um
único objectivo. Elaboraram-se algumas conjecturas teóricas relacionando o PMEE
e o PMPA ([Yanasse, 1997] e [Linhares e Yanasse, 2002]). No entanto, não se
estabeleceram quaisquer resultados práticos sobre as relações entre os dois
objectivos.
Para abordar o problema utiliza-se um algoritmo evolutivo do qual se
conceberam uma versão pura e outra híbrida (integrando mecanismos de pesquisa
local). As experiências computacionais, para além de avaliar a adequação do
algoritmo, visam estabelecer uma relação de variação entre os dois objectivos
considerados.
106
Capítulo 4
4.5.1 Definições
Considere-se uma solução de corte definida pelo conjunto de padrões P1,..., Pn , a
cortar r1 ,..., r n vezes, respectivamente, e onde aij é o número de vezes que o item
i é cortado no padrão j , i = 1,..., m , j = 1,..., n . Uma permutação dos índices dos
padrões Π = (π 1 ,..., π n ) representa uma sequência de corte.
O espalhamento do item (encomenda) i na sequência Π , i = 1,..., m , é dado por
s i (Π ) , que se define como
{
}
{
}
s i (Π ) = max j : aiπ j > 0 – min j : aiπ j > 0
(4.9).
O espalhamento médio das encomendas para a sequência representada por Π é
dado por
EME ( Π ) =
1 m
∑ s i (Π)
m i =1
(4.10).
O Problema de Minimização do Espalhamento médio das Encomendas (PMEE)
consiste em encontrar uma permutação que minimiza o valor EME (Π ) .
Considere-se a mesma solução de corte e a sequência representada por
Π = (π 1 ,..., π n ) . A pilha para o item i , i = 1,..., m , está aberta durante o corte do
k , sse q ik ( Π ) = 1 , onde
n
1, se  k a
 ∑ j =1 iπ j  ∑ j = k aiπ j  > 0




q ik ( Π ) = 
0, caso contrário

(4.11).
O número médio de pilhas abertas para a sequência representada por Π é dado
por
PA ( Π )
=
1
∑
n
r
j =1 j
∑k =1  ∑i =1 q ik (Π )  rπ k
n
m
e o número máximo de pilhas simultaneamente abertas é dado por
MPA ( Π )
=
max k =1,..., n
{∑
m
q
i =1 ik
(Π )
}
(4.12).
Programação do corte
107
O Problema de Minimização do número máximo de Pilhas Abertas (PMPA)
consiste em encontrar uma permutação que minimize MPA (Π ) .
*
*
Designam-se por z EME
( Π ) = min Π ∈Γ EME ( Π ) e z MPA ( Π ) = min Π ∈Γ MPA ( Π ) ,
onde Γ é o conjunto de todas as permutações de cardinalidade n, os valores
óptimos para os problemas PMEE e PMPA, respectivamente.
Um limite inferior para o valor do número máximo de pilhas abertas é dado
pelo valor máximo de encomendas diferentes, cortadas num mesmo padrão.
O número de soluções cresce exponencialmente com o número de padrões e é
dado por n!. Numa situação real típica esse número é da ordem de 106 a 1032.
Exemplo
Consideremos uma solução de corte com 5 padrões e 8 itens, conforme se apresenta
na tabela 4.4. A primeira coluna indica os índices do padrões que estão ordenados
de acordo com a permutação identidade, Π . Segue-se a matriz, onde cada célula
exibe o número de vezes que se corta cada item em cada um dos padrões. A última
coluna apresenta o número de pilhas abertas durante o corte do padrão j. A última
linha, s i (Π ) , apresenta o espalhamento para cada item i, dada a sequência Π .
πj
i=1
i =2
i =3
i =4
i =5
i =6
i =7
i =8
∑i q ij (Π)
1
2
3
4
5
s i (Π)
0
0
0
1
0
1
1
0
0
0
0
1
1
0
1
1
0
1
1
0
0
0
0
0
2
0
0
1
0
0
1
0
0
0
0
0
1
0
1
0
3
4
4
4
2
0
1
3
3
0
0
0
2
Tabela 4.4: Exemplo de cálculo do espalhamento e do número de pilhas abertas – solução 1
Para a sequência de corte Π , tem-se MPA (Π ) =4 e EME (Π) = 9 / 8 = 1.125 .
A tabela 4.5 ilustra a ordenação dos padrões de acordo com a permutação
ˆ = (5, 3, 2, 1, 4) . Da mesma forma, a última coluna apresenta o número de pilhas
Π
abertas durante o corte do padrão j e a última linha apresenta o espalhamento do
ˆ ) =4 e EME (Π
ˆ) = 8/8 =1.
item i. Para a sequência de corte Π̂ , tem-se MPA(Π
108
Capítulo 4
πˆ j
i=1
i =2
i =3
i =4
i =5
i =6
i =7
i =8
∑i q ij (Πˆ )
5
3
2
1
4
0
0
0
0
1
0
0
1
1
0
1
1
1
0
0
0
1
0
1
1
2
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
0
1
2
3
4
4
3
ˆ)
s i (Π
0
1
2
3
0
0
0
2
Tabela 4.5: Exemplo de cálculo do espalhamento e do número de pilhas abertas – solução 2
4.5.2 Trabalho relacionado
Dyson e Gregory integram aspectos de sequenciamento de padrões durante a
geração de padrões [Dyson e Gregory, 1974]. Consideram a minimização das
descontinuidades, como objectivo, e relacionam o problema com o PCV.
Em [Haessler e Talbot, 1983] apresenta-se uma heurística para o problema de
corte de cartão canelado (corrugator) que inclui aspectos de minimização do
espalhamento das encomendas. Definem-se elementos de corte, como formas de
cortar uma, duas, ou três encomenda(s), usando um ou dois padrões de corte.
Usando quatro tipos de elementos de corte, o problema é formulado em
Programação Linear Inteira 0/1, como um problema de partição com restrições
adicionais. Os elementos de corte são previamente gerados, e em seguida usa-se
um algoritmo de enumeração implícita para o problema de partição, incluindo
testes para a verificação das restrições adicionais.
O PMEE é introduzido por Madsen, [Madsen, 1988], que descreve uma
aplicação no contexto do corte bidimensional de peças de vidro. O problema é
formulado como um PCV e aplica-se uma heurística 3-optimal. Para evitar os
longos tempos associados aos procedimentos k-optimal, Madsen sugere a aplicação
do procedimento a um problema auxiliar, onde se minimiza o número de
descontinuidades1 numa sequência. Assume-se que a solução deste problema
auxiliar é a solução do PMEE, o que não corresponde à realidade.
Em [Yuen, 1991, 1995] apresentam-se e comparam-se heurísticas baseadas em
regras de prioridade para o PMPA, no âmbito de problemas bidimensionais na
1
Uma descontinuidade ocorre quando uma encomenda pertence a um padrão mas não pertence ao
subsequente.
Programação do corte
109
indústria de vidro. Na sequência destes trabalhos, Yuen e Richardson descrevem
métodos para estabelecer a optimalidade de soluções do PMPA [Yuen e
Richardson, 1995]. Um destes métodos, baseia-se no cálculo dum limite inferior e
apenas pode ser aplicado em instâncias onde o número de pilhas abertas seja
“pequeno”. O outro consiste na enumeração implícita sobre todas as sequências.
Este trabalho apresenta como resultado principal, a prova de que duas das
heurísticas de Yuen são quasi-optimais, mas apenas se conseguiram trabalhar
instâncias com dimensão máxima de 30 padrões.
Em [Foerster e Wäscher, 1998] descreve-se a aplicação duma heurística de
pesquisa local tipo 3-optimal para o PMEE e estuda-se o comportamento dum
algoritmo de simulated annealing integrando movimentos 2-optimais. Para
economizar o esforço computacional, a heurística 3-optimal não procura trocas
entre padrões, uma vez que isso implica reavaliar toda a permutação. Consiste em
partir a sequência actual em três posições e testar as trocas 3-optimais com as
subsequências resultantes. Avaliam-se os algoritmos sobre um conjunto de 2400
instâncias geradas aleatoriamente. Conclui-se que o procedimento 3-optimal tem
melhores resultados do que a heurística de Madsen, embora o esforço
computacional para algumas instâncias seja excessivo.
Yanasse reporta alguns problemas relacionados com o PMPA e estabelece
algumas conjecturas [Yanasse, 1997]. Neste trabalho, descreve formas de calcular
limites inferiores para o PMPA e esboça um algoritmo de pesquisa em árvore com
ramificação e limitação, não apresentando resultados de aplicação. Recentemente,
Linhares e Yanasse provam que o PMPA é NP-difícil [Linhares e Yanasse, 2002].
Relacionam o PMPA com o problema de desenho VLSI (design of very-large-scale
integrated systems), e clarificam algumas conjecturas das relações do PMPA com
outros problemas de sequenciamento de padrões.
Faggioli e Bentivoglio sugerem uma abordagem que integra uma heurística de
construção “gulosa”, seguida por pesquisa tabu, ou por um procedimento de
pesquisa local generalizada [Faggioli e Bentivoglio, 1998]. Utilizam a melhor
110
Capítulo 4
solução encontrada como limite superior para um processo de enumeração
implícita.
Fink e Voss abordam ambos os problemas e apresentam uma prova de que o
PMEE é NP-difícil [Fink e Voss, 1999]. Desenvolvem e avaliam heurísticas
construtivas, heurísticas de tipo 2-optimal e algoritmos de simulated annealing,
pesquisa tabu (várias versões). Integram ainda heurísticas adaptativas de
avaliação de vizinhanças.
No sistema de apoio à decisão desenvolvido no âmbito do caso em estudo,
[Captivo, Respício e Rodrigues, 2000] e [Respício, Captivo e Rodrigues, 2002],
integra-se o PMEE com a afectação dos itens numa solução de corte às encomendas
dos clientes – conforme se descreve
em 4.2.4. Na afectação utiliza-se uma
heurística baseada em regras de prioridade que minimiza o número de padrões que
cortam cada encomenda, o que contribui para reduzir a dispersão das encomendas.
Os trabalhos que se referiram, focam todos, abordagens de objectivo único para
o PMEE e/ou o PMPA. Em alguns, o critério é abordado de uma forma implícita e,
a forma de avaliar as soluções difere consoante os autores.
A tabela 4.6 sumaria, para cada um destes trabalhos, o problema abordado e o
tipo de abordagem utilizada. A descrição das colunas na tabela é a seguinte:
•
EE – minimização do espalhamento das encomendas;
•
PA – minimização do número de pilhas abertas;
•
DT – desenvolvimentos teóricos;
•
PLI – Programação Linear Inteira;
•
RP – heurísticas baseadas em regras de prioridade;
•
H – heurísticas;
•
SA – simulated annealing;
•
PT – pesquisa tabu;
•
PL – pesquisa local e
•
EI – enumeração implícita.
Programação do corte
111
Para cada trabalho, apresenta-se um ‘X’ nas células que correspondem ao critério
ou à abordagem / técnica utilizada.
Trabalho
[Dyson e Gregory, 1974]
[Haessler e Talbot, 1983]
[Madsen, 1988]
[Yuen, 1991; 1995]
[Yuen e Richardson, 1995]
[Yanasse, 1997]
[Foerster e Wäscher, 1998]
[Faggioli e Bentivoglio, 1998]
[Fink e Voss, 1999]
[Captivo, Respício e Rodrigues, 2000]
[Yanasse e Linhares, 2002]
EE
X
X
X
PA
DT
PLI
X
X
RP
SA
PT
PL
EI
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
H
X
X
X
X
X
X
X
X
X
X
X
X
Tabela 4.6: Sumário da literatura para o PMEE e o PMPA
4.5.3 Modelo bi-objectivo
Apresentam-se em seguida algumas definições e conceitos referentes a optimização
multi-objectivo e a algoritmos evolutivos.
Problema de optimização multi-objectivo
Um problema de optimização multi-objectivo pode ser formulado como
max/min
y = f ( x ) = ( f 1 ( x ), f 2 ( x ),..., f n ( x ))
(4.13)
sujeito a : x = ( x 1 , x 2 ,..., x m ) ∈ X
onde
−
x representa um vector de decisão, com m variáveis, X é o espaço dos
vectores de decisão, e
−
y
representa um vector de valores das funções objectivo, com n
variáveis, para um vector de decisão.
Pode-se designar por Y a imagem de X por f.
Consideremos, sem perda de generalidade, um problema de minimização.
Sendo a e b dois vectores de objectivos, diz-se que a domina b ( a
b ) se e só se
∀i ∈ {1, 2, ..., n } ⇒ ai ≤ bi e ∃j ∈ {1, 2, ..., n } : a j < b j .
Um vector de decisão é eficiente se o vector de objectivos que lhe corresponde
não é dominado.
112
Capítulo 4
O conjunto óptimo de Pareto é o conjunto de todos os vectores eficientes, no
espaço de decisão. Os vectores não dominados correspondentes, no espaço de
objectivos, constituem a frente óptima de Pareto.
Consideremos, sem perda de generalidade, um problema de minimização, da
forma (4.13). Seja x *(i ) o vector de decisão para o qual a i-ésima função objectivo
toma o valor óptimo f i* = f i ( x *( i ) ) .
O ponto ideal é z * = f
*
= (f 1* , f 2* ,
, f m* ) , ou seja, é o ponto no espaço de
objectivos, em que cada componente corresponde ao valor óptimo para o objectivo
respectivo. O ponto ideal representa o limite inferior de cada objectivo,
considerando o espaço de soluções admissíveis e só representa uma solução
admissível quando a frente óptima de Pareto é um conjunto singular.
O ponto nadir representa o limite superior de cada objectivo na frente óptima
de Pareto. Para um problema com dois objectivos, consideremos as soluções
extremas da frente óptima de Pareto, dadas por z *(1) = (f 1 ( x *(1) ), f 2 ( x *(1) )) e
z *(2) = (f 1 ( x *( 2) ), f 2 ( x *(2) )) , ou seja, z *(1) e z *( 2) são os pontos do espaço de
objectivos correspondentes aos mínimos lexicográficos de f 1 e f 2 , respectivamente.
O ponto nadir pode ser estimado por z nad = (f 1 ( x *(2) ), f 2 ( x *(1) )) .
A figura 4.10 ilustra os conceitos que se acabam de descrever, para um
problema bi-objectivo.
z*(1)
znad região admissível do espaço
dos objectivos
frente óptima de Pareto
solução não dominada
z*
solução dominada
z*(2)
f1
Figura 4.10: Problemas bi-objectivo: ilustração de conceitos
Programação do corte
113
Modelo bi-objectivo
Dada uma solução de corte, como se define em 4.5.1, o problema bi-objectivo é a
minimização da função f, que transforma cada permutação num par de valores
para os objectivos:
min y = f (x ) = (f1(x ), f 2(x ))
sujeito a
(4.14)
x ∈Γ,
y ∈(
,
)
onde f 1 ( x ) = MPA ( x ), f 2 ( x ) = EME ( x ) e Γ é o conjunto de todas as permutações
de cardinalidade n .
Neste problema bi-objectivo, um único ponto no espaço de objectivos
corresponde muitas vezes a múltiplas alternativas para os vectores de decisão. As
abordagens de optimização com um único objectivo não tomam em consideração
este facto. Por outro lado, algumas soluções óptimas de Pareto são perdidas. A
aproximação do conjunto óptimo de Pareto permite, assim, uma exploração mais
efectiva do espaço de soluções.
Exemplo
Consideremos a solução de corte dada pela tabela 4.7, apresentada originalmente
em [Linhares e Yanasse, 2002].
Padrão
rj
1
2
3
4
1
1
1
1
Item
1
1
0
0
1
2
1
0
1
0
3
1
0
1
0
4
0
1
0
1
5
0
1
0
1
6
0
1
0
1
7
0
1
1
0
8
0
0
1
1
9
0
1
0
0
10
0
1
0
0
11
0
0
1
0
12
0
0
1
0
13
0
0
1
0
14
0
0
0
1
Tabela 4.7: Uma solução de corte
Na tabela 4.8 listam-se as permutações de cardinalidade 4 e apresentam-se, para
cada uma delas, os valores correspondentes para as funções MPA e EME
calculados com os dados na tabela 4.7. Como estas funções são simétricas, ou seja,
MPA ( Π ) = MPA ( Π −1 )
e
EME ( Π ) = EME ( Π −1 ) ,
onde
Π −1
representa
permutação inversa de Π , omitem-se as permutações inversas das listadas.
a
114
Capítulo 4
Π
1
1
1
1
1
1
2
2
3
3
4
4
2
2
3
4
3
4
1
1
1
1
1
1
3
4
2
2
4
3
3
4
2
4
2
3
MPA (Π )
4
3
4
3
2
2
4
3
4
2
3
2
11.0000
9.0000
8.0000
9.0000
8.0000
10.0000
11.0000
9.0000
8.0000
7.0000
9.0000
10.0000
EME (Π )
1.0714
1.0000
0.7857
0.9286
0.7143
0.9286
1.1429
1.0714
0.8571
0.7857
1.0714
1.0714
Tabela 4.8: Valores possíveis para MPA e EME
*
Verifica-se que o óptimo para o PMEE é z EME
(Π ) =0.7143, para Π = (1,3,4,2) e para
a sua inversa. Para estas permutações tem-se o valor correspondente MPA (Π ) =8.
*
Não existem outras permutações para as quais se tenha EME ( Π) = z EME
(Π ) . A
*
solução óptima para o PMPA é z MPA
( Π ) = 7, para Π = (3,1,4,2) e para a sua
inversa. Neste caso EME ( Π) = 0.7857. Esta solução óptima também é única.
Neste exemplo, a frente óptima de Pareto é o conjunto com apenas dois pontos:
{ (7, 0.7857), (8, 0.7143) }. O ponto ideal é (7, 0.7143) e o ponto nadir é (8, 0.7857).
4.5.4 Algoritmo evolutivo para a optimização bi-objectivo
Nos últimos anos, a área de Algoritmos Evolutivos Multi-Objectivo (AEMO) tem
atraído a atenção dos investigadores. O estado da arte é descrito nos trabalhos
[Horn, 1997], [Veldhuizen e Lamont, 1998], [Coello, 2000], e [Zitzler, 2002].
Os algoritmos evolutivos englobam uma classe de métodos de optimização
estocástica que simulam o processo de evolução natural. Os trabalhos de Holland
da década de 70, na concepção de algoritmos genéticos, são uma referência
fundamental [Holland, 1995]. Em [Michalewicz, 1994] apresenta-se uma descrição
exaustiva das técnicas de programação evolutiva e de múltiplas aplicações.
Conceitos base
Um algoritmo evolutivo considera um conjunto de soluções candidatas, que se
denominam
por
indivíduos.
Este
conjunto
de
indivíduos
é
modificado
iterativamente, simulando a evolução duma espécie ao longo de várias gerações, de
acordo com os princípios básicos de evolução – a selecção e a variação. A selecção
Programação do corte
115
imita a competitividade dos indivíduos pela sobrevivência e a subsequente
reprodução dos mais aptos, garantindo a continuação das suas características por
descendência entre gerações. A variação simula os processos naturais de
1) recombinação, em que os indivíduos acasalam e reproduzem-se, originando
uma nova geração; e de
2) mutação, em que alguns indivíduos sofrem uma alteração do material
genético que herdaram dos seus progenitores.
Utiliza-se uma codificação para representar as variáveis através duma sequência
(vector). Por exemplo, para representar números inteiros é vulgar usar a
representação binária – cada número num determinado intervalo é representado
por uma sequência de 0’s e 1’s, cuja dimensão depende do intervalo que se
pretende representar. Cada concretização possível representa uma solução, e
denomina-se por cromossoma, ou indivíduo.
O processo, que se ilustra na figura 4.11, inicia-se com a geração duma
população inicial: por um procedimento aleatório ou por outro processo que
permita gerar um conjunto de representações de soluções admissíveis.
Gerar população inicial
Ngerações=0
Avaliação
Atribuição de adequação
Parar?
Não
Selecção
Sim
Extrair solução
Ngerações=Ngerações+1
Recombinação
Mutação
Figura 4.11 Funcionamento base dum algoritmo evolutivo
Iterativamente, avalia-se e constrói-se uma população, correspondendo uma
geração a cada iteração. Utiliza-se um contador de gerações. Em cada geração,
avalia-se cada indivíduo calculando o valor da função objectivo, e duma medida de
satisfação das restrições. Com base nesta avaliação, atribui-se, a cada indivíduo, o
116
Capítulo 4
valor de adequação que permite qualificar e ordenar os elementos da actual
população. Assim, a função de adequação é uma medida relativa da qualidade dos
indivíduos numa população. Para construir uma nova população, procede-se à
selecção. Identificam-se os indivíduos a reproduzir e guardam-se múltiplas cópias
dos “melhores” num conjunto de indivíduos a reproduzir – a mating pool. Em
seguida,
alguns
indivíduos
desse
conjunto,
escolhidos
e
emparelhados
aleatoriamente, originam novos indivíduos por aplicação dum operador de
recombinação. A ideia subjacente consiste em admitir que eventuais combinações
do material genético de dois indivíduos pode conduzir a melhoramentos. Por fim,
dos indivíduos resultantes, escolhem-se alguns aleatoriamente e aplica-se um
operador de mutação que, como o nome indica, efectua uma alteração no material
genético do indivíduo. Os indivíduos resultantes constituem a população actual, ou
seja, completou-se uma geração e passa-se à avaliação da geração seguinte. O
processo termina quando se atinge um limite predeterminado do número de
gerações, ou quando se verifica outro critério de paragem.
Os métodos clássicos para aproximação do conjunto óptimo de Pareto baseiamse numa agregação dos objectivos numa única função parametrizada, e na sua
subsequente optimização em várias operações de pesquisa (execuções), fazendo
variar os diferentes parâmetros. O sucesso dos métodos clássicos depende da
qualidade das técnicas para problemas de objectivo único que se podem adaptar,
da sensibilidade dessas técnicas em relação à forma da frente óptima de Pareto, e
do conhecimento prévio em relação ao problema multi-objectivo. Os AEMO
permitem ultrapassar estas deficiências. Através duma única operação de pesquisa
(execução) permitem manipular espaços de pesquisa suficientemente amplos e
gerar múltiplas soluções alternativas.
Não existem medidas, uniformemente reconhecidas pelos investigadores, que
permitam comparar e/ou avaliar o desempenho dum determinado AEMO na
optimização dum determinado problema. Quando se conhece a priori a frente
óptima de Pareto, pode avaliar-se a distância entre esta e a aproximação dada pelo
Programação do corte
117
algoritmo – o que só acontece para problemas muito específicos e/ou já bem
estudados. Esta situação contraria o que se passa para os problemas de objectivo
único, em que a distância entre a solução obtida e um determinado limite (limite
superior, no caso de minimização) é sempre uma medida da qualidade dos
resultados.
Representação dos indivíduos, selecção e variação
Na codificação dos indivíduos, os operadores de recombinação e mutação foram
adaptados dos conceitos e técnicas de algoritmos evolutivos, desenvolvidos para os
problemas de Caixeiro Viajante, (cf. cap. 10 de [Michalewicz, 1994]). Os indivíduos
são codificados usando a representação de caminho, que é a forma mais natural de
representar sequências.
A selecção faz-se por meio de torneio binário com substituição. Este processo
consiste em, dada uma população, escolher dois indivíduos de forma pseudoaleatória. O indivíduo que apresenta menor valor da função de adequação é
substituído por uma cópia do outro.
O operador de recombinação é o operador de cruzamento de ordem (order
crossover) (OX). O operador OX constrói um indivíduo que resulta de seleccionar
uma subsequência de um dos progenitores e preservar a ordem dos elementos do
outro progenitor. Este operador dá importância à ordem dos elementos na
sequência e não à sua posição.
A figura 4.12 ilustra o funcionamento deste operador. São dados dois indivíduos
– Pai_1 e Pai_2 – a recombinar. A subsequência a manter em cada indivíduo filho é
determinada pelos índices que marcam o início (Ini) e fim (Fim). Estes índices
obtém-se pela geração de dois números pseudo-aleatórios inteiros, compreendidos
entre 1 e a dimensão dos indivíduos. Filho_1 herda partir de Pai_1 a subsequência
(2, 9, 3), nas posições compreendidas entre Ini=5 e Fim=7 (inclusive). Em Pai_2 a
ordem dos elementos a partir de 3 é 1-2-4-6-8-9-7-5. Em Filho_1, as posições livres,
a partir da posição 7, são preenchidas com os elementos ainda não colocados pela
ordem em que estão em Pai_2, ou seja, 1-4-6-8-7-5. Assim, 1 ocupa a posição 8, 4 a
118
Capítulo 4
9, 6 a 1, 8 a 2, 7 a 3 e 5 a 2. Filho_2 é obtido de forma análoga mantendo nas
posições de 5 a 7, os elementos que ocupam essas posições em Pai_2. Recolocam-se
os restantes elementos pela ordem em que se apresentam em Pai_1.
Fim=7
Ini=5
Pai_1
7
6
5
1
2
9
3
4
8
Pai_2
2
4
6
8
9
7
5
3
1
Filho_1
6
8
7
5
2
9
3
1
4
Filho_2
3
4
8
6
9
7
5
1
2
Figura 4.12: Operador de recombinação OX
O operador de mutação é a troca recíproca (reciprocal exchange) que troca de
posição dois elementos na sequência, como se ilustra na figura 4.13. Geram-se dois
inteiros pseudo-aleatórios, que indicam os índices das posições dos elementos a
trocar, que neste caso, são Posição_1=2 e Posição_2=7. Os elementos que, no
indivíduo original, ocupam estas posições são o 4 e o 5, respectivamente. O
operador mutação coloca o elemento 4 na Posição_2 e o elemento 5 na Posição_1.
Posição_1 = 2
Posição_2 = 7
Indivíduo
2
4
8
9
7
6
5
3
1
Após
mutação
2
5
8
9
7
6
4
3
1
Figura 4.13: Operador de mutação troca recíproca
Aproximando a frente óptima de Pareto – Algoritmo SPEA2
Recentemente, Zitzler, Laumanns e Thiele [Zitzler, Laumanns e Thiele, 2002],
apresentaram o algoritmo SPEA2, que corresponde a uma versão melhorada do
Programação do corte
algoritmo
SPEA
(Strength
119
Pareto
Evolutionary
Algorithm),
previamente
desenvolvido pelos mesmos autores, e que aproxima o conjunto óptimo de Pareto
para problemas de optimização multi-objectivo. O SPEA2 foi comparado com
outras técnicas recentes de optimização multi-objectivo, tendo apresentado muito
bons resultados. Por este motivo, optou-se por adaptar o SPEA2 ao problema biobjectivo (4.14).
As principais características do SPEA2 incluem:
•
Elitismo
Em cada geração, as soluções potencialmente não dominadas são mantidas
num arquivo. Um procedimento de truncagem do arquivo garante a
preservação das soluções nos extremos do conjunto.
•
Um esquema de cálculo do valor de adequação refinado
A adequação de cada indivíduo depende do número de indivíduos que o
dominam e do número de indivíduos por ele dominados, e integra
informação da densidade das soluções vizinhas.
•
Diversidade das soluções em cada geração
Utiliza-se uma técnica de estimação da densidade baseada no conceito de
vizinho mais próximo, que permite a discriminação dos indivíduos que têm
igual valor de adequação base (raw fitness).
O algoritmo 4.9 descreve a versão base do algoritmo. Como parâmetros de entrada,
têm-se os seguintes valores:
− DimPop (dimensão da população)
−
DimArc (dimensão do arquivo)
−
T (número máximo de gerações)
−
ProbRec (probabilidade de recombinação)
−
ProbMut (probabilidade de mutação)
120
Capítulo 4
Início de SPEA2 – versão base
Passo 1: Inicialização
Iniciar o contador de gerações t = 0 . Gerar uma população inicial Pop0 e criar um
arquivo vazio Arc 0 .
Passo 2: Atribuição da adequação
2.1. Calcular o valor da função de adequação para cada indivíduo i em Popt + Arct .
2.2. Calcular EME (Π) e MPA(Π) , para a permutação Π que i representa;
2.3. Calcular a força de i , S (i ) =# {j : j ∈ Popt + Arct ∧ i j } (número de indivíduos
actualmente dominados por i );
2.4. Calcular a adequação de base de i , R(i ) = ∑ j : j ∈Pop + Arc , j i S ( j ) (soma dos
t
t
valores de força dos indivíduos que actualmente dominam i );
2.5. Calcular o valor da densidade para i , D (i ) =
1
σ ik + 2
( σ ik é a distância relativa ao k-vizinho mais próximo, com


k = DimPop + DimArc );
2.6. Atribuir o valor de adequação a i , F (i ) = R(i ) + D (i ) (função a minimizar).
Passo 3: Selecção ambiental
3.1. Copiar todos os indivíduos actualmente eficientes em Popt + Arct para Arct +1 ,
removendo os duplicados no espaço de decisão.
3.2. Se a dimensão actual de Arct +1 > DimArc , então reduzir Arct +1 usando o
operador de truncamento, caso contrário, preencher Arct +1 com os indivíduos
actualmente dominados em Popt + Arct com os menores valores de adequação.
Passo 4: Teste de paragem
Se o critério de paragem foi atingido, t > T (ou outro critério de paragem), então
construir o conjunto Solução com todos os indivíduos potencialmente eficientes em
Arct +1 . Parar a execução.
Passo 5: Selecção
Construir a mating pool através de torneio binário com substituição sobre os
indivíduos em Arct +1 .
Passo 6: Variação
6.1. Aplicar operadores de recombinação (OX) e mutação (Troca Recíproca) sobre
os indivíduos da mating pool e atribuir a população resultante a Popt +1
6.2. Incrementar o contador de gerações t = t + 1 e seguir para o Passo 2
Fim de SPEA2 – versão base.
Algoritmo 4.9: Algoritmo SPEA2
Após a atribuição dos valores de adequação, no Passo 2, cada indivíduo i
potencialmente eficiente, tem um valor de adequação F (i ) < 1 . Isto acontece porque
o valor da adequação de base é R (i ) = 0 , σ ik ≥ 0 , e como tal D (i ) < 1 .
No passo 2, para cada indivíduo i do arquivo e da população, calcula-se o valor
da sua força S (i ) = {j : j ∈ Popt + Arqt ∧ i
ele
domina.
R ( i ) = ∑ j ∈Pop
Em
t + Arqt ∧ j i
seguida,
calcula-se
j } , que é o número de indivíduos que
o
valor
da
adequação
base
S ( j ) , que é a soma dos valores de força para todos os
Programação do corte
121
indivíduos, na população e no arquivo, que o dominam. Zitzler, Laumanns e Thiele
utilizam uma parcela para discriminar indivíduos que têm o mesmo valor de
adequação base, e que corresponde a uma estimativa da densidade no espaço de
soluções. A estimativa da densidade é a inversa da distância ao k -ésimo vizinho.
Para a calcular, determina-se para cada indivíduo, a distância a cada um dos
indivíduos na população e no arquivo (no espaço dos objectivos). Guardam-se estas
distâncias e ordenam-se por ordem não decrescente. A distância do indivíduo i ao
k -ésimo vizinho mais próximo, que se designa por σ ik , é dada pelo valor na k -
ésima componente na lista ordenada de distâncias. Para k , utiliza-se o valor
k =


DimPop + DimArq , que é o arredondamento inferior da raiz quadrada da
dimensão total da amostra. A densidade correspondente ao indivíduo i é dada por
(
)
D (i ) = 1 σ ik + 2 . Este valor está sempre compreendido entre 0 e 1. A função de
adequação é dada por F ( i ) = R ( i ) + D ( i ) e é uma função a minimizar.
No passo 3, a operação de actualização do arquivo começa por copiar, para o
arquivo da próxima geração, todos os indivíduos não dominados nesta iteração, ou
seja, todos aqueles para os quais o valor da função de adequação é inferior a uma
unidade.
Se o número de indivíduos não dominados corresponder à dimensão do arquivo,
a selecção ambiental está terminada.
Se
Arq t ≤ DimArq , então copiar para o arquivo os DimPop − DimArq
indivíduos dominados – têm F ( i ) ≥ 1 – que têm o menor valor da função de
adequação.
Se o número de indivíduos não dominados exceder a dimensão do arquivo,
aplica-se um operador de truncamento, que iterativamente remove indivíduos do
arquivo até que se atinja a respectiva dimensão. Em cada iteração escolhe-se para
remoção o indivíduo que tem a menor distância para um outro do arquivo. Se
existe mais do que um indivíduo nesta situação, o desempate é obtido pela segunda
menor distância, e assim sucessivamente.
122
Capítulo 4
O torneio, no passo 5, considera a globalidade dos indivíduos na geração, ou
seja, todos os do arquivo e todos os da população.
Critérios de paragem
Na literatura da área AEMO, têm-se estudado diferentes critérios de paragem. O
critério mais elementar consiste em parar quando o número de gerações atinge um
valor predeterminado. Neste caso, quando a convergência da solução ocorre
prematuramente, despende-se um grande esforço computacional desnecessário.
Outros critérios envolvem a comparação do número de indivíduos que são
dominados em duas gerações consecutivas ou durante um determinado número
consecutivo de gerações, ou a comparação de medidas da uniformidade da
aproximação do conjunto de Pareto. Recentemente, em [Szczepánski e Wierzbicki,
2002], sugere-se que, para a estimação do conjunto óptimo de Pareto, o critério de
paragem mais efectivo é a avaliação da diferença relativa da distância entre as
aproximações dos pontos ideal e nadir. Implementou-se este critério de paragem –
avaliação da distância entre os pontos ideal e nadir – para comparação com o
critério número máximo de gerações.
Como no problema bi-objectivo se minimizam ambos os objectivos, o ponto ideal
é o “maior” ponto que domina o conjunto de soluções não dominadas e o ponto
nadir é o “mais pequeno” ponto que é dominado por todas as soluções não
dominadas.
Em cada geração t, a satisfação do critério de paragem é verificada no Passo 4
do algoritmo. A aproximação actual do conjunto de Pareto é dada pelo conjunto de
indivíduos potencialmente eficientes em Arct +1 .
Na geração t, a aproximação do ponto ideal no espaço dos objectivos é
y I (t ) = ( y 1I (t ), y 2I (t )) , dado por
y 1I (t ) = min{f1(i ) : i ∈ Arct +1, F (i ) < 1} e
y 2I (t ) = min{f 2(i ) : i ∈ Arct +1, F (i ) < 1}
(4.15),
onde f é a função objectivo e F o vector de valores para a função de adequação.
Programação do corte
Da
mesma
123
forma,
a
aproximação
do
ponto
nadir
é
dada
por
y N (t ) = ( y1N (t ), y 2N (t )) , onde
y1N (t ) = max{ f1 (i ) : i ∈ Arct +1 , F (i ) < 1} e
y 2N (t ) = max{ f 2 (i ) : i ∈ Arct +1 , F (i ) < 1}
(4.16).
Em cada geração, actualiza-se a medida da distância entre as aproximações dos
pontos ideal e nadir, de acordo com dUN (t ) = y I (t ) − y N (t ) , onde
.
designa o
cálculo da distância Euclideana. Para concretizar este critério de paragem utilizouse um parâmetro r, que pondera o número de gerações ainda não realizadas em
relação ao máximo de gerações estabelecido (T).
Critério de paragem “avaliação da distância entre os pontos ideal-nadir”
Seja t1 a última geração em que se alteraram as aproximações dos
pontos ideal e nadir. O algoritmo pára na geração t 2 > t1 , se a variação
relativa de dUN , dada por dUN (t 2) − dUN (t1), está perto de zero, e
t 2 − t1 > r (T − t 2) .
Implementaram-se duas versões do algoritmo SPEA2. A versão 1 utiliza, no Passo
4, o critério de paragem do número máximo de gerações. A versão 2 utiliza como
critério de paragem a avaliação da distância entre os pontos ideal e nadir
(paragem antecipada). Em ambas as versões, os indivíduos da população inicial são
gerados aleatoriamente.
Algoritmo híbrido
Alguns testes computacionais iniciais mostraram que o desempenho das versões 1
e 2 não correspondia às expectativas. Optou-se então por integrar dois
procedimentos de pesquisa local no algoritmo base, que se passam a descrever e
que dão origem ao algoritmo híbrido.
Na geração da população inicial, obtém-se cada um dos primeiros n indivíduos
(onde n é a dimensão da instância) por aplicação da heurística 3 de Yuen (Yuen3)
que se apresenta em [Yuen, 1995]. Esta heurística minimiza o número máximo de
pilhas abertas e segundo [Yuen e Richardson, 1995] tem um comportamento quasi-
124
Capítulo 4
optimal. Fixa-se como primeiro elemento da sequência um inteiro (entre 1 e n), e
obtém-se a solução que resulta da aplicação da heurística. Geram-se assim n
soluções e introduzem-se na população inicial os indivíduos que as representam.
Os restantes indivíduos da população inicial são gerados aleatoriamente.
O outro procedimento consiste em, dado o arquivo actual na geração t, Arct ,
tentar “melhorar” o indivíduo a que corresponde a aproximação actual da solução
extrema z *(1) . Ou seja, considere-se o indivíduo i que representa a permutação Π
com o menor valor já encontrado de MPA(Π) . Aplica-se um procedimento 2-optimal
que avalia se, por troca das posições de dois componentes de i, se pode obter uma
solução que domine i. Em caso afirmativo, substitui-se o indivíduo pela nova
solução. Este procedimento 2-optimal funciona de forma idêntica à do algoritmo
4.8, com as respectivas alterações necessárias para avaliar a dominância.
A introdução destes melhoramentos nas versões 1 e 2 do algoritmo dá origem
às versões 1M e 2M, respectivamente. Nestas, a fase de melhoramento 2-optimal
repete-se a cada 2OptRep gerações, onde 2OptRep passa a ser um parâmetro de
entrada. O procedimento só é efectuado, se durante as últimas 2OptRep houve
alteração da aproximação do ponto ideal.
Sumariando, concretizaram-se as seguintes versões do algoritmo:
− versão 1 (V1): versão base, com o critério de paragem número máximo de
gerações;
− versão 2 (V2): versão base, com o critério de paragem antecipada;
− versão 1M (V1M): versão base, com o critério de paragem número máximo de
gerações, n indivíduos em Pop0 gerados pela Yuen3 e fase 2-optimal, cada
2OptRep gerações;
− versão 2M (V2M): versão base com o critério de paragem antecipada, n
indivíduos em Pop0 gerados pela Yuen3 e fase 2-optimal cada 2OptRep
gerações.
Programação do corte
125
4.5.5 Testes computacionais
Métricas de desempenho
Para testar e comparar o desempenho das versões do algoritmo para o problema
em estudo, utilizaram-se três métricas no espaço de objectivos como se descreve em
[Zitzler, Deb e Thiele, 2000]. Considere-se um conjunto X’ de vectores de decisão
potencialmente eficientes, e seja Y’ o correspondente conjunto de vectores
potencialmente não dominados no espaço de objectivos. Designe-se por X , o
conjunto de Pareto, e por Y
o seu correspondente no espaço de objectivos.
Considere-se σ > 0 , um parâmetro de vizinhança predeterminado, e a distância
Euclideana denotada por . .
A métrica
M 1 (Y ' ) =
1
Y'
∑ min {
y '− y : y ∈ Y
y '∈Y '
}
avalia a distância média de Y’ a Y .
A métrica
M 2 (Y ' ) =
1
Y '−1
∑ {y ∈ Y ':
y '∈Y '
y '− y > σ
}
avalia a distribuição das soluções no espaço de objectivos. Conta o número de
nichos com vizinhança de raio σ .
A métrica
M 3 (Y ' ) =
∑ max{
i =1, 2
yi '− yi : y, y '∈ Y ' }
avalia a extensão da aproximação da frente de Pareto. Calcula a extensão máxima
em cada objectivo, para estimar o afastamento das soluções extremas no espaço
dos objectivos (spreading out of the front-range). Como se consideram dois
objectivos, esta métrica é a distância das duas soluções nos extremos da
126
Capítulo 4
aproximação da frente de Pareto. Para o cálculo da distância utilizou-se sempre a
distância Euclideana.
Resultados das experiências
Executaram-se testes computacionais em dois conjuntos de instâncias. O primeiro
conjunto é um subconjunto das instâncias de maior dimensão que se descrevem e
testam em [Foerster e Wäscher, 1998] e em [Fink e Voss, 1999]. Os dados
correspondem a soluções de corte heurísticas, para instâncias do problema de corte
geradas aleatoriamente. Estas soluções de corte apresentam os itens por cliente e
não por larguras. O parâmetro m representa o número total de diferentes itens
(encomendas) e consideram-se dois valores para m (m=50, m=60). Para todas as
instâncias, o valor de n, que representa o número de padrões na solução, é
aproximadamente igual a m. O parâmetro v representa a relação entre a maior
largura dos itens na solução e a largura total das peças. Consideram-se quatro
valores para v (v=0.25, v=0.5, v=0.75, v=1). A cada par (m,v) corresponde um grupo
de instâncias, num total de oito grupos. Dos grupos originais, para proceder aos
testes, seleccionaram-se apenas as primeiras 10 instâncias de cada grupo, num
total de oitenta instâncias.
O segundo conjunto é o conjunto de 22 soluções de corte reais, fornecidas pelo
produtor do caso de estudo – que se utilizaram também nos testes descritos em
4.4.4 e 4.3.3.
A medida SC, que representa o número médio de padrões, em que cada item é
cortado, é uma medida da complexidade do problema de sequenciamento, de acordo
com Foerster e Wäscher [Foerster e Wäscher, 1998].
Para cada versão do algoritmo, e conjunto de experiências, calculam-se os
valores para as métricas de desempenho M1 , M 2 e M 3 . Calcula-se o valor da
métrica M 1 , utilizando como Y , a aproximação final do conjunto de soluções não
dominadas.
Os algoritmos foram codificados em C e os códigos resultantes compilaram-se
utilizando o compilador Microsoft Visual C++ 6.0. Os resultados referem-se a
Programação do corte
127
testes executados num computador com processador Pentium IV 1600MHz com
256Mb de RAM.
Testes para as instâncias geradas aleatoriamente
Para as versões 1 e 2 do algoritmo, fizeram-se dois conjuntos de experiências,
utilizando, como parâmetros, os valores que se exibem na tabela 4.9.
Conjunto de
parâmetros
DimPop
DimArq
ProbRec
ProbMut
T
σ
r
CP1
CP2
100
100
0.8
0.2
750
0.48862
0.2
150
150
0.8
0.2
2000
0.48862
0.4
Tabela 4.9: Parâmetros para as versões 1 e 2 / instâncias geradas
Os valores escolhidos para ProbRec e ProbMut não foram afinados e foram
escolhidos com base em algumas experiências prévias para os problemas de
objectivo único associados.
Como o objectivo MPA só toma valores discretos, optou-se por um valor de σ
inferior a 0.5, o que permite identificar o número de nichos na solução final,
originados por diferenças nesse objectivo. Escolheu-se este valor concreto com base
no estudo em [Zitzler, Deb e Thiele, 2000].
O número médio de indivíduos avaliados na versão 1 é cerca de 120000, para o
conjunto de parâmetros CP1, e cerca de 480000 para o CP2. Nos dois conjuntos de
parâmetros, a dimensão do arquivo tem um valor suficientemente grande para
garantir que se guardam múltiplas soluções do espaço de decisão que são
equivalentes.
Em cada conjunto de experiências, executaram-se, para cada instância, 20
simulações – 10 utilizando a versão 1 do algoritmo e outras 10 utilizando a versão
2. Para cada instância, a aproximação do conjunto de soluções não dominadas é
dada pelo conjunto de soluções não dominadas que se obtiveram no conjunto das 20
simulações.
128
Capítulo 4
Cada uma das tabelas que se seguem, apresenta os resultados médios para um
conjunto de experiências em que se usam, para cada um deles, os oito grupos de
instâncias geradas aleatoriamente. As tabelas 4.10 e 4.11 apresentam os
resultados relativos aos conjuntos de parâmetros CP1 e CP2, respectivamente. A
descrição do cabeçalho das colunas é a seguinte:
−
#G é o índice do grupo de instâncias;
−
m é o número de encomendas;
−
v é a relação entre a maior largura e a largura total;
−
An é o número médio de padrões nas soluções de corte do grupo;
−
SC é o número médio de padrões em que cada item é cortado;
−
#P é a cardinalidade média da aproximação final do conjunto de soluções
não dominadas;
−
P2 e P3 são os valores para as métricas M 2 e M 3 calculados utilizando a
aproximação final do conjunto de soluções não dominadas;
−
M1, M2 e M3 são, respectivamente, os valores médios para as métricas
M 1 , M 2 e M 3 calculados para as simulações da versão 1;
−
N1, N2 e N3 são, respectivamente, os valores médios para as métricas
M 1 , M 2 e M 3 calculados para as simulações da versão 2;
−
DP é a diferença percentual relativa entre as primeiras componentes (no
espaço dos objectivos) das aproximações finais dos pontos nadir e ideal, e
refere-se à variação máxima esperada no objectivo MPA;
−
DE é a diferença percentual relativa equivalente, para o objectivo EME;
−
δP é o número relativo de vezes (em média) que se obteve a melhor
solução conhecida para o objectivo MPA, e δE é o equivalente para MPE;
−
GN é o número médio de gerações executadas pela versão 2;
−
T1 e T2 representam os tempos médios de execução (em segundos) de
cada simulação, respectivamente, para a versão 1 e a versão 2.
Programação do corte
#G m
v
An
SC #P P2
129
P3
δP δE
M1
M2
M3
N1
N2
N3
DP
DE
GN
T1
T2
1
50 0.25 52.3
4.2
1.5 1.0 0.564
1.478
0.100
0.104
2.254
0.120
0.380
2.689
0.348 .9
.2
289
230
74
2
50 0.50 51.7
3.8
1.4 0.8 0.444
1.723
0.020
0.092
2.296
0.020
0.163
2.157
0.810 .5
.2
274
230
72
3
50 0.75 53.3
2.6
1.5 1.0 0.577
1.219
0.000
0.000
1.962
0.000
0.000
4.995
3.512 .9
.3
271
222
64
4
50 1.00 51.7
1.9
1.2 0.4 0.230
0.714
0.000
0.000
1.197
0.000
0.000
4.000
3.400 .8
.2
238
218
54
5
60 0.25 63.8
4.1
1.3 0.6 0.357
2.193
0.240
0.342
3.210
0.000
0.624
1.139
0.726 .3
.0
313
310
94
6
60 0.50 61.3
3.7
1.4 0.8 0.442
2.089
0.120
0.254
2.806
0.000
0.447
1.779
0.608 .4
.0
303
308
90
7
60 0.75 63.1
2.6
1.3 0.6 0.372
1.791
0.020
0.081
2.761
0.000
0.102
3.838
1.498 .3
.0
295
300
82
8
60 1.00 62.0
1.9
1.2 0.4 0.215
1.117
0.000
0.000
1.791
0.000
0.000
3.666
1.497 .5
.0
271
280
74
M
57.4
3.1
1.4 0.7 0.400
1.541
0.063
0.109
2.285
0.018
0.215
3.033
1.550 .6
.1
282
262
76
Tabela 4.10: Resultados para as instâncias geradas aleatoriamente – parâmetros CP1
Os resultados mostram que a cardinalidade média da aproximação final do
conjunto de soluções não dominadas é aproximadamente uma unidade para todos
os grupos de instâncias. A cardinalidade desse conjunto, em todas as instâncias, foi
no máximo 2.
Para a métrica M1 , verificam-se valores relativamente elevados para ambas as
versões do algoritmo, ou seja, uma única execução do algoritmo não é suficiente
para obter a aproximação final da frente óptima de Pareto.
A variação máxima relativa no valor do espalhamento médio das encomendas é
cerca de 3.5%, e a variação para o valor do número máximo de pilhas abertas é
inferior a 5%. Os valores máximos para as diferenças relativas ocorrem para os
grupos de instâncias mais fáceis (3 e 4 para m=50, 7 e 8 para m=60). Para estes
grupos, o número de itens diferentes cortados em cada padrão é menor.
A variação média para o objectivo MPA é cerca de 3%, e cerca de 1.5% para o
objectivo EME. Para a maioria das instâncias não existe uma variação significativa
entre os valores de cada objectivo, para as aproximações das soluções não
dominadas. As excepções são a instância 7 do grupo 3 e a instância 8 do grupo 4,
onde os mínimos lexicográficos obtidos foram, respectivamente, {(6,3.44); (7,2.66)} e
{(4, 1.98); (5, 1.58)}, conduzindo a variações de 14% e 20% no primeiro objectivo, e
22% e 20% para o segundo.
O tempo médio de execução para a versão 1 é 262 segundos, enquanto que para
a versão 2, onde se executam em média 282 gerações, é 76 segundos.
Verifica-se que N1>M1 para todos os grupos de dados. Isto indica que as
soluções obtidas pela versão 1 aproximam melhor a aproximação final. A versão 2
130
Capítulo 4
termina prematuramente, o que indica um desajustamento dos parâmetros T
(número máximo de gerações), e r (ponderação em relação ao número de gerações
não efectuadas). Essa observação, conduziu à elaboração do segundo conjunto de
parâmetros, em que se aumentou T para 2000 e r para 0.4. Adicionalmente, na
perspectiva de avaliar melhoramentos nas soluções extremas, aumentaram-se os
parâmetros DimPop (dimensão da população) e DimArq (dimensão da arquivo)
para 150. Na tabela 4.11 exibem-se os resultados correspondentes às experiências
em que se utilizaram os valores que se definem em CP2.
M1
M2
M3
N1
N2
N3
DP
δP δE
GN
T1
T2
50 0.25 52.3
4.2 1.2 0.8 0.463
1.594
0.280
0.436
1.583
0.200
0.794
2.137
0.329 1.0 .6
765
1184
348
#G m
1
v
An
SC
#P P2
P3
DE
2
50 0.50 51.7
3.8 1.7 1.3 0.710
1.411
0.060
0.152
1.735
0.020
0.315
3.845
1.370
.9
.6
739
1172
358
3
50 0.75 53.3
2.6 1.1 0.2 0.134
1.416
0.000
0.000
1.579
0.000
0.000
0.909
1.028
.9
.3
724
1059
335
4
50 1.00 51.7
1.9 1.1 0.2 0.106
0.800
0.020
0.040
0.855
0.000
0.102
1.667
0.462 1.0 .1
694
1444
360
5
60 0.25 63.8
4.1 1.8 1.4 0.761
1.762
0.060
0.194
2.207
0.280
0.542
3.201
1.128
.9
.7
844
1506
270
6
60 0.50 61.3
3.7 1.5 0.9 0.532
2.139
0.080
0.196
2.075
0.053
0.292
2.733
0.953
.9
.3
785
1480
422
7
60 0.75 63.1
2.6 1.6 1.1 0.594
1.654
0.000
0.000
1.624
0.000
0.000
6.107
2.742
.3
.0
783
1666
514
8
60 1.00 62.0
1.9 1.0 0.0 0.000
0.971
0.000
0.000
1.393
0.000
0.000
0.000
0.000
.7
.0
716
1561
546
3.1 1.4 0.7 0.413
1.468
0.063
0.127
1.631
0.069
0.256
2.575
1.002
.8
.3
756
1384
394
M
Tabela 4.11: Resultados para as instâncias geradas aleatoriamente – parâmetros CP2
Para este conjunto de parâmetros, continuam a obter-se aproximações finais cuja
cardinalidade média é sempre inferior a 2. Continuam a não se observar variações
significativas nos valores dos objectivos para as aproximações das soluções não
dominadas. A média da variação percentual média é cerca de 2.5% para o objectivo
MPA e cerca de 1% para o objectivo EME. Regista-se o caso do grupo 7, em que
essa diferença é cerca de 6% para o MPA. Para esse grupo, existem seis instâncias
onde a cardinalidade da aproximação final é dois, e como os valores que se obtêm
para MPA são relativamente pequenos (entre 6 a 12), uma variação duma unidade
pode conduzir a uma elevada variação percentual. V2 obtém soluções cuja
distância média à aproximação final é em cerca de 11% pior, relativamente à de
V1, despendendo menos de 30% do
esforço computacional. V2 não é
uniformemente pior, sendo até ligeiramente superior no caso dos grupos 1, 6 e 7,
para os quais se verifica N1<M1. A média de M2 é aproximadamente igual à de
N2, o que indica que nas soluções dadas por cada uma das versões o número de
Programação do corte
131
nichos é aproximadamente igual, e inferior a uma unidade, o que indica que a
cardinalidade média da aproximação final para cada versão também é inferior a 2.
Em relação à terceira métrica, as aproximações finais obtidas por V2 têm soluções
extremas mais espaçadas do que as que se obtêm por V1.
Comparando estes resultados com os que se obtiveram para CP1, a qualidade
da aproximação final do conjunto de Pareto em CP2 é ligeiramente superior. Os
valores #P e P2 mantêm-se, e P3 cresce cerca de 3%. Isto significa, que para os dois
conjuntos de parâmetros,
−
a aproximação final tem igual cardinalidade média,
−
a aproximação final está distribuída em igual número médio de nichos, e
−
as soluções extremas da aproximação final estão em média 3% mais
afastadas em CP2.
Para cada versão, uma análise comparativa entre os resultados que se obtêm para
os dois conjuntos de parâmetros mostra que a qualidade das soluções obtidas para
CP2 é superior à das obtidas para CP1. Para V1, utilizando CP2, tem-se M1=1.468,
o que significa uma melhoria de cerca de 5% em relação ao que se obtém para CP1
(M1=1.541), ou seja, a aproximação dada por esta versão está mais perto da
aproximação final global. Apesar do número médio de indivíduos avaliados
quadruplicar em CP2, essa melhoria é pouco evidente. Isto deve-se a um
comportamento clássico dos algoritmos evolutivos: após a avaliação dum elevado
número de indivíduos, atinge-se um patamar de convergência lenta. Os valores
médios para M2 e M3 são semelhantes.
Para a versão V2, o número médio de gerações executadas é 282 para CP1, e de
756 para CP2. O número médio de indivíduos avaliados, nesta versão, aumentou
de 45120 (282*200*0.8) em CP1 para 181440 (756*300*0.8) em CP2, o que explica
uma maior convergência de V2 no conjunto de experiências com CP2.
Testaram-se as versões V1M e V2M, utilizando também dois conjuntos de
parâmetros (CP3 e CP4), que se descrevem na tabela 4.12. Desta vez, o número
médio de indivíduos avaliados é igual para os dois conjuntos. Escolheu-se projectar
132
Capítulo 4
esse número em 240000, que é metade do número médio de indivíduos avaliados
por V1, quando se utilizam os valores de CP2 e excede o valor para o qual V2
conseguiu convergir quando se consideram os valores em CP2. Para avaliar se o
desempenho do algoritmo híbrido, para este problema, é mais sensível à dimensão
do conjunto de indivíduos avaliados em cada geração, ou ao número de gerações,
consideram-se DimPop+DimArq=300 e T=1000 em CP3, e DimPop+DimArq=400 e
T=750 em CP4. Ou seja, em CP3, o valor de DimPop+DimArq é 75% do respectivo
valor em CP4 e, em CP4, o valor de T é 75% do considerado em CP3. Em ambos os
casos, a dimensão do arquivo é um terço da dimensão da população.
Conjunto de
parâmetros
DimPop
DimArq
ProbRec
ProbMut
T
σ
r
CP3
CP4
225
75
0.8
0.2
1000
0.48862
0.1
300
100
0.8
0.2
750
0.48862
0.1
Tabela 4.12: Parâmetros para as versões V1M e V2M / instâncias geradas
Para o parâmetro 2OptRep, número de gerações entre dois melhoramentos da fase
2-optimal, utilizou-se o valor 50 em todas as experiências.
As tabelas 4.13 e 4.14 sumariam os resultados obtidos. Omitiram-se as colunas
m, v, An, e SC já descritas anteriormente. Omitem-se também as colunas relativas
aos tempos médios obtidos para ambas as versões. As novas colunas são:
−
PY é o valor médio da diferença percentual relativa entre o melhor valor
de MPA encontrado pela Yuen3 e o valor correspondente na solução
extrema da aproximação final ( z *(1) );
−
EY é o valor médio da diferença percentual relativa entre o melhor valor
de EME encontrado pela Yuen3 e o valor correspondente na solução
extrema da aproximação final ( z *(2) );
−
PYM é o valor máximo da diferença percentual relativa entre o melhor
valor de MPA encontrado pela Yuen3 e o valor correspondente na solução
extrema da aproximação final ( z *(1) );
Programação do corte
−
133
EYM é o valor máximo da diferença percentual relativa entre o melhor
valor de EME encontrado pela Yuen3 e o valor correspondente na solução
extrema da aproximação final ( z *(2) );
−
2O representa o tempo médio (em segundos) consumido pela fase 2optimal.
Não se apresentam os tempos médios de execução da heurística Yuen3, que são
negligenciáveis por serem inferiores a 1 segundo em todas as experiências.
P3
M1
M2
M3
N1
N2
N3
DP
DE
δE
2O
GN
.5
.0
84
215
.3
.6
100
201
.7
.4
63
200
.5
38
186
.5
228
208
.3
.3
216
216
31
1.0
.7
258
209
40
25
1.0
.7
89
191
25
22
.6
.5
135
203
#P
PY
EY
1
1.1
0.200 0.104 0.119 0.000 0.012 0.223 0.040 0.084 0.500 0.065
12
13
2
1.2
0.400 0.209 0.264 0.000 0.000 0.307 0.000 0.000 0.950 0.150
12
15
25
24
3
1.2
0.400 0.227 0.078 0.000 0.000 0.465 0.000 0.000 1.547 0.784
9
11
15
22
4
1.0
0.000 0.000 0.017 0.000 0.000 0.067 0.000 0.000 0.000 0.000
15
14
33
25
.9
5
1.3
0.300 0.153 0.732 0.000 0.010 0.855 0.040 0.137 0.800 0.188
13
20
13
17
.4
6
1.0
0.000 0.000 0.599 0.120 0.091 0.681 0.180 0.114 0.000 0.000
13
14
21
17
7
1.3
0.600 0.312 0.376 0.000 0.000 0.396 0.000 0.000 3.055 0.505
19
18
38
8
1.1
0.200 0.101 0.129 0.000 0.000 0.212 0.000 0.000 1.400 0.050
17
14
1.2
0.263 0.138 0.289 0.015 0.014 0.401 0.033 0.042 1.032 0.218
14
15
M
P2
δP
#G
PYM EYM
17
17
Tabela 4.13: Resultados para as instâncias geradas aleatoriamente – parâmetros CP3
Neste conjunto de experiências, o esforço computacional médio é 879 segundos
para V1M e 190 segundos para V2M. A comparação entre os valores médios de M1
e N1, mostra que a qualidade da aproximação final da frente de Pareto é cerca de
38% melhor para V1M. V2M apresenta aproximações de maior cardinalidade
(N2>M2), e com soluções extremas mais espaçadas. Isto indica que nas
experiências para cada instância, são as soluções obtidas por V1M que contribuem
mais para a aproximação final, ou seja, V2M obtém uma maior quantidade de
soluções que acabam por ser dominadas pelas de V1M.
Comparando os melhores valores dos objectivos obtidos pelo AEMO com os
obtidos pela Yuen3, verifica-se que em média a Yuen3 é superada em cerca de 14%,
para o MPA, e em 15%, para o EME. A média da variação máxima encontrada
para esses mesmos valores é de 25%, para o MPA, e de 22%, para o EME. Isto
significa que, em média, o melhor valor para o MPA encontrado pela Yuen3 é 25%
pior do que o melhor encontrado pelo AEMO híbrido, e o correspondente melhor
134
Capítulo 4
valor dado pela Yuen3 é 22% pior para o EME. Este resultado é curioso, porque a
Yuen3 é uma heurística de objectivo único direccionada para o MPA, e em termos
do pior caso comporta-se melhor para o EME.
#G
#P
PY
EY
δP
δE
2O
GN
1
1.1
0.200 0.105 0.182 0.000 0.021 0.289 0.000 0.034 0.500 0.070
12
13
17
17
.5
.2
78
181
2
1.1
0.400 0.222 0.286 0.200 0.011 0.349 0.040 0.105 1.033 0.370
12
15
19
25
.3
.0
103
172
3
1.1
0.200 0.122 0.671 0.000 0.000 0.542 0.080 0.175 0.714 0.339
12
13
30
23
.9
.7
55
177
4
1.0
0.000 0.000 0.043 0.000 0.000 0.062 0.000 0.000 0.000 0.000
17
14
33
26
1.0
1.0
29
163
5
1.2
0.400 0.204 0.857 0.040 0.177 0.875 0.120 0.409 0.817 0.038
14
14
21
17
.5
.3
230
179
6
1.0
0.000 0.000 0.525 0.020 0.049 0.585 0.080 0.239 0.000 0.000
13
13
20
16
.3
.4
195
180
7
1.2
0.400 0.213 0.202 0.000 0.000 0.363 0.000 0.000 2.221 0.190
13
19
38
32
.9
.7
220
178
8
1.0
0.000 0.000 0.209 0.000 0.005 0.295 0.000 0.013 0.000 0.000
17
15
40
26
1.0
1.0
73
166
M
1.1
0.200 0.108 0.372 0.033 0.033 0.420 0.040 0.122 0.661 0.126
14
15
27
23
.7
.5
123
175
P2
P3
M1
M2
M3
N1
N2
N3
DP
DE
PYM EYM
Tabela 4.14: Resultados para as instâncias geradas aleatoriamente – parâmetros CP4
Para CP4, o esforço computacional médio é de 848 segundos para V1M e de 170
segundos para V2M. V1M supera V2M em cerca de 12% relativamente à qualidade
da aproximação final da frente de Pareto. Para a segunda e terceira métrica
observa-se também uma ligeira superioridade de V1M. No entanto, neste caso,
V2M apresenta uma qualidade quase equivalente à de V1M, despendendo apenas
um quinto do respectivo esforço computacional.
Relativamente à comparação com a Yuen3, para cada objectivo, a média das
diferenças médias é igual à que se obtém para CP3. A média das diferenças
máximas, para cada objectivo, é maior em CP4, o que confere a este conjunto de
parâmetros uma superioridade em relação à qualidade das soluções finais.
A observação dos valores δP e δE permite-nos concluir relativamente à
qualidade das soluções obtidas para os vários conjuntos de experiências. Os
respectivos valores médios são: (0.6,0.1) para CP1; (0.8, 0.3) para CP2; (0.6, 0.5)
para CP3 e (0.7, 0.5) para CP4. As melhores soluções para o objectivo MPA obtêmse em CP2 (δP=0.8 é o máximo), o que se explica pelo elevado número de indivíduos
avaliados pela V1 (480000). Para o objectivo EME, obtêm-se as melhores soluções
com V1M e V2M utilizando CP4 (δE máximo é 0.5), o que resulta dos
melhoramentos introduzidos. Neste aspecto, as diferenças entre CP3 e CP4 não são
significativas. Os melhoramentos não são regulares e são mais efectivos para os
Programação do corte
135
grupos onde v>0.5 (os grupos 3, 4, 7 e 8). Para os outros grupos, os melhores
resultados obtêm-se para CP2 à custa dum esforço computacional muito maior.
Testes para as instâncias reais
Para o conjunto de instâncias reais, testaram-se apenas as versões V1 e V2 do
algoritmo utilizando o conjunto de parâmetros CP1. Os resultados apresentam-se
na tabela 4.15. As instâncias têm pequena a média dimensão (5<m<35 e 5<n<30) e
apresentam-se por ordem não decrescente de n. As soluções de corte resultaram de
problemas de corte de dificuldade média (0.33<v<0.41). Os problemas de
sequenciamento associados são também relativamente fáceis (a média de
SC=2.22). A coluna #I é o índice da instância. Para todas as instâncias, encontrouse uma única solução (no espaço dos objectivos) potencialmente não dominada. Isto
significa que para este conjunto de instâncias não existem conflitos entre os dois
objectivos. Por este motivo, omitem-se as colunas #P, que apresentaria o valor 1
em todas as linhas, e P2, P3, DP e DE, que apresentariam o valor zero em todas as
linhas. Para simplificar a leitura, apresentam-se apenas os valores não nulos.
#I
m
v
n
SC
5
12
3
1
7
9
16
17
4
18
14
8
6
10
2
15
20
11
13
22
19
21
6
9
11
10
13
11
11
9
10
11
12
14
17
16
15
21
21
22
23
32
34
31
.38
.40
.37
.39
.39
.39
.34
.39
.36
.34
.38
.39
.40
.38
.39
.39
.33
.40
.38
.38
.36
.38
6
6
7
9
9
9
9
9
10
10
12
13
14
14
15
15
16
21
22
27
28
28
1.833
1.444
1.363
2.400
1.769
2.090
2.363
2.111
2.300
2.363
2.500
2.428
2.000
2.625
2.333
2.381
2.428
2.318
2.608
2.281
2.471
2.484
2.206
M1
M2
M3
0.008
0.014
0.037
0.013
0.009
0.066
0.674
0.437
0.695
0.966
0.905
0.174
0.200
0.200
0.626
0.836
0.200
0.027
0.609
0.094
N1
0.008
0.050
0.011
0.037
0.020
0.014
0.090
0.702
0.309
0.964
1.018
1.066
0.195
N2
0.200
N3
1.000
0.746
1.043
1.075
1.000
0.100
1.016
0.176
GN
T1
T2
126
126
126
126
128
126
126
126
130
136
134
140
135
152
136
149
137
133
167
159
192
235
143
125
102
123
105
124
124
127
144
123
153
128
123
147
126
148
132
143
181
132
201
147
144
136
17
17
16
17
17
17
17
22
19
23
18
20
23
22
24
22
21
28
25
33
32
40
22
Tabela 4.15: Resultados para as instâncias reais – V1 e V2 com CP1
136
Capítulo 4
Ambas as versões do algoritmo alcançaram a aproximação do ponto ideal em todas
as execuções, para várias instâncias (1, 3, 4, 5, 7, 9, 12, 16, 17 e 18). Em relação à
instância 6, isto apenas aconteceu com a versão 1.
Apesar dos resultados da versão 1 superarem os da versão 2 – M1 ≤ N1 e
M3 ≤ N3 para todas as instâncias – as diferenças são pequenas.
Conclui-se que para instâncias com características semelhantes às das testadas
– pequena e média dimensões (5<m<35 e 5<n<30), e a dificuldade dos problemas
de sequenciamento relativamente pequena (neste caso, a média de SC=2.22) – a V2
com o CP1 constitui uma abordagem razoável para o problema bi-objectivo.
Para testar as versões V1M e V2M e comparar a qualidade das soluções com a
das obtidas pela Yuen3, utilizou-se o conjunto de parâmetros CP5 (descrito na
tabela 4.16) que difere de CP1 relativamente ao número de indivíduos no arquivo.
Mantém-se o número de indivíduos avaliados em cada geração igual a 200 e o
número total de indivíduos avaliados (750x200=150000). Manteve-se a ideia, usada
em CP3 e CP4, de considerar para dimensão do arquivo um terço da dimensão da
população. Da mesma forma, o parâmetro r passa a ter o valor 0.1.
Conjunto de
parâmetros
DimPop
DimArq
ProbRec
ProbMut
T
σ
r
CP1
150
50
0.8
0.2
750
0.48862
0.1
Tabela 4.16: Conjunto de parâmetros CP5
Os resultados apresentam-se na tabela 4.17. Os tempos de execução para a Yuen3
e a fase de melhoramento 2-optimal são inferiores a 1 segundo em todas as
instâncias. Para V1M, os tempos de execução são semelhantes aos da tabela 4.15.
Na versão V2M executam-se, em média, 160 gerações e o tempo médio de execução
é de 26 segundos.
Tal como já se observara para as versões V1 e V2 utilizando o conjunto de
parâmetros CP1, a aproximação final do conjunto de Pareto é constituída por
Programação do corte
137
apenas um ponto em todas as instâncias. Ou seja, a aproximação do ponto ideal é
admissível.
#I
n
5
12
3
1
7
9
16
17
4
18
14
8
6
10
2
15
20
11
13
22
19
21
6
6
7
9
9
9
9
9
10
10
12
13
14
14
15
15
16
21
22
27
28
28
M1
M2
M3
N1
N2
N3
PYM
EYM
8
12
12
0.550
0.385
0.053
0.053
0.038
0.168
0.117
0.221
0.009
0.877
0.092
0.043
0.172
0.082
0.231
0.041
0.878
0.086
0.200
0.009
0.609
0.027
10
7
17
0.200
0.009
1.016
0.046
15
11
25
3
13
8
4
7
28
19
20
12
29
9
Tabela 4.17: Resultados para as instâncias reais – V1M e V2M com CP5
Os resultados mostram que as alterações introduzidas conduzem efectivamente a
melhoramentos. Obtiveram-se reduções nos valores de M1 e N1 e esses valores são
muito pequenos (nulos ou quase nulos) para todas as instâncias. Isto indica que
cada execução de ambas as versões aproxima correctamente a melhor aproximação
encontrada.
Em relação à melhor solução obtida em cada objectivo, para cada instância, não
se encontraram diferenças, isto é, a aproximação final do conjunto de Pareto não
melhora.
Para ambos os objectivos, a abordagem evolutiva alcança melhores resultados
que a heurística Yuen3. Esses melhoramentos são alcançados à custa de um
esforço computacional muito superior. No entanto, estes resultados demonstram
que a Yuen3 não é quasi-optimal, como tinha sido afirmado em [Yuen e
138
Capítulo 4
Richardson, 1995] (mesmo para problemas de pequena dimensão, como são estas
instâncias). Para o objectivo MPA observa-se que essa diferença é nula para as
instâncias de muito pequena dimensão (n<20). Para o objectivo EME essa
diferença é maior. No entanto, chegou-se a encontrar uma diferença em MPA da
ordem de 25% – para a instância 21 – o que é significativo.
A V2M com o conjunto de parâmetros CP5 constitui uma aproximação
adequada para resolver os problemas reais com características semelhantes às das
instâncias testadas, e pode-se recomendar a sua concretização em ambiente de
apoio à decisão.
Comentários e conclusões
Nesta secção, estudou-se a relação entre o problema de minimização do número
máximo de pilhas abertas e o problema de minimização do espalhamento médio
das encomendas. Apesar destes objectivos estarem relacionados, resolver um
problema de sequenciamento de padrões, considerando um ou o outro objectivo
pode conduzir a resultados diferentes. Com o propósito de avaliar a extensão da
diferença relativa nos casos em que ela ocorre, aproximou-se a frente óptima de
Pareto do problema bi-objectivo correspondente. Verificou-se que, para a maioria
das instâncias testadas, existe apenas uma solução não dominada, o que significa
que a aproximação do ponto ideal é admissível. Os resultados mostram que nos
casos em que tal não acontece, a diferença relativa não é significativa, ou é pouco
significativa. Isto indica que, na prática, não é relevante o erro que se comete
utilizando indiferentemente abordagens de objectivo único, para qualquer um dos
objectivos considerados.
Testaram-se diferentes versões do SPEA2 e, apesar deste algoritmo apresentar
um bom desempenho na resolução de outros problemas, não há evidência de que
seja o mais adequado para este problema concreto.
Comparou-se a qualidade dos resultados com a dos que se obtêm pela Yuen3,
uma das “melhores” heurísticas apresentadas em [Yuen, 1995], direccionada para
minimização do número de pilhas abertas. Conclui-se que apesar do reduzido
Programação do corte
139
tempo de execução, essa heurística está longe de obter boas aproximações para
instâncias de pequena a grande dimensão.
Conclui-se que, para o apoio à decisão num ambiente real, a abordagem biobjectivo permite adquirir conhecimento acerca do espaço de soluções que não seria
adquirido com uma abordagem de objectivo único. As abordagens de resolução de
objectivo único exploram o espaço de decisão em apenas uma direcção, e podem
perder-se soluções eficientes do problema bi-objectivo. A abordagem utilizada – um
AEMO elitista puro e uma versão híbrida – fornece como resultado um conjunto de
soluções potencialmente não dominadas. No caso em que a aproximação da frente
óptima de Pareto é constituída por um único ponto, este ponto, do espaço de
objectivos, pode corresponder a múltiplas soluções alternativas no espaço de
decisão. A manutenção das várias soluções potencialmente eficientes num arquivo
possibilita ao agente de decisão uma análise detalhada das várias alternativas. O
grande esforço computacional associado a esta abordagem é compensado pela
qualidade da informação que se pode extrair, o que justifica a sua implementação
num contexto industrial. O sequenciamento de padrões é o último problema na
hierarquia da tomada de decisão e precede a implementação do programa de corte
nas máquinas de produção. A integração desta abordagem numa ferramenta de
apoio à decisão permite ao agente de decisão proceder à pesquisa de soluções em
execução diferida, e posteriormente analisar as soluções geradas. Nessa direcção,
para instâncias de grande dimensão (n≥50) sugere-se a concretização da versão
híbrida do algoritmo com o critério de paragem antecipada, utilizando o conjunto
de parâmetros CP4 que permite alcançar um bom compromisso entre o esforço
computacional e a qualidade das soluções. Para as instâncias típicas do caso em
estudo, com pequena a média dimensão (n<30), recomenda-se a concretização da
versão híbrida com o critério de paragem antecipada, e o conjunto de parâmetros
CP5. Dado o seu desempenho, esta versão até pode ser integrada num ambiente de
apoio à decisão.
140
Capítulo 4
Capítulo 5
Integração do Problema de
Corte com o Problema de
Planeamento da Capacidade
Neste capítulo propõem-se duas abordagens que integram o problema de corte com
o problema de planeamento de capacidade. A primeira abordagem que se propõe é
uma heurística, que permite determinar um plano de produção, e que inclui o
sequenciamento e escalonamento da produção das famílias. Geram-se as soluções
de corte para cada família em cada período do horizonte de planeamento.
Determinam-se as ordens de corte resultantes, agrupam-se em lotes e procede-se
ao sequenciamento. O objectivo é a minimização do custo do escalonamento. Para a
segunda abordagem propõe-se um novo modelo, que integra os problemas de corte
para as várias famílias e períodos, considerando restrições de capacidade. Não se
consideram aspectos de sequenciamento e escalonamento. Expõem-se alguns
conceitos associados ao desenvolvimento de algoritmos de partição e geração de
colunas, e dá-se uma panorâmica da sua aplicação, especialmente para o Problema
de Corte e para o Problema de Bin-Packing. Formula-se o problema em
Programação Linear Inteira, estendendo a formulação de colunas de Gilmore e
142
Capítulo 5
Gomory. Descreve-se o algoritmo de partição e geração de colunas, que se
desenvolveu especialmente para resolver este modelo, dando especial atenção aos
aspectos inovadores. Sugerem-se duas regras de ramificação e exploram-se
detalhes referentes ao cálculo de soluções admissíveis, limites inferiores e
introdução de planos de corte. Descreve-se o subproblema de geração de colunas e o
método de resolução. Apresentam-se e discutem-se os resultados relativos a um
conjunto de testes computacionais. A finalizar tecem-se alguns comentários e
perspectivam-se evoluções possíveis.
5.1 Introdução
As aplicações tradicionais do Problema de Corte (PC) assumem a disponibilidade
dum número infinito de peças idênticas a cortar. No entanto, em muitos dos
problemas encontrados em meio industrial, estas peças podem ter características
diferentes, quer em termos de dimensão, quer em termos do material que as
constitui, e têm de ser produzidas num sistema com capacidade finita. Assim, na
“vida-real”, o PC ocorre como subproblema no âmbito dum problema de
planeamento de produção muito mais amplo. Estes casos parecem ser ignorados
pela literatura da especialidade, talvez devido à sua grande complexidade. Duas
excepções são os trabalhos [Hendry, Fok e Shek, 1996] e [Nonas e Thorstenson,
2000].
Hendry, Fok e Shek abordam um caso de estudo para um produtor de peças de
cobre e integram o PC com um problema de planeamento e escalonamento da
capacidade. Os itens são produzidos cortando barras que podem ter três diâmetros
diferentes. São gerados previamente todos os padrões de corte admissíveis,
trabalhando-se apenas com padrões maximais1. O problema é abordado em duas
fases e considera-se um horizonte temporal de duas semanas. Na primeira fase
determina-se uma solução de corte para os diâmetros a utilizar, em cada uma das
semanas. Dada esta solução obtêm-se os planos diários de produção minimizando
1
Um padrão de corte é maximal quando a largura não aproveitada é inferior ao menor valor de
largura dos objectos a produzir.
Integração do problema de corte com o problema de planeamento da capacidade 143
os tempos totais de processamento. Apresentam-se modelos em PLI onde se
consideram restrições de capacidade. Para a primeira fase são também descritas
duas heurísticas. Não é claro o tratamento das restrições de capacidade, sendo
mesmo ignoradas nas heurísticas. No caso de insuficiência da capacidade, os
modelos que se apresentam são inadmissíveis e não permitem extrair qualquer
conhecimento adicional.
Nonas e Thorstenson integram o PC com um problema de formação e
sequenciamento de lotes, em condições de procura estática. Consideram tempos de
preparação para cada padrão e custos de armazenamento e pretendem determinar
os ciclos de produção. Geram um conjunto de padrões admissíveis, e a formulação
inclui decisões relativas ao número de vezes que cada padrão é utilizado em cada
ciclo de produção. Não se consideram restrições de capacidade. Simplificam o
modelo relaxando as restrições de integralidade dos lotes, mas a função objectivo é
não linear. Testam-se diferentes procedimentos heurísticos combinados.
A necessidade de resolver na prática o problema de planeamento e
sequenciamento da produção motivou o desenvolvimento da heurística que se
apresenta na secção 5.2, e que se concretizou para resolver o subproblema do caso
em estudo. Esta heurística foi especialmente concebida de forma a ter suficiente
flexibilidade para permitir tratar as instâncias reais, em que muitas vezes se
prometem datas de entrega pouco exequíveis. Não se consideram restrições de
capacidade. Determinam-se as quantidades a produzir das diferentes famílias
(minimizando o desperdício), e em seguida sequencia-se a sua produção. O
objectivo é a minimização do custo total. No sequenciamento considera-se um
compromisso entre a minimização do número de atrasos e a minimização do custo
de perda de produção por mudanças da produção de famílias.
Os trabalhos recentes de [Vance, 1998], [Vanderbeck, 1999], [Valério de
Carvalho, 1999], [Degraeve e Schrage, 1999] e [Degraeve e Peeters, 2002] relatam
o sucesso da aplicação de algoritmos de partição e geração de colunas na resolução
exacta do PC e do problema de bin-packing. Estes resultados motivaram o desafio
144
Capítulo 5
de estender o PC a um problema de planeamento de capacidade, e de conceber um
algoritmo para a resolução exacta deste novo problema. O modelo matemático
deriva da formulação de Gilmore e Gomory, mas é bastante mais complexo, pois
integra as decisões relativas ao corte de vários produtos ao longo dum horizonte
temporal discreto, com restrições de capacidade nos vários períodos. Esta
contribuição, proposta em [Respício e Captivo, 2001, 2002b], apresenta-se na
secção 5.3.
5.2 Problema de planeamento e sequenciamento da capacidade
5.2.1 Definições e conceitos
Assume-se que a procura de cada item em cada período é conhecida. A capacidade
de produção é fixa em cada período. O problema consiste em determinar e
sequenciar as quantidades a produzir de cada família, satisfazendo a procura sem
atrasos. Podem-se criar stocks para lidar com as flutuações da procura, e para tirar
partido de economias de escala resultantes da antecipação da produção de alguns
itens. Os tempos de mudança da família em produção dependem da sequência de
produção. Quando um carretel da família f é processado imediatamente antes dum
carretel da família g ocorre um tempo de mudança dado por s fg ∈
.
Este
intervalo de tempo, em que se produz uma porção de folha de papel que não pode
ser utilizada para venda, corresponde a um período de perda de produção. Os
custos de mudança são directamente proporcionais aos tempos de mudança.
Para resolver este problema desenvolveu-se uma heurística que trabalha a dois
níveis de agregação temporal. No primeiro, considera-se um horizonte temporal
discreto. Assume-se que cada item é produzido no período que antecede o da sua
data de entrega. Calculam-se as quantidades a produzir de cada família, em cada
período, resolvendo, de forma independente, os problemas de corte associados às
várias famílias e períodos. Procede-se à afectação das soluções de corte às
encomendas, o que permite estabelecer as ordens de corte a produzir em cada
período.
Integração do problema de corte com o problema de planeamento da capacidade 145
No segundo nível, determinam-se os respectivos programas, para cada família,
e a sua sequência de produção ao longo do mesmo horizonte, mas considerando o
tempo contínuo. Procede-se, assim, à desagregação temporal, afectando a produção
das famílias a intervalos de tempo contínuos. O problema de sequenciamento
reduz-se a um problema de definição de batches1 e escalonamento numa única
máquina com tempos de mudança dependentes da sequência das famílias [Potts e
Van Wassenhove, 1992].
Entende-se por tarefa, a produção dum conjunto de carretéis que após o corte
vão originar itens destinados a um mesmo conjunto de pedidos, ou seja,
corresponde a uma ordem de corte. Considere-se que:
— a tarefa j produz x j ∈
— bf ∈
carretéis duma determinada família (seja a f), e
é o tempo de processamento dum carretel da família f.
O tempo de processamento da tarefa j é dado por bf .x j e a sua data de conclusão,
que se designa por D j ∈
,
é dada pela menor data de entrega dos itens
resultantes. Não se consideram pesos associados às tarefas (que na literatura se
designam por wj ). Não se permite a interrupção do processamento de tarefas.
Um escalonamento é uma sequência de processamentos de tarefas com os
intervalos de tempo necessários para as mudanças de família nas posições
correspondentes. Dado um escalonamento, o tempo de conclusão da tarefa j > 0 ,
Cj ∈
,
é dado recursivamente pela soma do tempo de conclusão da tarefa que a
antecede, com o tempo de processamento de j e, caso exista mudança de família, o
correspondente tempo de mudança.
O atraso duma tarefa j é dado por L j = C j − D j e o correspondente atraso
binário é dado por
1, se L j > 0
( j = 1,... , N ).
Uj =
0, caso contrário
1
Por batch, termo utilizado na literatura anglo-saxónica, entendemos uma sequência de carretéis da
mesma família que são produzidos consecutivamente, correspondendo, assim, à produção duma
determinada quantidade da mesma família.
146
Capítulo 5
O
tempo
total
{
de
processamento
duma
sequência
}
é
dado
C max = max C j , j = 1, ..., N , e o número de tarefas em atraso é dado por
por
∑ jU j .
Várias tarefas da mesma família podem ser agrupadas e produzidas em
conjunto, como uma batch, para atingir poupanças nos tempos de mudança da
produção das famílias. O tempo de processamento duma batch B i , que se designa
por P (B i ) , é dado pela soma dos tempos de processamento das tarefas que a
constituem e a sua data de conclusão D (B i ) é dada pela menor data de conclusão
das tarefas que a constituem. Num sequenciamento, o tempo de conclusão C (B i )
corresponde a C k , onde k é a última tarefa processada na batch.
Como função objectivo considera-se a minimização do custo total do
escalonamento, que inclui a minimização do número de tarefas em atraso e a
minimização do custo total de mudanças entre famílias. Como os custos são
proporcionais aos tempos de mudança, minimizar os custos é equivalente a
minimizar o tempo total de mudanças, ou seja, a minimizar a duração total do
escalonamento. Como não se permite interrupção, este problema é formalmente
equivalente a determinar o caminho hamiltoniano de custo mínimo num grafo
onde os nós representam tarefas e os arcos representam as mudanças entre o
processamento das tarefas. Os custos associados são os tempos de mudança entre
as famílias associadas às tarefas. Ou seja, o problema de minimização do tempo
total de mudança pode ser reduzido ao PCV e como tal, é NP-difícil.
Monma e Potts estudam o problema de sequenciamento da produção de
famílias, numa única máquina, com tempos de mudança dependentes da
sequência, considerando diversas funções objectivo [Monma e Potts, 1989]. Estes
autores mostram que:
— para o objectivo de minimização do tempo de conclusão ponderado, que se
designa por (1 | sfg |
∑w jC j ), existe um escalonamento óptimo onde as
tarefas em cada batch estão ordenadas segundo a regra de “data de
conclusão mais cedo”, e
Integração do problema de corte com o problema de planeamento da capacidade 147
— para o objectivo de minimização do custo total de tarefas em atraso, que se
designa por (1 | sfg |
∑ wU
i i ),
existe um escalonamento óptimo onde as
tarefas não atrasadas, em cada batch, estão ordenadas segundo a regra de
“data de conclusão mais cedo”.
Desenvolveram algoritmos de programação dinâmica cuja ordem de complexidade,
apesar de polinomial, é bastante elevada. Mais recentemente estes algoritmos
foram melhorados (cf. [Potts e Kovalyov, 2000]). Actualmente existem algoritmos
O (N F ) , ou seja, polinomiais para um número fixo de famílias, F.
Como as instâncias que se têm de resolver no caso em estudo têm dimensão
bastante elevada, optou-se por desenvolver um procedimento heurístico para
resolver o problema.
5.2.2Heurística para o planeamento e sequenciamento da capacidade
As tarefas de cada família são ordenadas por data de conclusão não decrescente.
Definem-se batches agrupando subsequências de tarefas com data de conclusão
numa determinada janela temporal – estas janelas definem-se de forma a terem
duração igual a meio período de produção. Em seguida, sequenciam-se estas
batches utilizando uma regra de prioridade baseada na utilizada por [Schutten,
1996], para tratar um problema da mesma classe.
Exemplo de determinação das tarefas originadas por um padrão
Consideremos:
 um padrão de corte 120 120 100 70, a usar para cortar 30 carretéis, e
 o conjunto de encomendas sobre itens da mesma família e diâmetro a satisfazer
usando os itens cortados no padrão:
Encomenda Quantidade
A
40
B
20
C
8
D
22
E
30
Largura
120
120
70
70
100
Data
99.05.10
99.05.11
99.05.08
99.05.15
99.05.20
148
Capítulo 5
O padrão de corte dá origem a três tarefas (a que correspondem três ordens de
corte):
Tarefa
1
2
3
Encomendas
destino dos itens
A A E D
B B E D
B B E C
Número de
carretéis
20
2
8
Tempo de
processamento
10
1
4
Data de
conclusão
99.05.10
99.05.11
99.05.08
Para cada tarefa, obteve-se o respectivo tempo de processamento, assumindo que o
corte de um carretel tem um tempo de processamento de 0.5 horas. Caso se
agrupem estas três tarefas para constituir uma batch, o respectivo tempo de
processamento é 15, e a data de conclusão é 99.05.08.
Regra de prioridade para sequenciamento de batches
Para determinar uma sequência de batches, utiliza-se a regra de prioridade que se
apresenta de seguida. Inicia-se a sequência fixando, na primeira posição, a batch
que apresente a menor data de conclusão. Se existir mais do que uma batch nessas
condições, escolhe-se a que consome o maior tempo de processamento.
Iterativamente, escolhe-se a próxima batch a ser introduzida na sequência até a
completar. Considera-se:
— β , parâmetro que representa o valor relativo do tempo de mudança, e
— B ig , a i-ésima batch da família g, e B jf , a j-ésima batch da família f.
Regra
Se B jf
foi a última batch introduzida no escalonamento, a próxima batch a
introduzir na sequência é B ig , a batch com o maior valor de L(B ig ) − β × s fg , onde:
–
L(B ig ) = C (B ig ) − D (B ig ) é o atraso de B ig , se esta for a próxima batch
a ser introduzida na sequência.
O algoritmo 5.1
problema.
apresenta o procedimento que se utilizou para resolver o
Integração do problema de corte com o problema de planeamento da capacidade 149
Heurística para o planeamento e sequenciamento da produção
1. Para cada período e cada diâmetro de cada família, considerar a procura
respectiva e determinar uma solução de corte.
2. Afectar os itens nas soluções obtidas às encomendas. Determinar as tarefas
e os correspondentes tempos de processamento e datas de conclusão.
3. Para cada família, ordenar as tarefas por ordem não decrescente de data de
conclusão.
4. Considerar, como datas limite, as datas que marcam o meio ou o fim de
períodos. Para cada família, agrupar numa batch as tarefas cuja data de
conclusão ficam entre duas datas limite consecutivas.
5. Iniciar β = 0 .
Determinar uma sequência de batches inicial utilizando a regra de
prioridade. Iniciar a melhor sequência encontrada com essa sequência
inicial.
6. Enquanto β ≤ 80 fazer
β = β +1 ;
Determinar uma nova sequência pela regra de prioridade;
Actualizar a melhor sequência encontrada com a sequência actual se
•
melhora o tempo total de processamento, C max , sem aumentar o
número de tarefas em atraso,
•
∑ j U j , ou
melhora o número de tarefas em atraso,
∑ j U j , sem aumentar o tempo
total de processamento, C max .
Algoritmo 5.1: Heurística para o planeamento e sequenciamento da produção
No passo 1, determinam-se as quantidades a produzir considerando os dados
agregados pelas características do produto e ao longo do tempo, num horizonte
temporal discreto. A afectação no passo 2 corresponde à desagregação nas
características dos itens e permite a determinação das tarefas. A ordenação das
tarefas, no passo 3, é o passo inicial para resolver o problema de sequenciamento e
150
Capítulo 5
determinação de batches num horizonte temporal contínuo – desagregação
temporal.
No passo 4, dividem-se os períodos do horizonte discreto inicial, em dois
subperíodos de igual duração. Para cada um dos períodos originais definem-se
duas datas: a que corresponde ao fim da primeira metade do período, e a que
marca o fim do período. As tarefas duma mesma família cuja data de conclusão
esteja compreendida entre duas destas datas são agrupadas numa batch. Isto
corresponde a estipular que todas as ordens de corte (da mesma família), que têm
de estar concluídas no fim da metade dum período, são produzidas na mesma
corrida.
No passo 5 procede-se ao sequenciamento das batches gerando um conjunto de
sequências atractivas e guardando a mais “favorável” relativamente aos critérios
considerados. Geram-se diversas sequências fazendo variar β , ou seja, atribuindo
valores diferentes à importância relativa dos tempos de mudança entre famílias. A
melhor sequência é actualizada sempre que se encontra uma nova sequência que
melhora ou o tempo total de processamento, ou o número total de tarefas em
atraso. Os limites de variação e o passo de variação do parâmetro β foram
determinados por experiência computacional.
A solução final expressa o plano de produção. Os programas para cada família
são dados pelas batches dessa família, ou pela agregação de batches dessa mesma
família, que ocorram sequencialmente na solução.
Como não se impõem restrições de capacidade e o sequenciamento é feito
considerando as quantidades que têm de ser produzidas, este procedimento
permite tratar situações pouco desejáveis que acabam por ocorrer na prática:
— já existe atraso na satisfação da procura quando se procede ao
planeamento, ou
— a capacidade não é suficiente para produzir toda a procura ao longo do
horizonte de planeamento.
Integração do problema de corte com o problema de planeamento da capacidade 151
Outra vantagem deste algoritmo é permitir que o plano possa ter início em
qualquer momento, não sendo necessário que esse instante corresponda ao início
dum módulo de produção. Para tal, em alternativa a considerar as datas absolutas,
utilizam-se as datas relativas ao início do plano, como se mostra no exemplo que se
segue.
Um aperfeiçoamento possível das soluções geradas, que não foi concretizado,
consiste em testar se eventuais antecipações de alguns programas podem conduzir
a um melhoramento em algum dos critérios que foram considerados.
Exemplo de aplicação da heurística
Considere-se que os módulos de produção têm a duração de uma quinzena.
Pretende-se elaborar um plano para um horizonte com duração de um módulo de
produção. O plano vai ter início à hora zero do dia 3 dum mês com 30 dias – ou
seja, a hora zero do plano corresponde à hora 48 do mês. As encomendas a produzir
nesse plano são as ainda não programadas e com entrega no período seguinte, que
se inicia no dia 16, ou seja, a hora 360 do mês, que corresponde à hora 312 do
plano.
Para simplificar, assuma-se que o tempo de processamento duma tonelada é de
uma hora, e que esse tempo corresponde ao tempo de processamento dum carretel
de qualquer família. São pedidos itens de cinco famílias. Os tempos de mudança
entre as famílias, sfg , são dados, em horas, pela matriz que se apresenta na tabela
5.1.
f/g
1
2
3
4
5
1
0
0.08
0.25
0.16
0.25
2
0.08
0
0.08
0.08
0.16
3
0.25
0.08
0
0.08
0.16
4
0.16
0.08
0.08
0
0.08
5
0.25
0.16
0.16
0.08
0
Tabela 5.1: Tempos de mudança entre famílias – exemplo
Resolvem-se os problemas de corte para cada família e obtêm-se as quantidades a
produzir para cada família, que se exibem na tabela 5.2.
152
Capítulo 5
f
Quantidade
1
190
2
95
3
120
4
120
5
115
Tabela 5.2: Quantidade a produzir para cada família – exemplo
Determinam-se as tarefas e sequenciam-se por ordem não decrescente de data de
conclusão. Faz-se corresponder a cada data o número de horas que decorre desde o
início do plano até essa data (exclusive), expressando-se em horas a data de
conclusão de cada tarefa.
O fim do período corresponde à hora 312 do plano. O meio do período seguinte
(22.5dias x 24 horas=540 horas), corresponde à hora 492 do plano (540-48=492).
Para cada família, forma-se uma batch agrupando todas as tarefas cuja conclusão
seja inferior a 492 (a existirem) e outra com as que têm conclusão superior ou igual
a 492. Na tabela 5.3 apresenta-se a lista de batches que se obtiveram, com as
respectivas quantidades a produzir, P (B jf ) , e ordenadas por data de conclusão,
D (B jf ) .
B jf
P (B jf )
D (B jf )
B13
80
408
B15
110
408
B12
20
432
B14
60
432
B11
110
480
B 23
40
504
B 24
60
504
B 25
5
504
B 21
80
576
B 22
75
576
Tabela 5.3: Batches a sequenciar – exemplo
A tabela 5.4 expõe as quatro sequências diferentes que se obtêm fazendo variar o
parâmetro β nos limites estabelecidos. Para cada solução, exibe-se a sequência de
batches e os tempos de mudança, apresentando para cada batch a respectiva data
de conclusão.
Integração do problema de corte com o problema de planeamento da capacidade 153
S0
S12
Bi
P (B i )
B15
110
s 53
C (B i )
S 30
Bi
P (B i )
110
B15
110
190.16
C (B i )
S 34
Bi
P (B i )
110
B15
110
190.16
C (B i )
Bi
P (B i )
110
B15
110
0.16
190.16
0.16
s 53
0.16
s 53
0.16
s 53
B13
80
B13
80
B13
80
B13
80
s 31
0.25
s 34
0.08
s 34
0.08
s 34
0.08
B11
110
300.41
B14
60
250.24
B14
60
250.24
B14
60
s14
0.16
360.57
360.40
360.40
0.16
s 41
0.16
s 41
0.16
s 41
B14
60
B11
110
B11
110
B11
110
s 42
0.08
s12
0.08
s12
0.08
s12
0.08
B12
20
380.65
B12
20
380.48
B12
20
380.48
B12
20
s 24
0.08
440.73
440.56
440.56
0.08
s 24
0.08
s 24
0.08
s 24
B 24
60
B 24
60
B 24
60
B 24
60
s 43
0.08
s 43
0.08
s 43
0.08
s 43
0.08
B 23
40
480.81
B 23
40
480.64
B 23
40
480.64
B 23
40
s 31
0.08
561.06
560.89
555.72
0.25
s 31
0.25
s 32
0.08
s 32
B 21
80
B 21
80
B 22
75
B 22
75
s15
0.25
s15
0.25
s 21
0.08
s 25
0.16
B 25
5
566.31
B 25
5
566.14
B 21
80
635.80
B 25
5
s 52
0.16
s 52
0.16
s15
0.25
s 51
0.25
75
641.56
B 22
75
641.30
B 25
5
641.05
B 21
80
B 22
C (B i )
110
190.16
250.24
360.40
380.48
440.56
480.64
555.72
560.88
641.13
Tabela 5.4: Soluções obtidas para sequenciamento da produção – exemplo
Como não se conhece a duração das tarefas e para simplificar a explanação,
assuma-se que cada tarefa tem a duração de uma hora. Dada uma sequência, o
número de tarefas em atraso na batch B jf é dado pelo arredondamento superior
do número de horas que não são produzidas até D (B jf ) . Para contar o número
total de tarefas em atraso, basta somar o número de tarefas em atraso, para cada
batch. Note-se que este valor é diferente do número de horas em atraso, dado pela
soma de L(B ig ) .
A melhor solução encontrada é iniciada com a sequência S0 , que corresponde a
considerar β = 0 . A duração do sequenciamento é C max = 641.56 . O número de
tarefas em atraso
∑jU j
= 71 – a batch B25 tem 5 tarefas; como está totalmente
em atraso, origina 5 tarefas em atraso; a B22 tem 66 (641.56-576=65.56) tarefas
em atraso.
As sequências obtidas com β = 1 até β = 11 são iguais a S0 .
154
Capítulo 5
Para β = 12 obtém-se a sequência S12 com C max = 641.3 e
∑jU j
= 71 – para
a batch B25 ficam 5 tarefas em atraso e para a B22 ficam 66 (641.3-576=65.3).
Actualiza-se a melhor solução encontrada com S12 .
Para a sequência S30 tem-se C max = 641.05 e
∑jU j
= 65 – para a batch B21
ficam 60 tarefas em atraso (635.8-576=59.8), e para a B25 ficam 5. A melhor
solução encontrada passa a ser S30 .
Para β = 34 obtém-se uma nova sequência, S34 , com C max = 641.13 e
∑jU j
= 71 . Nenhum dos critérios é melhorado e não se actualiza a solução.
Todas as sequências obtidas para β > 34 , são iguais a S34 .
A melhor solução obtida corresponde a S30 .
5.2.3 Comentários e conclusões
Em situações reais típicas, num plano com a duração de dois meses, produzem-se
cerca de 200 ordens de corte, com um número médio de 16 carretéis cada,
distribuídas por cerca de 30 programas. Neste caso, a execução do algoritmo num
computador actual, termina em cerca de 1 a 2 minutos.
Verificou-se ainda que, pela utilização deste procedimento, o valor de tempo
gasto nas mudanças entre famílias consome em média cerca de 1 a 2% da
capacidade disponível. Este valor de desperdício da capacidade pode ser deduzido
ao valor efectivo de capacidade disponível, obtendo-se uma estimativa da
capacidade disponível para a produção de carretéis.
A abordagem, que se apresenta na secção seguinte, permite resolver o problema
de planeamento da capacidade, ou seja, determinar as quantidades a produzir de
cada família num horizonte de planeamento. Essas quantidades podem então ser
sequenciadas utilizando uma heurística que resulta da que se apresentou, por
supressão do passo 1.
Integração do problema de corte com o problema de planeamento da capacidade 155
5.3 Problema de planeamento da capacidade integrando o
problema de corte
5.3.1 Partição e geração de colunas – conceitos e trabalho relacionado
A geração implícita de colunas é uma técnica que permite resolver problemas de
programação linear (PL) de grande dimensão através do método do simplex. A
avaliação das variáveis não básicas recorre à resolução de um problema de
optimização na determinação da variável com custo reduzido apropriado à entrada
na base. A principal motivação para a utilização desta técnica é permitir tratar
problemas de PL, em que o número de variáveis é de ordem tão elevada que seria
impraticável
a
sua
enumeração
completa.
Considere-se
um
modelo
em
Programação Linear Inteira (PLI) que deriva duma formulação de colunas.
Denomina-se por Problema Mestre (PM) o modelo original, e por Problema Mestre
Restrito (PMR) uma concretização do PM, em que apenas se considera um
subconjunto das possíveis colunas. Para resolver a Relaxação Linear do Problema
Mestre (RLPM), basta resolver a Relaxação Linear do Problema Mestre Restrito
(RLPMR) por geração implícita de colunas.
O método de partição e geração de colunas (branch-and-price) resulta da
combinação da geração implícita de colunas com a pesquisa em árvore com
ramificação e limitação. Este método tem sido utilizado com sucesso na resolução
de diferentes problemas formulados em PLI. De entre estes, salientam-se:
problema de rotas de veículos (vehicle routing problem) com janelas temporais,
[Desrosiers, Soumis e Desrochers, 1984] e [Desrochers, Desrosiers e Solomon,
1992]; problema de coloração num grafo [Nemhauser e Park, 1991]; problema de
formação de lotes com tempos de preparação [Vanderbeck, 1998]; problema de
corte binário [Vance et al., 1996] e [Vance, 1993]; problema de corte e problema de
bin-packing [Vance, 1998], [Vanderbeck e Wolsey, 1996], [Vanderbeck, 1999,
2000b], [Valério de Carvalho, 1999], [Degraeve e Schrage, 1999] e [Degraeve e
156
Capítulo 5
Peeters, 2002]. Em [Vanderbeck, 2000a] esta abordagem é utilizada para
minimizar o número de padrões num problema de corte.
A combinação destas duas metodologias tem de enfrentar uma dificuldade
fundamental: o subproblema de geração de colunas pode perder a sua estrutura
quando se introduzem as restrições de ramificação no PM. Uma regra de
ramificação adequada deve eliminar as soluções fraccionárias, particionar o espaço
de soluções do problema, e permitir que seja possível resolver o subproblema de
geração de colunas ao longo da árvore de pesquisa.
Passa-se a descrever, em termos genéricos, a estrutura dum algoritmo de
partição e geração de colunas, considerando como PM o modelo de Gilmore e
Gomory (cf. secção 4.2.1).
Considera-se um PMR inicial, definindo um subconjunto de colunas a
considerar no PM. Resolve-se a RLPMR, na raiz, por geração implícita de colunas.
Na raiz, o subproblema de geração de colunas consiste em
v(π) = max{ ∑ π i ai : a coluna admissível }
i
onde π é o vector das variáveis duais associadas às restrições de procura. A solução
deste Problema Saco-Mochila (PSM) define uma coluna cujo custo reduzido 1-v(π) é
mínimo.
A solução da RLPMR permite estabelecer um limite inferior para o problema
z = z LP  , onde z LP é o valor da solução linear. Se esta solução for fraccionária, é
necessário proceder a pesquisa em árvore com ramificação e limitação, para
encontrarmos uma solução óptima do PM. Alguns autores calculam, na raiz, uma
solução inteira admissível, através dum procedimento heurístico, o que permite
estabelecer um limite superior, z , para o valor da solução do problema. Quando se
dá por terminada a geração de colunas num nó da árvore de pesquisa, se a solução
for fraccionária e o arredondamento superior do limite linear no nó actual for
inferior a z , procede-se à ramificação.
Seja x i o valor óptimo da variável associada à coluna i, na solução da RLPMR
actual. Alguns autores utilizam ramificação sobre um conjunto de colunas. Para
Integração do problema de corte com o problema de planeamento da capacidade 157
tal, determina-se um conjunto de colunas C, para o qual a soma das variáveis
associadas,
∑i ∈C x i
= α , seja não inteiro, e impõe-se um limite inferior ou um
limite superior sobre o valor dessa soma. Ou seja, introduz-se no PM uma das
seguintes restrições:
∑i x i ≥ α 
ou
∑i x i
≤  α .
A ramificação sobre uma única coluna consiste em considerar um conjunto C
singular, ou seja, determina-se uma coluna k para a qual x k = α , é fraccionário e
introduz-se no PM uma das seguintes restrições:
x k ≥ α  ou x k ≤  α .
Uma regra de ramificação clássica pode não garantir uma solução óptima, nem
sequer admissível para o PMR actual. Após a introdução duma restrição de
ramificação, pode acontecer que algumas das colunas, no PMR actual, deixem de
ser admissíveis para o novo nó, ou que exista uma coluna com custo favorável, mas
que não esteja presente no PMR. Ou seja, depois da ramificação, pode ser
necessário gerar novas colunas e voltar a resolver a RLPMR. A regra de
ramificação deve permitir modificar o subproblema, de forma a que continue a ser
possível a sua resolução, garantindo que não sejam geradas colunas que se
tornaram não admissíveis devido às restrições de ramificação.
Um nó da árvore de pesquisa é eliminado quando o arredondamento superior
da solução da RLPMR correspondente não for inferior a z . Actualiza-se z , sempre
que se encontra uma solução que seja inteira e com valor inferior. O algoritmo
termina quando se tem z = z .
Alguns autores recorrem ao teorema de Farley, [Farley, 1990], o que permite
poupar iterações desnecessárias da geração de colunas, durante a resolução da
RLPMR em cada nó.
Como as instâncias do PC têm na sua generalidade IRUP, o limite inferior z ,
que é obtido na raiz, é muitas vezes o valor da solução óptima. A ramificação,
tipicamente, não conduz a melhoramentos do limite inferior, mas tem como fim
eliminar a fraccionalidade da solução do PM. Alguns autores, após a resolução da
158
raiz, introduzem no PM o corte
Capítulo 5
∑i x i
≥ z ou a restrição
∑i x i
= z , poupando a
fase de geração de soluções admissíveis não óptimas, para a determinação de
limites superiores.
Em seguida dar-se-á uma panorâmica geral dos algoritmos de partição e
geração de colunas, mais relevantes, desenvolvidos para o PC.
Vanderbeck e Wolsey
Vanderbeck e Wolsey descrevem um algoritmo geral de partição e geração de
colunas para uma classe de problemas formulados em PLI [Vanderbeck e Wolsey,
1996]. A ramificação consiste em definir limites inferiores e superiores na soma
das variáveis associadas a um conjunto de colunas. Para o PC, essas colunas são
aquelas onde as larguras definidas por um conjunto S ocorrem pelo menos um
“determinado número de vezes”. Mostra-se que um conjunto de ramificação pode
ser escolhido através da selecção de uma variável fraccionária, cuja coluna
associada domine as outras colunas com valor fraccionário, e fixando S como o
conjunto das larguras que são cortadas nessa coluna. As restrições de ramificação
conduzem à introdução explícita de restrições adicionais no subproblema de
geração de colunas. Os autores sugerem transformar o subproblema num problema
saco-mochila binário com restrições adicionais. Para o resolver, desenvolveram um
algoritmo específico de pesquisa em árvore com ramificação e limitação.
Vance
Vance – [Vance, 1998] – considera duas formulações de colunas. A primeira deriva
da decomposição de Dantzig-Wolfe aplicada a uma formulação para problemas em
que os carretéis podem ter diferentes larguras (recorre a variáveis binárias que
indicam se um carretel é ou não utilizado; as restrições incluem a satisfação da
procura, e a verificação da largura máxima utilizada em cada carretel). A outra é a
formulação de Gilmore e Gomory, e é para esta que o algoritmo de Vance (que se
descreve em seguida) apresenta maior qualidade. Resolve-se a RLPMR utilizando o
procedimento clássico de geração de colunas (como se descreve em 4.2.1). Recorre-
Integração do problema de corte com o problema de planeamento da capacidade 159
se ao teorema de Farley. Propõe-se ramificar sobre um conjunto de colunas – S –
para as quais uma determinada largura ocorre pelo menos um determinado
número de vezes. Sempre que se ramifica, adiciona-se explicitamente uma
restrição ao PM. Cada restrição de ramificação adiciona variáveis e restrições ao
subproblema. Para simplificar a resolução do subproblema de geração de colunas
durante a pesquisa na árvore, Vance sugere utilizar apenas colunas que
correspondam a padrões maximais e ramificar sobre uma única coluna. Corrigemse os padrões não maximais adicionando-lhes tantas cópias, quantas as possíveis,
do menor item. Esta regra conduz à geração dum conjunto de colunas “proibidas”.
Isto implica que num nó pode ser necessário gerar várias colunas até que se
encontre uma não proibida. Escolhe-se para ramificar a coluna que tiver o maior
número de zeros, cuja variável associada tome um valor fraccionário na solução de
PL corrente. Simplifica-se assim a identificação de colunas a eliminar durante a
geração. A pesquisa na árvore é feita em profundidade1, pesquisando primeiro o nó
em que se impôs um limite inferior.
O problema de geração de colunas é um PSM com variáveis adicionais e
restrições adicionais. Vance utiliza o algoritmo de Horowitz-Sahni [Horowitz e
Sahni, 1974] para PSM binários, com as devidas modificações de forma a
considerar as restrições adicionais e de forma a não gerar colunas “proibidas”.
Vanderbeck
Em [Vanderbeck, 2000b], Vanderbeck explora a reformulação de problemas de PLI
através da decomposição de Dantzig-Wolfe, e estende o esquema geral de
ramificação apresentado por Vanderbeck e Wolsey. Especificamente, estuda o PC,
o problema de bin-packing, e o problema de corte de tiras (cutting strip problem).
Propõe transformar o subproblema, um PSM, no seu correspondente binário e
1
Conhecida por depth-first search na literatura anglo-saxónica.
Neste algoritmo de pesquisa, mantém-se uma pilha de nós a explorar, isto é, os nós são explorados
numa filosofia de último a entrar/ primeiro a sair. Assim a exploração é feita na profundidade da
árvore, criando-se um caminho de nós pesquisados, a partir da raiz, tão longo quanto possível.
Procede-se ao retrocesso de um nó, para iniciar uma nova exploração, quando não é possível
avançar mais no sentido do caminho (em profundidade).
160
Capítulo 5
escolher o conjunto de ramificação definindo as componentes em que as colunas
binárias apresentam valor unitário. Esta é uma das regras de ramificação que se
consideraram no algoritmo, que se apresenta em 5.3.3, e a transformação binária
do subproblema é explicada nessa secção.
A regra de ramificação – [Vanderbeck, 1999]1 – consiste em, dada uma solução
fraccionária do PMR, encontrar um subconjunto de colunas
Qˆ = {q ∈ Q : q k′ = 0 ∀k ∈ O e q k′ = 1 ∀k ∈ P }
tal que α = ∑q ∈Qˆ x q é fraccionário, onde Q é o conjunto de colunas admissíveis,
q′k é o valor da componente k na transformação binária da coluna q e x q é o valor
da variável associada à coluna q na solução.
Ramifica-se introduzindo no PM uma das restrições
∑q ∈Qˆ x q ≤ α  ou ∑q ∈Qˆ x q ≤ α . .
Os subconjuntos O e P caracterizam completamente Q e Vanderbeck mostra
que para qualquer solução fraccionária do PM existem sempre os subconjuntos O e
P com O + P ≤ log f  + 1 para os quais o α associado é fraccionário e onde
(
)
f = ∑q ∈Q x q − x q  . A introdução das restrições de ramificação altera a estrutura
do subproblema que Vanderbeck resolve através dum algoritmo especialmente
desenvolvido para o efeito. Para restrições de ramificação onde |O | + |P |= 1 não
há necessidade de introduzir uma variável extra no subproblema, pois a
modificação pode ser introduzida corrigindo π’, o transformado binário do vector de
custos duais. O autor afirma que a sucessiva aplicação da regra mais simples, com
|P|=1, que é a menos restritiva, permite a eliminação de todas as soluções
fraccionárias para as instâncias do PC. Para as instâncias do problema de binpacking, é muitas vezes necessário utilizar um par de componentes (l, k) para
ramificação, ou seja, considerar P com cardinalidade 2.
Para ramificar dá-se prioridade às componentes binárias l, para as quais a
correspondente largura binária no PSM tenha valor w l′ elevado.
1
Este trabalho vem na sequência de [Vanderbeck, 2000b], apesar de ter data de publicação anterior.
Integração do problema de corte com o problema de planeamento da capacidade 161
O sucesso desta abordagem depende bastante da qualidade dos limites
inferiores utilizados, e da sua manipulação, assim como da introdução de
desigualdades válidas na árvore de pesquisa. Utiliza-se o limite de Farley.
Vanderbeck também recorre ao cálculo de limites inferiores a priori, ou seja,
limites que se calculam antes de resolver a RLPMR. Calcula a priori L2 , o limite
inferior de Martello e Toth [Marthello e Toth, 1990]. Calcula diversas soluções
heurísticas e o limite superior é inicializado com o valor da melhor solução inteira
encontrada. Na raiz, o PMR é inicializado com as colunas da melhor solução
heurística. Se o custo da melhor solução inteira encontrada for igual a L2 , então, o
algoritmo termina. Se não, introduz-se o corte trivial
∑q ∈Q x q
≥ L2 , para
arredondar para cima a solução de PL, e para garantir que o número de colunas a
utilizar seja um inteiro.
Explora-se inicialmente o ramo definido pela restrição de limite inferior, e
pesquisa-se um sucessor desse nó antes de retornar ao ramo definido pela restrição
de limite superior. Processam-se primeiro os nós num nível mais profundo da
árvore, de entre os muitos que têm um limite inferior a priori igual ao melhor
limite inferior actual.
Vanderbeck introduz cortes de admissibilidade sobre o número mínimo de
carretéis necessários para satisfazer a procura de cada item. Esse limite é dado
pelo arredondamento superior da razão entre o valor da procura e o número
máximo de vezes que o item pode ocorrer numa coluna. Outra característica do
algoritmo é o cálculo duma solução heurística, em cada nó, por resolução do
problema residual (na linha do proposto em [Scheithauer e Terno, 1995a]).
Valério de Carvalho
Valério de Carvalho utiliza uma formulação de fluxo em arcos num grafo
apropriado [Valério de Carvalho, 1999]. Um conjunto de restrições de conservação
do fluxo e um conjunto de restrições sobre o fluxo em determinados arcos garantem
que são obtidas as quantidades requeridas para os diferentes itens. Esta
formulação é equivalente à formulação de Gilmore e Gomory.
162
Capítulo 5
O grafo é construído de forma a que exista um arco entre dois vértices se a
diferença entre os índices dos vértices corresponder à largura de um item.
Potencialmente têm-se W+1 vértices, onde W é a largura do carretel. O número de
variáveis é 2(mW), onde m é o número de diferentes itens. Consideram-se arcos
adicionais, (k,k+1) k=0,…,W-1 para representar a largura não utilizada. Um
padrão de corte corresponde a um caminho neste grafo e o fluxo que passa nesse
caminho é o número de vezes que o padrão é cortado.
O grafo é acíclico e um fluxo pode ser decomposto em caminhos orientados
ligando os vértices 0 (onde temos uma quantidade z, que é o valor a minimizar) e W
(onde temos a quantidade -z). Cada variável xij, o fluxo no arco (i,j), é o número
total de itens com largura j-i cortados num padrão a i unidades de distância do
início. Assim, as colunas do PM são os arcos do grafo associado e qualquer solução
pode ser escrita como uma combinação linear de fluxos em caminhos orientados
neste grafo.
O espaço de soluções do subproblema é o conjunto de fluxos entre os vértices 0 e
W. São apresentados critérios que permitem reduzir a dimensão do grafo e reduzir
a complexidade do subproblema. O subproblema consiste em encontrar o caminho
mais longo num digrafo acíclico e onde os custos dos arcos dependem do valor das
variáveis duais do PMR.
Quando numa iteração, um arco está num caminho atractivo, se necessário, o
PM é actualizado de forma a incluir as linhas correspondentes às restrições de
conservação de fluxo para os vértices associados. De igual forma, todos os arcos no
caminho ainda não considerados no PMR são adicionados ao mesmo. Assim, o PM
cresce em duas direcções: são adicionados arcos (colunas) e restrições de
conservação de fluxo (linhas).
O modelo é inicializado com todas as restrições de fluxo relaxadas excepto para
os arcos na solução inicial. Estes são obtidos a partir de uma solução heurística.
O procedimento foi especialmente concebido tendo em conta que, na
generalidade, os problemas de corte têm a propriedade de arredondamento
Integração do problema de corte com o problema de planeamento da capacidade 163
superior, IRUP. Esta diferença é reduzida, incluindo no PM o seguinte corte
∑k x k ,k +1 ≥ Lmin , onde
Lmin = z LP W − ∑i =1w i d i é o desperdício mínimo, se a
m
instância tiver IRUP, z LP é o valor da RLPM na raiz, w i e d i são as larguras dos
itens e os valores de procura, respectivamente.
É feita pesquisa em profundidade e ramifica-se sobre o fluxo num determinado
arco, ou seja, as restrições de ramificação são xij ≥  x ij  e x ij ≤  x ij .
A informação dual associada às restrições de ramificação é utilizada na
avaliação do custo reduzido para as variáveis do subproblema. Assim, a estrutura
do subproblema mantém-se durante a pesquisa na árvore à custa de se trabalhar
com 2(mW) variáveis.
Averigua-se se existe uma solução inteira com valor z = z LP  . Se essa solução
não é encontrada na árvore (a instância não tem a propriedade de arredondamento
superior), então z tem de ser incrementado uma unidade, e o procedimento é
repetido.
Os resultados computacionais revelam que esta abordagem tem uma eficácia
comparável com a de Vanderbeck, sendo apresentados resultados para instâncias
com procura total de 1000 itens distribuídos por 81 larguras diferentes.
Degraeve e Schrage
Em [Degraeve e Schrage, 1999] apresenta-se um algoritmo muito idêntico ao
desenvolvido por Vance. Considera-se a formulação de Gilmore e Gomory e utilizase o procedimento clássico de geração de colunas. Recorre-se ao teorema de Farley.
A ramificação faz-se sobre uma única coluna, conduzindo à geração dum conjunto
de colunas “proibidas”. Resolve-se o subproblema por enumeração implícita,
mantendo-se
uma
lista
de colunas
“proibidas”
que
permite
eliminar
a
correspondente geração.
A pesquisa na árvore é feita em profundidade e ramifica-se sobre a primeira
coluna fraccionária que se encontra. Para garantir a geração de colunas “densas” –
colunas que representam padrões que cortam vários itens, mas poucas repetições
de cada – estabelecem-se limites superiores sobre as variáveis do subproblema.
164
Capítulo 5
Mais tarde, removem-se estes limites e eliminam-se os nós onde o melhor valor já
conhecido para uma solução inteira não excede o limite inferior para o PMR, com
as restrições de ramificação.
Degraeve e Peeters
Em [Degraeve e Peeters, 2002] descreve-se um melhoramento do algoritmo de
Degraeve e Schrage. Em cada nó, para resolver a RL do PMR, utiliza-se um
algoritmo híbrido que combina o método do simplex com um procedimento de
“optimização de subgradiente”. Na fase “optimização de subgradiente” resolve-se
um problema saco-mochila e gera-se uma nova coluna que corresponde à coluna
que se geraria se se estivesse a proceder da forma clássica. Isto, porque os custos
duais, que se obtêm pela optimização subgradiente, convergem para os custos
duais óptimos da RL do PMR. A vantagem da combinação resulta da rapidez com
que a optimização subgradiente gera novas colunas, sem que seja necessário
proceder à resolução da RL do PMR para poder avaliar novas colunas. Por outro
lado, pode-se interromper a geração de colunas sempre que o limite lagrangeano
exceda ou iguale o melhor valor já encontrado para uma solução inteira. No
entanto, no final do processamento dum nó tem de se proceder à resolução da RL
do PM, de forma a obter uma solução primal, sobre a qual se possa proceder à
ramificação.
A ramificação processa-se sobre uma única coluna. Na pesquisa em árvore
avalia-se primeiro o nó em que se introduziu a restrição de limite inferior. Desta
forma, não é necessário voltar a resolver a RL do PMR. Resolve-se então o
problema residual associado. Neste caso, o subproblema é um PSM com limites,
que se resolve utilizando uma adaptação do algoritmo de enumeração implícita de
Gilmore e Gomory, [Gilmore e Gomory, 1963], com a imposição de limites sobre as
variáveis e recorrendo aos limites de Martello e Toth, [Martello e Toth, 1990]. Os
resultados mostram que o algoritmo tem um bom desempenho, embora para
algumas classes de instâncias, seja superado pelo algoritmo de Vanderbeck e pelo
algoritmo de Valério de Carvalho.
Integração do problema de corte com o problema de planeamento da capacidade 165
5.3.2 Modelo de Programação Linear Inteira
Considera-se o sistema produtivo que se descreveu no capítulo 2. Produzem-se
carretéis de folha de papel com diversas características, divididos em famílias. Os
carretéis são cortados em rolos mais pequenos, que se denominam por itens.
Pretende-se determinar um plano das quantidades a produzir de cada família, em
número de carretéis, ao longo dum horizonte de planeamento, de forma a
satisfazer a procura maximizando a utilização do sistema. Este plano deve
permitir a definição precisa de datas de entrega exequíveis, e estimar as
consequências da eventual insuficiência de capacidade.
Podem-se criar stocks para contornar a insuficiência da capacidade em alguns
períodos e para alcançar economias de escala na minimização do desperdício. Por
outro lado, o desperdício que resulta do corte constitui uma parte dos carretéis que
têm de ser produzidos, e como tal, corresponde ao consumo duma parte da
capacidade disponível. Assim, o planeamento da capacidade deve integrar a
tomada de decisão relativa ao processo de corte.
O modelo resulta duma extensão da formulação de colunas de Gilmore e
Gomory. Considera-se a procura acumulada e restrições de satisfação da procura
acumulada ao longo dum horizonte temporal de médio prazo. Uma coluna
representa um padrão de corte admissível para cortar carretéis duma determinada
família, num dado período. Introduzem-se restrições de capacidade limitando o
tempo total de processamento dos carretéis a produzir em cada período. Os tempos
associados ao processo de corte são desprezáveis e não se consideram. Assume-se
que os carretéis são cortados no período em que se produzem. Introduzem-se
variáveis de stock inicial, com custos elevados, que garantem a admissibilidade do
modelo. A solução expressa a solução de corte a utilizar para cada família e cada
período e, em caso de insuficiência da capacidade, quais os itens em falta.
i. Formulações
Em seguida, apresentam-se as formulações que conduzem ao modelo final.
166
Capítulo 5
Sejam:
T
: número de períodos no horizonte de planeamento, indexados por t;
F
: número de diferentes famílias, indexadas por f;
mf
: número de diferentes itens da família f, pedidos ao longo do horizonte
de planeamento;
m
: número total de itens, pedidos ao longo do horizonte de planeamento,
indexados por i, i = 1,
f −1
,m , onde para a família f são pedidos os itens
com índice i = ∑k =1 mk + 1,
, ∑k =1 mk ;
f
)(i )
: índice da família a que pertence o i-ésimo item;
,(f )
: conjunto dos índices dos itens da f-ésima família;
hi+, hi− : custos
unitários
de
armazenamento
e
de
atraso
na
entrega,
respectivamente, para o i-ésimo item;
pf
: custo unitário de processamento de carretéis da família f;
bf
: tempo de processamento de um carretel da família f (em horas);
ct
: capacidade de produção disponível no período t (em horas); e
d it
: procura do i-ésimo item a satisfazer no final do período t.
As variáveis são:
I it+ , I it− : quantidade (em unidades) do i-ésimo item em armazém e em atraso,
respectivamente, no final do t-ésimo período;
x jft
: número de carretéis a cortar de acordo com o j-ésimo padrão para a
família f no período t; e
aijt
: número de vezes que o i-ésimo item é cortado no j-ésimo padrão da
respectiva família no período t.
O Problema de Corte integrado com o Planeamento da Capacidade (PCPC) pode
ser formulado como se segue.
[PCPC]


min z = ∑  ∑ hi+ I it+ + hi− I it− + ∑ pf ∑ x jft 


t  i
f
j

(
)
(5.1)
Integração do problema de corte com o problema de planeamento da capacidade 167
s. a:
∑ aijt x jft + I it+ −1 − I it+ − I it− −1 − I it− = dit
(
) (
)
∀ i , t , f = )(i )
(5.2)
∀t
(5.3)
∀ j, f ,t
(5.4)
∀ i, t
(5.5)
j
∑∑ bf
f
x jft ≤ ct
j
x jft ≥ 0 e inteiro
I it+ , I it− ≥ 0 e inteiro
A função objectivo (5.1) expressa a minimização da soma dos custos totais de
armazenamento, atraso na satisfação da procura e utilização dos recursos de
produção. Em (5.2) definem-se os fluxos de stock (quantidade em stock e
quantidade em atraso), em função do balanço entre a produção e a procura. As
restrições (5.3) estipulam que a produção em cada período não excede a respectiva
capacidade. As restrições (5.4) e (5.5) asseguram que as variáveis são inteiras e
não negativas.
Eliminam-se as variáveis de atraso na entrega I it− , considerando a procura
efectiva de cada item i, a satisfazer no final de cada período t, e introduzindo
variáveis
de
stock
I i+0 ,
inicial
com
custos
hi+0 .
Assim,
assegura-se
a
admissibilidade.
Ao permitir que as variáveis de stock inicial possam ser positivas admite-se que
pode existir atraso na entrega. Quando os custos de stock inicial hi+0 têm valores
elevados, a solução vai reflectir os níveis mínimos de stock inicial necessários para
suportar o plano de produção ao longo do horizonte temporal, e não apenas
diagnosticar a admissibilidade do problema. Assume-se que no final do horizonte
+ = 0, ∀i .
de planeamento o stock é nulo para todos os itens, I iT
Obtém-se a seguinte reformulação do problema.
[PCPC]

min z = ∑ hi+0I i+0 + ∑  ∑ hi+ I it+ + ∑ pf

i
t  i
f
(
)
(
)
s. a:
∑ aijt x jft + I it+ −1 − I it+ = dit
(
j
)

∑ x jft 
j

∀ i , t , f = )(i )
(5.6)
168
Capítulo 5
∑∑ bf
f
x jft ≤ ct
∀t
j
x jft ≥ 0 e inteiro
∀ j, f , t
I it+ ≥ 0 e inteiro
+
I iT
∀ i , t = 0,
,T − 1
∀i
=0
Utilizando as restrições (5.6) e considerando valores acumulados, eliminam-se as
variáveis de stock I it+ , t = 1,...,T . Passa-se a considerar apenas variáveis de stock
inicial I i com custos associados hi dados por
hi = hi+0 + ∑t =1 hi+ = hi+0 + (T − 1)hi+ .
T −1
O valor da procura acumulada do item i, no período t, é d it = ∑k =1 d ik e a
t
respectiva produção acumulada é dada por
∑k =1 ∑ j aijk x j)(i )k .
t
O problema reformulado é então
[PCPC]
T-1
min z = ∑ (hi I i ) + ∑∑ (( ∑ hi+ ) ∑ aijt x j)(i )t - hi+ d it ) + ∑ ∑ pf ∑ x jft
i
t
i
k =t
j
t
f
(5.7)
j
s. a:
t
∑ ∑ aijk x j)(i )k + I i
k =1 j
T
∑ ∑ aijk x j)(i )k + I i
k =1 j
≥ d it
∀ i,t ≠ T
= d iT
∀i
∑∑bf x jft ≤ ct
f
∀t
j
x jft ≥ 0 e inteiro
∀ j, f , t
I i ≥ 0 e inteiro
∀i
Pode-se eliminar a constante − ∑ ∑ hi+d it em (5.7), originando a função objectivo
t
equivalente
i
min z = ∑ (hi I i ) + ∑∑ ((T-t )hi+
i
t
i
∑ aijt x j)(i )t ) + ∑ ∑ pf ∑ x jft .
j
t
f
j
Integração do problema de corte com o problema de planeamento da capacidade 169
Para este modelo, o problema de garantir a admissibilidade a priori pode ser
resolvido eficientemente – fazendo I i = ∑t =1 d it . No entanto, a optimização do
T
modelo é NP-difícil.
O problema completo pode ser visto como um conjunto de subproblemas em que
cada um destes é um problema de corte. Estes subproblemas estão integrados em
dois sentidos: por um lado, as restrições de capacidade fazem a ligação entre os
problemas de corte das diferentes famílias para um mesmo período; por outro lado,
a estrutura das variáveis (produção acumulada e stock inicial) fazem a ligação nas
restrições de satisfação da procura.
A formulação do problema expressa o trade-off entre duas políticas aceitáveis,
mas antagónicas, que traduzem os objectivos do problema de planeamento de
produção: produzir o mais tarde possível e produzir com o mínimo desperdício.
Em termos de minimização dos custos de armazenamento, na solução mais
vantajosa, em cada período produzir-se-ia apenas a procura a satisfazer nesse
período. Mesmo que não existissem restrições de capacidade, este tipo de solução
poderia ser inviabilizada por acarretar custos de desperdício muito elevados.
Em termos de minimização dos custos de desperdício, a solução mais vantajosa
resultaria de uma maior diversidade das larguras a combinar. Esta solução
conduziria a um deslocamento da produção para os períodos iniciais, elevando os
custos de armazenamento, mas impossibilitada pelo limite da capacidade de
produção.
Teorema
O PCPC é NP-difícil.
Prova
O problema de corte é um problema NP-difícil.
O PCPC é uma extensão do problema de corte, pois integra vários problemas de
corte com as decisões relativas aos itens e às respectivas quantidades a produzir
para cada um desses problemas.
170
Capítulo 5
Isto significa que o PCPC inclui:
1. as decisões relativas à melhor forma de cortar cada um de vários conjuntos
de itens, isto é, vários problemas em que cada um é NP-difícil, e
2. as decisões relativas à composição de cada conjunto de itens, o que por si é
NP-difícil pois pode ser reduzido ao problema de partição.
Assim, o PCPC é NP-difícil.
❏
A formulação apresentada tem um carácter geral. Passa-se a considerar um
subconjunto de instâncias com uma estrutura de custos particular:
— o custo de produzir um carretel de qualquer família é unitário,
— os custos de armazenamento entre períodos do horizonte são nulos e
— os custos de stock inicial são iguais para todos os itens e elevados (por
exemplo têm um valor superior ao número total de itens a produzir).
Esta estrutura de custos simplifica a resolução do problema – permite controlar
mais eficientemente o gap de lineariedade (cf. 5.3.3) – e adequa-se às instâncias
reais que se pretendem resolver. Em relação aos custos de processamento não é
necessário fazer distinção nas diferentes famílias, pois todos os pedidos devem ser
satisfeitos. Não havendo famílias preferenciais são os tempos de processamento
que diferenciam a produção das famílias.
Os custos de armazenamento podem ser considerados nulos pois terminada a
produção os itens em armazém estão atribuídos a algum cliente, ou seja, apenas
aguardam a expedição. As variáveis de stock inicial representam as quantidades
em falta para garantir a satisfação da procura com o plano solução e como tal o seu
custo deve ser suficientemente elevado. Um valor superior ao número total de itens
a produzir permite que as variáveis correspondentes só tomem valores positivos
quando a capacidade for insuficiente. Apesar dos itens terem valorização diferente,
pode considerar-se que a falta não os distingue.
A formulação do PCPC é a seguinte.
Integração do problema de corte com o problema de planeamento da capacidade 171
[PCPC]
min z = ∑ (hi I i ) + ∑∑∑ x jft
t f j
s. a: i
t
∑ ∑ aijk x j)(i )k + I i
k =1 j
T
∑ ∑ aijk x j)(i )k + I i
k =1 j
(5.8)
≥ d it
∀ i, t ≠ T
(5.9)
= d iT
∀i
(5.10)
∀t
(5.11)
∀ j, f , t
(5.12)
∀i
(5.13).
∑∑bf x jft ≤ ct
f
j
x jft ≥ 0 e inteiro
I i ≥ 0 e inteiro
Cada linha do bloco de restrições de satisfação da procura para o último período do
horizonte de planeamento (t=T), ou seja, a i-ésima linha em (5.10) contem a
informação relativa ao plano de produção para o i-ésimo item.
ii. Exemplo
Considere-se a seguinte instância onde F = 2 , T = 2 , m = 10 . Os itens da família
1 são indexados em i = 1, ..., 4 e os da família 2 em i = 5, ..., 10 .
Os vectores da procura são, respectivamente,
— para o primeiro período d1 = (10, 0, 5, 2, 5, 17, 0, 0, 0, 10) T e
— para o segundo período
d2 = (20, 10, 0, 0, 0, 8, 7, 17, 28, 13)T,
dando origem aos respectivos vectores de procura acumulada
— d11 = (10, 0, 5, 2, 5, 17, 0, 0, 0, 10) T
— d12 = (30, 10, 5, 2, 5, 25, 7, 17, 28, 23) T.
O vector das capacidades de produção é c = (72, 72) e o vector dos tempos de
processamento é b = (3, 3.5).
Na figura 5.1 apresenta-se, em forma de tabela, a matriz das restrições na
formulação associada ao PMR, cuja solução da RL é a solução óptima do problema
mestre. Apenas se incluem as colunas que estão na base final, e as componentes
nulas são omitidas.
172
Capítulo 5
A solução tem custo z * = 37 . Os valores óptimos para as variáveis relativas às
colunas apresentam-se na segunda linha e são:
*
*
x111
= 2 , x211
=1 ,
*
*
*
*
*
*
x121
= 5 , x221
= 6 , x321
= 1 , x421
=1 , x521
= 3 , x621
=2 ,
*
*
*
x112
= 2 , x212
=1 , x312
=3 ,
*
*
*
*
*
x122
= 2 , x222
=1 , x322
=1 , x422
= 5 e x522
=1 .
As variáveis relativas ao stock inicial são I i*0 = 0,
i = 1,...,10 .
Para facilitar a leitura, as restrições relativas à satisfação da procura estão
enquadradas por um traço simples, enquanto que as restrições relativas à
capacidade, na parte inferior da tabela, se encontram delimitadas por um traço
duplo. Enquadram-se também as submatrizes relativas às famílias e aos períodos.
Cada valor na primeira coluna indica a restrição a que se refere a linha
correspondente. Para cada restrição de satisfação da procura mostra-se o par (i,t)
onde i é o índice do item e t é o período. Para cada restrição de capacidade indica-se
o respectivo período. Na penúltima coluna temos o tipo da restrição e o respectivo
termo independente. Cada um dos valores na última coluna é folga para a
respectiva restrição, na solução óptima.
A coluna associada à variável x111 representa o padrão (4, 0, 2, 0)T, admissível
para cortar carretéis da família 1, e que vai ser utilizado no período 1. Como tal,
este subvector ocorre nas linhas referentes às restrições de satisfação da procura
da família 1, em ambos os períodos. As restantes componentes da coluna são nulas,
excepto a relativa à restrição de capacidade para o respectivo período, o período 1,
que toma o valor b1 = 3 . Em relação à coluna correspondente à variável x112 , tem-se
o padrão de corte (4, 1, 0, 0)T admissível para a mesma família, e a utilizar no
período 2. Este subvector ocorre nas linhas relativas às restrições de satisfação da
procura para os itens desta família no período 2. Com excepção da componente na
posição relativa à restrição de capacidade no período 2, com o valor b1 = 3 , as
restantes componentes desta coluna são nulas.
Integração do problema de corte com o problema de planeamento da capacidade 173
A esta solução corresponde um total de 21 carretéis a produzir no período 1: 3
dos quais da família 1, e os restantes 18 da família 2. Durante o período 2, procedese ao corte de 16 carretéis, dos quais 6 são da família 1 e 10 da família 2. No
período 1 a capacidade é totalmente utilizada e no período 2 há um excedente de 19
horas de produção.
(i,t)
x111
2
(1,1) 4
(2,1)
(3,1) 2
(4,1)
(5,1)
(6,1)
(7,1)
(8,1)
(9,1)
(10,1)
(1,2) 4
(2,2)
(3,2) 2
(4,2)
(5,2)
(6,2)
(7,2)
(8,2)
(9,2)
(10,2)
1
2
3
x211
1
4
x121
5
x221
6
x321
1
x421
1
x521
3
1
2
1
2
1
x621
2
x112
2
x212
1
x312
3
4
1
1
2
3
2
x122
2
x222
1
2
1
2
x322
1
x 422
5
1
2
2
1
2
4
1
2
2
4
4
1
2
1
2
2
1
1
2
1
2
4
1
2
3
3.5
3.5
2
3.5
3.5
1
4
3.5
4
4
1
2
3.5
3
3
3
3.5
3.5
3.5
3.5
t
x522 d
excesso
it
1
≥ 10
2
≥0
0
≥5
0
≥2
0
≥5
0
≥ 17
1
≥0
5
≥0
12
≥0
16
≥ 10
2
=30
=10
=5
=2
=5
1 =25
=7
=17
3 =28
1 =23
≤ 72
3.5 ≤ 72
ct
0
19
folga
Figura 5.1: Restrições no PMR associado à solução óptima
A linha relativa à restrição de satisfação da procura do item 1 no período 2, mostra
como vão ser obtidas as 30 unidades pedidas ao longo do horizonte. No período 1, o
item 1 ocorre 4 vezes num padrão a cortar 2 carretéis, e 4 vezes num outro que
corta 1 carretel. Como a procura nesse período é de 10 unidades, 2 unidades vão
ser usadas para satisfazer a procura no período 2. Neste período, as restantes 18
unidades são obtidas cortando 2 carretéis, usando um padrão onde ocorrem 4
unidades do item 1, 1 carretel onde esse item é cortado 1 vez, e 3 carretéis onde se
cortam 3 unidades.
174
Capítulo 5
É interessante explorar este exemplo e observar que, mantendo os restantes
dados, 58 horas é o valor mínimo da capacidade no primeiro período, para o qual é
possível obter uma solução onde as variáveis de stock inicial sejam nulas. As
colunas associadas a esta solução são expostas na figura 5.2, onde a tabela foi
construída da mesma forma que a da figura 5.1.
(i,t)
x111
2
(1,1) 4
(2,1)
(3,1) 2
(4,1)
(5,1)
(6,1)
(7,1)
(8,1)
(9,1)
(10,1)
(1,2) 4
(2,2)
(3,2) 2
(4,2)
(5,2)
(6,2)
(7,2)
(8,2)
(9,2)
(10,2)
1
2
3
x211
1
4
x121
4
x221
5
x321
3
x421
2
1
2
1
2
x112
2
x212
1
x312
3
4
1
1
2
3
2
x122
2
x222
1
2
1
2
x322
3
x 422
6
x522
1
1
2
2
1
1
2
2
4
1
2
1
2
2
1
1
2
1
1
2
3
3.5
3.5
2
3.5
1
4
4
3
1
2
3.5
3
3
3
3.5
t
3.5
3.5
3.5
3.5
x 622 d
excesso
it
1
≥ 10
2
≥0
0
≥5
0
≥2
0
≥5
0
≥ 17
1
≥0
4
≥0
0
≥0
9
≥ 10
0
=30
=10
=5
=2
=5
=25
1 =7
1 =17
1 =28
1 =23
≤ 58
3.5 ≤ 72
ct
0
5
folga
Figura 5.2: Restrições no PMR associado à solução óptima – segundo caso
Mesmo neste caso, na solução óptima cortam-se no primeiro período itens que vão
ser utilizados para satisfazer a procura no segundo período, tirando partido do
corte antecipado. O valor do óptimo nessa situação é z * = 37 , e tem-se uma
utilização da capacidade de 58 horas no primeiro período e 67 no segundo.
É de referir que, caso os problemas fossem resolvidos independentemente, o
valor do óptimo seria z * = 39 , seriam necessárias 58 horas de capacidade de
produção no primeiro período e 74 no segundo.
Este exemplo ajuda também à compreensão da forma de construir as colunas
do PM, que se passa a explicar.
Integração do problema de corte com o problema de planeamento da capacidade 175
iii. Composição das colunas do PM
Cada coluna tem dimensão mT + T . A coluna correspondente à variável de stock
inicial I i é composta por zeros, excepto nas componentes com índices i , m + i ,
2m + i , …, m(T −1)+ i , que se referem às restrições de satisfação da procura do item
i em cada um dos períodos, onde tem o valor 1.
Para as colunas associadas ao corte, as primeiras mT componentes referem-se
ao número de vezes que cada item é cortado no padrão associado, “acumulado” ao
longo dos períodos. A t -ésima das restantes T componentes indica o consumo
unitário da capacidade de produção no período associado ao padrão.
Assim, um padrão ( a1 ,..., amf )T admissível para cortar itens da família f , no
período t , é representado por uma coluna q onde
— q1 = 0,
, q m (t −1) = 0 (são as componentes que se referem ao corte em
períodos anteriores a t );
— q m (t −1)+1 = 0,
= 0 (são as componentes que se referem ao
f −1
∑ k =1 mk
corte de itens das famílias com índice inferior a f no período t );
, q m (t −1)+
— q m (t −1)+ f −1 m +1 = a1,
∑ k =1 k
= amf (são as componentes que se
f
∑ k =1 mk
referem ao corte de itens da família f no período t );
— q m (t −1)+ f m +1 = 0,
∑ k =1 k
, q m (t −1)+
, q mt = 0 (são as componentes que se referem ao
corte de itens das famílias com índice superior a f no período t );
— ( q m (t −1)+1,
( q m (T −1)+1,
,q mt )
T
, q mT )
repete-se
T
em
( q mt +1,
T
, q m(t +1) ) ,
…,
(são as componentes que se referem ao corte
“acumulado” nos períodos com índice superior a t ) e
— q mT +1 =
= q mT +t −1 = 0,
q mT +t = bf ,
q mT +t +1 =
= q mT +T = 0
(são
as componentes nas restrições de capacidade).
iv. Formulação final do PM
A reformulação do problema, que resulta de indexar as variáveis às colunas (como
é usual considerar-se na literatura), dá origem ao Problema Mestre (PM) que se
passa a apresentar e em relação ao qual se refere a descrição do algoritmo.
176
Capítulo 5
Entende-se por
— x q , o número de vezes que a coluna q , q ∈ Q , é utilizada, onde Q é o
conjunto de colunas admissíveis para representar padrões de corte;
— q k , a k -ésima componente da coluna q .
[PM]
min z = ∑ (hi I i ) +
i
∑ xq
(5.14)
q ∈Q
s. a:
∑ qm(t −1)+ i x q + I i ≥ dit
∀ i, t ≠ T
(5.15)
∀i
(5.16)
∀t
(5.17)
x q ≥ 0 e inteiro
∀ q ∈Q
(5.18)
I i ≥ 0 e inteiro
∀i
(5.19).
q ∈Q
∑ qm(T −1)+ i
q ∈Q
∑ qmT +t
q ∈Q
x q + I i = d iT
x q ≤ ct
5.3.3 Algoritmo de partição e geração de colunas
O sucesso de algoritmos de partição e geração de colunas na resolução do PC devese, essencialmente, aos seguintes factos:
— existem bons limites inferiores para a solução do PM: limite de Farley para
o PC e o limite de Martello e Toth para o bin-packing,
— as soluções heurísticas permitem estabelecer limites superiores de
qualidade e
— a solução da relaxação linear do PM na raiz fornece um limite inferior que
é, regra geral, o valor óptimo da solução.
Como as instâncias do PC têm, na sua generalidade, IRUP, a pesquisa na árvore
relaciona-se mais com a eliminação de soluções fraccionárias do que com a redução
do gap de linearidade. Sendo o PCPC uma composição de problemas de corte,
perdem-se as características simpáticas das propriedades IRUP e MIRUP, e tornase difícil a obtenção de bons limites superiores.
Integração do problema de corte com o problema de planeamento da capacidade 177
Considerem-se as instâncias do PCPC onde a capacidade no período inicial é
suficiente para proceder a toda a produção. A sua resolução resume-se a resolver F
problemas de corte independentes. Como o gap de linearidade de cada um deles é
menor do que dois [Scheithauer e Terno, 1995b], o gap de lineariedade do PCPC
está compreendido entre 0 e 2F. Este cenário corresponde à situação mais
promissora, onde, para uma classe de instâncias, o gap é de mais fácil estimativa,
e varia no intervalo de menor amplitude. Para uma instância geral, gap de
linearidade pode ser bastante alargado. Apesar destes factos, optou-se por
conceber e estudar o comportamento dum algoritmo de partição e geração de
colunas na resolução do problema.
A redução do esforço computacional depende da qualidade das soluções
admissíveis encontradas e do cálculo de limites inferiores. Nesta perspectiva, na
raiz, após a optimização da RLPM na raiz, reprocessa-se o nó para estabelecer um
limite inferior de qualidade.
Em todos os procedimentos que se descrevem assume-se que na solução actual
o valor das variáveis de stock inicial é zero, pois, caso contrário, a solução revela
que a capacidade é insuficiente para satisfazer a procura. No entanto, mesmo
nessas condições, poder-se-ia resolver o PM até à optimalidade.
i. O subproblema de geração de colunas
O subproblema de geração de colunas consiste em encontrar o padrão com lucro
máximo sobre um conjunto de problemas saco-mochila com restrições adicionais. A
determinação
do
padrão
de
corte
mais
atractivo
é
feita
determinando
simultaneamente a composição do padrão, a família e o período aos quais está
associado.
Sejam
π it o valor óptimo da variável dual associada à restrição de satisfação da
procura (5.15)-(5.16) para o i-ésimo item no período t, na solução da RL do
PMR actual, i = 1,
,m e t =1,
,T ;
178
Capítulo 5
σt o valor óptimo da variável dual associada à restrição de capacidade para o
t-ésimo período em (5.17), na mesma solução, t =1,
wi a largura do i-ésimo item, i = 1,
,T ;
,m ;
Wf a largura útil do carretel para a f-ésima família, f = 1,
,F ;
W b a largura mínima utilizável do carretel;
wst a largura mínima de um item para stock;
ws a largura máxima de um item “pequeno”;
n s o número máximo de itens “pequenos” a cortar num padrão;
n
o número máximo de itens a cortar num padrão.
As variáveis de decisão são:
ai
o número de vezes que o item i deve ser cortado no padrão;
f
a família para a qual o padrão deve ser utilizado;
t
o período em que o padrão deve ser cortado.
Este problema é um problema saco-mochila multifamília multiperíodo, que se
formula como
 T

∑  ∑ π ik  ai + σt bf : a ∈ Af
i ∈,(f )  k =t

max { max { max{
f
t
}}}
onde Af , o conjunto dos padrões admissíveis para a f-ésima família, é dado por
{
Af = a ∈ N 0mf : a verifica (5.21)
W b ≤
∑i aiwi ≤ Wf

ou
∑i ai ≤ n
s

a ≤ n
∑i :wi ≤w s i
}
Wf − ∑ aiwi ≥ wst
i

≤
a
n −1
∑
 i i

s
se Wf − ∑i aiwi > ws
∑i :wi ≤w s ai ≤ n ,
s

se Wf − ∑i aiwi ≤ ws
s a ≤ n −1 ,
∑i :wi ≤w i
(5.20)
(5.21).
A condição (5.21) explicita duas situações que podem ocorrer alternativamente:
— Ou a largura total cortada no padrão está compreendida entre a largura
mínima utilizável do carretel e a largura útil para a respectiva família, e,
Integração do problema de corte com o problema de planeamento da capacidade 179
então o número total de itens e o número total de itens “pequenos” cortados
não excedem os respectivos limites máximos; ou
— A largura não aproveitada tem de ser utilizada para cortar um item
adicional, cuja largura é não inferior à largura mínima comercializável, e
para tal o número de itens cortados tem de ser inferior ao respectivo limite,
e, se a largura não aproveitada só é suficiente para cortar um item
“pequeno”, então o número de itens “pequenos” é inferior ao respectivo
limite, se não o número de itens “pequenos” não excede esse limite.
A solução expressa qual o padrão de corte mais atractivo, de entre todos os padrões
de corte admissíveis para todas as famílias, e para todos os períodos do horizonte
temporal, assim como a família ( f * ) e o período ( t * ), para os quais esse padrão
deve ser utilizado.
Este problema envolve F ×T problemas saco-mochila com restrições adicionais,
cada um deles associado a uma família e um período. Para a família f e o período
t tem-se o seguinte problema
[PSM ( f , t ) ]
max
∑ ∑k =t
T
i ∈,(f )
π ik  ai + σt bf , a ∈ Af ,

onde Af é como definido em (5.20).
A cada solução (f *,t *, [a]*) do problema de geração de colunas, com 1 ≤ f * ≤ F e
1 ≤ t * ≤ T , onde ai* é o número de vezes que o i-ésimo item é cortado no padrão,
corresponde uma coluna q ∈ Q do PM. A componente k desta coluna é dada por
qk
a*
se k div m + 1 ≥ t * ∧ (k − 1) mod m + 1 = i , i ∈ ,(f *)
i

= bf * , se k = m(T − 1) + t *
,

caso contrário
0,
onde por div e mod se entende, respectivamente, o resultado da divisão inteira e o
resto da divisão inteira.
180
Capítulo 5
A expressão k div m + 1 indica o período a que corresponde a componente k e
(k − 1) mod m
+ 1 é o índice do respectivo item. Assim, relativamente ao bloco de
restrições (5.15) e (5.16) do PM, a componente k está associada à restrição de
satisfação da procura do item (k − 1) mod m + 1 no período k div m + 1 .
Uma coluna q associada a um período t * e uma família f * , é candidata a entrar
na base se
 T

∑ * ( ∑ * π ik ) q i + (t * −1)m  + σt * bf * > 1
i ∈,(f )  k =t

ou seja, se o seu custo reduzido for negativo. Como tal, não é necessário resolver o
problema até à optimalidade, basta encontrar uma solução para a qual a coluna
correspondente do PM verifique a desigualdade acima.
O conjunto de soluções admissíveis para o PSM ( f , t ) pode ser redefinido, de
forma a evitar a expressão de condições alternativas. Introduzem-se duas variáveis
auxiliares binárias y e y ′ , com o seguinte significado:
y =1 , se e apenas quando
y ′ =1 , se e só se
∑i aiwi
∑i aiwi
< Wb ∧
< Wb ,
∑i aiwi
< Wf −ws .
O conjunto dos padrões admissíveis para a família f é dado pelos vectores [ai ] que
verificam
∑i aiwi < yW b + (1 − y) (Wf +1)
∑i aiwi ≥ (1 − y)W b
∑i aiwi ≤Wf − ywst
∑i ai ≤ n − y
∑i:w ≤w ai ≤ ns − (1 − y′)
∑i aiwi < y′ (Wf −ws )+ (1− y′)(Wf +1)
∑i aiwi ≥ (1− y′)(Wf −ws )
s
(5.22)
(5.23)
(5.24)
(5.25)
(5.26)
i
y′ ≤ y
y, y′∈{0,1} , ai ∈ N 0 , ∀i .
(5.27)
(5.28)
(5.29)
Integração do problema de corte com o problema de planeamento da capacidade 181
Assim, quando
—
∑i aiwi ≥ W b , obtém-se y = 0 , caso contrário, em virtude de (5.22) ter-se-ia
∑i aiwi < W b ; (5.22) e (5.24) explicitam a mesma condição: ∑i aiwi ≤Wf ;
por (5.29) y′ = 0 e (5.27) é redundante;
as soluções são as correspondentes à primeira condição de (5.22).
—
∑i aiwi < W b , obtém-se
y =1 , caso contrário, por (5.23), ter-se-ia
∑i aiwi ≥ W b ;
(5.23) é redundante;
as soluções são as definidas pela segunda alternativa em (5.22);
— se
∑i aiwi < Wf −ws
então y′ = 1 , se não ter-se-ia
∑i aiwi ≥ Wf −ws ,
por
(5.28);
∑i:w ≤w ai ≤
s
ns por (5.26); e
i
(5.28) é redundante;
— caso contrário, tem-se y′ = 0 , se não viria
∑i:w ≤w ai ≤
s
i
∑i aiwi < Wf −ws , por (5.27);
ns −1 por (5.26), e
(5.27) é redundante.
Optou-se por não utilizar esta transformação e concebeu-se um algoritmo
específico para resolver os PSM ( f , t ) . Assim, para cada família, e cada período,
resolvemos o PSM associado gerando, caso exista, a coluna mais atraente (ou a
primeira coluna atraente que for encontrada). Na prática revelou-se vantajoso,
quando se procede à geração de colunas, gerar colunas para os diferentes pares
( f , t ) e introduzir no PM as apropriadas, em alternativa a introduzir uma única
coluna em cada iteração. Muitas vezes, para uma mesma família, o mesmo padrão
de corte é atractivo para diferentes períodos, e consequentemente introduzem-se
no PM as colunas correspondentes que representam o corte desse padrão em
períodos diferentes. Assim, nem todas as colunas geradas entram na base quando
se procede à reoptimização do PMR resultante.
De acordo com Martello e Toth, o modo mais efectivo de resolver um problema
saco-mochila limitado é transformá-lo no caso 0-1 e utilizar um dos algoritmos
apropriados [Martello e Toth, 1990]. Esta é também a proposta de Vanderbeck e
182
Capítulo 5
Wolsey. Os PSM ( f , t ) inteiros envolvidos não se formulam como limitados, mas
acabam por sê-lo, pois as componentes são limitadas e a procura também é
limitada. Dado que os respectivos limites são razoavelmente pequenos, o número
de variáveis 0-1 mantém-se tratável. Estes problemas transformam-se nos
problemas binários correspondentes, de acordo com o proposto por Vanderbeck.
Para transformar o PSM ( f , t ) inteiro na forma 0-1, consideram-se apenas os
itens i ∈ ,(f ) para os quais o lucro associado ρi = ∑k =t π ik > 0 . Os itens são
T
reindexados nos índices
~
i = 1,... , m
f
(5.30).
Calcula-se o valor máximo que se pode considerar em cada componente
{
{
}
min d it , W f / w i , n ,
se w i > w s
~ ,
aimax = 
, i = 1,..., m
f
min d it , W f / w i , n s , caso contrário
}
~
m
o número de componentes no problema transformado mf′ = ∑i =f1 e i , onde
e i =  log2(aimax + 1)  é o número de componentes binárias associadas ao i-ésimo
~ .
item do problema original, i = 1,..., m
f
~ para referir os itens originais, e o
Por convenção utiliza-se o índice i = 1,..., m
f
índice l = 1,..., mf′
para referir as componentes 0-1 do problema modificado.
Por cada item i do problema inteiro consideram-se ei itens binários com
multiplicidades1
w i , 2w i ,
20, 21,
, 2e i −1 ,
lucros
ρi , 2ρi ,
, 2e i −1 ρi ,
e
larguras
, 2e i −1 w i . Assim no problema binário, ao item l está associada a
multiplicidade v l = 2k , o lucro ρl′ = 2k ρi , e a largura w l′ = 2kw i para l = k + ri ,
i −1
onde k = 0,..., e i − 1 e ri = 1 + ∑k =1 e k . O procedimento de transformação tem
complexidade
2(m′f ) ,
tal
como
o
procedimento
associado
à
subsequente
transformação da solução binária em inteira.
O vector binário a′ ∈ {0,1}mf′ associado à coluna admissível a é definido pela
e −1
~ , onde r = 1 + i −1 e . É de notar que este
relação ai = ∑ki =0 2k ak′ + ri , i = 1,..., m
∑k =1 k
i
f
1
Por multiplicidade dum objecto binário entende-se o número de réplicas do objecto que no problema
inteiro lhe corresponde.
Integração do problema de corte com o problema de planeamento da capacidade 183
processo de transformação não introduz redundâncias, pois cada variável original
ai é representada univocamente.
De modo a garantir que o valor máximo de cada componente inteira não é
excedido, é necessário introduzir no PSM 0-1 as restrições
∑l =r
ri + ei −1
i
~ .
vlal′ ≤ aimax , i = 1,... , m
f
Na raiz, a solução do PSM(f, t) equivale à solução do problema binário equivalente:
mf′
max{ ∑ ρ ′j a′j : a′ ∈ Af′
[PSMB(f, t)]
j =1
}
onde A′f , o conjunto dos padrões binários admissíveis para a f-ésima família, é
dado por
{
Af′ = a′ ∈ {0,1}mf′ : a′ verifica (5.31) e (5.32)
ri + ei −1
~
v a′ ≤ a max , i = 1,... , m
∑l =r
i
l l
(5.31)
f
i
W b ≤
∑ j a′jw′j ≤ Wf

∑ j a′jvj ≤ n
s

∑ j:w′j /v j ≤ws a′jvj ≤ n
}
ou
Wf − ∑ a′jw′j ≥ wst
j

′
a
v
∑ j j j ≤ n −1

s
se Wf − ∑ j a′jw′j > ws
∑ j:w′j /v j ≤ws a′jv j ≤ n ,

s
s
′
′ ′
∑ j:w′j /v j ≤ws a jv j ≤ n −1 , se Wf − ∑ j a jw j ≤ w
(5.32).
Sem perda de generalidade, consideremos que m′f é o número de componentes
binárias necessárias para representar os objectos do PSM(f, t), isto é, sem proceder
à indexação prévia em (5.30). Consideremos ainda que m′ é o número de itens
binários na transformação de m .
Cada coluna binária, com dimensão T ×m′ , é composta por T subvectores de
dimensão m′ , cada um deles associado a um período. Estes subvectores, por sua
vez, podem ser decompostos em F subvectores cada um associado a uma família.
O subvector associado à família f tem dimensão m′f .
A componente k da coluna binária q′ , correspondente ao padrão a′* , solução do
PSMB(f, t), pode ser obtida de acordo com a seguinte fórmula
a *, k div m′ + 1 ≥ t
q k′ =  l′
0,
caso contrário
∧
(k − 1) mod m′
f −1
+ 1 = l + ∑ j =1 m′j
,
184
Capítulo 5
onde div e mod são, respectivamente, o resultado da divisão inteira e o resto da
divisão inteira.
A expressão k div m′ + 1 indica o período a que corresponde a k -ésima
componente binária e (k − 1) mod m′ + 1 é o índice do objecto binário no conjunto
global dos objectos binários.
Redefinindo o conjunto de soluções admissíveis, o problema pode-se reformular
como
mf′
max{ ∑ ρ ′j a′j : a′ ∈ Af′
[PSMB(f, t)]
j =1
{
onde Af′ = a′ ∈ {0,1}mf′ : a′ verifica (5.34) - (5.38)
∑ j a′jw′j ≤ Wf
}
}
∑ j a ′j v j ≤ n
∑ j:w′ /v ≤w a′jvj ≤ ns
s
j
∑l =r
(5.34)
(5.35)
(5.36)
j
ri + ei −1
i
(5.33)
~
vlal′ ≤ aimax , i = 1,... , m
f
∑ j a ′j w ′j
≥ W
b
Wf − ∑ a′jw′j ≥ wst
j

′
a
v
∑
 j j j ≤ n −1

ou 
se Wf − ∑ j a′jw′j > ws
∑ j :w′ /v ≤w s a′jv j ≤ ns ,
j
j

s
s
∑ j :w′j /v j ≤w s a′jv j ≤ n −1 , se Wf − ∑ j a′jw′j ≤ w

(5.37)
(5.38).
Apesar de este se poder caracterizar como um problema saco mochila 0-1
multidimensional com as restrições adicionais (5.38), vamos tratá-lo como um
problema saco mochila 0-1 unidimensional com restrições adicionais (5.35) a (5.38).
Para o resolver utiliza-se um algoritmo de pesquisa em árvore com ramificação e
limitação baseado no algoritmo de Horowitz e Sahni, [Horowitz e Sahni, 1974],
com alterações, de modo a garantir a admissibilidade das soluções e a acelerar a
pesquisa.
O algoritmo de Horowitz e Sahni pressupõe que os objectos estão pré-ordenados
por ordem não decrescente de lucro por unidade de largura (ordenação “gulosa”). A
pesquisa na árvore é feita em profundidade: a ordem de ramificação sobre as
variáveis é predeterminada e faz-se por ordem lexicográfica, cada variável é fixa a
Integração do problema de corte com o problema de planeamento da capacidade 185
1, se possível, e só depois a 0. Um determinado nó de profundidade t da árvore de
pesquisa corresponde a uma solução parcial em que foram considerados os t
objectos iniciais.
Um movimento de avanço consiste em introduzir sequencialmente o maior
número possível de objectos na solução actual. Um movimento de retrocesso
consiste em remover da solução o último objecto introduzido, ou seja, retrocede-se
na árvore até ao maior nível k , em que o objecto k esteja na solução, e fixa-se a 0
a variável correspondente. Quando um movimento de avanço é interrompido
calcula-se o limite superior associado à melhor expansão da solução parcial actual.
Para uma solução no nível t , seja
∑ j=t +1w′j > Wf −Ŵ
k
k
o menor índice que verifica
∧ t +1 ≤ k ≤ m′f , onde Ŵ é a largura já utilizada. Um limite
superior para o lucro da melhor expansão da solução actual é dado por
(
ub1 = ẑ + ∑ j =t +1 ρ ′j + Wf −Ŵ − ∑ j =t +1w′j
k −1
k −1
)wρ′′ ,
k
k
onde ẑ é o lucro da solução actual.
Testa-se se a continuação de movimento de avanço pode levar a uma solução
melhor, ou seja, avalia-se se ub1 > z * e, nesse caso, retoma-se o movimento de
avanço. Caso contrário, procede-se a um movimento de retrocesso. Se após um
movimento de avanço, se atingiu a profundidade máxima da árvore (consideraramse todos os objectos), deixa de ser possível estender a solução parcial actual. Caso o
seu lucro seja superior ao melhor já encontrado, esta solução é candidata a óptima
e utiliza-se para actualizar a melhor solução já encontrada. Em seguida procede-se
a um movimento de retrocesso. A solução parcial é actualizada e volta-se a calcular
o limite superior ub1 . Se esse valor não é superior ao lucro da melhor solução já
encontrada, não compensa pesquisar a extensão da solução actual, e retorna-se ao
movimento de retrocesso. Caso contrário, progride-se para um movimento de
avanço. O algoritmo termina quando não é possível efectuar mais nenhum
movimento de retrocesso, ou seja, a pesquisa retrocede até à raiz e o objecto de
índice 1 já está excluído da solução actual.
186
Capítulo 5
Este algoritmo pode ser facilmente adaptado para resolver um PSM com
restrições adicionais introduzindo a verificação das restrições adicionais na
actualização da melhor solução encontrada. Para reduzir o número de soluções não
admissíveis que são geradas nesse processo, utiliza-se apenas a restrição de
largura mínima (5.38), como pré-condição para a actualização da solução óptima
actual, pois esta restrição só pode ser avaliada para soluções completas.
Na geração das soluções inclui-se a verificação das outras restrições adicionais:
apenas se fixa uma variável a 1, quando tal não viole as condições relativas aos
limites sobre o número de objectos de um determinado tipo, especificados em (5.35)
a (5.37).
O valor ub1 é um majorante do limite superior associado a estender uma
solução no nível t , porque apenas considera uma dimensão. O seu cálculo é
efectuado antes dum movimento de avanço para prevenir movimentos de avanço
desnecessários. Adicionalmente, após um movimento de avanço, é recalculado um
limite superior ub sobre o lucro de qualquer extensão da solução actual, que se
descreve adiante.
Os itens são reindexados de acordo com as seguintes relações:
ρ ′j
ρ ′j +1
ρ′
ρ′
≥
, e ν j ≥ ν j +1, se j = j +1 ,
w ′j w ′j +1
w ′j w ′j +1
j = 1,..., mf′ − 1 ,
ou seja, por ordem não crescente dos valores de lucro por unidade de largura e não
crescente dos valores de multiplicidade para objectos com iguais valores de lucro
por unidade de largura.
A transformação do problema inteiro em binário gera vários itens com igual
valor de lucro por unidade de largura. A adição da segunda relação na ordenação
“gulosa”, não aumenta a complexidade da ordenação, e dá precedência aos itens
com maior valor de lucro, para introdução na solução.
Numa solução parcial no nível t estão fixas as variáveis a1′ ,..., ât′ , o lucro é
ẑ = ∑ j =1 ρ ′jâ′j , a largura utilizada tem o valor Ŵ = ∑ j =1w′jâ′j , o número total de
t
t
objectos já introduzidos na solução é n̂ = ∑ j =1v jâ′j dos quais n̂s = ∑ j =1,...,t :w′ /v ≤w s v jâ′j
t
j
j
Integração do problema de corte com o problema de planeamento da capacidade 187
são objectos “pequenos” e âi ≤ aimax , onde âi é o número de objectos do tipo i no
~ .
problema inteiro correspondente, i = 1,... , m
f
Esta solução verifica as restrições (5.33) a (5.37) e tem associado o seguinte
problema residual
max{
mf′
∑ ρ ′j a′j : a′ ∈ Aˆf′ }
j =t +1
ˆ , o conjunto dos vectores admissíveis para o problema residual, é dado por
onde A′
f
{
Aˆf′ = a′ ∈ {0,1}mf′
−t
: a′ verifica (5.39) a (5.43)
}
∑ j a′jw ′j ≤ W f −Ŵ
∑ j a′jv j ≤ n − n̂
∑ j :w ′ /v ≤w a′jv j ≤ ns − n̂s
(5.39)
(5.40)
(5.41)
s
j
j
~
∑ j:i =i v ja′j ≤ aimax − âi , i =1,...,m
f
(5.42)
j
Wf −Ŵ − ∑ a′jw′j ≥ wst
j

∑ j a′jv j ≤ n − n̂ −1

(5.43)
∑ j a′jw ′j ≥ W b −Wˆ ou 
∑ j :w′ /v ≤ws a′jv j ≤ ns − n̂s ,
se Wf −Ŵ − ∑ j a′jw′j > ws
j
j

s
s
s
∑ j :w′j /v j ≤ws a′jv j ≤ n − n̂ −1 , se Wf −Ŵ − ∑ j a′jw′j ≤ w

sendo il o índice do objecto no problema inteiro a que está associado o objecto
binário de índice l .
O pseudo-código (algoritmo 5.2) apresenta o algoritmo modificado. A função que
concretiza o movimento de retrocesso descreve-se em Retrocesso.
′ ′f = 0 , a1′* = 0,...,am
′*′f = 0 , ẑ = 0 , z * = 0 , Ŵ = 0 ,
O algoritmo inicia com a1′ = 0,..., âm
*
n̂ = 0 , n̂s = 0 , a1 = 0, ,âm~f = 0 , a1* = 0, ,am
~ = 0 . Considere-se uma solução parcial no
f
nível t , e seja j ≥ t o índice dum objecto. Se v j > n − n̂ , então em qualquer extensão
desta solução a′j = 0 , pois a introdução do objecto j viola a restrição relativa ao
número máximo de objectos. Da mesma forma,
a′j = 0 , se v j > ns − n̂s e o item j
corresponde a um item “pequeno”, ou se v j > aimax − âi e o item j representa parte
do objecto inteiro i .
188
Capítulo 5
Assim, num movimento de avanço, um objecto só é inserido se a sua introdução
verifica o limite do número de objectos (5.40),e o limite do número de réplicas
associado no problema inteiro (5.42). No caso de se tratar dum objecto “pequeno”,
avalia-se ainda se a sua introdução respeita o limite do número de objectos
“pequenos” na solução (5.41). Caso contrário, a respectiva variável é fixa a 0, e
passa-se ao objecto seguinte sem se interromper o movimento de avanço.
Se o número máximo de objectos é atingido, n̂ = n , deixa de ser possível
estender a solução actual, e esta condição reforça a exaustão do movimento. Nesse
caso, testa-se então se a solução actual é candidata a óptima.
No final de um movimento de avanço, dado k o índice do objecto que provocou a
exaustão do movimento, calcula-se o limite superior associado a expandir a solução
actual dado por ub (5.44).
Quando uma solução completa não é admissível, por não verificar a restrição de
largura mínima, procede-se a um movimento de retrocesso.
Resultado:
Considere-se uma solução de nível k −1 , com lucro ẑ , com n̂ objectos e onde o
objecto k não pode ser introduzido porque wk′ > Wf −Ŵ ou n̂ = n . Então, um limite
superior sobre o lucro de qualquer extensão da solução é
(
)
ẑ + Wf −Ŵ ρk′ /wk′ , se k ≤ m′f ∧ n̂ < n
ub = 
ẑ , caso contrário
(5.44).
Prova:
Se n̂ = n , a solução está completa e ẑ é o seu custo.
Se n̂ < n , na expansão ideal, a largura remanescente, Wf −Ŵ , seria totalmente
ocupada com objectos verificando as restrições adicionais. Dada a ordenação dos
(
)
objectos, Wf −Ŵ ρk′ /wk′ majora o maior acréscimo ao lucro actual que pode ser
obtido por expansão.
❏
Integração do problema de corte com o problema de planeamento da capacidade 189
Algoritmo HS_modificado
Retrocesso(k, a′ , â , ẑ , Ŵ , n̂ , ρ ′ , w′ , v )
Encontrar o maior valor de j tal que a′j = 1 e j ≤ k ; k=j;
Se (k>0) então {* remoção do objecto k *}
ẑ = ẑ − ρk′ ; Ŵ = Ŵ −w′k ; n̂ = n̂ −vk ; Se wk′ /vk ≤ ws então n̂s = n̂s −vk ;
âik = âik − vk ; a′k = 0 ;
Fim de Retrocesso
Início de HS_modificado
k=0; z * = 0 ; ẑ = 0 ; Ŵ = 0 ; n̂ = 0 ; n̂ s = 0 ;
Para ( i =1 até i = m′f ) ai′* = 0 ; ai′ = 0 ;
~ ) a* = 0 ; â = 0 ;
Para ( i =1 até i = m
i
f
i
Fazer
Fazer
l = k +1 ; B = true;
Calcular o valor ub1 ;
Se ( ub1 > z * ou z * = 0 ) então { * movimento de avanço *}
Enquanto ( l ≤ m′f e n̂ < n e B) fazer
B = wl′ +Ŵ ≤ Wf ;
Se B então
Se ( n̂ + vl ≤ n e (( wl′/vl ≤ ws e n̂s + vl ≤ ns ) ou wl′/vl > ws ) e âil + vl ≤ aimax )
{* a inclusão não viola as restrições do número máximo de objectos *}
então {* introduz o objecto l na solução actual actualizando os indicadores *}
ẑ = ẑ + ρl′ ;
Ŵ = Ŵ + wl′ ; n̂ = n̂ + vl ; Se wl′ / vl ≤ w s então n̂s = n̂s + vl ; âil = âil + vl ;
al′ = 1 ;k=l;
senão al′ = 0 ;
l =l +1 ;
Se (B=false e n̂ < n ) então ub = ẑ + ( Wf −Ŵ ) ρl′ / wl′ senão ub= ẑ ;
senão ub= ub1 ;
B=( ub≤ z * );
Se B então {* faz movimento de retrocesso *}
Retrocesso(k, a′ , â , ẑ , Ŵ , n̂ , ρ ′ , w′ , v )
enquanto (B e k>0);
Se ( k > 0 ou z * = 0 ) então {* continuação do movimento de avanço *}
k = l;
Se ( k > m′f ou n̂ = n ) então {* não pode expandir *}
Se ( Ŵ ≥W b ou
( Ŵ <W b e Wf −Ŵ ≥ w st e n̂ < n e (( n̂ s ≤ n s e Wf −Ŵ > ws ) ou ( n̂s < ns e Wf −Ŵ ≤ ws ))))
então {* a solução verifica a restrição de largura mínima - actualizar a melhor solução*}
z* = ẑ ;
Para ( i =1 até i = m′f ) ai′* = ai′ ;
~ ) a* = â ;
Para ( i =1 até i = m
f
i
i
k= m′f ;
senão
k= m′f ;
Retrocesso(k, a′ , â , ẑ , Ŵ , n̂ , ρ ′ , w′ , v );
senão
a′k = 0 ;
enquanto (k>0);
fim de HS_modificado
Algoritmo 5.2: Algorimo de Horowitz-Sahni modificado
190
Capítulo 5
ii. Processamento do nó raiz
Para construir o conjunto de colunas relativas ao corte no PMR inicial, na raiz,
considera-se que a procura em cada período é satisfeita a partir exclusivamente da
produção no próprio período ou do stock inicial. Assim, os problemas de corte para
cada família e cada período assumem-se como independentes, e considera-se
apenas a procura em cada período. Experimentou-se aproveitar o processo de
inicialização das colunas para construir uma solução admissível inicial, e
consequentemente inicializar o valor do limite superior z , com um reduzido
acréscimo do esforço computacional. No entanto, a solução obtida nesta fase é de
fraca qualidade. Isto acontece porque a geração de colunas permite tirar partido da
estrutura do problema, antecipando o corte de alguns itens. Abandonou-se o
cálculo da primeira solução admissível, na inicialização.
Inicialização
Para cada período t , cada família f , e por cada item i introduz-se no PMR:
1. uma coluna associada à variável de stock inicial I i ;
2. uma coluna que representa o padrão onde o item i é cortado uma única
vez; e
3. uma coluna que representa o padrão admissível e maximal, onde o item i é
cortado o número máximo de vezes.
As colunas do tipo 1 têm o valor zero em todas as componentes, excepto nas
componentes de índices m(k − 1) + i , k = 1,
,T , onde têm o valor 1.
As únicas componentes não nulas das colunas do tipo 2 são q m(k −1) + i = 1 ,
k = t,
,T , e q mT +t = bf .
Para construir as colunas do tipo 3, começa-se por calcular aimax , o número
máximo de vezes que o item i pode ocorrer num padrão
{
}
min d it , W f / w i , n , se w i > w s
aimax = 
, para i =1,...,mf .
min d it , W f / w i , n s , caso contrário
{
}
Integração do problema de corte com o problema de planeamento da capacidade 191
Avalia-se se o padrão que corta aimax vezes o item i verifica a condição de
admissibilidade (5.21). Caso tal não aconteça, ajusta-se aimax de acordo com as
seguintes condições:
Se aimaxwi < W b e Wf − aimaxwi ≥ wst ,
então
se wi > ws e aimax = n faz-se aimax = n −1
se não
se wi ≤ ws e aimax = ns e Wf − aimaxwi ≤ ws faz-se aimax = ns −1 .
Faz-se ai = aimax . Em seguida completa-se o padrão de forma a torná-lo maximal.
Pesquisam-se os itens j da mesma família, por ordem decrescente de largura, e
insere-se uma cópia de cada item, fazendo a j = 1 , enquanto se verificarem as
condições de admissibilidade. No final, avalia-se a condição de largura mínima e,
em caso de não se verificar, remove-se a cópia do último item introduzido.
As colunas do tipo 3 são da forma q m(k −1) + j = a j , k = t ,
,T , j = 1,
,m ,
q mT +t = bf e q k = 0 , nos restantes casos.
Experimentou-se outra versão em que se considera a procura total acumulada.
Assume-se que toda a procura pode ser satisfeita a partir da produção no período
inicial, ou seja, apenas se introduzem colunas de corte referentes ao período inicial.
Para esta versão os resultados foram piores, sendo a convergência mais lenta. Tal
acontece, porque o conjunto de colunas inicial é mais restrito, e, portanto, é
necessário gerar mais colunas.
Para se proceder à geração de colunas é necessária a existência duma solução
para a RLPM. Após a introdução das restrições de ramificação num determinado
nó é necessário voltar a optimizar a RL do PM resultante, mas pode acontecer que
este não tenha solução, dado o conjunto actual de colunas. Para contornar este
aspecto, introduz-se na formulação uma variável artificial que garante a existência
duma solução admissível. Esta variável está associada a uma coluna, cujas
componentes tomam o valor unitário nas posições correspondentes a restrições do
tipo “maior ou igual”, valor –1 nas restrições do tipo “menor ou igual”, e valor 0 nas
192
Capítulo 5
restantes. O custo desta variável é um valor elevado. Se depois da geração de
colunas a variável permanecer na base o seu custo é multiplicado por 10 e repetese a geração de colunas. Repete-se este processo em duas iterações, e se esta
variável artificial se mantém na base com valor não nulo, então o nó é considerado
sem solução admissível e é eliminado.
iii. Limites inferiores e determinação de soluções admissíveis
Seja ( x *, I *) a solução obtida para a RLPM na raiz. Seja Q f
o conjunto das
colunas que representam padrões admissíveis para cortar carretéis da família f .
O número total de carretéis a cortar para a família f é
∑q ∈Q
f
x q* . Um limite
inferior trivial para este valor é
zf =
∑q ∈Q f
x q*  .
Introduzem-se no problema, os cortes
∑q ∈Q
f
x q ≥ z f , f = 1,
,F
(5.45).
*
Volta-se a resolver a RLPMR. Seja z LP
o valor da solução assim obtida. O limite
inferior sobre o valor da solução do PM é dado por
* .
z = z LP
Introduz-se no PM o seguinte corte, que impõe um limite inferior sobre o valor da
solução
z ≥z
(5.46).
A introdução dos cortes (5.45) no PM altera o subproblema e é necessário entrar
em conta com a informação dual associada às restrições correspondentes. Seja λf o
valor óptimo da variável dual associada à restrição de corte sobre a família f. Uma
coluna q ∈ Q ft , onde Q ft é o conjunto das colunas admissíveis para representar
padrões para a família f cortados no período t, só é atractiva se
 T

( ∑ π ik ) q i + m (t −1)  + σt bf + λf > 1 .

i ∈,(f ) k =t
∑
Integração do problema de corte com o problema de planeamento da capacidade 193
Numa fase inicial da concepção do algoritmo, experimentou-se a introdução de
cortes sobre o número de carretéis cortados para cada família, em cada período,
conforme se descreve em [Respício e Captivo, 2001]. No entanto, a introdução deste
tipo de cortes interfere com a afectação da capacidade, em cada período, à produção
das diferentes famílias. A experiência computacional revelou que, para instâncias
em que a capacidade disponível é aproximadamente igual à capacidade
efectivamente necessária, esta estratégia funciona mal. Nessas situações, a
introdução dos cortes vai alterar o comportamento das variáveis I * , e torna-se
difícil gerir a conveniência de introdução dos cortes. A experiência mostrou
também que, na generalidade dos casos, o valor da solução óptima do PM é igual a
z , o valor do limite inferior que se obtém pelo reprocessamento da raiz.
Também por este motivo, abandonou-se o cálculo de soluções admissíveis não
finais. Em versões iniciais, experimentou-se determinar uma solução admissível a
partir da solução actual da RLPMR, após a resolução da RLPM na raiz. Para tal,
aplicou-se uma heurística de arredondamento baseada naquela que se descreve em
[Scheithauer e Terno, 1995a] para a resolução exacta do problema de corte clássico.
Uma solução parcial pode ser obtida fixando todas as variáveis nos valores
correspondentes aos arredondamentos inferiores. O problema residual pode-se
resolver pesquisando colunas que correspondam à satisfação máxima da procura
residual, e fixando a sua utilização. Devido à presença das restrições de
capacidade, pode acontecer que na solução se obtenham valores não nulos para as
variáveis de stock inicial. Isto acontece, especialmente, para as instâncias em que
os valores de capacidade disponível são iguais, ou aproximadamente iguais, aos
valores mínimos de capacidade necessária. Nestes casos, o cálculo duma solução
admissível não final acaba por ser inútil, pois o limite superior para a solução é
pouco adequado.
iv.Regras de ramificação
Uma “boa” regra de ramificação deve dar origem a árvores de pesquisa
equilibradas, ou seja, particiona o espaço de soluções em conjuntos de
194
Capítulo 5
cardinalidade aproximadamente igual. Por outro lado, é necessário que a
fraccionalidade da solução seja eliminada, num número finito de passos,
garantindo a obtenção duma solução inteira, ou provando a sua inexistência. A
combinação com a geração implícita de colunas exige que o subproblema se
mantenha tratável, ou seja, que se consiga incorporar nele a informação relativa à
ramificação. Devem ser evitadas regras de ramificação que restrinjam muito um
dos ramos e pouco o outro. Algoritmos baseados em regras não equilibradas são
pouco estáveis, pois para algumas instâncias o óptimo é rapidamente atingido, mas
para outras têm execuções muito longas. Ramificar sobre as variáveis do problema
mestre, fixando ou limitando o número de vezes que uma determinada coluna pode
ser utilizada é um exemplo que pode levar a árvores de pesquisa não equilibradas.
Em [Vanderbeck, 2000b] este assunto é explorado e propõe-se um esquema de
ramificação para o PC que considera a representação binária das colunas, de
acordo com a transformação que se apresentou. Nesse esquema, encontra-se um
subconjunto de colunas que tenham o valor 1 num subconjunto de componentes, e
para o qual a soma das variáveis associadas a essas colunas seja fraccionária. A
ramificação é feita impondo um limite inferior sobre a soma das respectivas
variáveis, dado pelo arredondamento superior do valor actual dessa soma, ou
estabelecendo um limite superior para essa soma, dado pelo arredondamento
inferior do valor actual da soma. Vanderbeck afirma que para o PC, a
fraccionalidade pode ser eliminada considerando apenas subconjuntos de
componentes com cardinalidade 1. Esta é a segunda regra de ramificação que se
adoptou, com as devidas modificações, para a adequar ao PM a resolver.
A ramificação faz-se a dois níveis. Numa primeira fase, utiliza-se a Regra 1,
para tentar assegurar que o número de carretéis cortados para cada família, em
cada período, é um inteiro. Numa segunda fase, recorre-se à Regra 2, para
ramificar sobre a soma das variáveis associadas às colunas que apresentam o valor
1 numa determinada componente da sua representação binária.
Integração do problema de corte com o problema de planeamento da capacidade 195
Regra 1
Seja ( x *, I *) a solução obtida para a RLPM no nó actual. Seja Q ft o conjunto das
colunas que representam padrões admissíveis para cortar carretéis da família f
durante o período t.
Quando para algum par ( f , t ) se tem
∑ x q* = β ,
q ∈Q ft
com β fraccionário, ramifica-se adicionando explicitamente ao PM uma das
restrições
∑ x q ≥ β 
q ∈Q ft
ou
∑ x q ≤ β 
(5.47).
q ∈Q ft
No nó u da árvore de pesquisa, depois de se terem incluído restrições de
ramificação do tipo (5.47) no problema mestre, a RLPM tem a forma da RLPM na
raiz, com as restrições adicionais
∑ x q ≥ βftLu 
∀ f, t
(5.48)
∑ x q ≤ βUu
ft 
∀ f, t
(5.49)
q ∈Q ft
q ∈Q ft
são, respectivamente, o maior dos limites inferiores e o menor
onde β ftLu e βUu
ft
dos limites superiores obtidos para a soma do número de carretéis cortados da
família f no período t, por ramificação usando desigualdades do tipo (5.47) que
definem o problema no nó u.
Cada restrição de ramificação do tipo (5.47) introduz ou altera no PMR um
limite sobre o valor que pode tomar a soma das variáveis associadas a um conjunto
de colunas. Assim, é necessário avaliar no subproblema de geração de colunas o
respectivo valor da variável dual que lhe está associada.
No nó u, depois de se terem incluído restrições de ramificação do tipo (5.47) no
problema mestre, a função objectivo do subproblema de geração de colunas tem a
forma
196
Capítulo 5
max { max { max{
f
t
T
∑ ( ∑ π ik )ai + σt bf
i ∈,(f ) k =t
+ λf + υft + τ ft : a ∈ Af
}}}
onde
— υft ∈
+
e τ ft ∈
-
são os valores óptimos das variáveis duais associadas,
respectivamente às restrições (5.48) e (5.49), correspondentes à família f e
ao período t, para a RLPMR actual, e
— Af como se definiu em (5.20).
Os coeficientes binários ρ ′ a utilizar na função objectivo do PSMB(f, t) calculam-se
T
considerando os pesos
∑π ik para
k =t
i =1,...,mf . Uma coluna admissível q ∈ Q ft tem
custo reduzido negativo se
 T

( ∑ π ik ) q i + m (t −1) + σt bf + λf + υft + τ ft > 1 .

i ∈,(f )  k =t
∑
O conjunto C das colunas que têm o valor 1 num subconjunto de componentes
binárias pode ser definido como
C = { q : q l′ = 1, l ∈ P ∧ q l′ = 0, l ∈ O
}.
É de notar que apenas interessam as componentes binárias relativas às restrições
da satisfação da procura, ou seja, O , P ⊂ {1,...,Tm′} , onde m′ é o número de
componentes binárias necessárias para representar os m itens do problema.
Regra 2
Seja ( x *, I *) a solução obtida para a RLPM no nó actual. Quando para um
determinado conjunto C se tem
∑
q ∈C
x q* = α ,
com α fraccionário, ramifica-se impondo
∑
q ∈C
x q ≥  α  ou
∑
q ∈C
xq ≤ α 
(5.50).
Integração do problema de corte com o problema de planeamento da capacidade 197
Esta regra de ramificação equivale a, por cada conjunto de componentes binárias,
introduzir no problema mestre uma variável auxiliar que conta o número de vezes
que se utilizam colunas com o valor 1 nessas componentes. A regra actua sobre
estas variáveis auxiliares forçando-as a tomar um valor inteiro.
Para conjuntos de ramificação onde | P |> 2 , deixa de ser possível resolver o
subproblema como um problema saco-mochila. Para conjuntos de ramificação com
| P |= 1 , as alterações no subproblema são muito fáceis de manipular. A
modificação nos custos pode ser introduzida corrigindo o vector de pesos binários
ρ ′ no correspondente PSMB(f, t). Por outro lado, escolher uma única componente
binária para ramificar reduz o número de variáveis auxiliares que é necessário
introduzir no PM, e simplifica o controlo sobre este tipo de variáveis. Quando
apenas se considera uma das componentes binárias, restringe-se pouco as
combinações possíveis para padrões de corte admissíveis, tendo assim maior
liberdade na elaboração das colunas mais atractivas.
Como já se referiu, adaptou-se a estratégia que Vanderbeck utilizou para o PC.
Na prática, apenas se utilizaram conjuntos de ramificação C para os quais |P |= 1 .
A RLPM no nó u tem a forma da RLPM na raiz, com as eventuais restrições de
ramificação resultantes da aplicação das regras 1 e 2
∑ x q ≥ βftLu 
∀ f, t
(5.48)
∑ x q ≤ βUu
ft 
∀ f, t
(5.49)
q ∈Q ft
q ∈Q ft
∑
xq ≥ αl 
∀ l ∈H u
(5.51)
∑
xq ≤ αl 
∀ l ∈G u
(5.52)
q ∈C l
q ∈C l
onde
— βftLu e βftUu são, respectivamente, o maior dos limites inferiores, e o menor
dos limites superiores obtidos para a soma do número de carretéis cortados
da família f, no período t, por ramificação e usando desigualdades
derivadas da regra 1;
198
Capítulo 5
— Os conjuntos C l são os conjuntos de ramificação, derivados da regra 2, em
que se considerou P = {l } , e que conduzem respectivamente a
•
restrições de limite inferior  α l , l∈ H u e
•
restrições de limite superior  α l , l∈G u ; e
— H u e G u são os conjuntos das restrições resultantes da ramificação pela
regra 2 que definem o problema no nó u.
A introdução das restrições de ramificação origina modificações no subproblema.
Estas são tratadas entrando em linha de conta com os valores óptimos das
variáveis duais associadas às restrições introduzidas. Este procedimento afecta o
cálculo dos lucros binários nos PSMB e o cálculo do custo reduzido da coluna, ou
das colunas, em geração.
Sempre que se tenha introduzido alguma restrição de ramificação sobre a
componente binária l , o peso do objecto binário l , ρl′ , é corrigido somando-lhe os
valores óptimos das variáveis duais associadas às respectivas restrições. Caso
existam, sejam ν j e µ j os valores duais óptimos associados, respectivamente, às
restrições (5.51) e (5.52) sobre a componente l. Ou seja, o valor de ρl′ a considerar
no correspondente PSMB é ρl′ + ν j + µ j .
O subproblema de geração de colunas passa então a ser
max { max { max{
f
t
∑ (ρl′ al′ ) +
l =1,
, mf′
t bf
+ λl +
ft
+
ft
: a′ ∈ Af′
}}}
onde
— ρ1′ ,... ,ρm
′ f′ é a representação binária de ρ1,...,ρm~f , ( ρi = ∑k =t π ik ), com as
T
respectivas correcções para as componentes associadas a restrições de
ramificação derivadas da regra 2, ou seja, para l∈ H u , ρl′ é substituído por
ρl′ + v j , e para l∈Gu , por ρl′ + µ j , onde j é o índice da respectiva restrição
de ramificação, e ν j e µ j são os valores duais óptimos associados às
respectivas restrições;
Integração do problema de corte com o problema de planeamento da capacidade 199
— υ ft e τ ft são os valores óptimos das variáveis duais associadas às restrições
de ramificação sobre o número de carretéis cortados para a família f no
período t (derivadas da aplicação da regra 1);
— A′f como definido em (5.33).
Conforme se adicionam ao PM as restrições de ramificação, aumenta-se a
dimensão das colunas com componentes adicionais, de forma a cobrir as linhas que
correspondem às restrições introduzidas. Cada uma destas componentes deve ter o
coeficiente adequado, ou seja, toma o valor 1
•
nas componentes que correspondem a restrições dos tipos (5.48) e/ou
(5.49) para o par ( f , t ) a que está associada, e
•
nas componentes relativas a restrições do tipo (5.51) e/ou (5.52) que
envolvam índices de componentes que na representação binária têm o
valor 1,
e toma o valor 0 nos restantes casos.
Quando o processamento dum nó conduz a ramificação, testa-se se se está em
condições de usar a regra 1, ou seja, dá-se-lhe prioridade. Para ramificar dá-se
prioridade ao par (f , t ) para o qual o valor do número total de carretéis associado
se afaste mais do seu arredondamento inferior. Introduz-se primeiro um limite
inferior sobre a soma das respectivas variáveis e explora-se esse ramo. Caso o
número de carretéis associado a qualquer par (f , t ) seja inteiro, aplica-se a regra 2.
Na regra 2, a escolha da variável auxiliar para ramificar faz-se da seguinte
forma. Consideram-se as componentes binárias ordenadas por ordem decrescente
dos períodos associados, e por ordem não crescente dos valores de largura binária.
Percorre-se a lista de componentes assim ordenadas e ramifica-se sobre a primeira
para a qual o valor da variável auxiliar que lhe corresponde tome um valor não
inteiro. Como as colunas são constituídas por subvectores que se repetem ao longo
dos períodos subsequentes, consideram-se primeiro as componentes que se referem
a períodos de maior índice, na perspectiva de restringir o mínimo possível o espaço
200
Capítulo 5
de soluções. Experimentou-se dar prioridade às componentes binárias com maior
valor de lucro binário, após as devidas transformações para entrar em linha de
conta com os valores das variáveis duais associadas às restrições de ramificação, e
os resultados foram piores.
v. Detalhes do algoritmo principal
O algoritmo principal descreve-se em algoritmo 5.4.
Na raiz, com base na solução da RLPMR, para cada família, introduz-se no
PMR o corte que impõe um limite inferior sobre a quantidade a produzir ao longo
do horizonte temporal. Volta-se a resolver a RLPMR resultante, e o valor óptimo
dessa solução permite encontrar o limite inferior z . Introduz-se o corte que impõe
z
como limite inferior para o valor da solução. Não se calculam soluções
admissíveis intermédias. Ou seja, o algoritmo estabelece que o limite superior é
z = z . A pesquisa concentra-se em encontrar uma solução inteira com valor óptimo
z * = z . Se a árvore é toda pesquisada e não se encontra uma solução com esse
valor, então, incrementa-se z de uma unidade e actualiza-se o respectivo corte.
Potencialmente, este processo pode ser repetido 2F vezes. Considera-se um limite
superior para o número de nós gerados, dado por MaxNos.
No processamento dos nós (passo 3) experimentaram-se várias alternativas
para a introdução de colunas no PMR. Pode-se introduzir
•
a coluna mais atractiva (com custo reduzido negativo) que se encontre
na resolução do subproblema, e esta opção implica resolver o
subproblema até à optimalidade, ou
•
a primeira coluna atractiva que se encontre na resolução do
subproblema, e, neste caso, abandona-se o subproblema assim que ela
for encontrada, ou
•
as F ×T colunas mais atractivas, uma por cada par ( f , t ) , ou
•
as “primeiras” F ×T colunas atractivas, uma por cada par ( f , t ) .
Integração do problema de corte com o problema de planeamento da capacidade 201
Algoritmo de partição e geração de colunas
1. Inicialização da raiz. Inicializar o PMR. Colocar o problema inicial com a
formulação P 0 na lista, correspondendo ao nó 0. Inicializar o valor do limite
superior z = +∞ , o valor do limite inferior z = 0 , e a melhor solução já
encontrada
(x *, I *)
como
inexistente.
Fazer
r =0
(avaliador
do
reprocessamento da raiz).
2. Se a lista de nós estiver vazia e (x *, I *) é inexistente, incrementar z e z .
3. Escolher o último problema P i introduzido na lista, que corresponde ao nó
i, e resolver a relaxação linear de P i .
3.1. Resolver a RLPMR actual.
3.2. Dada a solução dual óptima, resolver o subproblema de geração de
colunas de forma a pesquisar a existência de colunas atractivas.
3.3. Se existir pelo menos uma coluna atractiva, acrescentá-la ao conjunto
de colunas da RLPMR e voltar a 3.1. Caso contrário, a solução actual é
uma solução óptima para a RLPM neste nó. Se r = 2 , seguir para 4.
3.4. Reprocessamento da raiz. Se r = 0 , introduzir os cortes de limite
inferior sobre as quantidades das famílias, fazer r = 1 e voltar a 3.1. Se
r = 1 , z = z =  z i , introduzir o corte z ≥ z , fazer r = 2 e voltar a 3.1.
4. Se não existe solução, eliminar o nó i, por inadmissibilidade, e voltar a 2.
5. Seja (x i , I i ) a solução da RLPMR. Se zi ≥ z , eliminar o nó i, por limitação, e
voltar a 2.
6. Se (x i , I i ) é inteira, actualizar a melhor solução encontrada x * = x i , I * = I i
e terminar.
7. Se i ≤ MaxNos , ramificar, dando origem a dois novos problemas P i +1 e
P i + 2 , colocá-los na lista e voltar a 2. Se não, terminar.
Algoritmo 5.3: Algoritmo de partição e geração de colunas
A experiência mostrou que a estratégia mais favorável é, em cada iteração, caso
exista uma coluna atractiva, introduzir uma coluna por cada família e período. Na
202
Capítulo 5
versão final do algoritmo, inserem-se as F ×T colunas mais atractivas, uma por
cada par ( f , t ) , desde que existam.
No passo 7, a introdução dos problemas resultantes da ramificação na lista de
problemas faz-se de forma a que o nó com índice mais elevado corresponda ao
problema em que se considerou a restrição que impõe um limite inferior,
independentemente da regra que se tenha utilizado. Adoptou-se uma estratégia de
pesquisa em profundidade para processar os nós que vão sendo gerados por
ramificação, processando em primeiro lugar os nós que correspondem à introdução
duma restrição de “maior ou igual”.
5.3.4 Experiências computacionais
O algoritmo principal e o algoritmo para resolução dos subproblemas foram
codificados na linguagem C. Como ambiente de desenvolvimento utilizou-se a
componente Visual C++ 6.0 do Microsoft Visual Studio 6.0. Para resolver os
problemas de Programação Linear utilizou-se o CPLEX 7.0. Recorreu-se à
aplicação das rotinas da biblioteca dinâmica do CPLEX, para integrar a resolução
dos problemas de PL no código principal. Efectuaram-se todos os testes num
computador pessoal com processador Pentium IV, 1600MHz e 256Mb de memória
RAM.
i. Descrição das instâncias
A realização das experiências computacionais visa avaliar o desempenho do
algoritmo, as suas limitações, e a adequação da abordagem para a resolução de
problemas reais. O modelo permite tirar partido duma situação em que o mesmo
item é pedido para entrega em períodos diferentes, como acontece na situação do
caso em estudo. Analisou-se um histórico dos registos de encomendas referente a
um período com duração de um ano e extraiu-se informação de forma a construir
instâncias com dados reais.
Integração do problema de corte com o problema de planeamento da capacidade 203
Consideram-se fixos os seguintes valores para os parâmetros:
MaxNos = 20000 – número máximo de nós pesquisados pelo algoritmo;
hi = 10000 – o custo associado às variáveis de stock inicial I i ;
bf = 1 – o tempo de processamento, em horas, de um carretel da família f ;
W f =W = 420.0 – a largura útil de um carretel da família f , constante;
W b = 410.0 – a largura mínima a utilizar do carretel;
w st = 10.5 – a largura mínima de um item para stock;
w s = 33.0 – a largura máxima de um item “pequeno”;
n s = 4 – o número máximo de itens “pequenos” a cortar num padrão;
n =8
– o número máximo de itens a cortar num padrão.
As experiências foram conduzidas numa perspectiva de avaliar a redução de custos
que se obtém por utilizar o modelo integrado, relativamente à situação em que os
diferentes problemas de corte são resolvidos em separado, de forma independente.
Começa-se por resolver, para cada instância, os problemas de corte para cada
período, de forma independente e sem as restrições de capacidade. As respectivas
soluções permitem determinar qual o valor mínimo de capacidade em cada período,
para que se possa satisfazer a procura sem antecipações de produção. Em seguida,
resolve-se a instância do problema integrado, fixando o valor de capacidade de
produção disponível em cada período t, ct , no mínimo necessário predeterminado.
Para avaliar a extensão das poupanças que se podem alcançar por um acréscimo
da capacidade, gera-se em seguida a solução que corresponde a fixar os valores de
capacidade, considerando uma capacidade extra de 10% sobre a capacidade
mínima.
ii. Resultados e discussão
O nome das instâncias é da forma “FxT_i”, onde “F” é o número de famílias, “T” é o
número de períodos e “i” é o índice da instância. Na tabela 5.5, que apresenta as
características de instâncias, o significado das colunas é o seguinte:
m
é o número de itens;
204
Capítulo 5
m/F
é o número médio de itens por família;
mpT
é o número médio de itens pedidos por período;
r
é o número médio de vezes que um mesmo item é pedido ao longo do
horizonte;
m’
é o número de componentes binárias resultantes de transformar m;
min d
é o número mínimo de unidades pedidas de um item;
max d
é o número máximo de unidades pedidas de um item;
med d
é o número médio de unidades pedidas de um item;
minw
é o valor mínimo das larguras pedidas;
maxw
é o valor máximo das larguras pedidas;
medw
é o valor médio das larguras pedidas ponderado pelas quantidades
pedidas
∑t ∑i dit .w i / ∑t ∑i dit . ;
minw/W é o valor mínimo da razão entre as larguras pedidas e W;
maxw/W é o valor máximo da razão entre as larguras pedidas e W; e
medw/W é a razão entre medw e W.
Prob
2x2_1
2x2_2
2x2_3
2x2_4
2x2_5
4x2_6
4x2_7
6x2_8
7x2_9
7x2_10
7x2_11
8x2_12
2x3_13
2x3_14
2x3_15
2x3_16
2x3_17
5x3_18
7x3_19
9x3_20
m m/F mpT
42
31
28
37
41
45
62
87
69
90
65
90
35
42
44
47
52
70
79
114
21.0
15.5
14.0
18.5
20.5
11.3
15.5
14.5
9.9
12.9
9.3
11.3
17.5
21.0
22.0
23.5
26.0
14.0
11.3
12.7
23.5
17.5
16.0
22.0
24.5
25.5
36.5
53.0
37.5
49.0
35.0
49.5
15.3
19.0
17.7
21.0
22.3
32.0
30.3
56.0
r
m’
1.12
1.13
1.14
1.19
1.20
1.13
1.18
1.22
1.09
1.09
1.08
1.10
1.31
1.36
1.20
1.34
1.29
1.37
1.15
1.47
214
162
140
200
212
230
314
444
342
450
340
454
270
333
339
369
411
555
594
879
min
d
2
3
1
2
1
1
3
1
1
1
3
1
3
1
2
2
1
1
1
1
max
d
390
99
302
1561
521
945
268
519
1115
945
1151
1246
302
333
390
1561
521
1208
1115
519
med
d
59.7
26.8
36.7
113.5
58.2
85.3
34.9
57.5
96.2
72.8
72.4
65.7
36.5
66.8
58.4
103.8
54.6
83.9
91.2
59.4
min
w
10.5
13
10.5
10.5
10.5
10.5
10.5
10.5
10.5
10.5
10.5
10.5
13.0
10.5
11.0
10.5
10.5
10.5
10.5
10.5
max
w
162
167
142
142
153
142
153
153
153
260
240
210
167
142
162
153
162
210
153
153
med
w
90.7
98.0
91.6
85.2
95.3
85.3
79.8
91.0
96.1
86.1
82.0
87.2
84.4
46.3
89.8
79.2
79.3
80.9
98.5
95.9
Tabela 5.5: Características das instâncias
min
w/W
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
0.03
max
w/W
0.39
0.40
0.34
0.34
0.36
0.34
0.36
0.36
0.36
0.62
0.57
0.50
0.40
0.34
0.39
0.36
0.39
0.50
0.36
0.36
med
w/W
0.22
0.23
0.22
0.20
0.23
0.20
0.19
0.22
0.23
0.20
0.20
0.21
0.20
0.18
0.21
0.19
0.19
0.19
0.23
0.23
Integração do problema de corte com o problema de planeamento da capacidade 205
Nas tabelas 5.6, 5.7 e 5.8 o significado das colunas é o seguinte:
z LP
z
é o valor da solução da RLPM na raiz;
é o limite inferior para o valor da solução, após o reprocessamento da
raiz;
z*
é o valor da solução óptima;
#nós
é o número total de nós gerados;
prof
é a profundidade máxima da árvore de pesquisa;
#LPs
é o número total de vezes que se resolve a RLPMR;
#LPs_r
é o número total de vezes que se resolve a RLPMR na raiz;
#cols
é o número de vezes que se procede à geração duma coluna;
#colsa
é o número total de colunas atractivas geradas;
%colsa
é a percentagem, arredondada, de colunas atractivas geradas;
tempo(s) é o tempo total de execução, em segundos;
t_cols(s) é o tempo total, em segundos, consumido na resolução do subproblema;
t_cols(%) é a percentagem, arredondada, de tempo consumido na resolução do
subproblema;
poup(%) é a percentagem de poupança em relação à solução que se obtém por
resolver os problemas sem integração.
Os resultados que se referem à resolução dos problemas em separado, por períodos,
mostram-se na tabela 5.6. Nesta tabela, omitem-se as colunas z LP , z , prof e
poup(%). As restantes colunas, com excepção das relativas a valores em
percentagem, apresentam a soma dos valores correspondentes nos vários
problemas. A tabela 5.7 mostra os resultados para a solução do modelo integrado,
em que a capacidade em cada período foi fixa no mínimo necessário, para que não
exista antecipação. As células marcadas com um traço indicam que não foi possível
encontrar o respectivo valor, por não se ter conseguido resolver a instância
associada gerando um máximo de 20000 nós de pesquisa. Na tabela 5.8
apresentam-se os resultados do modelo integrado, quando a capacidade em cada
período é cerca de 110% da capacidade mínima.
206
Capítulo 5
Prob
z*
#nós
#LPs #LPs_r
#cols #colsa %colsa
2x2_1
2x2_2
2x2_3
2x2_4
2x2_5
4x2_6
4x2_7
6x2_8
7x2_9
7x2_10
7x2_11
8x2_12
2x3_13
2x3_14
2x3_15
2x3_16
2x3_17
5x3_18
7x3_19
9x3_20
579
222
237
985
565
547
520
1363
1426
1543
1135
1427
360
715
673
1257
708
1789
2057
2378
186
88
120
192
204
164
276
388
676
3032
262
346
146
268
271
280
298
410
728
694
236
130
160
227
157
225
321
426
618
3186
330
441
204
320
301
363
373
485
683
719
245
157
134
252
275
309
573
1093
1987
9675
926
1990
195
289
474
363
386
1057
2267
3179
75
47
47
75
91
48
60
65
30
94
32
50
59
96
84
126
117
63
39
85
176
92
95
153
159
123
211
298
187
343
185
313
125
210
252
239
237
258
215
483
72
59
71
61
58
39
37
27
9
4
20
16
64
73
53
66
61
24
10
15
tempo
(s)
2.297
1.672
1.656
2.344
2.234
2.061
2.782
5.171
2.844
38.171
3.390
5.233
2.359
3.156
3.657
3.469
3.375
3.546
6.421
9.446
t_ cols
(s)
0.610
0.299
0.249
0.829
0.691
0.514
0.934
2.096
1.405
15.770
1.237
2.735
0.374
0.922
1.001
1.184
1.035
1.724
3.168
5.237
t_cols
(%)
27
18
15
35
31
25
34
40
49
41
37
52
16
29
27
34
31
49
49
55
Tabela 5.6: Resultados da resolução sem integração
Os resultados mostram que o valor da solução que se obtém a partir do modelo
integrado é, no geral, inferior ao valor que se obtém resolvendo os problemas em
separado. Em média, considerando apenas as instâncias que se conseguiram
resolver, essa redução é da ordem de 2%. Isto vem demonstrar a tese de que a
integração do problema de corte com o problema de planeamento da capacidade é
vantajosa. A redução do valor dos custos explica-se pela maior variação de larguras
que existe no problema integrado, e, em consequência, um maior número de
combinações de larguras para gerar padrões de corte admissíveis.
Apesar das poupanças relativas serem, aparentemente, pequenas (em termos
percentuais), em termos absolutos essas poupanças são significativas. Note-se o
caso da instância 4x2_7, em que na integração o valor da solução pode ser reduzido
em 31 unidades (horas de produção).
Para seis instâncias não se conseguiu encontrar uma solução inteira no limite
de nós estabelecido. Isto decorre do aumento de complexidade do problema: ou
quando se vai aumentando o número de períodos, ou o número de famílias. Mesmo
para as instâncias com 2 famílias, quando o número de períodos aumenta de 2
para 3, dentro dos limites de capacidade mínima o algoritmo tem mais dificuldade
Integração do problema de corte com o problema de planeamento da capacidade 207
em convergir. Este aspecto está, provavelmente, mais relacionado com a
componente do problema que se refere ao planeamento da capacidade.
A percentagem do esforço computacional despendido na geração de colunas é
bastante elevada – cerca de 45% – tendo em conta que de todas as colunas geradas
apenas cerca de 35% são atractivas.
Prob
2x2_1
2x2_2
2x2_3
2x2_4
2x2_5
4x2_6
4x2_7
6x2_8
7x2_9
7x2_10
7x2_11
8x2_12
2x3_13
2x3_14
2x3_15
2x3_16
2x3_17
5x3_18
7x3_19
9x3_20
z LP
576.2
220.5
217.5
973.5
561.7
532.2
486.4
1355.2
1407.5
1513.9
1029.8
1386.3
341.8
692.4
662.9
1236.7
694.6
1624.7
2037.2
2349.5
z
578
222
219
975
563
534
489
1358
1412
1518
1034
1391
343
693
664
1238
696
1628
2041
2355
z*
578
222
219
975
563
535
489
1359
1412
1521
1392
693
664
2041
-
#nós prof #LPs #LPs_r
246
122
86
696
172
284
512
446
438
702
348
286
950
782
434
120
393
59
190
42
154
165
933
76
228
124
359
133
856
213
619
218
399
239
952
158
505
142
358
219 1396
296 1312
157
618
#cols #colsa %colsa
61
999
27
375
39
373
70
820
51
521
52
1578
33
3251
56
3236
27
2230
65
7440
29
3836
72
1085
66
3513
36 13519
49
3055
433
197
200
309
234
371
1182
932
325
1203
837
665
1393
2848
795
43
53
54
38
45
24
36
29
15
16
22
61
40
21
36
tempo
(s)
8.047
2.125
1.843
4.625
3.406
5.750
12.047
16.344
7.343
23.328
13.140
9.704
45.984
43.313
14.071
t_ cols
(s)
3.838
0.828
0.594
1.116
1.393
2.762
7.328
8.338
3.307
14.706
5.550
4.035
10.075
21.562
6.1022
t_cols poup
(%)
(%)
48 0.2
39 0.0
32 7.6
24 1.0
41 0.1
48 2.2
61 5.9
51 0.3
45 1.0
63 1.4
42 2.5
42 3.1
22 1.3
50 0.8
43 1.9
Tabela 5.7: Resultados do modelo integrado – valores de capacidade mínima
Para o modelo integrado com capacidade mínima, os tempos de execução são
bastante variáveis e não dependem da dimensão do problema. Note-se, por
exemplo, o caso da instância 2x3_15, que consome cerca de 45 segundos. Neste
caso, o tempo de execução é basicamente consumido na ramificação e pesquisa de
nós a eliminar. Já para a instância 7x2_10 o tempo de execução é essencialmente
gasto na geração de colunas.
Considerando um valor de capacidade adicional de cerca de 10%, face à
capacidade mínima necessária para resolver os problemas em separado (tabela
5.8), alcança-se uma poupança média da ordem de 4%. Apesar de se terem
considerado situações bastante diferentes, em relação às quantidades globais a
208
Capítulo 5
produzir,
em
termos
absolutos
a
poupança
corresponde
a
quantidades
significativas – em média 26 horas de produção por instância. O caso mais
evidente, desta poupança absoluta, é a instância 7x2_11, em que se poupam 130
horas de produção.
Prob
2x2_1
2x2_2
2x2_3
2x2_4
2x2_5
4x2_6
4x2_7
6x2_8
7x2_9
7x2_10
7x2_11
8x2_12
2x3_13
2x3_14
2x3_15
2x3_16
2x3_17
5x3_18
7x3_19
9x3_20
z LP
575.9
219.9
217.3
973.3
557.2
530.3
485.8
1348.2
1401.9
1492.5
1001.2
1366.7
338.1
692.1
662.3
1236.3
691.2
1621.3
2028.3
2337.4
z
577
221
218
975
559
532
488
1351
1406
1497
1005
1370
339
693
664
1238
692
1625
2031
2342
z*
577
221
218
975
559
532
488
1352
1406
1497
1005
1370
339
693
664
1238
692
1625
2031
2342
#nós prof #LPs #LPs_r
1184
116
78
230
232
254
234
440
368
556
346
480
2228
414
558
888
3300
466
666
1064
511
162
58
39
115
112
123
117
211
158
259
173
163
72
206
274
334
179
229
293
364
140
1823
134
102
269
270
430
346
646
452
806
428
689
4027
471
606
843
5604
569
754
1650
778
56
32
43
40
49
48
46
56
42
61
29
37
34
53
52
42
73
34
35
38
45
#cols #colsa %colsa
4621
236
261
564
545
2176
1317
3574
2753
6978
2814
6074
12169
1224
1669
2114
13543
3631
9286
23203
3236
949
149
149
226
242
512
569
1049
409
1494
627
1214
4312
704
859
635
4529
1195
1060
5317
900
21
63
57
40
44
23
43
29
15
21
22
20
35
58
52
30
34
33
12
23
35
tempo
(s)
48.656
1.125
1.516
3.953
4.046
8.516
6.484
16.390
8.750
21.781
9.422
16.203
101.790
9.906
14.203
16.266
333.710
15.609
25.234
102.750
19.467
t_ cols t_cols poup
(s)
(%)
(%)
31.865
65
0.35
0.424
38
0.45
0.563
37
8.01
1.875
47
1.02
1.296
32
1.06
3.852
45
2.74
3.294
50
6.15
7.784
47
0.81
4.595
52
1.40
12.186
56
2.98
4.245
45 11.45
10.363
64
3.92
44.628
44
5.83
4.318
44
3.08
4.942
35
1.34
6.411
40
1.51
74.710
22
2.26
6.482
42
9.16
14.934
59
1.26
52.780
51
1.51
9.377
48
3.63
Tabela 5.8: Resultados do modelo integrado – valores de capacidade extra mínima
Neste caso, observa-se uma melhor convergência do algoritmo. A existência de uma
maior folga confere mais flexibilidade na geração das soluções, para as diferentes
famílias, em cada período.
O algoritmo consome em média 18 segundos de CPU, o que não é muito
atraente, dado o bom desempenho dos algoritmos de partição e geração de colunas
para o problema de corte. Por outro lado, também não se pode considerar
excessivo, dadas as vantagens da integração. O caso mais desfavorável ocorre para
a instância 2x3_17, em que se consomem aproximadamente 6 minutos.
A percentagem média de tempo consumido na geração de colunas é de 48%. Ou
seja, cerca de metade do tempo de execução é consumido a resolver o subproblema.
Apenas 35% das colunas avaliadas são atractivas, mas, em cada iteração da
geração de colunas, é necessário avaliar se existe uma coluna atractiva, para cada
Integração do problema de corte com o problema de planeamento da capacidade 209
família, em cada período. No entanto, não é evidente uma relação entre a
percentagem de colunas atractivas geradas e o número de famílias e períodos.
5.3.5 Comentários e perspectivas
O modelo que se apresentou é, tal como se referiu, um modelo inovador e de grande
aplicação em problemas reais. Os resultados mostram que a sua utilização é
vantajosa e que esta abordagem permite melhorar a exploração da capacidade de
produção. No que respeita a resolver vários problemas de corte independentes, a
integração adequa-se melhor à realidade, em que as peças a cortar são limitadas
por restrições de capacidade. Adicionalmente, a integração permite obter reduções
nos custos, devido a um maior aproveitamento das peças a cortar, que decorre de
tirar partido de uma maior gama de larguras a combinar. Para adaptar ainda mais
o modelo à realidade do caso de estudo seria necessário considerar a existência de
tolerância na satisfação da procura, tal como se fez no capítulo 4. Não se seguiu
esta opção, porque se estabeleceu como primeira meta testar a viabilidade de
resolução do modelo integrado. A introdução de tolerância, para além de aumentar
a complexidade do modelo, dificulta a comparação das soluções.
O algoritmo que se desenvolveu, apesar de apresentar um bom desempenho
para várias instâncias, está ainda aquém de se poder considerar adequado para
utilização numa situação real. As experiências computacionais mostram que
existem muitas instâncias, para as quais não é possível encontrar uma solução
dentro dum limite de tempo razoável para a pesquisa. Isto ocorre, especialmente,
nos casos em que a capacidade disponível é aproximadamente igual à capacidade
mínima para produzir as quantidades pedidas, sem antecipação da produção.
Existem várias hipóteses que podem explicar as evidentes deficiências do
algoritmo. Por um lado, não é claro que a aplicação sucessiva da regra de
ramificação proposta por Vanderbeck, que se utilizou como regra 2, possa eliminar
todas as soluções não inteiras. Foram testadas algumas instâncias para as quais,
no decorrer do algoritmo, se encontraram nós onde a ramificação não foi possível
por não existir uma componente binária sobre a qual aplicar a regra 2. Também
210
Capítulo 5
não é evidente que a combinação das duas regras de ramificação seja a mais
adequada. Dadas as restrições de capacidade, ao introduzir uma restrição de limite
inferior sobre o número de carretéis cortados para uma família num dado período,
está-se a condicionar também todas as variáveis relativas ao corte para as
restantes famílias, nesse período. Na regra 2, apesar de se terem testado
diferentes prioridades para a selecção da componente a considerar na ramificação,
pode existir outra estratégia mais vantajosa, que ficou por explorar. Este aspecto
pode condicionar bastante o desempenho do algoritmo. O algoritmo necessita
também de outro tipo de melhoramentos. Não se explorou a introdução de cortes de
admissibilidade sobre o número mínimo de carretéis para cortar cada item, como
faz Vanderbeck. Podem-se ainda obter eventuais melhoramentos pela introdução
de cortes duais, como sugere Valério de Carvalho [Valério de Carvalho, 2002].
Todos estes eventuais melhoramentos referem-se a estratégias desenvolvidas em
especial para o problema de corte. Outra estratégia que pode melhorar o algoritmo
é a introdução de cortes, especialmente desenvolvidos para os problemas de
planeamento da capacidade.
É a primeira vez que este problema é abordado na literatura. Na geração dos
padrões de corte consideraram-se as restrições de admissibilidade específicas do
caso em estudo. Apesar de ambiciosa, esta pode não ter sido a melhor estratégia,
pois confere maior complexidade ao subproblema de geração de colunas.
Seria também interessante utilizar os problemas de teste (benchmark
problems), que têm sido utilizados na literatura, para os combinar e construir
instâncias do modelo integrado. Este procedimento pode permitir separar a
complexidade do problema de corte da complexidade do problema de planeamento
da capacidade.
Apesar das deficiências do algoritmo, a abordagem que se apresentou constitui
uma contribuição importante, quer pela inovação da formulação, quer pelo desafio
de gerar soluções exactas para um problema tão complexo, ainda não explorado na
literatura.
Capítulo 6
O Sistema de Apoio à Decisão
Neste capítulo apresenta-se o Sistema de Apoio à Decisão (SAD) que foi
desenvolvido e concretizado para resolver o problema do caso de estudo. Inicia-se
com uma panorâmica da evolução do conceito de SAD e nomeiam-se outros tipos de
sistemas informáticos utilizados para apoiar a tomada de decisão. Descrevem-se
ainda outros sistemas informáticos de apoio à construção de planos e programas de
produção especialmente concebidos para a indústria papeleira. Em seguida,
apresentam-se as principais funcionalidades disponibilizadas pelo SAD que se
desenvolveu. Descrevem-se alguns aspectos da implementação e expõe-se a
integração do SAD no sistema informático da empresa, em termos de arquitectura.
O capítulo termina com algumas conclusões relativamente à experiência deste caso
prático.
6.1 Introdução
Há mais de duas décadas, Keen e Morton [Keen e Morton, 1978] definiam SAD
como “um sistema informático que assiste os gestores nos seus processos de
decisão, em tarefas semi-estruturadas, com o objectivo de apoiar e não substituir o
gestor, melhorando mais a eficácia do que a eficiência da tomada de decisão”. Neste
contexto, eficácia envolve identificar o que deve ser feito e assegurar que o critério
212
Capítulo 6
escolhido é o relevante. Eficiência envolve a realização duma tarefa o melhor
possível de acordo com um determinado critério de desempenho. Nesta linha
seguiram-se outras definições, demasiado vagas e pouco inteligíveis. O conceito de
tarefa ou problema semi-estruturado é vago e a noção de que a eficácia deve ser
valorizada, em relação à eficiência, é também muito discutível. É do conhecimento
geral que qualquer utilizador “desespera” quando o sistema não responde
rapidamente aos seus pedidos.
Mais recentemente Sauter [Sauter, 1997] descreve um SAD como “um sistema
informático que apoia a escolha, auxiliando o AD a organizar a informação e a
modelar resultados”. Esta definição expande-se no mesmo texto: “Os SAD são
sistemas informáticos que congregam informação de várias fontes, ajudam a
organização e análise da informação, e facilitam a avaliação de assunções através
do uso de modelos específicos, ou seja, os SAD disponibilizam o acesso aos dados
relevantes da organização, à medida que o AD precisa de os avaliar, para fazer
escolhas. Os SAD permitem analisar facilmente os dados gerados pelos sistemas de
processamento de transacções e por outras fontes internas de informação.
Adicionalmente, os SAD podem facultar o acesso a informação externa à
organização. Finalmente, os SAD possibilitam a análise da informação de uma
forma útil, para uma decisão particular, e fazem-no interactivamente.” Esta é uma
definição focada no conceito de processamento da informação, numa perspectiva
organizacional.
O avanço tecnológico, o crescimento do número de utilizadores da Internet e os
desenvolvimentos no comércio electrónico conferem novas características aos
sistemas de apoio à decisão. Refira-se o trabalho de [Keskinocak et al, 2001], que
apresenta um SAD instalado num “mercado electrónico”, para a venda de artigos
de papel. Anonimamente, os vendedores disponibilizam stocks e capacidade de
produção disponível, e os clientes relatam artigos e capacidade que pretendem
adquirir. O SAD funciona como um avaliador das transacções e também sugere
algumas possibilidades de transacções.
O sistema de apoio à decisão
213
No âmbito dos sistemas informáticos que apoiam a tomada de decisão de uma
forma interactiva podemos encontrar outros sistemas, como os Sistemas de Gestão
de Informação (SGI), os Sistemas de Gestão de Bases de Dados (SGBD), os
sistemas OLAP (On-Line Analytical Processing), e alguns sistemas de base de
conhecimento. O que distingue um SAD destes outros sistemas é a integração de
modelos quantitativos formais, que permitem gerar alternativas. Os SGI e os
SGBD permitem extrair informação relativa ao passado e ao presente, enquanto
que um SAD permite determinar soluções a implementar no futuro. No entanto,
funcionalidades dos SGI e dos SGBD devem ser incluídas num SAD, pois apoiam a
extracção de informação relativa a determinados parâmetros permitindo a sua
verificação e possível modificação.
Alguns SAD são orientados aos dados e englobam técnicas de prospecção de
dados (data mining) e técnicas de extracção de conhecimento. Tradicionalmente, o
apoio à decisão é orientado a modelos [Kersten, 1999], e identifica-se o problema de
decisão, na fase de percepção do problema. Desenvolve-se um modelo apropriado à
geração de soluções alternativas. Os parâmetros do modelo obtêm-se a partir dos
dados armazenados nas bases de dados da empresa, e dos dados que o utilizador
introduz. Este tipo de SAD centra-se na interacção do utilizador com o modelo. Os
modelos utilizam-se para gerar soluções óptimas ou satisfatórias, ou para pesquisar
um conjunto de soluções admissíveis com determinadas características. A figura 6.1
apresenta a sequência de actividades no apoio à decisão orientado a modelos. A
interacção, entre o problema de decisão e o modelo, descreve a selecção e a
adequação do modelo à resolução do problema. Os dados são utilizados para
determinar os parâmetros do modelo.
Problema de Decisão
Modelo
Solução
Dados
Figura 6.1: A sequência de actividades no apoio à decisão orientado a modelos
Capítulo 6
214
Segundo Sauter, um SAD é adequado quando o objectivo é ajudar os AD’s a:
−
Considerar um maior conjunto de opções para resolver um problema;
−
Resolver problemas complicados;
−
Gerar alternativas de qualidade;
−
Responder rapidamente a situações cuja análise é complicada;
−
Perceber outras consequências que resultam da implementação de uma
decisão;
−
Utilizar simulação de cenários diversos para resolver um problema;
−
Ter um maior conhecimento do problema e evitar a avaliação prematura de
opções;
−
Aceder aos dados, com uma organização mais apropriada;
−
Tirar maior partido de modelos matemáticos para resolver o problema.
6.2 Aspectos do desenvolvimento de SAD’s
Em [Adenso-Díaz, González e García, 1998], descrevem-se algumas dificuldades,
relativas a aspectos humanos, na implementação dum SAD para o planeamento da
distribuição diária de leite. Os promotores de vendas, apesar de reconhecerem que
precisavam do SAD, sentiam-se ameaçados, temendo que o sistema os substituísse
nas suas funções de tomada de decisão, e que em consequência perdessem o seu
poder de influência. Por outro lado, não confiavam que um sistema informático
pudesse fornecer resultados válidos. Para superar esta questão, as soluções
propostas pelo sistema são modificações de uma solução que o agente de decisão
possa compreender, permitindo a comparação de soluções.
A literatura inclui vários exemplos de SAD’s para o planeamento e
escalonamento da produção ao nível operacional, como por exemplo, os
apresentados por [Woerlee, 1991] e [Schutten, 1996]. Exemplos de SAD’s para o
planeamento hierárquico de produção descrevem-se nos trabalhos [Özdamar,
Bozyel e Birbil, 1998] e [Carravilla e Sousa, 1995].
O sistema de apoio à decisão
215
Existem vários produtos comerciais direccionados para o planeamento da
produção na indústria do papel. As funções disponibilizadas por estes produtos são
bastante semelhantes entre si, e incluem planeamento e programação da produção,
programação do corte, gestão do armazém, distribuição e logística.
A Honeywell Hi-Spec Solutions – www.iac.honeywell.com – comercializa o
Fastrim III para a programação do corte. Aparentemente, as maiores vantagens
deste sistema são o sequenciamento automático dos padrões para minimizar o
número de movimentos das navalhas e a sugestão automática de larguras para
obter poupanças no desperdício.
A Greycon – www.greycon.com – comercializa um pacote que recentemente,
passou a integrar um sistema web-based, que permite a colaboração entre
diferentes fábricas. Este módulo permite a previsão das encomendas dum conjunto
de clientes e a distribuição das encomendas pelas fábricas, de acordo com uma
análise da capacidade disponível.
O conjunto de programas comercializados pela Majiq – www.majiq.com –
destaca-se nas funcionalidades relativas ao planeamento da produção da pasta.
Os métodos e técnicas que permitem obter soluções por estes produtos
comerciais são omitidos. Uma correcta avaliação do seu desempenho só seria
possível por comparação de resultados.
Na literatura, encontram-se referências a outros sistemas informáticos
desenvolvidos para o mesmo fim. O mais relevante é um SAD baseado em agentes,
que segue uma abordagem de optimização multi-critério, [Keskinocak et al., 1998] e
[Murthy et al., 1999]. Considera-se um ambiente de produção com várias máquinas
de corte. Abordam-se os seguintes problemas: afectação das encomendas às várias
máquinas; sequenciamento da produção em cada máquina; sequenciamento de
padrões de corte e carregamento dos veículos para a distribuição. A resolução de
alguns problemas combina técnicas de Investigação Operacional com técnicas de
Inteligência Artificial.
Capítulo 6
216
Em [Pickard e Yeager, 1997] apresenta-se um sistema para o planeamento e
sequenciamento da produção, que tem como objectivos a minimização dos custos de
sequenciamento e de desperdício. Os autores referem que utilizaram uma
abordagem de programação linear para tratar o problema de corte e que optimizam
o sequenciamento de padrões para minimizar o número de movimentos das
navalhas. No entanto, não se apresentam quaisquer modelos nem algoritmos de
resolução. Para o sequenciamento da produção referem que geram uma quantidade
de cenários admissíveis, escolhendo depois aquele a que corresponde o menor custo.
O SAD que se desenvolveu no âmbito do caso de estudo, e que se apresenta
neste capítulo, foi concebido de acordo com o modelo hierárquico de tomada de
decisão que se apresentou no capítulo 3. Relativamente ao desenho desse modelo
(cf. secção 3.5), as funcionalidades de planeamento e escalonamento da capacidade,
que se descrevem em 6.3.1, destinam-se a apoiar a tomada de decisão pelo nível
superior. As funcionalidades referentes à programação do corte, apresentadas em
6.3.2, destinam-se a apoiar a tomada de decisão pelo nível inferior.
O SAD tem como principais vantagens:
−
disponibilizar o suporte no processo de aceitação de encomendas, o que
assegura uma melhor coordenação entre as áreas funcionais do “marketing”
e da “produção”;
−
assegurar a coerência dos planos de produção devido à integração das
decisões relativas ao corte nos algoritmos utilizados para o planeamento e
escalonamento da capacidade;
−
permitir a elaboração dos programas de corte, gerando soluções heurísticas
bastante satisfatórias, e possibilitando a introdução de “preferências” e a
manipulação das soluções geradas;
−
disponibilizar a integração dum módulo de previsão.
O módulo de previsão (cf. 6.3.3) permite ao “marketing” monitorar a evolução da
procura, e apoia a “produção” nas decisões relativas ao planeamento e
O sistema de apoio à decisão
217
escalonamento da capacidade, à elaboração de programas de corte e à gestão de
stocks.
Os benefícios incluem:
−
uma redução do custo de perda de oportunidade – devido à eventual perda de
encomendas, em períodos de elevada procura, e em que o máximo da
capacidade de produção é atingido;
−
uma utilização mais racional da capacidade de produção em períodos de
baixa procura; uma redução dos tempos de entrega;
−
uma redução do desperdício nos programas de corte, por sugestão de um
maior número de alternativas para “completar” padrões de corte em que a
largura não aproveitada é suficiente para cortar bobinas adicionais.
6.3 Funcionalidades do SAD
6.3.1 Planeamento e escalonamento da capacidade
Afectação de stock livre a encomendas
Afecta-se o stock livre a encomendas, utilizando uma regra de prioridade definida
pelo critério “data de fim de produção mais cedo”. As linhas de encomenda são
tratadas por ordem não decrescente de data de fim de produção, afectando a cada
encomenda a maior quantidade possível de itens livres, e com os atributos
requeridos. Este processo conduz à determinação da procura efectiva e como tal
precede sempre a elaboração de qualquer plano. Na figura 6.2 apresenta-se um
exemplo de janela com o resultado desta funcionalidade. O utilizador pode sempre
cancelar parte ou a totalidade da afectação.
Capítulo 6
218
Figura 6.2: Resultado da afectação de stock livre a encomendas
Análise da utilização da capacidade
Considera-se a procura efectiva agregada e parametriza-se a perda de produção
esperada (resultante do desperdício do corte e da mudança de famílias). Ao longo de
um horizonte temporal discreto analisa-se a relação entre a procura acumulada e a
capacidade acumulada corrigida pela perda de produção esperada. Sugerem-se
eventuais adiamentos ou ajustamentos nas quantidades pedidas quando a
capacidade é insuficiente.
As sugestões são elaboradas de forma a proceder a um mínimo de alterações e
com o menor impacto possível. Alterações não aceites são substituídas por outras e
o processo repete-se até que a capacidade seja suficiente para responder à procura.
Este processo interactivo, que se ilustra na figura 6.3, depende exclusivamente do
modelo interiorizado pelo agente de decisão, e é o primeiro passo no processo de
aceitação de encomendas.
O sistema de apoio à decisão
219
Figura 6.3: Diálogo de sugestões de adiamento de linhas de encomenda
Problema de Planeamento e Escalonamento da Capacidade
Para resolver o problema de planeamento e escalonamento da capacidade, utilizase a heurística que se apresenta na secção 5.3, e que integra as decisões relativas
ao corte. O agente de decisão selecciona o horizonte temporal para o qual pretende
obter o plano de produção e pode introduzir ou alterar os parâmetros referentes aos
valores de capacidade disponível, custos e tempos de processamento.
Para a solução encontrada calculam-se alguns indicadores que se apresentam
em conjunto com o plano de produção, como se exemplifica na figura 6.4.
Figura 6.4: Exemplo de uma janela resultado de um plano agregado
O calendário de produção mostra, relativamente à data e hora inicial do horizonte
de planeamento a ordem dos programas para as várias famílias – que se
Capítulo 6
220
identificam pelas colunas “Pr.” (produto) e “Gr.” (gramagem), e para cada
programa:
−
a hora relativa de início, a data de início e a duração – nas colunas “Horas”,
“Data” e “Duração”, respectivamente,
−
o peso total do programa – na coluna “Peso Corte (t)” – e o desperdício
associado – em termos absolutos na coluna “Desp. Corte (t)” e em termos
percentuais na coluna “Perda Corte (%)”,
−
o peso associado à mudança de família subsequente – dado pela coluna “Peso
Setup (t)” e
−
as datas mais cedo e mais tarde de conclusão das tarefas em cada programa
– que se exibem nas colunas “Data mais cedo” e “Data mais tarde”,
respectivamente.
Paralelamente cria-se um ficheiro em que a informação relativa ao plano é
desagregada nos programas de corte que originaram a solução. Esta informação
permite aos responsáveis pelo planeamento identificar programas onde se pode
proceder a eventuais melhoramentos por antecipação de produção.
6.3.2 Programação do corte
Problema de Corte
Para resolver o problema de corte utiliza-se o algoritmo que se descreve em 4.2.3. O
agente de decisão selecciona um conjunto de linhas de encomenda, ou partes de
linhas de encomenda, a considerar nos dados correspondentes aos pedidos. Para
facilitar esta tarefa, o sistema disponibiliza funcionalidades de selecção, extracção e
criação de ficheiros de dados, com os pedidos agregados por larguras.
A figura 6.5 apresenta um ecrã obtido durante a construção duma solução de
corte. Pode acontecer que a introdução no programa de alguns itens adicionais não
aumente o número de carretéis a cortar, conduzindo a economias de escala,
nomeadamente quando em alguns dos padrões na solução de corte se usa parte da
O sistema de apoio à decisão
221
largura do carretel não aproveitada para produzir itens adicionais. Para
determinar as larguras mais convenientes para esse aproveitamento, o SAD
disponibiliza uma funcionalidade de extracção de dados que pesquisa todas as
linhas de encomenda ainda não satisfeitas, que podem ser cortadas no programa
em elaboração. Adicionalmente, em caso de falta de pedidos nessas condições, o AD
pode recorrer ao módulo de previsão para determinar larguras convenientes.
Figura 6.5: Exemplo de uma solução de corte
Analisando a solução na figura 6.5, verifica-se que é possível aproveitar o
desperdício de alguns padrões de corte. Assim, aproveitou-se o desperdício (coluna
“Desp.”) de 50 centímetros que ocorre em 69 carretéis (coluna “Bob.”) para proceder
ao corte de 15 itens dessa largura, destinados a uma encomenda que se previu vir a
ocorrer “em breve”. Para os restantes carretéis (54), a cortar utilizando o mesmo
padrão, o aproveitamento foi feito cortando 4 “tiras” de 12 centímetros para
armazenar. No padrão que tinha um desperdício de 20 centímetros introduziu-se
também o corte de um item, de largura 12 centímetros, destinado a armazém. Na
figura 6.6 apresenta-se o ecrã associado à solução final.
Capítulo 6
222
Figura 6.6: Solução de corte final
O módulo de optimização da solução de corte disponibiliza ainda funcionalidades
que permitem:
−
alterar os dados – por exemplo, introduzindo bobinas adicionais na solução
de corte, ou alterando o valor da tolerância a observar na satisfação dos
pedidos,
−
e gerar soluções de corte alternativas – por exemplo, o agente de decisão pode
sugerir um padrão de corte da sua preferência e a solução é recalculada,
sendo determinado o número de vezes que o padrão sugerido deve ser
cortado, ou mesmo impor na solução um padrão de corte e o número de vezes
que ele deve ser cortado.
Afectação dos itens na solução de corte
Dada uma solução de corte, estabelece-se a correspondência entre cada um dos
itens que a constituem e o destino respectivo. Como objectivo considera-se a
minimização da dispersão na produção das encomendas. Utiliza-se a heurística que
se descreve em 4.2.4.
A figura 6.7 apresenta parte do programa de corte resultado da solução de corte
cuja construção se exemplificou nas figuras 6.5 e 6.6.
O sistema de apoio à decisão
223
Figura 6.7: Exemplo de um programa de corte
Dado que a solução de corte não é exacta, após o processo de afectação automática,
pode acontecer que algumas linhas de encomenda não estejam completamente
satisfeitas, e/ou existam itens por afectar. Na elaboração de programas de corte, o
agente de decisão é responsável pelo tratamento destas questões. As faltas
controlam-se durante a construção da solução de corte e os excedentes são afectos
interactivamente, após a aplicação do algoritmo de afectação.
6.3.3 Previsão de encomendas
Uma descrição dos modelos que se utilizaram para concretizar o módulo de
previsão pode-se consultar em [Captivo, Respício e Rodrigues, 2000]. Estes modelos
foram desenvolvidos fora do âmbito desta dissertação e resultam, em parte, do
trabalho que se apresenta em [Carmo e Rodrigues, 2002].
O AD selecciona o tipo de artigo para o qual pretende estudar a respectiva série
temporal de procura. A título de exemplo, na figura 6.8 apresenta-se um tipo de
gráficos particularmente útil no apoio à tomada de decisão.
Capítulo 6
224
Figura 6.8: Um dos ecrãs de resultados do módulo de previsão
O gráfico mostra os valores mais recentes da procura observada, bem como os
valores previstos para a procura acumulada futura — para os 3 meses posteriores à
última encomenda. No eixo horizontal, o dia “zero” refere-se à data de consulta do
sistema. A leitura do gráfico permite saber que:
−
a última encomenda foi pedida há 17 dias atrás (a altura desse segmento
deve ser "lida" na escala vertical da esquerda, ou, com maior precisão, na
tabela inferior);
−
as encomendas têm uma média ponderada de 52 toneladas, que é o valor
previsto para a próxima encomenda;
−
prevê-se que a próxima encomenda surja dentro de poucos dias (os 2 dias
indicados não devem ser interpretados literalmente, pois só esporadicamente
essa previsão estará totalmente correcta);
O sistema de apoio à decisão
−
225
a procura total mensal (assinalada 30 dias após a última encomenda) é
estimada em cerca de 82 toneladas (ou, correspondentemente, 245 toneladas
por trimestre).
6.4 Análise e desenho do sistema
O SAD funciona em computadores pessoais, em ambiente Windows. O sistema
funciona localmente partilhando dados com o STCPC (Sistema Técnico-Comercial
do Papel de Cacia). O respectivo diagrama de contexto apresenta-se na figura 6.9,
que mostra as interacções entre o sistema e os actores intervenientes no processo.
Um processo activado localmente importa a partir do STCPC os dados referentes a:
— um histórico dos registos de linhas de encomenda (PCLEP versão histórico),
— registos de linhas de encomenda aceites ou propostas em análise (PCLEP), e
— registos de bobinas em stock livre (PCSTK).
Estes ficheiros são actualizados diariamente e também a pedido do utilizador.
Alterações que possam comprometer o plano de produção actual – por exemplo, o
cancelamento duma encomenda de dimensão razoável – são transmitidas aos
responsáveis pelo planeamento da produção por correio electrónico ou por telefone.
STCPC
registos de linhas de
encomenda
registos de bobinas em
stock
PCLEP
PCSTK
SISTEMA
LOCAL
SADPHP
ordens
de corte
PCOCR
pedidos de acção
resultados da acção
afectações
de stock
PCAFT
AD
alterações a
linhas de encomenda
aceites e propostas
PCCPR
STCPC
Figura 6.9: Diagrama de contexto (comunicações)
Capítulo 6
226
Em resultado das opções pedidas pelo utilizador são gerados os ficheiros de ordens
de corte (PCOCR), de afectações de stock livre a linhas de encomenda (PCAFT), e
de alterações a linhas de encomenda aceites ou propostas (PCCPR). Um processo
local faz a exportação destes ficheiros, conduzindo à actualização das respectivas
bases de dados, no âmbito do STCPC. A exportação do ficheiro de registos de ordens
de corte dá início à produção do respectivo plano na máquina de corte.
Gestão de dados
Nas diferentes fases de tomada de decisão, o AD pode recorrer a funcionalidades de
gestão de dados, que apoiam a interacção com os modelos, tais como:
— pesquisa, extracção e ordenação de informação, relativa a encomendas e
existências, com diferentes níveis de agregação, e segundo vários critérios;
— partição de linhas de encomenda e “transferência” global e/ou parcial de
linhas de encomenda para programação de corte (útil para a geração e
subsequente avaliação de diferentes soluções de corte);
— alteração a linhas de encomenda (quantidades e datas de entrega) – útil
para experimentar diferentes cenários de distribuição da produção no
processo de avaliação de propostas e planeamento da capacidade (análise
o-que-se);
— manutenção e actualização dos parâmetros do sistema;
— monitorização e alteração de parâmetros relativos ao processo produtivo,
tais como capacidade de produção disponível, ritmo de produção, perdas
esperadas, restrições na máquina de corte e outros.
Arquitectura
O sistema está fisicamente instalado em computadores pessoais atribuídos às
pessoas responsáveis por tomar as decisões nas várias áreas funcionais,
nomeadamente na Direcção Comercial e de Marketing, no Departamento de
Produção, e na área de Operação, como se ilustra na figura 6.10. Todos os
computadores estão ligados numa rede e a transferência de dados é feita através do
O sistema de apoio à decisão
227
Sistema de Informação central (SI). É recorrendo a essa rede e à transferência de
dados, via SI, que se processam os fluxos de dados entre os diferentes níveis de
tomada de decisão, conforme o modelo hierárquico que se descreveu na secção 3.5.
Base
de
Local
dados
Data
local
Base
Base de
dados da
empresa
PC (Dept. Marketing)
Base
de
Local
dados
Data
local
Base
PC (Dept. Produção)
SistemaCentral
Base
de
Local
dados
Data
local
Base
Máquina
de corte
PC
(Operação)
Impressora de
códigos de barras
Figura 6.10: Parte da arquitectura do SI da empresa – PC’s onde o sistema está instalado
A informação relativa às encomendas mantém-se actualizada na base de dados da
empresa. O SAD é executado localmente e os resultados do processo de tomada de
decisão são guardados localmente. A transferência de dados faz-se através de
processos que se executam localmente e que conduzem à actualização da base de
dados central. Para evitar a vulnerabilidade do sistema e assegurar a integridade
dos dados (cf. secção 3.2), atribuíram-se permissões aos diferentes tipos de
utilizadores, no acesso à base de dados central. As permissões para alterar a
aceitação, preços e datas de entrega das encomendas foram atribuídas ao
responsável pela aceitação de encomendas, que é um funcionário do “marketing” e,
que, no modelo hierárquico em 3.5, desempenha o papel de Agente de Decisão no
nível Médio de Gestão. O responsável pelo planeamento pode alterar o estado das
encomendas, relativamente ao seu estado de produção: quantidades planeadas,
programadas e produzidas. Este agente de decisão é um funcionário da “produção”,
e, no modelo hierárquico, corresponde ao Agente de Decisão no nível Baixo de
228
Capítulo 6
Gestão. Na zona de operação, o SAD apenas disponibiliza acesso a funcionalidades
referentes à determinação de programas de corte. A sua utilização permite a
correcção de erros na satisfação dos programas predeterminados pela “produção”,
que ocorrem devido a eventuais falhas na máquina de corte ou falhas de qualidade
dos produtos acabados. A produção dos itens, na máquina de corte, é comunicada ao
computador na área de operação e, posteriormente, reenviada para o sistema
central, permitindo a actualização dos dados na base de dados da empresa.
6.5 Conclusões e reflexão
O SAD constitui uma ferramenta interactiva e de fácil utilização, com as usuais
funcionalidades de gestão de dados, e com a capacidade de gerar e avaliar soluções
alternativas para os diferentes subproblemas de tomada de decisão. Providencia-se
ao AD a possibilidade de tirar partido do seu conhecimento e especialização sobre
os problemas a tratar e poder incorporar esse conhecimento nas soluções geradas. A
tomada de decisão e a consequente implementação torna-se mais rigorosa e eficaz,
dada a elevada qualidade das soluções geradas pelos modelos. O sistema fornece
também um maior grau de coordenação entre as diferentes fases do problema e
promove a cooperação entre o “marketing” e a “produção” reduzindo os conflitos
entre diferentes áreas funcionais com objectivos antagónicos.
A utilização do SAD não veio substituir a responsabilidade e autoridade das
pessoas envolvidas no processo de tomada de decisão, mas sim apoiá-las a executar
as suas tarefas, com uma maior qualidade. Este é um aspecto determinante no
sucesso da implementação dum SAD numa organização.
Por outro lado, a utilização do sistema conduz a um melhoramento da
interacção entre pessoas das diferentes áreas funcionais. Uma maior coordenação
dos processos permite reduzir o tempo de interacção que se consumia para atingir
um compromisso entre o “marketing” e a “produção”, no processo de aceitação de
encomendas. Os agentes de decisão, das várias áreas funcionais, podem concentrarse na discussão de assuntos mais importantes.
O sistema de apoio à decisão
229
Os benefícios para a empresa consistem numa redução dos custos globais. No
curto prazo, esta redução é atingida pela elevada qualidade das soluções e pela
redução de tempo gasto na geração destas soluções. A mais longo prazo, a redução
dos custos decorre duma melhor organização da informação relativa à produção,
uma maior coordenação dos processos, reduções nos tempos de entrega das
encomendas, e, consequentemente, um melhoramento do serviço aos clientes.
A empresa não foi capaz de dar uma estimativa das reduções de custos ou dos
melhoramentos na qualidade do negócio que se alcançaram. A utilização do sistema
permitiu a sua validação. A “sobrevivência” do SAD mostrou que ele é vantajoso.
230
Capítulo 6
Capítulo 7
Conclusões
O trabalho que se apresentou nesta dissertação tem duas vertentes. Por um lado, o
desenvolvimento de ferramentas informáticas adequadas à resolução de vários
problemas de planeamento e escalonamento da produção, que ocorrem num
sistema produtivo real da indústria papeleira. Esta vertente orientou-se para a
resolução do caso de estudo, que se descreve no capítulo 2. Por outro lado, essa
experiência motivou o estudo de problemas relacionados e a concepção de novos
algoritmos para a sua resolução. Passa-se a recapitular a organização do texto,
dando especial relevância às contribuições e resultados inovadores, que se
apresentaram em cada capítulo.
No primeiro capítulo é dada uma panorâmica geral da dissertação. Descrevemse as dificuldades associadas a resolver problemas reais na área de planeamento e
escalonamento da produção. Perspectivam-se as abordagens que se utilizaram, e
enumeram-se as várias contribuições.
230
Capítulo 7
No capítulo 2, descreve-se o problema geral que constitui o caso de estudo.
Identifica-se o processo de tomada de decisão, as responsabilidades das unidades
funcionais
intervenientes
e
modelaram-se
as
hierarquias
necessárias
à
coordenação. Neste problema, intervêm agentes de decisão posicionados em
diferentes áreas organizacionais. Estão presentes diversos objectivos, alguns dos
quais conflituosos, e um elevado número de restrições operacionais. Existe a
necessidade de coordenar as interacções entre os diferentes níveis funcionais e
operacionais. O sistema é muito dinâmico e instável. Para responder a elevados
níveis da procura é necessário explorar ao máximo a capacidade disponível, que é
limitada. À minimização de perdas de produção, inerentes ao processo de fabrico,
correspondem
problemas
de
grande
complexidade.
Nestas
condições,
são
necessários mecanismos de planeamento adequados, eficientes e eficazes, mas
também suficientemente flexíveis para lidar com situações de instabilidade.
No capítulo 3 apresenta-se e discute-se o desenho do modelo de decisão
hierárquico, de dois níveis, que representa o processo de decisão para o
planeamento e escalonamento da produção. O modelo representa uma coordenação
eficiente das áreas funcionais da organização, e a coerência das interdependências
resultantes. Existe uma hierarquia bem definida, na medida em que, em termos
temporais, as decisões do “marketing” antecedem as da “produção”, e condicionamnas. No entanto, é ao nível da “produção” que se verificam as restrições, o que lhe
confere um elevado poder de reacção em relação às instruções do “marketing”. Isto
significa que não se está face a uma hierarquia top-down pura, e as decisões do
nível superior devem antecipar as do nível inferior, de forma a garantir a sua
coerência e exequibilidade. A principal contribuição/inovação é a tese de que em
situações de tomada de decisão hierárquica e em presença de objectivos
conflituosos, pode ser útil a partilha dum modelo pelos diferentes níveis de tomada
de decisão. Os diferentes agentes de decisão podem utilizar o mesmo modelo base,
mas com perspectivas diferentes. O modelo partilhado funciona assim como um
mediador dos conflitos. Neste caso, em concreto, partilha-se o modelo de
Conclusões
231
planeamento da capacidade. Esta estratégia permite uma redução dos conflitos
entre o “marketing” e a “produção”.
O capítulo 4 dedica-se à programação do corte, e nele abordaram-se o problema
de corte e os problemas de sequenciamento de padrões de corte. Apresenta-se a
formulação matemática que se utilizou para modelar o problema de corte do caso
em estudo. Modificou-se a formulação de colunas clássica, [Gilmore e Gomory,
1963], introduzindo limites superiores nas restrições de satisfação da procura. Este
tipo de estratégia, pouco usual na literatura, permite obter soluções sem
sobreprodução, e a consequente geração de stocks, aspecto relevante nas aplicações
práticas do problema. O procedimento de resolução é uma heurística que integra a
técnica de geração implícita de colunas. Concretizou-se esta heurística num
ambiente de apoio à decisão, que permite ao responsável pela elaboração dos
programas de corte, face à análise das soluções geradas, aproveitar a largura não
utilizada para produzir itens adicionais. Outro aspecto particular deste modelo diz
respeito às condições muito específicas de admissibilidade dos padrões a gerar, o
que obrigou a desenvolver um algoritmo de geração de colunas adaptado.
Um programa de corte obtém-se recorrendo a uma heurística que procede à
afectação dos itens nas soluções de corte às encomendas dos clientes. Concebeu-se
este algoritmo com o objectivo de minimizar o espalhamento das encomendas no
programa, e concretizou-se num ambiente interactivo.
Fora do âmbito do caso de estudo, desenvolveu-se um procedimento heurístico
para o problema de minimização do número de padrões numa solução de corte. Os
resultados mostraram a sua superioridade, face a outros algoritmos heurísticos
que se apresentam na literatura. Abordou-se o problema de sequenciamento de
padrões, com o objectivo de minimização do número de movimentos das navalhas
num programa de corte. Desenvolveram-se várias heurísticas para a sua resolução,
e os resultados das experiências demonstram a sua aplicabilidade em situações
reais.
232
Capítulo 7
Estudou-se o problema de sequenciamento de padrões bi-objectivo, que
considera a minimização do número máximo de pilhas abertas e a minimização do
espalhamento médio das encomendas. Esta é uma abordagem inovadora, pois a
literatura refere-se apenas aos problemas de objectivo único [Respício e Captivo,
2002a]. Para obter soluções, adaptou-se um algoritmo evolutivo de optimização
multi-objectivo, e concebeu-se um algoritmo híbrido que integra mecanismos de
pesquisa local no algoritmo evolutivo. A experiência computacional mostrou que as
soluções são muito superiores às que se obtêm por uma das melhores heurísticas
de Yuen [Yuen, 1995]. Apesar dos algoritmos apresentarem tempos de execução
elevados, justifica-se a sua concretização em situações reais. O sequenciamento de
padrões é o passo que antecede a implementação dum programa de corte. A análise
do conjunto de soluções potencialmente não dominadas permite um conhecimento
amplo das possíveis alternativas, que não se poderia alcançar resolvendo os
respectivos problemas de objectivo único. Enriquece-se assim a capacidade de
escolha do responsável pelo planeamento. Por outro lado, o estudo deste problema
permitiu estabelecer uma relação entre os dois objectivos, relação sobre a qual a
literatura apresenta algumas conjecturas teóricas. Concluiu-se que o valor dum
dos objectivos não varia significativamente se se optimizar esse ou o outro
objectivo.
No capítulo 5 aborda-se a integração do problema de corte com o problema de
planeamento e escalonamento da capacidade. Esta é uma orientação inovadora e
parte da hipótese que, numa indústria de corte, o problema de planeamento da
capacidade deve integrar-se com o problema de corte. Concebeu-se e concretizou-se
uma nova heurística para resolver o problema do caso de estudo. Este
procedimento começa por determinar as quantidades a produzir, num horizonte
temporal discreto, e depois procede à formação de lotes e ao seu sequenciamento. O
sequenciamento e escalonamento faz-se gerando várias soluções através duma
regra de prioridade, e escolhendo a solução que minimiza a duração total do
programa e o número de tarefas em atraso. Esta estratégia é especialmente
Conclusões
233
adaptada à realidade, onde muitas vezes a capacidade de produção não é suficiente
para produzir as encomendas aceites.
Formulou-se um novo problema que estende o problema de corte a uma
situação multiproduto e multiperíodo, introduzindo restrições de capacidade nos
períodos e variáveis de stock inicial [Respício e Captivo, 2001]. Este modelo
representa a realidade dos sistemas produtivos, em que a produção e corte de
peças, com diferentes características, é afectada à capacidade de produção
disponível, que é limitada. Desenvolveu-se um algoritmo de partição e geração de
colunas para resolver este problema. O algoritmo tira partido da utilização de um
limite inferior para limitar superiormente o valor da solução a pesquisar. A
ramificação faz-se utilizando duas regras, ambas multicoluna. A experiência
computacional mostra que a integração dos problemas é vantajosa. O modelo
permite explorar uma maior variedade de larguras a combinar e identificar os
itens, e respectivas quantidades, para os quais é vantajosa a produção antecipada.
Garante-se a admissibilidade das soluções assim geradas através das restrições de
capacidade. Os resultados são promissores, mas o algoritmo apresenta deficiências
para as instâncias em que a capacidade disponível é igual à capacidade mínima
necessária para satisfazer a procura em cada período. Ou seja, exigem-se alguns
melhoramentos prévios à concretização deste algoritmo em aplicações reais.
Eventuais melhoramentos referem-se à adequação de outras estratégias de
ramificação e/ou à introdução de cortes de admissibilidade, ou cortes duais.
O capítulo 6 expõe o Sistema de Apoio à Decisão que se concretizou para
resolver o problema do caso em estudo [Respício, Captivo e Rodrigues, 2002]. O
recurso a modelos complicados, integrado com a extracção e ordenação de
informação, permite a geração e a análise de vários cenários. As soluções dos
modelos são apresentadas como sugestões e o agente de decisão pode interagir com
os modelos, introduzindo a sua experiência e preferências na resolução dos
problemas. Disponibilizam-se mecanismos que permitem alterar as soluções de
forma a gerar e avaliar alternativas. O sistema é uma ferramenta, e o agente de
234
Capítulo 7
decisão é totalmente responsável pelas opções que decide implementar. A
utilização é partilhada por agentes com diferentes objectivos e perspectivas, o que
confere ao sistema uma função de mediador na tomada de decisão.
Como conclusões finais, poder-se-á dizer que este trabalho é relevante pela
importância da sua componente aplicacional e pela sua originalidade. Concebeu-se
uma abordagem robusta e eficaz para apoiar a tomada de decisão por vários
agentes, que trabalham em âmbitos diversos, em diferentes áreas funcionais, com
múltiplos objectivos, conflituosos, e com um elevado número de restrições. A
resolução dos subproblemas foi integrada num Sistema de Apoio à Decisão
permitindo a interacção entre o agente de decisão e os modelos. Para garantir a
coerência das decisões nos níveis superiores, e reduzir conflitos funcionais,
adoptou-se uma estratégia de integração de problemas a diferentes níveis. Em
termos de originalidade, contribuiu-se com a concepção e concretização de novas
heurísticas para vários problemas já explorados na literatura, propuseram-se dois
novos problemas, e conceberam-se algoritmos para a sua resolução. A saber, o
problema de sequenciamento de padrões bi-objectivo, e o problema de planeamento
da capacidade integrado com o problema de corte.
Bibliografia
[Adenso-Díaz, González e García, 1998]
Adenso-Díaz, B., González, M. e García, E., 1998, “A hierarchical approach to
managing dairy routing”, Interfaces, 28, pp 21-31.
[Allwood e Goulimis, 1988]
Allwood, J. e Goulimis, C., 1988, “Reducing the number of cutting patterns in
one-dimensional cutting stock problems”, Control report EE/CON/IC/88/10,
Electrical Engineering Department, Imperial College, London, 8 páginas.
[Amaro, Hendry e Kingsman, 1999]
Amaro, G., Hendry, L. C. e Kingsman, B., 1999, “Competitive advantage,
customisation and a new taxonomy for non make-to-stock companies”,
International Journal of Operations & Production Management, 19, pp 349-371.
[Anderson, 1992]
Anderson, T., 1992, “Step into my parlor: a survey of strategies and techniques for
effective negotiation”, Business Horizons, May-June, pp 71-76.
[Axsäter, 1981]
Axsäter, S., 1981, “Aggregation of product data for hierarchical production
planning”, Operations Research, 35, pp 744-756.
[Belov e Scheithauer, 2002]
Belov, G. e Scheithauer, G., 2002, “A cutting plane algorithm for the onedimensional cutting stock problem with multiple stock lengths”, European Journal
of Operational Research, 141, pp 274-294.
236
Bibliografia
[Bitran e Tirupati, 1993]
Bitran, G. R. e Tirupati, D., 1993, “Hierarchical Production Planning” in Graves, S.
C., Rinnooy Kan, A. H. e Zipkin, P.H. (eds.), Logistics of Production and Inventory,
Handbooks in Operations Research and Management Science, 4, North-Holland.
[Brehmer, 1991]
Brehmer, B., 1991, “Modern information technology: timescales and distributed
decision making”, in Rasmussen, J., Brehmer B. and Leplat, J. (eds.), Distributed
Decision Making: Cognitive Models for Cooperative Work, John Wiley & Sons Ltd.
[Captivo, Respício e Rodrigues, 2000]
Captivo M. E., Respício A. e Rodrigues A. J., 2000, “Um sistema de apoio à decisão
para o planeamento hierárquico da produção de bobinas de papel”, em Antunes, C.
H. e Tavares, L. V. (eds), Casos de Aplicação da Investigação Operacional,
McGraw-Hill Portugal.
[Carmo e Rodrigues, 2002]
Carmo, J.L. e Rodrigues, A.J., 2002, “Identificação de redes neuronais gaussianas
como modelos de previsão”, Investigação Operacional, 22, pp 43-57.
[Carravilla e Sousa, 1995]
Carravilla, M.A., e Sousa, J. P., 1995, “Hierarchical production planning in a
make-to-order company: A case study”, European Journal of Operational Research,
86, pp 43-56.
[Coello, 2000]
Coello, A.C.C., 2000, An updated survey of GA-based multiobjective optimization
techniques, ACM Computing Surveys, 32, pp 109-143.
[Dauzère-Péres e Lasserre, 1994]
Dauzère-Péres, S. e Lasserre, J. B., 1994, An integrated approach in production
planning and scheduling, Lecture Notes in Economics and Mathematical Systems
411, Springer-Verlag, Berlin, Germany.
[Degraeve e Peeters, 2002]
Degraeve, Z., e Peeters, M., 2002 (to appear), “Optimal integer solutions to
industrial cutting-stock problems: part 2, benchmark results”, INFORMS Journal
on Computing.
[Degraeve e Schrage, 1999]
Degraeve, Z., e Schrage, L., 1999, “Optimal integer solutions to industrial cuttingstock problems”, INFORMS Journal on Computing, 11, pp 406-419.
[Desrochers, Desrosiers e Solomon, 1992]
Desrochers, M., Desrosiers, J. e Solomon, M., 1992, “A new optimization algorithm
for the vehicle routing problem with time windows”, Operations Research, 40, pp
342-354.
Bibliografia
237
[Desrosiers, Soumis e Desrochers, 1984]
Desrosiers, J., Soumis, F., e Desrochers, M., 1984, “Routing with time windows by
column generation”, Networks, 14, pp 545-565.
[Dowsland e Dowsland, 1992]
Dowsland, K. A. e Dowsland, W. B., 1992, “Packing problems”, European Journal
of Operational Research, 56, pp 2-14.
[Drexl e Kimms, 1997]
Drexl, A. e Kimms, A., 1997, “Lot sizing and scheduling – survey and extensions”,
European Journal of Operational Research, 99, pp 221-235.
[Dyckhoff, 1990]
Dyckhoff, H., 1990, “A typology of cutting and packing problems”, European
Journal of Operational Research, 44, pp 145-159.
[Dyson e Gregory, 1974]
Dyson, R. G., e Gregory, A. S., 1974, “The cutting stock problem in the flat glass
industry”, Operational Research Quarterly, 25, pp 41-54.
[Easwaran et al, 1996]
Easwaran, A. M., Drossopoulou, S. e Goulimis, C., 1996, “A genetic algorithm
approach to the knife change minimisation problem”, Department of Computing,
Imperial College, Report Number 16/96, 21 páginas.
[Eliashberg e Steinberg, 1993]
Eliashberg, J. e Steinberg, R., 1993, “Marketing-production joint decision-making”
in Eliashberg, J. e Lilien, G. L. (eds.), Marketing, Handbooks in Operations
Research and Management Science, 5, North-Holland.
[ESGWI, 1996]
29th European Study Group With Industry, 1996, “Pattern reduction in paper
cutting”, Greycon, Mathematical Institute, Oxford University, 15 páginas.
[Faggioli e Bentivoglio, 1998]
Faggioli, E. e Bentivoglio, C.A., 1998, “Heuristic and exact methods for the cutting
sequencing problem”, European Journal of Operational Research, 110, pp 564-575.
[Farley, 1990]
Farley, A. A., 1990, “A note on bounding a class of linear programming problems,
including cutting stock problems”, Operations Research, 38, pp 922-923.
[Fink e Voss, 1999]
Fink, A. e Voss, S., 1999, “Applications of modern heuristic search methods to
pattern sequencing problems”, Computers and Operations Research, 26, pp 17-34.
238
Bibliografia
[Fischetti, Salazar e Toth, 1997]
Fischetti, M., Salazar, J. e Toth, P., 1997, “A branch-and-cut algorithm for the
symmetric generalized travelling salesman problem”, Operations Research, 45, pp
378-394.
[Foerster e Wäscher, 1998]
Foerster, H. e Wäscher, G., 1998, “Simulated annealing for order spread
minimization problem in sequencing cutting patterns”, European Journal of
Operational Research, 110, pp 272-281.
[Garey e Johnson, 1979]
Garey, M. R. e Johnson, D. S., 1979, Computers and Intractability, Freeman.
[Gilmore e Gomory, 1961]
Gilmore, P. C. e Gomory, R. E., 1961, “A linear programming approach to the
cutting-stock problem”, Operations Research, 9, pp 849-859.
[Gilmore e Gomory, 1963]
Gilmore, P. C. e Gomory, R. E., 1963, “A linear programming approach to the
cutting-stock problem - part II”, Operations Research, 11 , pp 863-887.
[Goulimis, 1990]
Goulimis, C., 1990, “Optimal solutions for the cutting stock problem”, European
Journal of Operational Research, 44, pp 197-208.
[Günther, 1986]
Günther, H. O., 1986, “The design of an hierarchical model for production planning
and scheduling”, in Axsäter, S., Schneeweiss, C., and Silver, S. (eds.), Multi-Stage
Production Planning and Inventory Control, Lecture Notes in Economics and
Mathematical Systems, Springer-Verlag, 266, pp 225-260.
[Haessler, 1971]
Haessler, R. W., 1971, “A heuristic programming solution to a nonlinear cutting
stock problem”, Management Science, 17, pp B793-B802.
[Haessler, 1975]
Haessler, R. W., 1975, “Controlling cutting pattern changes in one-dimensional
trim problems”, Operations Research, 23, pp 483-493.
[Haessler e Talbot, 1983]
Haessler, R. W. e Talbot, F. B., 1983, “A 0-1 model for solving the corrugator trim
problem”, Management Science, 29, pp 200-209.
[Hax e Meal, 1975]
Hax, A. C., e Meal, H. C., 1975, “Hierarchical integration of production planning
and scheduling”, in M. Geisler (ed.), Logistics, TIMS Studies in Management
Science, 1, Elsevier, Amsterdam, pp 53-69.
Bibliografia
239
[Hendry, 1998]
Hendry, L. C., 1998, “Applying world class manufacturing to make-to-order
companies: problems and solutions”, International Journal of Operations &
Production Management, 18, pp 1086-1100.
[Hendry, Fok e Shek, 1996]
Hendry, L., Fok, K. e Shek, K., 1996, “A cutting stock and scheduling problem in
the copper industry”, Journal of the Operational Research Society, 47, pp 38-47.
[Hinxman, 1980]
Hinxman, A. I., 1980, “The trim-loss and assortment problems: a survey”,
European Journal of Operational Research 5, pp 8-18.
[Holland, 1995]
Holland, J. H., 1995, Hidden order: how adaptation builds complexity, AddisonWesley Publishing Company, Inc .
[Horn, 1997]
Horn J., 1997, “Multicriterion decision making”, In Handbook of Evolutionary
Computation, Back, T., Fogel, D.B. e Michalewicz, Z. (eds.), Publishing and Oxford
University Press, F1.9, pp 1-15.
[Horowitz e Sahni, 1974]
Horowitz, E. e Sahni, S., 1974, “Computing partitions with applications to the
knapsack problem”, Journal of the ACM, 21, pp 277-292.
[Johnston, 1984]
Johnston, R. E., 1984, “Cutting patterns and cutter schedules”, ASOR Bulletin, 4,
pp 3-13.
[Johnston, 1986]
Johnston, R. E., 1986, “Rounding algorithms for cutting stock problems”, AsiaPacific Journal of Operational Research, 3, pp 166-171.
[Johnston, 1990]
Johnston, R. E., 1990, “Reducing cardinality in linear programmed cutting stock
solutions”, Asia-Pacific Journal of Operational Research, 7, pp 1-8.
[Johnston, 1995]
Johnston, R. E., 1995, “’Seamless’ production scheduling in the paper industry”,
artigo apresentado no TIMS XXXIII International Meeting, Singapore, 7 páginas.
[Kantorovich, 1960]
Kantorovich, L. V., 1960, “Mathematical methods of organising and planning
production”, Management Science, 6, pp 366-422.
240
Bibliografia
[Keen e Morton, 1978]
Keen, P. e Morton, M., 1978, Decision Support Systems: an organizational
perspective, Addison-Wesley Publishing Company, United States of America.
[Kersten, 1987]
Kersten, G., 1987, “On two roles decision support systems can play in
negotiations”, Information Processing & Management, 23, pp 605-614.
[Kersten, 1999]
Kersten, G., 1999, “Decision making and decision support”, in Kersten, G.,
Mikolajuk, Z. e Yeh, A. G. (eds.), Decision Support Systems for Sustainable
Development: a Resource Book of Methods and Applications, International
Development Research Centre and Kluwer Academic Publishers, United States of
America.
[Kersten e Cray, 1996]
Kersten, G. E., e Cray, D., 1996, “Perspectives on representation and analysis of
negotiation: towards cognitive support systems”, in Shakun, M. F. (ed.),
Negotiation Processes: Modeling Frameworks and Information Technology, Kluwer
Academic Publishers, United States of America.
[Keskinocak et al, 2001]
Keskinocak, P., Goodwin, R., Wu, F., Akkiraju, R. e Murthy, S., 2001, “Decision
support for managing an electronic supply chain”, Electronic Commerce Research,
1, pp 15-31.
[Keskinocak et al, 1998]
Keskinocak, P., Wu F., Goodwin, R., Murthy, S., Akkiraju, R., Kumaran, S. e
Derebail, A., 1998, “Scheduling solutions for the paper industry”, Research Report
RC21279, IBM, 30 págs.
[Koopman e Pool, 1991]
Koopman, P. e Pool, J., 1991, “Organizational decision making: models,
contingencies and strategies”, in Rasmussen, J., Brehmer B. e Leplat, J. (eds.),
Distributed Decision Making: Cognitive Models for Cooperative Work, John Wiley
& Sons Ltd.
[Kuik, Salomon e van Wassenhove, 1994]
Kuik, R., Salomon M., e van Wassenhove, L. N., 1994, “Batching decisions:
structure and models”, European Journal of Operational Research, 75, pp 243-263.
[Lasserre e Mercé, 1990]
Lasserre, J. B. e Mercé, C., 1990, “Robust hierarchical production planning under
uncertainty”, Annals of Operations Research, 26, pp 73-87.
Bibliografia
241
[Linhares e Yanasse, 2002]
Linhares A e Yanasse H.H., 2002, “Connections between cutting-pattern
sequencing, VLSI design, and flexible machines”, Computers & Operations
Research, 29, pp 1759-1772.
[Madsen, 1988]
Madsen, O., 1988, “An application of travelling-salesman routines to solve patternallocation problems in the glass industry”, Journal of Operational Research
Society, 39, pp 249-256.
[Marcotte, 1985]
Marcotte, O., 1985, “The cutting stock problem and integer rounding”,
Mathematical Programming, 35, pp 82-92.
[Marcotte, 1986]
Marcotte, O., 1986, “An instance of the cutting stock problem for which the
rounding property does not hold”, OR Letters, 4, pp 239-243.
[Martello e Toth, 1990]
Martello, S. e Toth, P., 1990, Knapsack problems: algorithms and computer
implementations, Wiley, New York.
[Martinich, 1997]
Martinich, J. S., 1997, Production and operations management: an applied modern
approach, John Wiley & Sons, Inc., United States of America.
[McCulloch e Pitts, 1943]
McCulloch, W. e Pitts, W., 1943, “A logical calculus of the ideas immanent in
nervous activity”, Bulletin of Mathematical Biophysics, 7, pp 115-133.
[Michalewicz, 1994]
Michalewicz, Z., 1994, Genetic Algorithms + Data Structures = Evolution
Programs, Springer-Verlag, United States of America.
[Miller, 2001]
Miller, T., 2001, Hierarchical Operations and Supply Chain Planning, SpringerVerlag, Great Britain.
[Monma e Potts, 1989]
Monma, C. L. e Potts, C. N., 1989, “On the complexity of scheduling with batch
setup times”, Operations Research, 37, pp 798-804.
[Mukhopadhyay e Gupta, 1998]
Mukhopadhyay, S. K. e Gupta, A. V., 1998, “Interfaces for resolving marketing,
manufacturing and design conflits – a conceptual framework”, European Journal
of Marketing, 32, pp 101-124.
242
Bibliografia
[Murthy et al, 1999]
Murthy, S., Akkiraju, R., Goodwin, R., Keskinocak, P., Rachlin, J., Wu, F., Yeh, J.,
Fuhrer, R., Kumaran, S., Agarwal, A., Sturzenbecker, M., Jayaraman, R. e Daigle,
R., 1999, “Cooperative multiobjective decision support for the paper industry”,
Interfaces, 29, pp 5-30.
[Nemhauser e Park, 1991]
Nemhauser, G. e Park, S., 1991, “A Polyhedral Approach to Edge Coloring”,
Operations Research Letters, 10, pp 315 -322.
[Nonas e Thorstenson, 2000]
Nonas, S. L. e Thorstenson, A., 2000, “A combined cutting-stock and lot-sizing
problem”, European Journal of Operational Research, 120, pp 327-342.
[Noon e Bean, 1991]
Noon, C. E. e Bean, J. C., 1991, “A lagrangian based approach for the asymmetric
generalized traveling salesman problem”, Operations Research, 39, pp 623-632.
[Özdamar, Bozyel e Birbil, 1998]
Özdamar, L., Bozyel M. A., e Birbil, S. I., 1998, “A hierarchical support system for
production planning (with case study)”, European Journal of Operational
Research, 104, pp 403-422.
[Pickard e Yeager, 1997]
Pickard, G. e Yeager, R., 1997, “Paper machine scheduling yields gains at James
River Naheola Mill”, Pulp and Paper, 71, pp 125-129.
[Pierce, 1970]
Pierce, J. F., 1970, “Pattern sequencing and matching in stock cutting operations”,
Tappi, 53, pp 668-678.
[Potts e Van Wassenhove, 1992]
Potts, C. N. e Van Wassenhove, L. N., 1992, “Integrating scheduling with batching
and lot-sizing: a review of algorithms and complexity”, Journal of the Operational
Research Society, 43, pp 395-406.
[Potts e Kovalyov, 2000]
Potts, C. N. e Kovalyov, M. Y., 2000, “Scheduling with batching: a review”,
European Journal of Operational Research, 120, pp 228-249.
[Rasmussen, 1991]
Rasmussen, J., 1991, “Modelling distributed decision making”, in Rasmussen, J.,
Brehmer B. and Leplat, J. (eds.), Distributed decision making: cognitive models for
cooperative work, John Wiley & Sons Ltd.
[Respício, 1994]
Respício, A., 1994, “Um sistema de apoio à decisão no planeamento de produção”,
Investigação Operacional, 14, pp 184-205.
Bibliografia
243
[Respício e Captivo, 2001]
Respício, A. e Captivo. M.E., 2001, “Integrating the cutting stock problem in
capacity planning”, Actas de Optima 2001 - IV Congreso Chileno de Investigación
Operativa, Chile, 9 páginas.
[Respício e Captivo, 2002a]
Respício, A. e Captivo, M.E., 2002, “A bi-objective approach to sequencing cutting
patterns”, em revisão no Journal of Multiple Criteria Decision Analysis.
[Respício e Captivo, 2002b]
Respício, A. e Captivo, M.E., 2002, “Cutting stock within a production planning
problem: exact solutions”, comunicação apresentada em SICUP 2002, IFORS 2002,
the 16-th triennial conference of the International Federation of Operational
Research Societies, Escócia.
[Respício, Captivo e Paixão, 1996]
Respício, A., Captivo, M. E. e Paixão, J., 1996, “Scheduling of cutting orders in
paper rolls manufacturing”, comunicação apresentada no Symposium on
Combinatorial Optimization (CO96), Imperial College of Science, Technology and
Medicine, England.
[Respício, Captivo e Rodrigues, 2002]
Respício, A., Captivo, M. E. e Rodrigues, A. J., 2002, “A DSS for production
planning and scheduling in the paper industry”, Decision making and decision
support in the internet age - Proceedings of the DSIAge2002, pp 298-308.
[Sauter, 1997]
Sauter, V., 1997, Decision Support Systems: an applied managerial approach, John
Wiley & Sons, Inc, USA.
[Scheithauer e Terno, 1995a]
Scheithauer, G. e Terno, J., 1995, “A branch and bound algorithm for solving onedimensional cutting stock problems exactly”, Applicatione Mathematikae, 23, pp
151-167.
[Scheithauer e Terno, 1995b]
Scheithauer, G. e Terno, J., 1995, “The modified integer round-up property of the
one-dimensional cutting stock problem”, European Journal of Operational
Research, 84, pp 562-571.
[Scheithauer et al, 2001]
Scheithauer, G., Terno, J., Müller, A. e Belov, G., 2001, “Solving one-dimensional
cutting stock with a cutting plane algorithm”, Journal of the Operational Research
Society, 52, pp 1390-1401.
[Schneeweiss, 1995]
Schneeweiss, C., 1995, “Hierarchical structures in organisations – a conceptual
framework”, European Journal of Operational Research, 86, pp 5-31.
244
Bibliografia
[Schneeweiss, 1999]
Schneeweiss, C., 1999, Hierarchies in Distributed Decision Making, SpringerVerlag, Germany.
[Schilling e Georgiadis, 2002]
Schilling, G. e Georgiadis, M.C., 2002, “An algorithm for the determination of
optimal cutting patterns”, Computers & Operations Research, 29, pp 1041-1058.
[Schutten, 1996]
Schutten, J. M. J., 1996, Shop floor scheduling with setup times - efficiency versus
leadtime performance, Ph.D. thesis, Twente University, Twente, The Nederlands.
[Söhner e Schneeweiss, 1995]
Söhner, V. e Schneeweiss, C., 1995, “Hierarchically integrated lot size
optimization”, European Journal of Operational Research, 86, pp 73-90.
[Swamidass, Baines e Darlow, 2001]
Swamidass, P. M., Baines T. e Darlow, N., 2001, “The role of manufacturing and
marketing managers in strategy development – Lessons from three companies”,
International Journal of Operations and Production Management, 21, pp 933-948.
[Szczepánski e Wierzbicki, 2002]
Szczepánski M. e Wierzbicki A.P., 2002, “Multiple criteria evolutionary algorithms
in relation to reference point approaches and nadir estimation”, artigo apresentado
em MCDM Winter Conference 2002-16th MCDM world conference, Austria, 30
páginas.
[Thomas e McClain, 1993]
Thomas, L. J. e McClain, J. O., 1993, “An overview of production planning” in
Graves, S. C., Rinnooy Kan, A. H. G e Zipkin, P.H. (eds.), Logistics of Production
and Inventory, Handbooks in Operations Research and Management Science, 4,
North-Holland.
[Valério de Carvalho, 1999]
Valério de Carvalho, J. M., 1999, “Exact solution of bin-packing problems using
column generation branch-and-bound”, Annals of Operations Research, 86, pp 629659.
[Valério de Carvalho, 2002]
Valério de Carvalho, J. M., 2002, “LP models for bin packing and cutting stock
problems”, European Journal of Operational Research, 141, pp 253-273.
[Vance, 1993]
Vance, P., 1993, Crew scheduling, cutting stock, and column generation: solving
huge integer programs, Ph.D. thesis, Georgia Institute of Technology, Atlanta.
Bibliografia
245
[Vance, 1998]
Vance, P., 1998, “Branch-and-price algorithms for the one-dimensional cutting
stock problem”, Computational Optimization and Applications, 9, pp 211-228.
[Vance et al., 1996]
Vance, P., Barnhart, C., Johnson, E., e Nemhauser, G., 1996, “Solving binary
cutting stock problems by column generation and branch-and-bound”,
Computational Optimization and Applications, 3, pp 111-130.
[Vanderbeck, 1998]
Vanderbeck, F., 1998, “Lot-sizing with start-up times”, Management Science, 44,
pp 1409-1425.
[Vanderbeck, 1999]
Vanderbeck, F., 1999, “Computational study of a column generation algorithm for
bin packing and cutting stock problems”, Mathematical Programming, 86, pp 565594.
[Vanderbeck, 2000a]
Vanderbeck, F., 2000, “Exact algorithm for minimising the number of setups in the
one-dimensional cutting stock problem”, Operations Research, 48, pp 915-926.
[Vanderbeck, 2000b]
Vanderbeck, F., 2000, “On Dantzig-Wolfe decomposition in integer programming
and ways to perform branching in a branch-and-price algorithm”, Operations
Research, 48, pp 111-128.
[Vanderbeck e Wolsey, 1996]
Vanderbeck, F. e Wolsey, L., 1996, “An exact algorithm for IP column generation”,
Operations Research Letters, 19, pp 151-159.
[Veldhuizen e Lamont, 1998]
Veldhuizen D.A.V. e Lamont G.B., 1998, “Multiobjective evolutionary algorithm
research: A history and analysis”, Technical Report TR-98-03, Air Force Institute
of Technology, Wright-Patterson AFB: Ohio, 88 páginas.
[Wang e Wäscher, 2002]
Wang, P. e Wäscher, G., 2002, “Cutting and packing”, European Journal of
Operational Research, 141, pp 239-240.
[Wäscher e Gau, 1996]
Wäscher, G. e Gau, T., 1996, “Heuristics for the integer one-dimensional cutting
stock problem – a computational study”, Operations Research-Spektrum, 18, pp
131-144.
[Whang, 1995]
Whang, S., 1995, “Coordination in operations: a taxonomy”, Journal of Operations
Management, 12, pp 413-422.
246
Bibliografia
[Woerlee, 1991]
Woerlee, A. P., 1991, Decision support systems for production planning, Ph.D.
Thesis, Econometric Institute, Erasmus University Rotterdam, The Netherlands.
[Wolsey, 1998]
Wolsey, L. A.,1998, Integer Programming, John Wiley & Sons, Inc, United States
of America.
[Yanasse, 1997]
Yanasse, H., 1997, “On a pattern sequencing problem to minimize the maximum
number of open stacks”, European Journal of Operational Research, 100, pp 454463.
[Yuen, 1991]
Yuen, B. J., 1991, “Heuristics for sequencing cutting patterns”, European Journal
of Operational Research, 55, pp 183-190.
[Yuen, 1995]
Yuen, B. J., 1995, “Improved heuristics for sequencing cutting patterns”, European
Journal of Operational Research, 87, pp 57-64.
[Yuen e Richardson, 1995]
Yuen, B. J., e Richardson, K., 1995, “Establishing the optimality of sequencing
heuristics for cutting stock problems”, European Journal of Operational Research,
84, pp 590-598.
[Zitzler, 2002]
Zitzler E., 2002 (to appear), “Evolutionary algorithms for multiobjective
optimisation”, em EUROGEN 2001 - Evolutionary Methods for Design,
Optimisation and Control with Applications to Industrial Problems, Giannakoglou,
K., Tsahalis D., Periaux, J., Papailiou, K. e Fogarty, T. (eds.), 8 páginas.
[Zitzler, Deb e Thiele, 2000]
Zitzler E., Deb K. e Thiele L., 2000, “Comparison of multiobjective evolutionary
algorithms: empirical results”, Evolutionary Computation, 8, pp 173-195.
[Zitzler, Laumanns e Thiele, 2002]
Zitzler E., Laumanns M. e Thiele L., 2002 (to appear), “SPEA2: Improving the
Strength Pareto Evolutionary Algorithm for Multiobjective Optimisation”, em
EUROGEN 2001 - Evolutionary Methods for Design, Optimisation and Control
with Applications to Industrial Problems, Giannakoglou, K., Tsahalis, D., Periaux,
J., Papailiou, K., Fogarty, T. (eds.), 6 páginas.

Documentos relacionados