• Nenhum resultado encontrado

IMPLEMENTAÇÃO COMPUTACIONAL

7.2 Descrição da implementação

7.2.1 Principais rotinas

Embora a aplicação desenvolvida compreenda um vasto conjunto de efectuam as mais variadas tarefas de manipulação de dados, as rotinas importantes são aquelas que implementam os algoritmos apresentados capítulos anteriores. Estas rotinas são basicamente três: a rotina Relax implementa o algoritmo dos transportes, e as rotinas Heuristica1 e implementam as heurísticas apresentadas no capítulo anterior.

Quanto à rotina Relax, esta limita-se a recorrer à classe CRelax4 para fazer executar o já referido código de domínio público RELAX IV. Este rotina tem duas importantes rotinas de suporte, a rotina WriteToRelax, que transfere os dados do programa principal para a classe CRelax4, e a rotina ReadFromRelax, que faz o oposto, ou seja, transfere as soluções do problema de transportes para o programa principal. Confirmou-se a grande rapidez do código na resolução de problemas de transportes de grande dimensão.

A rotina Heuristica1 limita-se a executar a rotina RegraPDEDD para todas as máquinas do plano de agendamento. É na rotina RegraPDEDD que está implementada a regra PDEDD que foi apresentada no capítulo anterior. Esta implementação tem um tempo de execução muito rápido por se tratar de uma manipulação de dados bastante simples.

A rotina Heuristica2 implementa o conjunto de procedimentos que foram definidos no capítulo anterior como Heurística 2. Sempre que é

troca potencial, passível de eliminar um fragmento de um processador, é a rotina TrocarTarefas que, por sua vez, recorre à rotina RegraPDEDD verificação da possibilidade da troca. A rotina Heuristica2 tem um tempo execução relativamente grande e algo variável de instância para instância,

entre instâncias com características idênticas, o que faz supor que a implementação feita ainda terá alguma margem para melhoria. ____________

Embora a implementação computacional efectuada não tenha o nível de implementação profissional (por exemplo, a rotina que implementa a parece algo demorada, em termos de tempo de execução), revelou-se ferramenta preciosa na afinação dos modelos desenvolvidos. O interface que foi implementado (que será apresentado na próxima secção)

economias de tempo, em comparação com, por exemplo, uma entrada e saída de dados através de um ficheiro de texto.

Na próxima secção é feita uma descrição dos aspectos mais relevantes da interface gráfica e são mostradas as principais funcionalidades da implementação computacional desenvolvida.

7.3 Interface

Embora o interface desenvolvido tenha um interesse meramente académico, uma vez que a implementação da aplicação em ambiente industrial

necessitaria da implementação de comunicações com o sistema de

informação da empresa, bem como do desenvolvimento de um interface de utilização adequado aos operadores da empresa, ele foi extremamente útil no desenvolvimento dos modelos.

Como se pode ver na figura ao lado, a aplicação tem o aspecto (e também as funcionalidades) característico das aplicações do Microsoft Windows.

A aplicação possui seis menus, sendo quatro deles típicos de qualquer O menu File serve para criar, abrir e guardar documentos (instâncias). No

Capítulo 7 Implementação Computacional algumas preferências quanto à apresentação dos resultados. O menu Help dá acesso à ajuda de utilização da aplicação.

Para criar uma nova instância é necessário introduzir todos os dados relevantes dessa mesma instância. Essa tarefa deve ser feita recorrendo às caixas de diálogo do menu Instância (figura seguinte).

Para definir completamente uma instância, inicialmente, devem ser o número de processadores, o número de tarefas e o número de períodos agendamento a programar. O período de agendamento pode ser uma qualquer unidade de tempo. Estes valores são especificados na caixa de diálogo Parâmetros....

De seguida devem ser introduzidos os dados relativos às tarefas (duração, datas de disponibilidade e de conclusão) na caixa de diálogo Tarefas..., e os dados relativos aos processadores (indisponibilidades e tarefas em curso) na caixa de diálogo Máquinas....

Finalmente, deve ser activada a caixa de diálogo Adequações... para introduzir a matriz de adequações. Nesta implementação estão definidos nove níveis de adequação, que podem ser utilizados total ou parcialmente. É ainda definido um nível suplementar, designado por “Inadequado”, que, quando seleccionado, impede o agendamento de determinada tarefa em determinada máquina.

A caixa de diálogo Setups... não foi activada, uma vez que nenhum dos algoritmos desenvolvidos faz uso dos tempos de preparação.

O menu Objectivo dá acesso à caixa de diálogo Penalizações... (figura ao lado), podem ser definidas as diversas penalidades a utilizar na matriz de custos do algoritmo de transportes. Assim, podem ser definidas as várias penalidades associadas aos vários níveis de adequação tarefa/processador, e podem ser definidas as penalidades associadas à violação de datas conclusão e,

estabelecer uma deadline como um valor relacionado com a data de

conclusão das tarefas, não permitindo uma violação desta data para lá de um determinado número de períodos de agendamento.

Para calcular a solução de uma instância devem accionar-se os comandos

Relax, Heurística 1 e Heurística 2 do menu Instância. É possível observar a

evolução da solução à medida que se executam os diferentes algoritmos. A nível de solução, são apresentados ao utilizador três mapas diferentes. Um deles já foi utilizado para apresentar soluções nos capítulos anteriores. Trata-se do diagrama do tipo Gantt (figura ao lado). Um dos outros dois mapas apresenta alguns resultados calculados tarefa a tarefa e o outro apresenta resultados calculados máquina a máquina.

Dos resultados por tarefa calculados (figura seguinte), destacam-se a comparação entre as datas de disponibilidade e de início efectivo do

processamento e a comparação entre as datas de conclusão e o final efectivo do processamento, permitindo calcular os atrasos. É ainda fornecida uma relação com o número de máquinas utilizadas para cada nível de adequação.

Quanto aos resultados por máquina, é calculado o número de preparações que cada máquina teve, o último período de agendamento e a percentagem de tempo utilizado da máquina.

7.4 Conclusão

Embora esta implementação tenha sido de grande utilidade no

dos algoritmos, é totalmente inadequada para utilização ao nível fabril, uma que não está ligada ao sistema de informação da empresa e não tem um linguagem adequado (por exemplo, um operador não trabalha com períodos agendamento, mas com semanas, dias e horas). Uma interface dessa

que ser desenvolvida por profissionais da área da programação de sistemas apoio à decisão. Por outro lado, a parte relativa aos algoritmos poderá,

Capítulo 7 Implementação Computacional eventualmente, necessitar de alguma afinação em termos de eficiência computacional.

Apesar de tudo, o próprio código dos algoritmos desenvolvidos poderia ser utilizado como ponto de partida para o desenvolvimento de uma aplicação profissional, uma vez que os algoritmos cumprem a função pretendida num período de tempo aceitável.

No próximo capítulo serão apresentados os resultados de testes realizados com a presente implementação.

C a p í t u l o 8