• No results found

Monitorització de la implantació dels valors

1.2

Organização

A apresentação do trabalho está organizada como se segue.

O Capítulo 2 define problemas de escalonamento e apresenta algumas classes, des- tacando o JSP e o FJSP. Além disso, uma caracterização de problemas multiobjetivo é apresentada juntamente com a definição de ótimo de Pareto. O capítulo é finalizado com a formulação da abordagem multiobjetivo para o FJSP.

O Capítulo 3 descreve técnicas da computação evolutiva utilizadas no desenvolvimento de algoritmos para o FJSP, tais como: Algoritmos Genéticos, Non-dominated Sorting Genetic Algorithm II, Particle Swarm Optimization e Algoritmo Evolutivo Multiobjetivo em Tabelas.

O Capítulo 4 faz a revisão da literatura, apresentando trabalhos com propostas para tratar o FJSP multiobjetivo. Em particular, foram considerados trabalhos envolvendo o aspecto multiobjetivo e algoritmos híbridos que utilizam computação evolutiva.

O Capítulo 5 descreve o algoritmo proposto neste trabalho, que se baseia nas técnicas Particle Swarm Optimization e operadores genéticos. Suas principais características são apresentadas e, nos experimentos, discutidas. Além disso, é apresentado um comparativo dos resultados obtidos com outros algoritmos da literatura.

O Capítulo 6 introduz novas abordagens para o FJSP multiobjetivo. Além disso, novos objetivos, tais como a ociosidade total e a ociosidade efetiva total são utilizados, bem como, novas técnicas para tratar o problema. O Capítulo 7 apresenta as conclusões do trabalho desenvolvido e algumas possibilidades de trabalhos futuros são listadas.

Capítulo 2

Otimização Multiobjetivo para o FJSP

Problemas de escalonamento possuem diversas possibilidades de aplicações, tais como sistemas de produção e manufatura, planejamento de produções, projeto de computadores e processamento de informações. De forma geral, um problema de escalonamento consiste em, através de um conjunto de tarefas e de um conjunto de recursos, ordenar a execução das tarefas e identificar quais tarefas cada recurso irá executar, observando um ou mais objetivos de otimização. Dentre os objetivos mais utilizados estão o makespan (tempo total para execução do escalonamento) e a carga de trabalho total (somatório da carga de trabalho de todas máquinas).

Assim, os problemas de escalonamento são caracterizados como problemas de otimi- zação, cujas soluções são aquelas que apresentam os melhores valores para os objetivos considerados. Um problema de otimização multiobjetivo considera simultaneamente mais de um objetivo. Espera-se que as soluções satisfaçam todos os objetivos. Nota-se então, a dificuldade de obter convergência em algoritmos para este tipo de problema, pois os objetivos podem conflitarem entre si, isto é, uns podem ser de minimização e outros de maximização.

Para formular o problema tratado neste trabalho, o FJSP multiobjetivo, na seção 2.1, o problema de escalonamento é definido, nas seções 2.2 e 2.3, o JSP e o FJSP são, respec- tivamente, apresentados e a seção 2.4 descreve os problemas de otimização multiobjetivo. Por fim, a seção 2.5 apresenta a formulação do problema tratado neste trabalho, o FJSP multiobjetivo.

2.1

Problemas de Escalonamento

O problema de escalonamento de tarefas (jobs) é definido por [Bagchi 1999] como sendo um processo de otimização em que recursos limitados são alocados ao longo do tempo entre atividades paralelas e sequenciais. De acordo com [Lawler et al. 1993], o problema consiste em encontrar a alocação ótima, ao longo do tempo, entre recursos e determinadas tarefas. Do ponto de vista computacional, o escalonamento consiste em:

determinar uma ordem de execução de jobs (sequência de operações) e, se necessário, indicando o recurso (máquina) que será responsável por processá-los.

Esses problemas são de natureza combinatorial cuja resolução é computacionalmente complexa. Apesar de existirem problemas de escalonamento polinomiais, os problemas do mundo real se apresentam como NP-Hard, em que o tempo computacional aumenta exponencialmente, conforme o aumento do tamanho do problema, o que torna inviável a enumeração das soluções [Bagchi 1999].

Consequentemente, em problemas como esses, é comum utilizar algoritmos aproxima- dos com tempo de execução razoável [Bagchi 1999]. Busca-se, assim, por soluções adequa- das em um baixo tempo computacional. Nesse contexto, os algoritmos evolutivos podem ser considerados como uma boa opção para encontrar bons resultados para problemas de otimização (e, consequentemente, para problemas de escalonamentos), pois conseguem lidar com problemas tipicamente complexos em tempo computacional polinomial.

Diversos trabalhos têm proposto classificações para o problema de escalonamento [Graham et al. 1979], [Maccarthy e Liu 1993], [Lenstra e Rinnooy 1979] e [Guimarães 2007], pois existem diferentes tipos de características que podem ser consideradas. [Vaca 1995], por exemplo, considera restrições tecnológicas dos jobs, critérios de programação, natureza do escalonamento, entre outras.

Entre as características apresentadas por [Graham et al. 1979] para classificação de problema de escalonamento, cita-se o tipo de fluxo em que os jobs serão executados. Considerando os problemas com múltiplas máquinas, destacam-se os seguintes fluxos:

• Flow Shop: todos os jobs são submetidos a um fluxo de trabalho unidirecional e processados sequencialmente na mesma ordem [Bagchi 1999]. Assim, independente das características de cada job, todos devem ser executados na máquina 1, depois na máquina 2 e assim por diante [Guimarães 2007].

• Flow Shop flexível: o processamento do job é dividido em estágios. Em cada estágio, existe mais de uma possibilidade de máquina para execução dos jobs. Todos os jobs possuem a mesma ordem de execução em estágios, ou seja, todo job inicia a execução pelo estágio 1, depois o estágio 2 e assim por diante.

• Job Shop: diferente do Flow Shop, nessa classe os jobs não são processados sequencialmente na mesma ordem, isto é, cada job possui uma ordem específica de execução, o que permite que ocorram diferentes sequências de associações entre os jobs e as máquinas. Porém, cada job possui uma sequência de máquinas a seguir. Assim, um job pode iniciar a execução na máquina 1, enquanto outro job inicia a execução na máquina 3.

• Open Shop: cada job possui uma ordem de execução específica, semelhante ao Job Shop, porém a ordem de execução das operações não está estabelecida.