Вы находитесь на странице: 1из 6

Implementao de algoritmos de busca na resoluo do

problema do empacotamento unidimensional


Thiago P. de Abreu1, Thiago L. Menegotto2
1

Universidade Tecnolgica Federal do Paran (UTFPR)


Av. Sete de Setembro, 3165, CEP: 80.230-901, Curitiba, PR, Brasil
thi_abreu@hotmail.com, thiagolmenegotto@yahoo.com.br

Abstract. The Bin Packing Problem is a combinatorial optimization problem


that consists in finding the less bins quantity, each one with a specified
maximum capacity, to pack the items, without disrespecting their capacity.
This article presents a study on the use of search algorithms bundled local and
genetic algorithms in order to find the best solution to the problem. To
validate the algorithms, they have been implemented using Matlab and Dev
C++ tools. Also, it presents a discussion between these algorithms and the
classical ones.
Resumo. O problema do empacotamento unidimensional, um problema de
otimizao que consiste em encontrar o menor nmero de bins (recipientes),
cada um com uma determinada capacidade mxima, necessrios para
empacotar os itens, sem desrespeitar a restrio de capacidade. Este artigo
apresenta um estudo sobre a utilizao dos algoritmos busca em feixe local e
algoritmos genticos afim de encontrar a melhor soluo para o problema.
Para validao dos algoritmos, os mesmos foram implementados utilizando a
ferramenta Matlab e Dev-C++. Ainda, apresenta uma comparao destes
algoritmos com algoritmos de busca clssica.

1. Introduo
Entre os problemas clssicos da Otimizao Combinatria esto os Problemas de
Empacotamento (Bin Packing Problem), onde ocorre a distribuio de itens entre os
recipientes de acordo com a capacidade dos recipientes. Este problema tem sido
extensivamente estudado e explorado tanto na rea acadmica quanto por profissionais.
O interesse surge principalmente onde a possibilidade de existir algoritmos que buscam
encontrar solues muito prximas da tima em tempo de execuo razovel. O
Problema de Empacotamento, objetiva minimizar o nmero de barras (bins) (como:
caixa, recipiente, disco rgido, containers, etc.). Os algoritmos heursticos e
aproximativos podem resolver casos prticos do dia-a-dia: planejamento de rotas,
gerenciamento de estoque, oramentos [Martello and Toth 1990].
Neste artigo sero apresentados os resultados obtidos atravs da resoluo do
problema do empacotamento unidimensional utilizando duas heursticas de busca da
informao: Busca em feixe local e os Algoritmos Genticos. O documento est
estruturado da seguinte forma: inicialmente apresentada a descrio do problema,

posteriormente so descritas as heursticas utilizadas. Em seguida, sero descritas as


implementaes realizadas, e os resultados obtidos com cada uma das heursticas e
discutida a utilizao de algoritmos clssicos para a resoluo de tal problema.

2. Formulao do Problema
2.1 Problema do Empacotamento Unidimensional
No Problema de Empacotamento Unidimensional (PEU), so dados n itens,
onde o tamanho do item i ( c) e c a capacidade de cada recipiente (bin). Ento,
o PEU encontrar o menor nmero de recipientes, de modo que a soma dos tamanhos
dos itens alocados a cada recipiente no seja maior que sua capacidade, ou seja,
distribuir todos os itens no menor nmero possvel de recipientes, respeitando o
tamanho mximo permitido da soma dos itens alocados em cada bin [MARTELLO &
TOTH,1990].

3. Algoritmos Utilizados
3.1 Busca em feixe local
O algoritmo de busca em feixe um algoritmo do tipo heurstico de busca local
que tem como caracterstica expandir ns mais promissores em um nmero limitado de
expanso. O algoritmo de busca em feixe (beam search) pode ser considerado uma
variante do algoritmo de subida de encosta, porm neste, mantm-se o controle de k
estados, em vez de apenas um, o algoritmo inicia com k estados gerados aleatoriamente,
onde em cada passo so gerados todos os sucessores de todos os k estados. Caso
qualquer um deles for um objetivo, o algoritmo deve parar, caso contrrio, o mesmo
selecionar os k melhores sucessores a partir da lista completa e repetir a ao
novamente. [Russell e Norvig, 2004].

3.2 Algoritmo Gentico


Os algoritmos genticos so algoritmos baseados em mecanismos de seleo
natural e gentico. Esses algoritmos implementam estratgias de buscas aleatrias para
solucionar problemas de otimizao (HOLLAND, 1975).
A evoluo natural os algoritmos genticos buscam boas solues num problema
que existem muitas solues possveis. Considerando um problema de otimizao, os
algoritmos genticos iniciam com um conjunto inicial de solues aleatrias. Cada
elemento do conjunto inicial de solues denominado individuo ou cromossomos. O
conjunto de indivduos denominado de populao que evoluem buscando melhores
solues atravs da aplicao de operadores genticos, tais como cruzamento e mutao
[Lin 2008].
Uma nova populao gerada a partir da populao inicial atravs do
cruzamento e mutao. Para criar novos indivduos, estes so selecionados partir do

resultado de avaliao (fitness) tenham maior chance de se reproduzir, simulando o


processo de seleo natural, este processo ocorre de forma aleatrio, sendo que o
indivduo pode ser selecionado vrias vezes ou ser descartado. Existem alguns mtodos
de seleo que podem ser utilizados, sendo eles: roleta, seleo por classificao ou
elitismo.
Os algoritmos genticos selecionam as solues para gerar indivduos cada vez
mais aptos, atravs de recombinao do material gentico (cromossomo) de seus
antecessores. Aps realizado a reproduo e gerao de novos indivduos, os pais so
descartados dando lugar a seus descendentes que iro substitui-los na nova populao.
A nova gerao passara pelo mesmo processo de seus pais, at que gerem uma nova
populao. Este processo ocorre sucessivamente at as que melhores solues dominem
uma populao.

4. Resultados e Discusses
As implementaes dos algoritmos utilizados para a soluo do problema foram
realizadas atravs da ferramenta Matlab e Dev-C++, utilizando a linguagem de
programao C.
Para a soluo do problema foram utilizados os seguintes valores para os itens:
Tabela 1. Instncias do Problema

Item (i=1,... n)
Hi(m)
Item (i=1,... n)
Hi(m)
Item (i=1,... n)
Hi(m)
Item (i=1,... n)
Hi(m)

1
3
8
3
15
2
22
5

2
5
9
7
16
3
23
4

3
7
10
2
17
8
24
9

4
2
11
9
18
5
25
4

5
8
12
5
19
1
26
2

6
6
13
1
20
7
27
9

7
4
14
3
21
3
28
7

A heurstica proposta neste problema foi a de nmero de recipientes ocupados,


sendo que a soluo tima consiste em minimizar os recipientes utilizados, ou seja,
minimizar a heurstica. Como estratgia para atingir a soluo tima, foi utilizado o
seguinte fitness:
2
( )
=

=1

Onde:
Fitness do PEU
B Nmero de recipientes que esto sendo utilizados
Somatrio dos tamanhos itens no recipiente i

Capacidade mxima de cada recipiente


Para o algoritmo de busca em feixe local (BFL), foram criadas as matrizes que
representam os itens e os recipientes. Cada item possui a informao do seu tamanho e
em qual recipiente se encontra. Cada recipiente conhece o somatrio dos tamanhos dos
itens que esto presentes nele. Ainda h uma matriz que possui o fitness de cada
iterao e de cada feixe k, assim, a cada iterao do algoritmo, escolhemos os feixes
mais promissores para continuar a busca.
Foram implementados ento, para melhorar a compreenso do algoritmo, dois
exemplos em que suas diferenas consistem na formulao e escolha do estado inicial
do problema.
No primeiro exemplo foi definido, como estado inicial do algoritmo, que os itens
seriam distribudos aleatoriamente entre 28 (nmero de itens deste exemplo) recipientes,
sendo que a nica restrio colocada foi a de que um recipiente no pode transbordar,
ou seja, o valor dos itens dentro dele no podem somar mais do que 17,5.
Sendo assim, foi observado, para este exemplo, que o resultado apenas atingia a
soluo tima quando iterado vrias vezes. Como base para comparao, foi utilizado
como condio de parada do algoritmo 500 comparaes. Ou seja, 500 comparaes
entre os melhores fitness ou heursticas. Portanto, para este exemplo, obteve-se como
melhor soluo, uma porcentagem de 3,5% da soluo tima quando iteramos o
algoritmo 50 vezes, utilizando 2 feixes de busca (k). Ou seja, para este caso, s seria
alcanada a soluo tima 35 a cada 1000 execues do algoritmo.
J no segundo exemplo, para o estado inicial do algoritmo, foi definido que os
itens seriam selecionados aleatoriamente, porm que seriam distribudos seguindo uma
ordem crescente dos recipientes. Ou seja, o primeiro item selecionado colocado no
primeiro recipiente, j para o segundo, verificado se ele pode ser colocado no primeiro
recipiente (verifica-se se o recipiente no ir transbordar). Caso ele no posso ser
colocado no primeiro recipiente, ser colocado no segundo e assim por diante at que
todos os itens estejam colocados em algum recipiente. Desta forma, nosso estado inicial
se aproxima muito mais da soluo tima do que a inicializao do primeiro exemplo.
Esta pequena modificao tornou o algoritmo muito mais eficaz. Depois de
realizados os testes, constatou-se que a soluo tima alcanada em 99,9% dos casos
quando utilizamos 10 feixes (k) na busca. Isto pode ser explicado pelo fato de que o
estado inicial escolhido um candidato muito forte para ser uma soluo tima, sendo
assim, quanto mais estados iniciais obtivermos, mais chance tem-se de chegar soluo
tima.
Para o Algoritmo Gentico (AG) foi criado matrizes que representam os
indivduos, a populao, o AG crossover, e vetores que representam o fitness de cada
indivduo, os itens. Na matriz da populao consta a informao em que recipiente
(capacidade de 17,5) o item correspondente ao vetor de itens est localizada, e o vetor
de itens consta a informao de seu tamanho. Cada recipiente conhece o somatrio dos
tamanhos dos itens que esto presentes nele. Ainda h uma matriz que possui o fitness
de cada iterao, assim, a cada iterao do algoritmo, seleciona os indivduos mais
promissores para continuar a busca.
O processo de crossover simples envolveu a criao de uma populao aleatria
inicial (Tabela 1), a matriz de populao passou pelo clculo do fitness de cada

indivduo, seleo de pais pelo processo de roleta (quanto maior o fitness, maior a
probabilidade de ser escolhido), ponto de corte aleatrio e processo de mutao
aleatrio. Ao final de cada processo de crossover se os filhos gerados no atendem ao
requisito de limitao de ocupao no recipiente (filhos inviveis), estes filhos so
passados por um processo de correo, onde o operador calcula o aproveitamento de
cada um dos recipientes e guarda os quais excederam a taxa de ocupao daquele
recipiente. A partir deste ponto a estratgia implica ento retirar do recipiente que
excedeu a capacidade o menor item que deixe a soluo vivel. Aps de ter verificado
qual item deveria ser retirado, verifica-se dentre todos os recipientes que suportem o
item, este colocado na de menor capacidade disponvel. Para esta estratgia tambm
foi considerado que aps 10 tentativas de tornar aquele individuo vivel, seno o
sistema aceita aquele filho invivel, s que o aplica uma penalizao no seu fitness, para
que este no seja sorteado pela roleta na prxima gerao, assim formada a nova
populao. Estas populaes so armazenadas em uma outra matriz para consulta e
comparao entre as geraes.
Ao executar o AG foi observado que quanto menor a populao, menor a
variabilidade, portanto isso afeta negativamente no processo de crossover. E quanto
maior o nmero da populao, maior a melhoria global de fitness de todos os indivduos
da populao posteriores. E que aproximadamente entre 12 a 16 geraes o fitness
mdio das populaes tendem a se estabilizar, sendo constitudos por populaes como
indivduos idnticos ou muito prximos. O AG foi executado com 5, 10 e 20 indivduos
para populao inicial, tendo 30 geraes num ciclo de 50 vezes. A soluo tima foi
obtido com 36%, 86% e 96% respectivamente das vezes executado o AG.
4.1. Utilizao de algoritmos de busca clssica
Foi discutido durante a implementao dos algoritmos citados acima, se seria
possvel a utilizao de algoritmos de busca clssica, como por exemplo busca
cega/informada off-line ou on-line, para a resoluo do problema de empacotamento
unidimensional.
Foi constatado ento que a utilizao destes algoritmos seria possvel, porm o custo
inviabilizaria sua implementao. Isto seria causado basicamente pelo fato de que a
formulao de tal problema para esses algoritmos no ideal ou at mesmo no
possvel, a comear pelo espao de estados. Neste problema, no temos um estado
inicial especifico, como por exemplo, quando temos problemas do tipo navegao,
quando o objetivo ir de um estado outro. No caso do empacotamento
unidimensional, o estado inicial qualquer, que determinado normalmente de forma
aleatria.
J para o estado objetivo, nos algoritmos de busca cega/informada, o objetivo
atingir um estado especfico ou encontrar um caminho, que satisfaz uma funo
objetivo, como por exemplo, no caso de navegao, estar em um lugar, ou at mesmo
no caso das n rainhas no tabuleiro, aonde a funo objetivo que nenhuma das
rainhas podem se atacar. [SOSIE, R.; GU, 1991] Para o caso do problema
empacotamento unidimensional, no possumos um estado ou funo objetivo, a
inteno nestes casos apenas minimizar a heurstica, ou minimizar o nmero de
recipientes utilizados. Neste caso no h a certeza de que a soluo tima atingida,
porm, com a utilizao dos algoritmos certos, h uma grande chance de que a soluo
tima seja alcanada.

Outro agravante da utilizao dos algoritmos de busca cega/informada off-line ou


on-line seria o espao de busca. Para o caso do empacotamento unidimensional, a
utilizao desses algoritmos iria gerar um espao de busca muito grande, que
inviabilizaria sua implementao. J os algoritmos de busca local ou AG, so limitados
pelo nmero mximo de iteraes e de filhos, sendo assim, o estado objetivo acaba
sendo o com melhor heurstica, j para os algoritmos de busca cega/informada, como
no temos um objetivo especifico, teramos que explorar todo o espao de estados atrs
do estado com melhor heurstica, porm este modo j seria uma varincia destes
algoritmos, j que, como foi citado acima, tais algoritmos buscam um estado ou funo
objetivo especfica, e no uma comparao entre estados, como feito nos algoritmos
de busca local ou AG.

5. Consideraes Finais
Aps a executar os algoritmos implementados, foi observado que ao utilizar o
algoritmo genticos para resolver o problema proposto, o nmero de indivduos da
populao inicial pode afetar o aproveitamento e a eficincia do algoritmo. Quando
utilizado um nmero pequeno de indivduos na populao inicial, h uma grande chance
da soluo no convergir para a soluo tima. O nmero de geraes tambm
influencia diretamente na melhoria da populao, porem pode ser um alto custo
computacional.
Na execuo do algoritmo de busca em feixe, observou-se que o mesmo
encontrava rapidamente a soluo tima dependendo de como gerava a populao
inicial, porm em alguns casos, dependendo da configurao utilizada e dos estados
iniciais sorteados, a soluo encontrada no era a tima.
Ambos os algoritmos no garantem encontrar uma soluo tima com 100% das
vezes executado os algoritmos. Mas ambos se no obtm a soluo tima, obtm uma
soluo prxima a ela.

Referncias
Lin, F.-T. (2008). Solving the knapsack problem with imprecise weight
coefficients using
genetic algorithms. European Journal of Operational Research, 185:133145.
HOLLAND, J. H: Adaptation in natural and artificial systems, 1975.
MARTELLO, S. & TOTH, P. Knapsack Problems: Algorithms and Computer
Implementations, Wiley, Chinchester, 1990.
SOSIE, R.; GU, J.: Fast Search Algorithms for the N-Queens Problem. IEEE
Transactions on Systems, Man, and Cybernetics, 21:1572-1576, 1991.
Russel, S. e Norvig, P.: Inteligncia Artificial: Um enfoque moderno. Traduo da 2.
ed. So Paulo: Prentice Hall. 1021 p., 2004

Вам также может понравиться