Você está na página 1de 40

UNIVERSIDADE FEDERAL DO CEARÁ

CENTRO DE TECNOLOGIA
CURSO DE ENGENHARIA CIVIL

LINDEMBERG OLIVEIRA DE ALMEIDA

UMA ABORDAGEM ITERATIVA E GRÁFICA DE RESOLUÇÃO DO PROBLEMA DE


SEQUENCIAMENTO CLÁSSICO

FORTALEZA
2007
i

LINDEMBERG OLIVEIRA DE ALMEIDA

UMA ABORDAGEM ITERATIVA E GRÁFICA DE RESOLUÇÃO DO PROBLEMA DE


SEQUENCIAMENTO CLÁSSICO

Monografia submetida à Coordenação do Curso de


Engenharia Civil da Universidade Federal do Ceará,
como requisito parcial para obtenção do grau de
Engenheiro Civil.

Orientador: Prof. Dr. José Lassance de Castro Silva

FORTALEZA
2007
ii

LINDEMBERG OLIVEIRA DE ALMEIDA

UMA ABORDAGEM ITERATIVA E GRÁFICA DE RESOLUÇÃO DO PROBLEMA DE


SEQUENCIAMENTO CLÁSSICO

Monografia submetida à Coordenação do Curso


de Engenharia Civil da Universidade Federal do
Ceará, como requisito parcial para obtenção do
grau de Engenheiro Civil.

Aprovada em ___/ ___/ ___

BANCA EXAMINADORA

José Lassance de Castro Silva


Universidade Federal do Ceará – UFC

Francisco Régis Abreu Gomes


Mestrando UFC

Prof. Mário Angelo Nunes de Azevedo Filho


Universidade Federal do Ceará – UFC
iii

A meus pais.
iv

AGRADECIMENTOS

Aos colegas da Engenharia pela amizade ao longo dos anos de estudo.


Ao povo brasileiro que trabalha muito e contribui com recursos para esta Universidade na qual
tive a oportunidade de aprender uma profissão.
v

"Há homens que lutam um dia e são bons.


Há outros que lutam um ano e são melhores.
Há os que lutam muitos anos e são muito bons.
Porém, há os que lutam toda a vida.
Esses são os imprescindíveis."

Bertolt Brecht.
vi

RESUMO

O Flowshop Scheduling Problem (FSP), também conhecido como Problema de


Sequenciamento Clássico, é um Problema de Otimização Combinatória Permutacional (POCP),
A grande variedade de POCP´s existentes, leva a pesquisa para o desenvolvimento de técnicas
cada vez mais sofisticadas aplicadas na resolução dos mesmos. O GraCOS é um método gráfico
de resolução dos POCP´s, constituído de um programa de computador ainda em fase de
desenvolvimento. Com o intuito de testar e avaliar o GraCOS, leituras a diversos artigos
científicos e sites web foram realizadas, assim como uma compreensão teórica do FSP e do
código fonte do GraCOS. Resultados animadores foram encontrados para certas instâncias do
FSP, mas ainda são elevados os desvios de algumas instâncias do problema. Recomenda-se uma
comparação do CraCOS com outros métodos de resolução do FSP, bem como a introdução do
fator tempo de cálculo como parâmetro do programa.

Palavras-chave: Combinatória, Permutação, Sequenciamento, Iteração e Otimização.


vii

LISTA DE FIGURAS

Figura 1: Interface gráfica do método ........................................................................................... 10


Figura 2:Pseudo-código do algoritmo que gera todas as permutações de J .................................. 12
Figura 3: Partição do conjunto S .................................................................................................. 13
Figura 4: Ilustração da janela de visualização das soluções avaliadas .......................................... 14
Figura 5: Desvios para a Instância 1 .............................................................................................. 16
Figura 6: Desvios para a Instância 2 .............................................................................................. 17
Figura 7: Desvios para a Instância 3 .............................................................................................. 17
Figura 8: Desvios para a Instância 4 .............................................................................................. 18
Figura 9: Desvios para a Instância 5 .............................................................................................. 18
Figura 10: Desvios para a Instância 6 ............................................................................................ 19
Figura 11: Desvios para a Instância 7 ............................................................................................ 19
Figura 12: Desvios para a Instância 8 ............................................................................................ 20
Figura 13: Desvios para a Instância 9 ............................................................................................ 20
Figura 14: Desvios para a Instância 10 .......................................................................................... 21
Figura 15: Desvio médio para n = 20 ............................................................................................ 21
Figura 16: Desvios para a Instância 31 .......................................................................................... 22
Figura 17: Desvios para a Instância 32 .......................................................................................... 22
Figura 18: Desvios para a Instância 33 .......................................................................................... 23
Figura 19: Desvios para a Instância 34 .......................................................................................... 23
Figura 20: Desvios para a Instância 35 .......................................................................................... 24
Figura 21: Desvio Médio para n = 50 ............................................................................................ 24
Figura 22: Desvios para a Instância 61 .......................................................................................... 25
Figura 23: Desvios para a Instância 62 .......................................................................................... 25
Figura 24: Desvios para a Instância 63 .......................................................................................... 26
Figura 25: Desvios para a Instância 64 .......................................................................................... 26
Figura 26: Desvios para a Instância 65 .......................................................................................... 27
Figura 27: Desvio Médio para n = 100 .......................................................................................... 27
Figura 28: Histograma de desvios percentuais .............................................................................. 28
viii

LISTA DE TABELAS

Tabela 1: Permutações para n=4.................................................................................................... 12


Tabela 2: Soluções de S4 associadas com os pontos da figura 4, com base em α ........................ 15
ix

SUMÁRIO

RESUMO ....................................................................................................................................... vi
LISTA DE FIGURAS ................................................................................................................... vii
LISTA DE TABELAS ................................................................................................................. viii
SUMÁRIO ...................................................................................................................................... ix
CAPÍTULO 1 .................................................................................................................................. 1
INTRODUÇÃO ............................................................................................................................... 1
1.1. Considerações Iniciais .......................................................................................................... 1
1.2. Justificativa do Tema Abordado ........................................................................................... 1
1.3. Objetivos............................................................................................................................... 2
1.4. Metodologia .......................................................................................................................... 2
1.5. Estrutura do trabalho ............................................................................................................ 3
CAPÍTULO 2 .................................................................................................................................. 4
O PROBLEMA DE SEQUENCIAMENTO CLÁSSICO ............................................................... 4
2.1. Definição do Problema ......................................................................................................... 4
2.2. Histórico do Problema .......................................................................................................... 6
2.3. Abordagens de solução do FSP ............................................................................................ 8
CAPÍTULO 3 .................................................................................................................................. 9
O MÉTODO GRACOS ................................................................................................................... 9
3.1. Definição .............................................................................................................................. 9
3.2. Abordagem Gráfica do GraCOS......................................................................................... 11
CAPÍTULO 4 ................................................................................................................................ 16
EXPERIMENTOS COMPUTACIONAIS .................................................................................... 16
4.1. Análise e discussão ............................................................................................................. 16
CAPÍTULO 5 ................................................................................................................................ 29
CONCLUSÃO ............................................................................................................................... 29
REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................................... 30
1

CAPÍTULO 1

INTRODUÇÃO

1.1. Considerações Iniciais


Conforme Silva e Soma (2001), a grande variedade de Problemas de Otimização
Combinatória Permutacional (POCP) existentes, leva a pesquisa para o desenvolvimento de
técnicas cada vez mais sofisticadas aplicadas na resolução dos mesmos. Neste campo, ainda não
se tem uma ferramenta que forneça ao usuário selecionar um procedimento padrão a ser utilizado
na resolução eficiente e eficaz de cada um desses problemas. Haja vista que esses problemas,
geralmente, são extremamente complexos, exigindo uma grande quantidade de recursos
computacionais para resolvê-los, principalmente aqueles de médio e/ou grande porte.
Exemplos de POCPs clássicos são: O Problema de Corte e Empacotamento (1D, 2D e
3D), o Problema da Programação Flow Shop Permutacional (FSP), o Problema do Caixeiro
Viajante, O Problema de Localização de Facilidades Capacitado, O Problema de Transporte,
entre outros. A maioria destes problemas específicos pertence à classe dos problemas NP-difícil.
Na prática, novas restrições são adicionadas aos problemas clássicos tornando sua resolução mais
difícil ainda.
O GraCOS (Graphic Combinatorial Optimization System) dentro deste contexto, é um
novo método de resolução destes problemas, baseado em um software desenvolvido pelo
professor Dr. José Lassance de Castro Silva, do Departamento de Matemática Aplicada da
Universidade Federal do Ceará, visando atender a demanda de resolução dos POCP´s através de
um método simples e objetivo de resolução gráfica.
O método GraCOS ainda está em fase de desenvolvimento, mas já existem resultados
parciais na resolução do FSP, conforme será mostrado neste trabalho.

1.2. Justificativa do Tema Abordado

As motivações práticas para o estudo do FSP, assim como dos demais POCP, vêm da
grande quantidade de aplicações industriais por ele modelados, as quais variam do carregamento
2

de cargas em aviões ao sequenciamento (escalonamento) de tarefas em ambientes multi-


processados.
Uma integração do usuário tanto na forma de resolver o problema quanto na produção de
soluções a serem apresentadas para o mesmo é de vital importância para a eficiência do método
de resolução proposto, ainda que isto possa ser programado de forma transparente ao usuário,
sendo executado de forma automática.

1.3. Objetivos
O objetivo geral deste trabalho é aplicar e avaliar o GraCOS na resolução do Problema de
Sequenciamento Clássico (Flowshop Scheduling Problem).
Os objetivos específicos deste trabalho são:
a) Testar e avaliar o GraCOS nas instâncias do Problema de Seqüenciamento Clássico
(Flowshop Scheduling Problem), encontradas na literatura;
b) Descrever a estrutura utilizada no método para resolver o Problema.

1.4. Metodologia
A metodologia foi composta de cinco etapas, apresentadas a seguir.
(i) Revisão bibliográfica
Na revisão bibliográfica, foram consultadas fontes de pesquisa, tais como artigos
científicos e sites web, na área de Pesquisa Operacional, que tratam do estado da arte da
resolução do FSP e de outros POCP´s.

(ii) Compreensão do GraCOS


Nesta etapa foi feita a leitura do código fonte do GraCOS e de relatórios parciais que
ratavam do desenvolvimento do programa e de suas diversas características. O objetivo desta
etapa foi compreender o funcionamento do método e do software GraCOS.

(iii) Experimentos computacionais


Nesta etapa da pesquisa foram realizados testes em determinadas instâncias do FSP no
GraCOS.

(iv) Análise e discussão de resultados


3

Nesta etapa foram construídos gráficos contendo os resultados do programa. Baseado


nestes gráficos foram feitas algumas observações sobre o desempenho do GraCOS.

(v) Conclusões
Nesta etapa da pesquisa foram apresentadas algumas conclusões baseadas no desempenho
do CraCOS observado nas etapas anteriores.

1.5. Estrutura do trabalho


A monografia é composta por cinco capítulos, descritos a seguir. O primeiro capítulo
constitui a introdução do trabalho. O segundo capítulo descreve o estado da arte do FSP. No
terceiro capítulo descreve o GraCOS. O quarto capítulo apresenta e discute os resultados dos
experimentos computacionais .Por fim, no quinto capítulo, são apresentadas as principais
conclusões acerca do trabalho, bem como sugestões e recomendações para estudos futuros.
4

CAPÍTULO 2

O PROBLEMA DE SEQUENCIAMENTO CLÁSSICO

2.1. Definição do Problema


Segundo Silva e Soma (2006), o Flowshop Scheduling Problem (FSP), também
denominado de Problema de Sequenciamento Clássico, tem a seguinte característica: queremos
realizar n tarefas J1, J2,..., Jn, onde cada tarefa tem para ser processada m máquinas M1, M2, ...,
Mm. Cada tarefa demanda m operações, com uma operação representando o tempo de
processamento da tarefa por máquina. As tarefas seguem o mesmo fluxo de operações nas
máquinas, isto é, para qualquer j =1,2,..., n, a tarefa Jj deve ser processada primeiro na máquina
M1 , depois na máquina M2, e assim por diante até a última máquina, no caso máquina Mm.
Caso a tarefa Jj não utilize todas as máquinas, o seu fluxo continua sendo o mesmo, todavia com
o tempo de ocupação sendo igual a zero. Uma máquina pode processar somente uma operação de
cada vez, e iniciada uma operação, ela deva ser processada até a sua conclusão. O número de
seqüências distintas possíveis para realização das tarefas nas máquinas é grande, i. e. O(n!). O
problema consiste em realizar todas as n tarefas no menor tempo possível. Um problema de
sequenciamento clássico é, portanto, caracterizado por um mais ou menos contínuo e ininterrupto
fluxo de tarefas através de múltiplas máquinas em série. Para um FSP contínuo o processamento
de cada tarefa deve ser contínuo, o que significa que não existe nenhum tempo de espera entre o
processamento de quaisquer tarefas consecutivas. Para permitir o processamento de uma tarefa
sem interrupção em todas as máquinas, a ordem na qual as tarefas são processadas em uma
máquina é a mesma para todas as máquinas, assumindo que os tempos de processamento não são
nulos.
A seguir é demonstrada uma ilustração da rotina de resolução de um FSP:
Seja (n,m)=(número de tarefas, número de máquinas)=(4,3). Temos como dados coletados
em campo a seguinte matriz de tempos de trabalho em segundos:

3 1 2
5 2 1
Oij = , onde oij representa o tempo de trabalho da tarefa i na máquina j.
1 3 4
7 2 1
5

Vamos escolher uma sequência qualquer de tarefas: π1 = {2, 1, 3, 4}. Vale lembrar que as
tarefas variam de i igual a 1 até 4 neste exemplo. Observando a matriz de tempos, percebe-se que
a tarefa 2, primeira da sequência, realiza-se em 5 segundos. Prosseguindo nesta observação e
fazendo uma sequência de realização da sequência, obtemos o seguinte diagrama de Gant:

M3

M2

M1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 s

Legenda:

tarefa 2
tarefa 1
tarefa 3
tarefa 4

O tempo de processamento da sequência de tarefas, também chamado de makespan, foi,


para a sequência π1, de 20 segundos.
Agora, para ilustrar o objeto do nosso estudo, vamos escolher uma nova sequência
qualquer de tarefas: π2 = {4, 1, 2, 3}. Obtemos, para esta nova sequência, o seguinte diagrama de
Gant:
6

M3

M2

M1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 s

Legenda:

tarefa 4
tarefa 1
tarefa 2
tarefa 3

Observa-se que o makespan para a sequência π2 foi de 24 segundos. Portanto, dentre as


sequências observadas, a melhor foi π1, pois o tempo de processamento dela foi menor.

2.2. Histórico do Problema


Segundo Gupta e Stafford Jr. (2006), o primeiro trabalho sobre o Problema de
Sequenciamento Clássico foi publicado cinqüenta anos atrás. Durante os 50 anos após Johnson,
em 1954, ter publicado seu primeiro artigo sobre o Problema de Sequenciamento, mais de 1200
novos artigos tratando de diversos aspectos deste problema foram publicados na literatura de
pesquisa operacional.
Durante a primeira década, de 1955 a 1964, foram desenvolvidos trabalhos sobre o
problema de minimização do tempo total de produção para m máquinas e a inclusão de lapsos de
tempo de parada e início no problema de sequenciamento para duas máquinas. As primeiras
pesquisas em FSP eram altamente teóricas, e tendiam para técnicas de otimização como por
exemplo programação matemática. Assim, esta década viu consideráveis métodos de
programação matemática por um lado, e por outro o uso de técnicas de modelização de Monte
Carlo. Enquanto somente algumas técnicas de resolução foram desenvolvidas durante esta
década, várias configurações de processamento alternativas e cenários foram identificados para
FSP.
Os tamanhos dos problemas resolvíveis nestes esforços iniciais de pesquisa eram muito
pequenos por três razões: falta de potência computacional, falta de eficientes programas de
computador e, mais importante ainda, a maioria das variantes do problema de sequenciamento
clássico para duas máquinas eram difíceis. Por volta do início dos anos 60, pesquisadores
7

estavam prontos para abranger a análise de Johnson para o caso e m máquinas. Assim, por
exemplo, o método combinatório que Johnson usou para o problema de duas máquinas foi
estendido para o FSP de m máquinas por Dudek e Teuton (1964). Embora isto tenha sido
comprovadamente julgado como incorreto mais tarde, foi iniciado a partir daí a rede de trabalho
analítica para o desenvolvimento de condições domináveis para o FSP.
A segunda década (1965-1974) proporcionou um alargamento do grupo de métodos
resolutivos por um lado e a consideração de funções objetivas além do tempo de produção por
outro lado.
Durante a terceira década (1975-1984) o crescimento de teorias as mais diversas teve um
profundo impacto na direção dos desenvolvimentos em FSP. Por um lado, existiam
desenvolvimentos para resolver o status de complexidade de vários FSP, por outro lado, muitos
métodos heurísticos foram desenvolvidos durante este período.
Durante a quarta década (1985-1994) houve um crescimento de problemas híbridos onde
cada estágio poderia conter múltiplas máquinas em paralelo, além do desenvolvimento de
metaheurísticas como Pesquisas Tabu, Algoritmos Genéticos e Anelamento Simulado. Como um
resultado da consideração de várias funções objetivas e vários métodos heurísticos, nós
observamos a expansão dos esforços em resolver FSP com dispositivos iniciantes separáveis que
poderiam ser tanto de seqüência independente como de seqüência dependente. Enquanto tais
problemas foram identificados por volta de 1969 e muitas técnicas de solução foram
desenvolvidas em torno deste ano, os desenvolvimentos na quarta década são significativos. Esta
década também revelou o uso de técnicas baseadas na inteligência artificial para resolver FSP.
A proliferação de variedades de FSP, funções objetivas e métodos de resolução continuou
durante a quinta década (1995-2004). Esta década viu diversos desenvolvimentos e
melhoramentos aos já identificados e estudados FSP. Ela também viu significativos progressos
no desenvolvimento de procedimentos de soluções para sequenciamentos robóticos e equipados
com veículos guiados automaticamente. Adicionalmente, por causa dos recentes avanços nas
eficiências computacionais, existe um renovado interesse no uso de métodos de programação
matemática para FSP. Enquanto a evolução dos problemas de sequenciamento foi agrupada ao
longo das cinco décadas desde a publicação dos trabalhos de Johnson, pode-se dizer que a
maioria dos FSP foi formulada durante as duas primeiras décadas. Uma vez um problema é
8

identificado e algum progresso na sua resolução é alcançado, pesquisas e posteriores


desenvolvimentos relacionados à este problema continuam através das décadas subseqüentes.

2.3. Abordagens de solução do FSP


Segundo Ruiz (2004), geralmente, o FSP pode ser resolvido com ambos os métodos
exatos ou heurísticos. Métodos exatos são praticáveis somente para pequenas instâncias (menos
de 15-20 tarefas). Entretanto, algumas formas de técnicas exatas podem ser usadas na obtenção
de soluções ótimas para grandes instâncias quando as começam de uma alta qualidade, quase-
ótimas soluções obtidas por avançadas metaheurísticas. Pesquisadores têm focado seus esforços
principalmente em torno de métodos heurísticos. As heurísticas para o FSP podem ser divididas
em métodos construtivos e de melhoramento. Existem muitas heurísticas construtivas
disponíveis. Um dos métodos primeiramente estabelecidos é mais conhecido como algoritmo de
Johnson (em 1954). As heurísticas de Palmer em 1965, Gupta em 1971, Campbell et al. Em 1970
e o Procedimento de Rápido Acesso de Dannenbring em 1977, são também bons exemplos de
métodos construtivos. É comumente aceito que a heurística de Nawaz et al. em 1983 é o método
construtivo mais efetivo para o FSP. Entretanto, existem mais métodos recentemente publicados,
como por exemplo as heurísticas de Koulamas em 1998 e Davoud Pour em 2001.
Quanto às heurísticas de melhoramento, Dannenbring propôs dois diferentes métodos,
chamados RACS e RAES. O algoritmo de Ho and Chang em 1991 e a mais recente heurística de
melhoramento de Suliman em 2000 são também bons exemplos.
Metaheurísticas podem também ser consideradas como heurísticas de melhoramento.
Dentro deste tipo de técnicas podemos citar os Algoritmos Genéticos, simulated annealing,
pesquisa tabu e outros procediemntos ou métodos híbridos.
As primeiras metaheurísticas propostas para o FSP foram os algoritmos simulated
annealing Osman and Potts em 1989 e Ogbu e Smith em 1990. Widmer e Hertz em 1989,
Taillard em 1990, Reeves em 1993 e Nowicki e Smutnicki em 1996 demonstraram diferentes
métodos de pesquisa tabu. Rajendran e Ziegler em 2004 propuseram dois algoritmos de
otimização bastante eficientes e Grabowski e Wodecki em 2004 um método de pesquisa tabu
bastante rápido.
Campbell et al. em 1970, Lingle em 1985, Chen et al. Em 1995, Goldberg and. Reeves em
1995, Murata et al. em 1996, Reeves and Yamada em 1998, Ponnambalam et al. em 2001 e
Aldowaisan e Allahvedi em 2003 são exemplos dos mais importantes trabalhos publicados em
Algoritmos Genéticos aplicados ao FSP. Todos os anteriormente citados trabalhos em Algoritmos
Genéticos utilizam técnicas metodológicas para obter a correta escolha de operadores e
parâmetros.
9

CAPÍTULO 3

O MÉTODO GRACOS

3.1. Definição
O método de resolução, denominado GraCOS (Graphic Combinatorial Optimization
System), constitui-se numa nova metodologia de resolução do POCP, onde o usuário poderá
interagir diretamente na resolução do problema através de procedimentos e acompanhamentos
gráficos quando o algoritmo de resolução do problema ainda está sendo executado. Esta proposta
é inovadora e não há, na literatura, algo parecido, conforme pesquisa realizada.
De acordo com Silva e Soma (2001), um POCP pode ser configurado por um terno (S, g,
n), onde: S é o conjunto de soluções do problema, n é um input do problema e g é uma função ou
um procedimento que avalia cada solução s de S. Geralmente g está relacionada com a função
objetiva do modelo matemático do problema e, o conjunto S é formado por todas as permutações
de 1, 2, ..., n, que possui n! elementos distintos.
O método de resolução GraCOS será assim constituído:
1o) Para cada ponto p(x,y), com coordenadas x e y dentro de uma área gráfica pré-estabelecida,
far-se-á uma associação com uma e somente uma solução viável do problema s ∈ S. Isto gera
uma correspondência biunívoca de cada ponto p(x,y) desta área com cada elemento s do
conjunto S.
2o) Seleciona-se um tipo de figura a ser preenchida uniformemente dentro da área gráfica. Cada
tipo de figura representa um número de soluções (em percentual) a serem avaliadas dentre
aquelas configuradas no conjunto de soluções viáveis S. Este número é calculado com base
no número de pontos ativos existentes na figura selecionada. Pontos ativos de uma figura são
aqueles pontos plotados com a cor vermelha dentro da figura.
3o) Antes de um ponto ser plotado na área gráfica, conforme a figura selecionada, um algoritmo
avaliará a solução s associado a este ponto, determinando uma cor para o mesmo de acordo
com o valor do seu desvio. O desvio é encontrado fazendo o seguinte cálculo desvio =
100×(g(s) – z)/z), onde z é um limitante para o problema.
4o) Após ser preenchida toda a área gráfica, com cada ponto plotado de acordo com sua
respectiva cor, relacionada com o desempenho da solução associada, pode-se observar onde
se encontram os pontos de mínimos e/ou máximos locais para o problema. Daí usa-se esta
10

informação para fazer uma nova incursão dentro do conjunto de soluções viáveis do
problema, para a busca de soluções viáveis cada vez melhores que as soluções até então
avaliadas. Nesta fase far-se-á o processo de intensificação, onde serão avaliadas todas as
soluções que ainda não foram avaliadas dentro de um quadrado com lado r e centro em p*(x,
y). O ponto selecionado para ser o centro do quadrado é aquele que obteve, até então a melhor
avaliação, ou seja, aquele que represente uma boa solução para o problema.
5o) A solução a ser apresentada para o problema será aquela que obteve o menor desvio. A figura
1, a seguir, dá uma idéia de como o método funciona. Neste exemplo, foi selecionado o tipo
de figura a, para preencher toda a área gráfica, e feita a legenda para a tabela de cores a serem
utilizadas na plotagem dos pontos ativos da figura selecionada. Finalmente foi selecionado o
ponto da posição x=271 e y=121 para ser feita a intensificação, devido este estar associada a
melhor solução encontrada até aquele momento. Na intensificação, será feita uma nova busca,
com base nos pontos que se encontram dentro do quadrado centrado em p(271,121).

Figura 1: Interface gráfica do método

O GraCOS foi implementado na linguagem C++, utilizando-se para isto o compilador C++
Builder.
11

3.2. Abordagem Gráfica do GraCOS


Para poder entender os procedimentos gráficos do GraCOS faremos uma breve descrição da
lógica utilizada. Antes de inicializar os procedimentos de acompanhamento gráfico e resolução
do problema supõe-se que o usuário informou de forma coerente todos os seguintes parâmetros:
Tipo de POCP, Tipo de Instância, Tipo de Limite, Procedimento de Avaliação, Percentual de
Preenchimento, Tipo de Figura e Tipo de Preenchimento. Uma rotina deverá ser executada, antes
de iniciar a resolução gráfica, para verificar se todos os campos no formulário principal foram
preenchidos. Caso contrário é solicitado ao usuário fazer o devido preenchimento, através da
apresentação de uma janela identificando os campos sem preenchimento.
Um Problema de Otimização Combinatória Permutacional (POCP) pode ser definido
como foi mencionado anteriormente por um terno (S, g, n), onde S é o conjunto de todas as
soluções viáveis (soluções que satisfazem as restrições do problema, com #S=n!), g é uma função
ou um procedimento que associa a cada solução s ∈ S um número real e n é uma instância do
problema. O objetivo é encontrar a solução s ∈ S que minimize (ou maximize) a função objetiva
g. Podemos representar s como uma permutação de n elementos distintos, ou seja, s=< a1 a2 ... an
>. N(s) é chamada a vizinhança de s e contém todas as soluções que podem ser alcançadas de s
por um simples movimento. Aqui, o significado de um movimento é aquele de um operador que
transforma uma solução para uma outra com pequenas modificações. Uma solução x é chamada
mínimo local de g com respeito a vizinhança N se e somente se g(x)≤g(y), ∀ y ∈ N.
Dado um conjunto com n elementos distintos J={1, 2, 3, ..., n}, determinar todas as
permutações possíveis e distintas com todos os elementos deste conjunto é encontrar todas as
combinações do tipo sq = < a1, a2, a3, ..., an >, com q=1, 2, ..., n!, onde a1, a2, a3, ..., an são
todos elementos distintos pertencentes ao conjunto J. A ordem em que se encontram os elementos
de s é levada em consideração.
Seja α um número inteiro, não negativo e menor ou igual a n!, então podemos escrever α
como uma combinação linear de (n-1)!, (n-2)!, (n-3)!, ..., 3!, 2!, 1!, ou seja, α=bn-1(n-1)! + bn-2(n-
2)! + ... + b3 3! + b2 2! + b1 1!, tal que 0≤ bi ≤i, com i=1, 2, 3, ..., (n-1). Denominamos bn-1, bn-2,
..., b3, b2, b1, de coeficientes de α na base fatorial de (n-1). A figura 2, dada abaixo, mostra um
procedimento para determinar todas as permutações de J, de forma seqüencial, com base na
determinação dos coeficientes de α na base fatorial de (n-1). A tabela 1, dada a seguir, ilustra a
execução do método para n=4.
12

Procedimento Gerar_Permutações;
INPUT: n;
OUTPUT: P (uma permutação de J)

P=0; // P é o vetor nulo com n posições


Para i=0 até (n! –1) faça
Determine os coeficientes bn-1, bn-2, ..., b3, b2, b1 de i;
Para j=1 até (n-1) faça // Construção da i-ésima permutação
Coloque j no (bn-j + 1)° zero encontrado em P, fazer a busca da esquerda
para a direita;
Substitua o único zero em P por n;
Escreva P;
P=0;
Figura 2:Pseudo-código do algoritmo que gera todas as permutações de J

α (b3, b2, b1) P α (b3, b2, b1) P α (b3, b2, b1) P


00 (0,0,0) <1234> 08 (1,1,0) <3124> 16 (2,2,0) <3412>
01 (0,0,1) <1243> 09 (1,1,1) <4123> 17 (2,2,1) <4312>
02 (0,1,0) <1324> 10 (1,2,0) <3142> 18 (3,0,0) <2341>
03 (0,1,1) <1423> 11 (1,2,1) <4132> 19 (3,0,1) <2431>
04 (0,2,0) <1342> 12 (2,0,0) <2314> 20 (3,1,0) <3241>
05 (0,2,1) <1432> 13 (2,0,1) <2413> 21 (3,1,1) <4231>
06 (1,0,0) <2134> 14 (2,1,0) <3214> 22 (3,2,0) <3421>
07 (1,0,1) <2143> 15 (2,1,1) <4213> 23 (3,2,1) <4321>
Tabela 1: Permutações para n=4

O método empregado na resolução do problema particiona o conjunto S em n


subconjuntos S1, S2, ..., Sn, onde: a união de todos esses subconjuntos é igual ao conjunto S; e a
interseção entre dois deles quaisquer é vazia. Todos os elementos do conjunto Si, com i=1, 2, ...,
n, são permutações que estão associadas aos valores de α entre (i-1)((n-1)!) e (i((n-1)!)-1. Para o
13

exemplo dado anteriormente (n=4) teríamos S1={<1234>, <1243>, <1324>, <1423>, <1342>,
<1432>}, S2={<2134>, <2143>, <3124>, <4123>, <3142>, <4132>} S3={ <2314>, <2413>,
<3214>, <4213>, <3412>, <4312>}, S4 ={ <2341>, <2431>, <3241>, <4231>, <3421>, <4321>.
A figura 3, abaixo, ilustra a partição do conjunto S para o caso geral.

Figura 3: Partição do conjunto S

No GraCOS, visualizamos graficamente a avaliação das soluções geradas do problema


para cada conjunto Si, com i=1,2, ..., n, apresentando o seu mínimo local. Depois de avaliado Sn é
que apresentamos a solução ótima do problema, ou melhor solução encontrada para o problema
através do método de resolução proposto. A visualização é realizada através de uma janela
gráfica com dimensão de k linhas e v colunas, cuja unidade de medida é o pixel, com k e v
números pares. Definimos um ponto desta janela, de tamanho 2x2 pixels, para representar um
conjunto de soluções (permutações) do problema ordenadas em ordem crescente de acordo com o
seu número α associado. Neste conjunto, relacionado com o referido ponto, somente a primeira
solução será avaliada. A Figura 4, abaixo, mostra uma ilustração para n=6, k=8, v=6 e cada ponto
representando um conjunto com 10 soluções de Si, com i=1, 2, ..., 6, e cada Si possuindo 120 ((n-
1)!=5!) soluções distintas.
14

Figura 4: Ilustração da janela de visualização das soluções a valiadas

Assim, podemos ver que se tivermos Pt = (k/2)(v/2) = (k*v)/4 pontos, então isto implica
que teremos R = (n-1)! / Pt soluções (permutações) associadas a cada ponto, ou seja, no
exemplo mostrado tem-se Pt=12 e R=10. Quando (n-1)!/Pt não for um número inteiro tem-se que
o último ponto conterá um conjunto com um número de soluções igual ao resto da divisão de (n-
1)! por Pt, ou seja, o último ponto terá (n-1)! Mod Pt soluções associadas. Para identificarmos as
coordenadas (x, y) de um ponto na janela gráfica far-se-á x= x1/2 e y= y1/2 , onde x1 e y1 são
as coordenadas de pixel da janela gráfica, por exemplo: o ponto (2,1) corresponde a qualquer uma
das coordenadas de pixel (4,2), (4,3), (5,2) ou (5,3). Cada ponto corresponde a um número
natural ordenado da esquerda para a direita e de cima para baixo, iniciando em zero e finalizando
em ((k-1)/2 * (v/2) + (v-1)/2). O ponto de coordenada (x, y) corresponde ao número natural y
* (v/2) + x. Vale ressaltar que os valores de k e v dependem do valor de n, com o intuito de evitar
que algum ponto fique sem pelo menos uma solução do problema associado com o mesmo ((k*v)
≤4*(n-1)!).

Dentro desta abordagem, para algum Si, 1≤i≤n, temos que o intervalo para os valores de α
estão compreendidos entre (i-1)((n-1)!) + Rw (limite inferior) e (i-1)((n-1)!) + R(w+1) - 1 (limite
superior), para o ponto de número w. Caso (n-1)!/Pt não seja um número inteiro, então o limite
superior para o intervalo de α, do maior valor de w, será (i((n-1)!)-1. A tabela 2, dada a seguir,
15

mostra os 12 pontos da Figura 4 com suas respectivas soluções, para S4, que correspondem aos
intervalos dos números α.
Ponto α Ponto α
0 360, ..., 369 6 420, ..., 429
1 370, ..., 379 7 430, ..., 439
2 380, ..., 389 8 440, ..., 449
3 390, ..., 399 9 450, ..., 459
4 400, ..., 409 10 460, ..., 469
5 410, ..., 419 11 470, ..., 479
Tabela 2: Soluções de S4 associadas com os pontos da figura 4, com base em α

O preenchimento da janela gráfica depende do tipo de figura e tipo de preenchimento,


determinado anteriormente. A Figura 5, abaixo, ilustra uma situação onde o preenchimento da
área gráfica, de dimensão 75x45 pontos, foi feito com base numa figura, de dimensão 10x10
pontos, com 6% de preenchimento bem esparso desta área (06 pontos azuis), denominada gif de
preenchimento. Este procedimento de preencher toda a área gráfica com a gif selecionada é
equivalente a avaliar aproximadamente 6% das soluções viáveis para o problema selecionado.
Observe que, na última faixa vertical, à direita, e última faixa horizontal, de baixo, da área de
preenchimento não coube a gif de forma integral nos respectivos espaços, sendo plotada nestas
áreas apenas a parte cabível desta gif. A gif na verdade é um procedimento transparente ao
usuário e descreve o número de pontos e as coordenadas destes pontos plotados dentro da sua
área. No caso da gif da Figura 5, os pontos de coordenadas (0,9), (2,2), (2,7), (7,2), (7,7) e (9,9)
seriam os 6 pontos plotados dentro da área desta figura.
16

CAPÍTULO 4

EXPERIMENTOS COMPUTACIONAIS

4.1. Análise e discussão


Vários experimentos computacionais foram realizados visando observar o desempenho do
GraCOS, executado em um Pentium 4 (1,8 GHz, 256 Mb de RAM).
Instâncias são os valores da variáveis de um problema. O GraCOS mostra os valores de
desvio nas instâncias de 1 a 90, benchmarks de Taillard, encontradas na ORLibrary (2007).
Os gráficos a seguir, mostram o desempenho do método quando aplicado nas instâncias
de n x m (número de trabalhos por número de máquinas) igual a 20 x 5, 50 x 5 e 100 x 5, com
amostras de 10, 5 e 5 instâncias respectivamente.
A figura de preenchimento utilizada neste experimento corresponde ao valor de 5%, o que
significa que 5% das soluções representadas pela área gráfica serão avaliadas.

Instância 1

4
Desvio

2
1

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 5: Desvios para a Instância 1


Nesta instância percebe-se uma repetição dos valores de desvio em 3,59%, que é o valor
mínimo. O valor médio ficou em 3,74% e o máximo em 5,39%.
17

Instância 2

8
7
6
5
Desvio

4
3
2
1
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 6: Desvios para a Instância 2


Para a instância 2 observa-se uma maior variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio de 1,98%. O desvio mínimo foi de 1,10%.
o máximo de 7,28% e o médio de 2,22%.

Instância 3

20

15
Desvio

10

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 7: Desvios para a Instância 3


Para a instância 3 observa-se uma certa variabilidade dos desvios, apresentando um
comportamento divergente com repetições do desvio de 16,28%. O desvio mínimo foi de
13,97%, o máximo de 18,04% e o médio de 16,32%.
18

Instância 4

14
12
10
Desvio

8
6
4
2
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 8: Desvios para a Instância 4


Para a instância 4 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio de 9,74%. O desvio mínimo foi de 9,74%,
o máximo de 12,91% e o médio de 10,55%.

Instância 5

7,0000
6,0000
5,0000
Desvio

4,0000
3,0000
2,0000
1,0000
0,0000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 9: Desvios para a Instância 5


Para a instância 5 observa-se uma relativa variabilidade dos desvios, com repetições em
maior número do desvio de 9,74%. O desvio mínimo foi de 9,74%, o máximo de 12,91% e o
médio de 4,41%.
19

Instância 6

12
10
8
Desvio

6
4
2
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 10: Desvios para a Instância 6


Para a instância 6 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio de 7,95%. O desvio mínimo foi de 7,11%,
o máximo de 10,46% e o médio de 8,12%.

Instância 7

8
7
6
5
Desvio

4
3
2
1
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 11: Desvios para a Instância 7


Para a instância 7 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio de 5,16%. O desvio mínimo foi de 4,44%,
o máximo de 6,94% e o médio de 5,53%.
20

Instância 8

14
12
10
Desvio

8
6
4
2
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 12: Desvios para a Instância 8


Para a instância 8 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente sem repetições expressivas. O desvio mínimo foi de 8,62%, o
máximo de 11,52% e o médio de 10,05%.

Instância 9

16
14
12
10
Desvio

8
6
4
2
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 13: Desvios para a Instância 9


Para a instância 9 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 9,59%. O desvio mínimo foi de 9,35%, o
máximo de 13,41% e o médio de 10,15%.
21

Instância 10

16
14
12
10
Desvio

8
6
4
2
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Iteração

Figura 14: Desvios para a Instância 10


Para a instância 10 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 9,11%. O desvio mínimo foi de 8,12%, o
máximo de 13,36% e o médio de 9,63%.

Desvio Médio n=20

18
16
14
Desvio Médio

12
10
8
6
4
2
0
1 2 3 4 5 6 7 8 9 10
Instância

Figura 15: Desvio médio para n = 20

Com relação ao desvio médio, observa-se um desvio médio geral mínimo para a instância
2 e um máximo para a instância 3.
22

Instância 31

6
5

4
Desvio

3
2

1
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
Iteração

Figura 16: Desvios para a Instância 31

Para a instância 31 observa-se uma média variabilidade dos desvios, apresentando um


comportamento convergente com repetições principalmente do desvio 2,72%. O desvio mínimo
foi de 2,50%, o máximo de 4,95% e o médio de 3,25%.

Instância 32

9
8
7
6
Desvio

5
4
3
2
1
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
Iteração

Figura 17: Desvios para a Instância 32


Para a instância 32 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 7,06%. O desvio mínimo foi de 6,07%, o
máximo de 8,53% e o médio de 7,05%.
23

Instância 33

12
10
8
Desvio

4
2

0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
Iteração

Figura 18: Desvios para a Instância 33


Para a instância 33 observa-se uma pequena variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 6,42%. O desvio mínimo foi de 5,49%, o
máximo de 9,95% e o médio de 6,24%.

Instância 34

10

6
Desvio

0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
Iteração

Figura 19: Desvios para a Instância 34


Para a instância 34 observa-se uma relativa variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 6,47%. O desvio mínimo foi de 6,29%, o
máximo de 8,80% e o médio de 6,90%.
24

Instância 35

9
8
7
6
Desvio

5
4
3
2
1
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
Iteração

Figura 20: Desvios para a Instância 35


Para a instância 35 observa-se uma média variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 5,03%. O desvio mínimo foi de 3,52%, o
máximo de 7,92% e o médio de 5,15%.

Desvio Médio n=50

8
7
6
Desvio Médio

5
4
3
2
1
0
31 32 33 34 35
Instância

Figura 21: Desvio Médio para n = 50


Com relação ao desvio médio, observa-se um desvio médio geral mínimo para a instância
31 e um máximo para a instância 32.
25

Instância 61

4,5
4
3,5
3
Desvio

2,5
2
1,5
1
0,5
0
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
Iteração

Figura 22: Desvios para a Instância 61


Para a instância 61 observa-se uma baixa variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 3,84%. O desvio mínimo foi de 3,09%, o
máximo de 4,00% e o médio de 3,75%.

Instância 62

5,4
5,2
5
Desvio

4,8
4,6
4,4
4,2
4
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
Iteração

Figura 23: Desvios para a Instância 62


Para a instância 62 observa-se uma alta variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 4,95%. O desvio mínimo foi de 4,44%, o
máximo de 5,25% e o médio de 4,88%.
26

Instância 63

5
4
Desvio

3
2

1
0
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
Iteração

Figura 24: Desvios para a Instância 63


Para a instância 63 observa-se uma média variabilidade dos desvios, apresentando um
comportamento convergente com repetições principalmente do desvio 5,18%. O desvio mínimo
foi de 3,27%, o máximo de 5,60% e o médio de 4,84%.

Instância 64

7
6
5
Desvio

4
3
2
1
0
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
Iteração

Figura 25: Desvios para a Instância 64


Para a instância 64 observa-se uma baixa variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 5,50%. O desvio mínimo foi de 4,27%, o
máximo de 5,80% e o médio de 5,17%.
27

Instância 65

5,8
5,6
5,4
Desvio

5,2
5
4,8
4,6
4,4
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
Iteração

Figura 26: Desvios para a Instância 65


Para a instância 65 observa-se uma média variabilidade dos desvios, apresentando um
comportamento convergente com repetições do desvio 5,40%. O desvio mínimo foi de 4,82%, o
máximo de 5,64% e o médio de 5,38%.

Desvio Médio n=100

6
5
Desvio Médio

4
3

2
1
0
61 62 63 64 65
Instância

Figura 27: Desvio Médio para n = 100


Com relação ao desvio médio, observa-se um desvio médio geral mínimo para a instância
61 e um máximo para a instância 65.
28

Após a análise dos resultados, chegou-se à seguinte distribuição de freqüências de desvios


médios:

Histograma

"15-20"
Variações em %

"10-15"

"5-10"

"0-5"

0 2 4 6 8 10
Número de instâncias

Figura 28: Histograma de desvios percentuais

Pode-se dizer portanto que a maioria das instâncias analisadas encontra-se com um valor
de desvio médio entre 5 e 10%.
29

CAPÍTULO 5

CONCLUSÃO

Este trabalho aplicou e avaliou o método GraCOS para o FSP, Problema de


Sequenciamento Clássico, utilizando as instâncias de Taillard, que são as mais utilizadas na
literatura, o que permite este método ser comparado com outros que utilizem as mesmas
instâncias. O GraCOS ainda está sendo implementado, portanto os resultados obtidos a título de
experiência servem de embasamento para futuras melhorias.
O desvio de algumas instâncias está elevado, de 5 a 10% conforme citado na figura 28 do
capítulo anterior, o que mostra que o método precisa ser aperfeiçoado. O método se comportou
bem para as instâncias de número menor de trabalhos. Quando se aumentou o número de
trabalhos, o desvio médio subiu, devido ao aumento da complexidade do problema.
Sugere-se para trabalhos futuros a comparação dos resultados obtidos com o GraCOS com
outros métodos de resolução do FSP. Observa-se ainda a ausência do fator tempo como
parâmetro de avaliação, sendo recomendado a introdução deste parâmetro como um dos aspectos
intrínsecos ao GraCOS.
30

REFERÊNCIAS BIBLIOGRÁFICAS

Gupta J. N.D., Stafford E. F. Jr. Flowshop scheduling research after five decades. European
Journal of Operational Research 169, 699–711, 2006.

ORLibrary acessado em 20 de fevereiro de 2007.


http://people.brunel.ac.uk/~mastjjb/jeb/orlib/files/flowshop2.txt.

RUIZ R., MAROTO C., ALCARAZ J.. Two newrobust genetic algorithms for the flowshop
scheduling problem. The International Journal of Management Science, 2004.

SILVA, J. L. C., SOMA, N. Y. Uma heurística para problemas de otimização combinatória


permutacional. Anais do XXXIII Simpósio Brasileiro de Pesquisa Operacional, 2001, p.1298 –
1306, Campos do Jordão-SP.

SILVA, J. L. C. ; VIANA, G. V. R. ; SOMA, N. Y.. Um Algoritmo Genético Híbrido


Construtivo para Problemas de Otimização Combinatória Permutacional. In: XII CLAIO -
Congreso Latino Iberoamericano de Investigación de Operaciones, 2004, Havana. Anales del XII
CLAIO, 2004.

Você também pode gostar