• Nenhum resultado encontrado

O NP-Opt foi desenvolvido de forma que o usu´ario pudesse se comunicar com o programa utilizando apenas janelas gr´aficas. A seguir, vamos explicar a fun¸c˜ao de cada uma delas, come¸cando pela janela inicial mostrada na Figura 3.2.

Figura 3.2: Janela inicial do NP-Opt.

A janela inicial ´e composta por v´arios bot˜oes de sele¸c˜ao, al´em de dois cam- pos de texto. No lado esquerdo temos os bot˜oes Problem, Instance, e Method. Ao lado desse ´ultimo temos o bot˜ao Execution, que executa os m´etodos sele- cionados. Abaixo deles temos os bot˜oes de abertura e grava¸c˜ao de workspaces (ou seja, a configura¸c˜ao atual do framework ). Na parte superior direita h´a dois campos de texto que mostram o tipo de problema e a instˆancia sendo resolvida. O bot˜ao denominado Make Batch, localizado na parte inferior da janela, ´e uti- lizado para efetuar testes sequenciais autom´aticos e, por fim, temos o bot˜ao Exit, que sai do programa. Inicialmente, os ´unicos bot˜oes habilitados s˜ao o Problem e o Exit. Clicando sobre o bot˜ao Problem abre-se a janela de sele¸c˜ao do tipo de problema, representada na Figura 3.3.

Figura 3.3: Janela de sele¸c˜ao do tipo de problema.

A janela de sele¸c˜ao do tipo de problema ´e composta por um menu, onde o usu´ario pode escolher um problema percentence a uma lista. Suponha que se selecione a op¸c˜ao Single Machine Scheduling / Tardiness, clicando em seguida no bot˜ao OK. A janela vai desaparecer e o tipo do problema ser´a escrito no campo de texto ao lado do bot˜ao Problem. Depois disso, v´arios bot˜oes ser˜ao habilitados. No entanto, vamos seguir com a ordem l´ogica e selecionar a ins- tˆancia. Para tanto, basta clicar no bot˜ao Instance e esperar que se abra a janela de sele¸c˜ao de instˆancia, mostrada na Figura 3.4.

Figura 3.4: Janela de sele¸c˜ao da instˆancia.

A janela de sele¸c˜ao da instˆancia permite ao usu´ario ler uma instˆancia a partir de um arquivo gravado em disco. H´a espa¸co para a possibilidade de se criar uma instˆancia aleat´oria, mas essa op¸c˜ao est´a desabilitada no momento devido `a falta de necessidade do uso desse recurso. Ap´os selecionar a op¸c˜ao Read from file e clicar sobre o bot˜ao OK, abre-se uma janela que permite ao usu´ario selecionar um arquivo de disco (ver Figura 3.5). A janela de sele¸c˜ao de instˆancia ´e espec´ıfica do problema. Nela, o usu´ario pode incluir os campos que considerar necess´arios para caracterizar a instˆancia. No caso do problema de Sequenciamento em M´aquina Simples (SMS), o ´unico campo presente ´e o de n´umero de tarefas.

Figura 3.5:Janela geral de sele¸c˜ao de arquivo.

Na janela de sele¸c˜ao de arquivo, selecione um arquivo v´alido e clique no bot˜ao Abrir. As duas janelas abertas ser˜ao fechadas, o nome do arquivo ser´a escrito ao lado do bot˜ao Instance e o bot˜ao Method se habilitar´a. Caso se queira verificar as propriedades da instˆancia, em qualquer momento pode-se clicar de novo no bot˜ao Instance e verificar os dados, fechando a janela em seguida. O pr´oximo passo ´e ajustar os m´etodos para se resolver o problema selecionado. Ap´os clicar sobre o bot˜ao Method, abre-se a janela de sele¸c˜ao dos m´etodos (ver Figura 3.6).

Existem 4 m´etodos dispon´ıveis para o problema de SMS. Eles podem ser selecionados clicando-se nos bot˜oes na parte superior da janela. Abaixo dos m´etodos temos o campo de texto que define o tempo de CPU m´aximo para cada um deles. Este ´e o ´unico crit´erio de parada dispon´ıvel no momento. O m´etodo ATCS ´e na realidade uma regra de despacho descrita na referˆencia [45], e que por ser muito r´apida dispensa a defini¸c˜ao do tempo de CPU m´aximo. Abaixo dos tempos de CPU temos o n´umero de popula¸c˜oes para os algoritmos mem´etico e gen´etico. Nesse campo o usu´ario faz a escolha por uma abordagem unipopulacional ou multipopulacional. Por fim, na parte de baixo da janela, est˜ao localizados trˆes bot˜oes para ajuste dos parˆametros dos m´etodos. Ao se clicar em um dos bot˜oes de ajuste das popula¸c˜oes, duas novas janelas v˜ao se abrir (ver Figura 3.7).

Figura 3.7:Janelas de ajuste das popula¸c˜oes e da pol´ıtica de migra¸c˜ao.

A janela maior permite ao usu´ario editar as caracter´ısticas das popula¸c˜oes, uma por vez. Primeiramente, selecione a popula¸c˜ao clicando em um dos bot˜oes do lado esquerdo. Em seguida, fa¸ca as modifica¸c˜oes nos campos situados no lado direito:

• Population size: O n´umero de indiv´ıduos da popula¸c˜ao.

• Population Structure: Seleciona se a popula¸c˜ao ter´a uma estrutura hier´arquica ou n˜ao. O n´umero de indiv´ıduos para estrutura de ´arvore tern´aria deve ser 1, 4, 13, 40, 121, etc. J´a para ´arvore bin´aria, os valores admiss´ıveis s˜ao 1, 3, 7, 15, 31, 63, etc. Se a popula¸c˜ao n˜ao utilizar nenhum tipo de estrutura, qualquer n´umero ´e v´alido.

• Fuzzy Controller: Liga/desliga um controlador fuzzy para as taxas de muta¸c˜ao e de recombina¸c˜ao. Este controlador est´a dispon´ıvel somente para o problema de Sequenciamento em M´aquina Simples.

• Crossover rate: A taxa de recombina¸c˜ao da popula¸c˜ao, que est´a rela- cionada `a quantidade de novos indiv´ıduos criados a cada gera¸c˜ao. • Crossover type: O operador de recombina¸c˜ao que a popula¸c˜ao vai uti-

• Mutation rate: A taxa de muta¸c˜ao da popula¸c˜ao, que est´a relacionada `

a porcentagem dos novos indiv´ıduos que ir˜ao sofrer muta¸c˜ao.

• Mutation type: O operador de muta¸c˜ao a ser aplicado nos novos in- div´ıduos.

• Local Search: O operador de busca local. Dispon´ıvel somente para o algoritmo mem´etico, uma vez que os algoritmos gen´eticos puros n˜ao utilizam esse recurso.

• Reduction: Estrat´egia de redu¸c˜ao de vizinhan¸ca, quando dispon´ıvel. Depois de todos os parˆametros terem sido definidos, clique no bot˜ao Update para guardar as altera¸c˜oes e somente ent˜ao avance para a pr´oxima popula¸c˜ao. A janela menor, na direita da Figura 3.7, permite ao usu´ario selecionar a pol´ıtica de migra¸c˜ao, definindo como as popula¸c˜oes dever˜ao trocar indiv´ıduos entre si. Os parˆametros s˜ao os seguintes:

• Ring structure: As popula¸c˜oes est˜ao conectadas em uma estrutura de anel, podendo trocar indiv´ıduos apenas com as duas popula¸c˜oes vizinhas. • No structure: Cada popula¸c˜ao est´a conectada com todas as outras, e a

troca de indiv´ıduos ´e livre entre quaisquer duas popula¸c˜oes.

• Migrate once: Uma c´opia do melhor indiv´ıduo ´e enviada para outra popula¸c˜ao.

• Migrate twice: Duas c´opias do melhor indiv´ıduo s˜ao migradas para duas popula¸c˜oes diferentes.

• No migration: Todas as popula¸c˜oes evoluem em paralelo, sem nenhuma troca de indiv´ıduos.

Depois de definidos todos os parˆametros, clique nos bot˜oes OK, na janela de migra¸c˜ao, e Exit na janela das popula¸c˜oes. Caso se queira editar os parˆametros do multiple start basta clicar no bot˜ao Edit MS parameters e uma nova janela ser´a aberta (ver Figura 3.8).

Figura 3.8: Janela de parˆametros do multiple start.

Na janela de parˆametros do multiple start, pode-se selecionar o tipo de busca local e a redu¸c˜ao de vizinhan¸ca desejadas. Depois de ajustar as duas op¸c˜oes, basta clicar no bot˜ao OK. Ajustados todos os parˆametros da janela de m´etodos, pode-se fech´a-la e passar para a etapa de execu¸c˜ao. Ao clicar no bot˜ao Execution, a janela de execu¸c˜ao se abrir´a (ver Figura 3.9).

Figura 3.9:Janela de execu¸c˜ao.

A janela de execu¸c˜ao possui quatro bot˜oes de sele¸c˜ao. O bot˜ao do alto `

a esquerda liga e desliga a op¸c˜ao de uma barra de progresso que monitora o tempo de CPU. Ao seu lado, na direita, pode-se acionar a op¸c˜ao de visualizar em uma janela `a parte cada melhor solu¸c˜ao encontrada enquanto o algoritmo efetua o processo de busca. Essas duas op¸c˜oes n˜ao afetam o comportamento do algoritmo, por´em o seu uso cria um gasto computacional extra no controle de recursos gr´aficos.

O bot˜ao Parallel Processing permite a distribui¸c˜ao do esfor¸co da busca local atrav´es de uma rede de computadores, e o bot˜ao Edit Properties abre uma nova janela (ver Figura 3.10) para edi¸c˜ao dos parˆametros da rede. O usu´ario tamb´em pode criar um arquivo de sa´ıda de dados, que ser´a composto por todas as melhores solu¸c˜oes geradas ao longo do processo de busca, com as respectivas estruturas dos cromossomos. Com isso, o usu´ario tem acesso n˜ao apenas ao valor da fun¸c˜ao objetivo, mas `a solu¸c˜ao propriamente dita. O nome padr˜ao para o arquivo ´e result.txt, mas ele pode ser mudado clicando-se no bot˜ao Change File Name. A seguir, na Figura 3.10, mostramos a janela de processamento paralelo.

Figura 3.10: Janela de processamento paralelo.

A janela de processamento paralelo permite ajustar os parˆametros da rede. Deve-se especificar o nome do computador master e dos computadores slave. Al´em disso, o usu´ario tamb´em deve ajustar o n´umero da porta de comunica¸c˜ao. O valor padr˜ao ´e 5000, mas em algumas redes, portas altas s˜ao protegidas por firewalls, o que pode criar problemas de seguran¸ca. Neste caso, o usu´ario deve ajustar o valor para uma porta n˜ao protegida. A arquitetura do processamento distribu´ıdo ser´a discutida mais `a frente, ainda neste cap´ıtulo. A seguir, na Figura 3.11, mostramos as ´ultimas duas janelas que faltam ser descritas: a tabela das solu¸c˜oes e a barra de progresso.

A janela maior mostra uma tabela com as solu¸c˜oes encontradas at´e o mo- mento. Cada vez que o algoritmo encontra uma melhor solu¸c˜ao, ela ´e inclu´ıda

Figura 3.11:Janelas de sa´ıda.

na tabela, bem como o tempo de CPU e o n´umero de solu¸c˜oes criadas. A janela menor mostra a porcentagem do tempo de CPU gasto, na forma de uma barra de progresso. Assim, o usu´ario pode avaliar o quanto j´a foi executado e o que falta para terminar a rodada.

Documentos relacionados