• Aucun résultat trouvé

TP-2 : Synthèse : site users

exemple 5 : formuaire-GET

9. TP-2 : Synthèse : site users

A figura 14 apresenta o diagrama de sequência da troca de mensagens entre os agentes do SMA baseado em LC.

Figura 14 - Diagrama de sequência da troca de mensagens entre os agentes Fonte: Autoria Própria

Inicialmente o sistema realiza a leitura dos dados de entrada do cenário de teste. Após isto, faz a criação do agente Manager, que por sua vez faz a criação dos agentes ManagerModal, Auctioneers e Bidders. Logo que é criado, o agente ManagerModal faz a criação dos agentes do tipo Modal.

De forma sucinta o Manager envia uma mensagem do tipo PROPAGATE para os agentes Auctioneers com um identificador TOKEN_AUCTION para iniciar os leilões combinatoriais.

Ao receber a mensagem TOKEN_AUCTION cada agente Auctioneer verifica os produtos e quantidades que possui para ofertar e então envia um anúncio aos agentes Bidders com as informações sobre os produtos e quantidades que deseja propor. Nos termos definidos pelo protocolo Contract-net, este anúncio é chamado CALL-FOR-PROPOSAL (CFP).

Ao receber uma mensagem CFP cada agente Bidder verifica as restrições de possuir rota com o Auctioneer que enviou o CFP e de precisar de pelo menos um dos produtos sendo propostos, então de acordo com a estratégia de participação em leilões definida, faz uma oferta de compra envia uma mensagem do tipo PROPOSE contendo a oferta. Caso o Bidder decida não participar do leilão ele envia ao Auctioneer uma mensagem do tipo REFUSE.

Cada agente Auctioneer aguarda um prazo configurado para receber todas as ofertas dos agentes Bidders e então faz a chamada do algoritmo CABOB (apresentado na seção 3.5.5.1) passando a lista de ofertas recebidas. O CABOB é então executado e retorna ao Auctioneer a melhor oferta.

O Auctioneer envia uma mensagem do tipo REQUEST com o identificador LOCK_MODAL para o agente ManagerModal solicitando a alocação de uma rota de fluxo disponível entre ele o Bidder que fez a oferta ganhadora. Caso ainda exista saldo disponível para escoar pelo Auctioneer, ele executa novamente o CABOB encontrando a próxima oferta vencedora, até que não exista mais saldo disponível para escoar ou a lista de ofertas recebidas já tenha sido toda percorrida.

O agente ManagerModal ao receber a mensagem REQUEST com identificador LOCK_MODAL verifica se existe uma rota de fluxo com capacidade de transporte disponível para o período de execução do sistema. Caso exista uma rota de fluxo com capacidade de transporte, o agente marca a rota encontrada e envia uma mensagem do tipo QUERY-REF para cada agente Modal que compõe a rota selecionada. Após isto, envia uma mensagem do tipo CONFIRM para o agente Auctioneer que solicitou a alocação de uma rota de fluxo, passando o identificador da rota de fluxo alocada. Caso não exista nenhuma rota de fluxo com capacidade de transporte, o ManagerModal envia uma mensagem com performativa DISCONFIRM para o Auctioneer.

Ao receber uma mensagem CONFIRM do ManagerModal, o agente Auctioneer envia uma mensagem do tipo ACCEPT-PROPOSAL para o Bidder dono da melhor oferta (oferta vencedora do LC) e envia mensagens do tipo REJECT-

PROPOSAL para os demais Bidders que estavam participando do leilão. No caso de receber uma mensagem DISCONFIRM, o Auctioneer retira a oferta vencedora da lista de ofertas recebidas e faz uma nova chamada do algoritmo CABOB passando o novo conjunto de ofertas recebidas até encontrar um agente Bidder que possa ser ganhador do LC que está realizando ou até não haver mais agentes que possam ser ganhadores do leilão que está promovendo.

O agente Bidder vencedor do LC recebe uma mensagem do tipo ACCEPT- PROPOSAL, então ele valida se ainda possui necessidade dos produtos que havia solicitado na oferta enviada ao Auctioneer. Caso ainda precise, envia uma mensagem do tipo INFORM ao Auctioneer para confirmar a negociação, caso contrário, envia uma mensagem do tipo FAILURE.

Ao receber uma mensagem do tipo INFORM do Bidder ganhador do leilão, o Auctioneer atualiza os saldos de estoque disponível. Ele aguarda uma resposta de todos os agentes para os quais enviou ACCEPT-PROPOSAL, voltando a buscar novos ganhadores caso seja necessário. Após receber confirmação de todos os agentes ganhadores ou não ter mais agentes para selecionar como ganhadores, ele

envia uma mensagem do tipo INFORM_REF com identificador

FINALIZATION_AUCTIONS para o agente Manager informando que finalizou o LC que estava realizando.

Caso o Auctioneer receba uma mensagem do tipo FAILURE do Bidder ganhador do leilão, ele envia uma mensagem do tipo REQUEST com identificador UNLOCK_MODAL para o agente ManagerModal solicitando a desalocação dos modais de transporte pertencentes à rota de fluxo que havia sido selecionada, e então retira a oferta do Bidder da lista de ofertas recebidas e faz uma busca por um novo ganhador para o seu leilão combinatorial.

Ao receber uma mensagem REQUEST com identificador UNLOCK_MODAL, o agente ManagerModal atualiza a alocação dos modais de transporte pertencentes a rota de fluxo que havia sido alocada e faz o envio de uma mensagem do tipo QUERY-IF para cada agente Modal que havia sido alocado, desalocando-o.

Cada agente Modal ao receber uma mensagem do tipo QUERY-REF atualiza o saldo disponível retirando o valor alocado do saldo atual e caso receba uma mensagem do tipo QUERY-IF atualiza o saldo disponível somando ao saldo atual o valor que deve ser desalocado.

O agente Manager aguarda até receber a confirmação de finalização de todos os agentes Auctioneers que estavam realizando um LC e então finaliza a execução dos agentes e do sistema.

Documents relatifs