• Nenhum resultado encontrado

Escalonamento Distribuído e Multi-Agente

Algoritmos Genéticos

2.2.2 Abordagens de Inteligência Artificial e de Inteligência Artificial Distribuída

2.2.2.7 Escalonamento Distribuído e Multi-Agente

Os sistemas descritos nesta secção abordam o problema do escalonamento segundo o paradigma da IAD. Estes sistemas caracterizam-se, em geral, pelo facto de a informação associada aos objectos do domínio de escalonamento não estar centralizada numa única entidade, ou as decisões que a actividade de escalonamento envolve serem tomadas de forma descentralizada, ou então verificam-se ambas as situações.

O sistema DAS (Distributed Asynchronous Scheduler) [Burke 1991], [Burke 1994], opera num ambiente de produção industrial de chapa de alumínio para os mercados aeroespacial e de defesa (Alcan Plate Ltd., U.K.). Este sistema dá ênfase ao aspecto de modelação e representação do ambiente fabril e baseia-se em enquadramentos para representar os recursos, as tarefas e os planos dos processos de produção. O enquadramento de cada plano contém o conjunto de tarefas do plano e a sequência para o lançamento das tarefas no escalonamento. O enquadramento de cada tarefa representa restrições temporais (basicamente as relações de precedência com outras tarefas, a data de lançamento e a data limite) e tecnológicas (lista de recursos capazes de executar a tarefa), bem como atributos para conter valores resultantes do escalonamento (tempo de início e recurso atribuído). Os recursos são representados em três níveis hierárquicos: o nível operacional, em que se representam recursos individuais

(máquinas), o nível táctico, em que se representam recursos agregados (conjuntos de máquinas com idênticas funcionalidades) e o nível estratégico, que tem a ver essencialmente com planos de processo e está no topo da hierarquia. Cada objecto em cada um dos níveis é representado por um enquadramento com valores particulares de atributos, e cada um destes enquadramentos está associado a um agente inteligente que tem a seu cargo a tomada de decisões específicas do respectivo nível de hierarquia. Quando há uma encomenda nova, o agente do nível estratégico (existe um único agente, neste nível) escolhe o plano de processo apropriado, instancia-o e delega em agentes do nível táctico a afectação dos recursos apropriados às tarefas do processo; cada um destes agentes, por sua vez, delega o escalonamento de cada tarefa num recurso nos agentes do nível operacional, que lhe são subordinados. A hierarquia de representação dos recursos serve, em boa parte, para subdividir progressivamente o problema de escalonar as tarefas para a produção de uma encomenda em subproblemas mais simples.

O esforço de resolução do problema é distribuído por agentes inteligentes cooperantes, associados a entidades no ambiente fabril, hierarquizados, em três níveis  os níveis

estratégico, táctico e operacional  de forma a reflectir a organização onde se inserem e a

estrutura do problema tratado. Como procura manter um escalonamento satisfatório num ambiente aberto em tempo real, o DAS pode ser visto como um sistema do tipo

a-qualquer-tempo. O problema de escalonamento é visto na perspectiva do PSR e os aspectos

de escalonamento predictivo e reactivo estão integrados. O objectivo maior é satisfazer as restrições temporais e só em caso extremo de impossibilidade se opta pela relaxação destas restrições.

O agentes comunicam entre si através de mensagens. A maior parte da comunicação passa através de um subsistema denominado CMS (constraint management system), o sistema de gestão de restrições, que mantém o domínio temporal de cada tarefa do problema e informa os agentes apropriados quando os seus problemas locais sofreram alteração. Através das mensagens recebidas os agentes mantêm uma visão do mundo no qual podem impor mudança por meio das mensagens que enviam. O CMS é o meio principal de comunicação através de mensagens, que endereça apenas aos agentes a que é adequado. Pode haver mensagens para notificar um agente de que o domínio de uma tarefa do seu problema foi alterado, que uma tarefa foi adicionada ou removida, ou que uma decisão tomada relativamente a uma tarefa (atribuição de tempo de início).

Sempre que há uma encomenda nova o agente do nível estratégico, apelidado S-Agent, instancia um plano de processo adequado e delega o escalonamento de cada tarefa do processo num agente de nível táctico, ou T-Agent, apropriado (o T-Agent que gere o grupo de recursos adequados para execução da tarefa). Os T-Agents tentam satisfazer restrições tecnológicas de tarefas associando-as a recursos e vêm uma tarefa como uma variável com um domínio que é o conjunto dos recursos possíveis para executar a tarefa. Cada T-Agent tem associado um assistente táctico, ou T-Assistant, que é um sistema de manutenção de verdade baseado em

assumpções (assumption based truth maintenance system), o qual representa as tarefas do T-Agent respectivo na forma de variáveis cujos valores possíveis são recursos. Cada T-Agent

obtém do T-Assistant associado o conjunto de recursos em que a tarefa a escalonar pode ser executada sem gerar conflitos a nível operacional e informa o T-Assistant da escolha do recurso, delegando a definição do intervalo de tempo de execução da tarefa num agente operacional, ou O-Agent, adequado (o O-Agent que gere o recurso individual escolhido). O que cada O-Agent faz é tentar colocar a nova tarefa no seu escalonamento local, tentando manter um escalonamento satisfatório no seu recurso. Assume-se sempre que está lidando com conhecimento incerto/incompleto, devido à natureza assíncrona do sistema DAS e à dinâmica

do ambiente. Cada O-Agent representa o seu problema através de um grafo de restrições cujos nós representam tarefas, sendo o domínio de cada uma um conjunto de intervalos de tempo (o conjunto de tempos de início possíveis da tarefa), e cujos arcos representam restrições binárias. O escalonamento das tarefas num recurso é entendido como um PSR dinâmico, em que se assume uma topologia mutável do grafo de restrições. Os O-Agents não se preocupam com a origem das mudanças, i.e., se elas são devidas a efeitos exógenos ou endógenos. O O-Agent usa um algoritmo híbrido [Prosser 1991], que combina verificação para a frente (forward

checking) [Haralick 1980] com aprendizagem superficial (shallow learning) [Dechter 1990] e retrocesso guiado por dependências (dependency directed backtracking) [Stallman 1977] (ver

apêndices B e C), ampliado para reagir a mudanças impostas ao agente. Um passo de procura no espaço de estados envolve: a) escolha de uma tarefa não escalonada, b) atribuição de um tempo de início do domínio temporal da tarefa escolhida, c) aplicação de verificação para a

frente a partir da tarefa para todas as tarefas não escalonadas e adjacentes à primeira no grafo

de restrições, com a consequente remoção de todos os valores do domínio de cada uma destas últimas tarefas que são inconsistentes com o valor atribuído à primeira (os valores removidos ficam explicitamente representados juntamente com uma justificação, o que inclui aquela tarefa e o valor atribuído). Em caso de sucesso o O-Agent devolve ao T-Agent superior um tempo de início para a tarefa, desencadeando assim a propagação de restrições através do plano do processo e originando mensagens enviadas a outros agentes. Nesta altura não há nenhuma ordenação das decisões sobre o processo e as decisões podem ser feitas assincronamente. Em caso de insucesso (i.e., se o domínio de uma tarefa ficar vazio) o O-Agent devolve um

conjunto conflito (tarefas que crê não poderem ser escalonadas de forma consistente no seu

recurso) ao T-Agent superior. Este procura então equilibrar a carga dos recursos do grupo de recursos por ele geridos. Conjuntos conflito são representados nos T-Assistants como conjunções ilegais de assumpções (apelidadas de nogoods). Cada T-Assistant dá também apoio ao T-Agent associado na resolução de conflitos. Em caso de não restar opção alguma para equilibrar a carga e resolver o conflito, o T-Agent conclui que o problema está super- constrangido e devolve ao S-Agent um conjunto conflito que envolve tarefas em vários recursos, com os conjuntos alternativos de tarefas que devem ser simultaneamente relaxadas para eliminar o conflito. O S-Agent analisa os conjuntos conflito dos T-Agents subordinados e decide-se por retrocesso inter-agente (retrocesso guiado por dependências entre T-Agents) ou, em último caso, se isso não for suficiente, relaxação das datas limite. No caso de retrocesso considera várias hipóteses de anulação do escalonamento de outras tarefas, de modo a alargar o domínio temporal da tarefa a relaxar, para que seja possível escaloná-la. Para evitar ciclos infinitos na ordem de tomada de decisão neste processo de retrocesso o S-Agent regista a sequência de decisões tomadas. No decurso destes acontecimentos é obtido novo conhecimento do problema ao nível operacional, táctico e estratégico. O retrocesso significa uma oportunidade para aprender acerca do problema e quando acontece, o sistema extrai informação sobre os caminhos de procura sem saída. Cada agente (a qualquer nível da arquitectura) tem capacidades reactivas, de retrocesso guiado por dependência e de aprendizagem, sendo a capacidade de aprendizagem a que permite reter conhecimento sobre o espaço de procura. A representação usada para recursos e tarefas permite ao sistema representar todas as oportunidades que restam no escalonamento. O sistema não diferencia alterações induzidas pelo exterior, ou pelo interior, bem como não diferencia escalonamento predictivo de escalonamento reactivo (a reacção é entendida como uma continuação da procura da solução). Quando o retrocesso inter-agente falha (i.e., não há escalonamentos de tarefas para anular) o S-Agent recorre à relaxação de datas limite. O escalonamento é desfeito para todas as tarefas do processo e a seguir elas são re-escalonadas do início para o fim do plano do processo.

No CMS, a propagação de restrições é apoiada por uma rede de restrições em que se representam restrições unárias (como tempo de início, recurso, data de lançamento) e restrições binárias (relações de precedência) que, combinados, dão origem ao domínio

temporal (tempos de início válidos) de cada tarefa. Cada restrição temporal é composta por

uma colecção de restrições componentes (de cuja intersecção se obtém uma representação resultante), cada um com a forma (Source (S E)), em que Source identifica a origem da restrição componente e S e E os tempos de início e fim, respectivamente, do intervalo de tempo permitido. Quando uma decisão é desfeita, as restrições componentes a retrair podem ser identificadas através do conteúdo de Source. Também, na resolução de conflitos, a representação das restrições temporais componentes permite a identificação de restrições unárias em conflito pelo S-Agent. A propagação de restrições processa-se através das restrições binárias e é originada por uma mudança no domínio temporal de uma tarefa, resultante da alteração de uma restrição unária. Devido à natureza assíncrona da resolução do problema e à dinâmica do ambiente a retracção de restrições é usual em DAS. Este processo de retracção é incremental, ao contrário de muitos algoritmos existentes (como, por exemplo, o proposto por [Mackworth 1985]), que recalculam a rede do princípio quando há uma retracção.

O micro-oportunismo de DAS é conseguido através de um mecanismo de prioridades de tarefas. Cada tarefa tem um atributo denominado prioridade operacional, com valor inicial de 0, que é uma medida da dificuldade de satisfação das restrições temporais e tecnológicas associadas à tarefa (pode ser vista como uma representação do esforço despendido para chegar a uma decisão de escalonamento da tarefa, durante a resolução do problema). Cada agente foca a sua atenção, em primeiro lugar, nas decisões de escalonamento de tarefas com maior prioridade. Sempre que um conflito é comunicado para um nível acima na hierarquia de agentes a prioridade das tarefas do conflito é incrementada.

Para a sincronização dos níveis táctico e operacional pode haver dois tipos de regimes. No

regime disciplinado, cada T-Agent espera até que os O-Agents subordinados tenham resolvido

o problema delegado neles (ou chegado a uma situação de conflito), para então delegar neles mais trabalho. Neste regime não há assincronia mas o T-Agent obtém a informação completa vinda dos subordinados, sendo melhor para problemas super-constrangidos. No regime

indisciplinado, o T-Agent mistura resolução de conflitos com delegação. Há neste regime um

maior grau de assincronia, mas também uma maior possibilidade de perda de oportunidades na tomada de decisão; é um regime melhor para problemas pouco constrangidos. A sincronização dos níveis estratégico e táctico e a sincronização dos níveis táctico e operacional são semelhantes. Nos níveis táctico e operacional, o regime indisciplinado resulta, em princípio, num estilo de gestão super-reactivo originando perda de informação estratégica, enquanto que no regime disciplinado haverá perda de assincronia. Na actual realização de DAS encontrou-se um equilíbrio entre os regimes disciplinado e indisciplinado, originando a um trabalho do

S-Agent com conhecimento “quase” completo. Para se conseguir este equilíbrio, só se permite

que o S-Agent introduza novo trabalho no sistema quando todos os T-Agents já não tiverem trabalho para delegar nos O-Agents subordinados; isto não acontece necessariamente apenas quando os T-Agents e os O-Agents tenham atingido um estado final na resolução do seu problema, nem implica que o S-Agent trabalhe com informação completa.

Em [Custódio 1998] discutem-se formas de organização de uma sociedade de agentes para o controlo da produção. Estruturas hierárquicas, em que os agentes estão organizados em diferentes níveis de, são contrapostas a estruturas não hierárquicas em que a responsabilidade é descentralizada.

Em [Sycara 1991a] é descrito um sistema descentralizado baseado em agentes para escalonamento da produção, no contexto de um projecto de investigação denominado CORTES. A natureza inerentemente descentralizada das actividades a coordenar numa fábrica requer uma correspondente descentralização dos mecanismos de planeamento e controlo. No plano teórico, o interesse maior deste projecto é a investigação em técnicas de coordenação quando a informação disponível se degrada ou se torna incompleta e quando a necessidade de reagir de cada agente aumenta devido a conflitos com decisões de escalonamento de outros agentes. Os agentes do CORTES supervisionam a execução de diferentes processos de diferentes encomendas (neste aspecto, difere bastante do sistema DAS, descrito anteriormente). Adicionalmente, cada agente monitora a capacidade disponível de recursos (máquinas) que têm a seu cargo. Os agentes são programas que correm em computadores separados e podem comunicar através de mensagens via rede electrónica. Tanto em [Sycara 1991a] como em [Sycara 1991b] é descrito o protocolo de comunicação entre agentes. Os recursos da fábrica são partilhados pelos agentes: estes competem pela utilização dos recursos para execução das tarefas dos seus processos. Como é usual existem basicamente dois tipos de restrições: restrições temporais, incluindo de precedência entre tarefas e datas de lançamento e limite, e restrições de capacidade. A capacidade limitada dos recursos (máquinas com capacidade unitária) induz interacções entre processos diferentes, do mesmo agente e de agentes diferentes, que competem simultaneamente pelo mesmo recurso.

Neste ambiente de escalonamento distribuído cada agente tem um conhecimento limitado do ambiente, das restrições e das intenções de outros agentes (devido ao facto de a quantidade de informação que os agentes podem comunicar entre si ser limitada e também de tender a ficar rapidamente desactualizada com as decisões que os agentes tomam de forma assíncrona). Os agentes tomam decisões locais de afectação de recursos a tarefas específicas em intervalos de tempo específicos e o sistema como um todo deve chegar a soluções globais intercalando computação local com comunicação entre agentes. O objectivo é determinar escalonamentos não apenas possíveis mas também de boa qualidade, isto é, que optimizam um objectivo global (como, por exemplo, minimizar atraso nos processos, ou minimizar volume de trabalhos em curso) e ainda de uma forma eficiente (i.e., minimizar o retrocesso na procura da solução). No projecto CORTES as duas preocupações, da qualidade da solução e da eficiência no processo de procura da solução, coexistem.

A metodologia para abordar o problema de escalonamento distribuído empregue no CORTES baseia-se num modelo de resolução distribuída de problemas, apelidado procura heurística

com restrições distribuída (distributed constrained heuristic search ou CHS) formalizado em

[Sycara 1991b], que evoluiu a partir de um modelo correspondente para o caso da resolução de problemas centralizado (ver, por exemplo, [Fox 1989], [Fox 1990]). Essencialmente, estes mesmos conceitos foram aplicados para o caso de escalonamento centralizado no sistema Micro-Boss, já anteriormente descrito.

Tal como acontecia no Micro-Boss, a cada tarefa é associada uma função de preferência que associa, a cada possível reserva para a tarefa55 um valor de preferência. Estas preferências advêm de objectivos organizacionais globais como minimização de atrasos (para cumprir datas limite), minimização de avanços (para reduzir existências de produtos acabados), minimização de tempos de fluxo de processos (para reduzir o volume de trabalhos em curso) e outras

55

Tal como acontecia no Micro-Boss, cada tarefa é vista como uma variável agregada, cujo valor é uma reserva possível isto é, um tempo de início e um recurso para cada requerimento de recurso da tarefa. Em [Sycara 1991a] considera-se o caso simples de cada tarefa requerer um único recurso (para o qual poderá haver várias alternativas).

preferências, como preferências de uma tarefa por uma certa máquina, ou por ser executada num certo turno. Num escalonamento, a soma dos valores das funções de preferência para todas as tarefas escalonadas por todos os agentes do sistema define o valor da função objectivo global. A soma dos valores das preferências das tarefas escalonadas por cada agente constitui a visão local do agente da função objectivo global (os agentes não conhecem a função objectivo global). Como os agentes competem pela utilização dos recursos partilhados, para cooperarem não é suficiente optimizarem apenas as suas preferências locais, sendo necessário terem também em conta as preferências dos outros agentes quando escalonam as suas tarefas.

Inicialmente, existem encomendas que originam processos. São então atribuídos processos a cada agente para escalonamento das respectivas tarefas. Para determinação de uma solução, cada agente, iterativamente, escolhe uma tarefa para escalonar e uma reserva para essa tarefa, construindo incrementalmente, e de forma assíncrona, um escalonamento para os processos que lhe foram atribuídos. Sempre que um agente escalona uma tarefa são criadas novas restrições no sistema que reflectem a nova reserva. Estas restrições são propagadas localmente para o agente e para toda a rede de agentes, i.e., comunicadas aos outros agentes e propagadas localmente neles. Em caso de a propagação determinar que existe violação de restrições, o sistema executará retrocesso; no caso contrário, o agente prossegue escolhendo a próxima tarefa a escalonar e uma reserva para essa tarefa. Por uma questão de eficiência, o mecanismo de propagação de restrições procura apenas determinar dois tipos de inconsistência específicos: violação de restrições de precedência num processo e violação de restrições de capacidade entre um grupo de tarefas escalonadas e uma tarefa a escalonar. No caso específico das restrições de capacidade, as inconsistências envolvendo tarefas ainda não escalonadas só serão detectadas quando sistema escalonou todas as actividades em conflito menos uma. Pode assim acontecer que uma certa reserva decidida por um agente num certo momento venha a forçar os agentes a retroceder mais tarde.

O problema do retrocesso é aqui ainda mais crítico do que na versão centralizada do modelo por causa do custo adicional da comunicação entre agentes. Por essa razão, é importante que o sistema foque a procura de modo a reduzir o número de retrocessos e de decisões a serem desfeitas quando o retrocesso tem de ocorrer. Isto é conseguido à custa de técnicas heurísticas, nomeadamente heurísticas de ordenação de variáveis (para as tarefas), heurísticas de ordenação de valores (para as reservas) e um mecanismo de retrocesso (não cronológico) denominado salto-para-trás (backjumping, ver Apêndice C).

No que respeita às heurísticas de ordenação o processo é semelhante ao empregue no Micro-Boss e inclui, adicionalmente, passos de comunicação entre agentes. Para ordenação das tarefas, a cada tarefa não escalonada é atribuído um valor de criticalidade que mede, de forma aproximada, a probabilidade de a tarefa vir a estar envolvida num conflito (conflito este que não pode ser detectado de forma imediata pelo mecanismo de propagação de restrições). Ao escolher como próxima tarefa a escalonar a tarefa que tem maior valor de criticalidade, os agentes minimizam a probabilidade de estarem construindo escalonamentos parciais que não poderão completar e, portanto, reduzem a probabilidade de retrocesso.

Para obter os valores de criticalidade cada agente constrói um perfil de procura agregado que reflecte, para cada recurso que as suas tarefas requerem, o grau de necessidade dessas tarefas agente relativamente ao recurso ao longo do tempo. Os agentes comunicam entre si estes

perfis de procura agregados para cada recurso partilhado56 e podem, então, calcular o perfil de procura agregado global do sistema para cada recurso partilhado. A criticalidade de uma tarefa é dada pela contribuição da tarefa para este perfil global de procura para um dado recurso. O recurso com o maior pico de procura é identificado como o recurso então congestionado e das suas tarefas, cada agente escolherá para próxima tarefa a escalonar a tarefa que mais contribui para esse pico.

Para escolha da reserva atribuir à tarefa seleccionada para escalonamento o sistema dispõe de um conjunto de estratégias que podem variar entre a estratégia do valor menos limitativo (least constraining value ou LCV), e uma estratégia glutona, ou greedy value (GV). No caso extremo em que a estratégia se baseia numa heurística do tipo LCV, cada agente tem um