• Nenhum resultado encontrado

METODOLOGIA PARA O DESENVOLVIMENTO DO SIMULADOR MULTIAGENTE

3.3 DEFINIÇÃO DA POLÍTICA DE ALOCAÇÃO DE RECURSOS

  Figura 12: Diagrama de seqüência do primeiro momento do leilão de um novo navio com

SMA benevolente

Para um agente píer montar uma proposta e enviá-la ao agente navio, ele deve receber e escolher as melhores propostas enviadas pelos agentes tanques. Para a escolha da primeira proposta, o agente píer escolhe a proposta do tanque que apresenta maior nobreza. Caso seja necessário mais algum tanque para receber o inventário do navio, é levado em consideração o lucro das demais propostas, sendo o lucro calculado em função do valor da nobreza do tanque e do tempo que o navio deverá permanecer no píer para que a proposta seja utilizada, evitando períodos de ociosidade. Sempre que possível, é escolhida a proposta que possui menor hora de término, objetivando reduzir o horizonte de planejamento.

3.3 DEFINIÇÃO DA POLÍTICA DE ALOCAÇÃO DE RECURSOS

Para a modelagem do SMA proposto, foi analisado o processo de desenvolvimento de um modelo utilizando a PLIM, com o objetivo de unir as vantagens de um SMA (descentralização) com as vantagens presentes na PLIM (garantia que as restrições serão respeitadas e que o ótimo da função objetivo será atingida).

Para o desenvolvimento de um modelo utilizando PLIM há necessidade de definir o problema a ser abordado, identificando as restrições nele presentes e alguns fatores que influenciam a função de avaliação (função objetivo) do problema em estudo. Uma clara delimitação de escopo é mandatória. As informações obtidas serão utilizadas no processo de formulação matemática.

Para a modelagem do SMA proposto, tais identificações também foram realizadas, entretanto de modo inverso, uma vez que o modelo do porto já havia sido modelado utilizando PLIM em MÁS (2001), e dessa modelagem, foram extraídas a função objetivo e as restrições.

3.3.1 Função Objetivo do Sistema

A função objetivo utilizada pelo SMA para o problema do porto possui como critério a maximização do lucro, ou seja, a diferença entre receitas e despesas (custos) no porto. Para o presente trabalho, foi utilizada a mesma função objetivo de MÁS (2001), BOSCHETTO (2006) e VEIGA (2006).

A função objetivo é representada pela seguinte fórmula:

Função Objetivo = Maximizar( receita das classes de óleo nas refinarias

+ (receita final de óleo no porto - receita inicial de óleo no porto) – custo do óleo cru nos navios

– custo de utilização dos píeres – custo de sobre-estadia dos navios

– custo de interface entre duas classes de óleo cru no oleoduto )

Sendo:

• receita das classes de óleo nas refinarias: o somatório dos volumes de todas as classes de óleos crus enviadas para as refinarias multiplicadas pelo valor da lucratividade de cada classe de óleo na refinaria;

• receita final de óleo no porto - receita inicial de óleo no porto: é o inventário de óleo cru que restou nos tanques do porto no final da simulação, diminuído da quantidade inicial de óleo nos tanques no início da simulação. Essa diferença é multiplicada pelo valor da lucratividade de cada classe de óleo no porto;

• custo do óleo cru nos navios: é o inventário de todos os navios do sistema, multiplicado pelo custo de cada tipo de óleo cru no navio;

• custo de utilização dos píeres: representa o gasto para atracar todos os navios nos píeres;

• custo de sobre-estadia dos navios: é o somatório dos valores de sobre-estadia de todos os navios no porto;

• custo de interface entre duas classes de óleo cru no oleoduto: custo das interfaces utilizadas pelos oleodutos para transferir as diferentes classes de óleos dos tanques para as refinarias.

A representação formal da função objetivo é dada pela Equação 1.

(1)

Sendo:

R – Conjunto de Refinarias no sistema;

CL – Conjunto das classes de Óleo Cru no sistema; T – Conjunto dos Tanques no sistema;

N – Conjunto dos Navios no sistema; P – Conjunto dos Píeres no sistema; O – Conjunto dos Oleodutos no sistema; E – Conjunto de eventos do sistema;

CLRr – Conjunto de classes de óleo cru que abastecem a refinaria r; REV Rcl, r class – Receita de volume da classe cl da refinaria r [$/1000m3]; ORr – Conjunto de oleodutos que abastecem a refinaria r;

TCLcl – Conjunto de tanques que armazenam petróleo da classe cl; TOo – Conjunto de tanques que podem ser conectados ao oleoduto o;

QUTt,o,e – Quantidade de óleo cru descarregado do tanque t no oleoduto o no evento e [1000m3];

REV Pcl class – Receita da classe cl no porto [$/1000m3]; Vt,E T – Estoque no tanque t no final da simulação [1000m3]; Vt0 – Quantidade inicial de óleo no tanque t [1000m3];

COSTccrude – Custo do tipo de óleo cru c nos navios [$/1000m3]; NCc – Conjunto de navios que armazenam o tipo de óleo cru c; Cn,c – Carga de Óleo cru c do navio n [1000m3];

NPp – Conjunto de navios que podem atracar no píer p; τn,pstart – Instante de entrada do navio n do píer p [h]; τn,pend – Instante de saída do navio n do píer p [h]; COSTnse – Custo de sobre-estadia do navio n [$/h]; Tnse – Tempo de sobre-estadia do navio n [h];

CLOo – Conjunto de classes de óleo cru que são transportados pelo oleoduto o; COSTcl, cl’ face – Custo de interface entre as classes cl e cl’ [$];

INTcl,cl0,o,e – Indica se houve ou não interface entre classes de óleo cru cl e cl’ no oleoduto o entre o evento e e o evento e+1.

Como o sistema proposto é multiagente, a implementação da função objetivo é distribuída na lógica dos vários agentes inseridos no sistema, sendo que cada agente implementa apenas as funções específicas referentes às suas atividades na cadeia de suprimento.

Abaixo segue os itens da função objetivo, bem como os agentes envolvidos:

• receita das classes de óleo nas refinarias: esse item é de responsabilidade do agente píer, que ao receber um cfp de um novo navio seleciona para receber o inventário do navio os tanques que possibilitam maximizar a receita das classes de óleo na refinaria. Essa receita é maximizada quando utiliza-se tanques com maiores nobrezas. A nobreza é a valorização de cada classe de óleo quando é transportada do porto para a refinaria, uma vez que o valor da classe de óleo na refinaria é maior que o valor da classe de óleo no porto;

• receita final de óleo no porto menos receita inicial de óleo no porto: como o objetivo é enviar todo o óleo possível do porto para a refinaria no final da simulação, esse item não precisa ser levado em consideração pelos agentes uma vez que, ao final da simulação, a receita final do óleo no porto sempre será o inventário nos tanques do porto no final da simulação (não pode ser esvaziado totalmente, devendo permanecer uma quantidade mínima nos tanques) menos o óleo existente no porto no início da simulação;

• custo do óleo cru nos navios: esse item também não é levado em consideração pelos agentes, uma vez que o inventário de cada navio é imposto, não sendo decidido pelo SMA;

• custo de utilização dos píeres: a redução do custo de utilização dos píeres é responsabilidade do agente píer e do agente navio. Do agente píer porque ele deve montar uma agenda de descarregamento do navio que possibilite um menor tempo de

atracagem no píer. Do agente navio porque ele deve selecionar dentre os píeres que o suporte, o que possua menor custo por hora de atracagem;

• custo de sobre-estadia dos navios: esse item também é de responsabilidade do agente píer, uma vez que a agenda que ela prepara para o navio deve respeitar o período de entrada do navio no porto e não deve ultrapassar o tempo limite de saída do navio, caso seja necessário utilizar sobre-estadia, procura-se minimizar esse tempo;

• custo de interface entre duas classes de óleo cru no oleoduto: o agente tanque é o responsável por selecionar, dentre todos os oleodutos ligados a ele, o que possibilita enviar sua classe de óleo com o menor custo de interface. O custo de interface só não é levado em consideração se uma das refinarias ligadas ao porto possui seu estoque próximo do mínimo, com isso essa refinaria tem prioridade em receber o óleo cru.

3.3.2 Restrições do Sistema

Em PLIM, elas são representadas por um conjunto de equações/inequações. Para o modelo do porto, as restrições do sistema, segundo MÁS (2001), são apresentadas na listagem abaixo, e são codificadas dentro de agentes específicos:

• Cada navio pode atracar em um só píer: restrição tratada pelo agente navio, que ao receber as respostas para os pedidos de cotação, seleciona apenas um píer para atendê-lo;

• A quantidade de óleo cru a ser descarregada pelo navio deve ser igual a carga total de óleo existente no navio: restrição tratada pelo agente píer que, ao receber um pedido de cotação do navio, procura encontrar tanques para receber todo o inventário do mesmo, caso contrário responde o pedido de cotação com a mensagem de refuse, o que indica que o píer não está apto a atracar o navio;

• Um tanque não pode ser carregado e descarregado ao mesmo tempo: restrição tratada pelo agente tanque, que antes de agendar um novo carregamento ou descarregamento, verifica sua agenda para não permitir as duas operações no mesmo intervalo de tempo;

• Um oleoduto pode estar conectado somente a um tanque por vez: o agente oleoduto verifica sua agenda para não permitir duas conexões ao mesmo tempo;

• Um navio somente pode estar conectado em um tanque de cada vez: restrição tratada pelo agente píer, que ao receber o pedido de cotação do navio, seleciona um ou mais tanques para receber seu inventário. Caso seja necessário mais de um tanque, o agente píer verifica as propostas para que o navio não utilize dois tanques ao mesmo tempo;

• No início da simulação, a quantidade de óleo em cada tanque deve ser igual ao volume inicial informado: ao ser iniciado, o agente tanque valoriza seu estoque inicial com as informações referentes ao cenário;

• Um tanque não pode armazenar mais que sua capacidade máxima: ao enviar uma proposta ao agente píer, o agente tanque verifica sua agenda e envia uma proposta respeitando sua capacidade máxima;

• Um tanque não pode armazenar menos que sua capacidade mínima: ao solicitar seu descarregamento no oleoduto, o agente tanque sempre descarrega seu volume atual menos sua capacidade mínima, garantindo que essa restrição não seja violada; • No início da simulação, a quantidade de óleo nas refinarias devem ser iguais ao

volume inicial informado: ao ser iniciado, o agente refinaria valoriza seu estoque inicial com as informações referentes ao cenário;

• Uma refinaria não pode armazenar mais que sua capacidade máxima: ao receber pedido de proposta para o descarregamento de um tanque, o agente oleoduto solicita informações sobre o inventário da refinaria. Se a mesma estiver com sua capacidade máxima de armazenamento, o agente oleoduto responde o pedido de cotação do tanque com uma mensagem de refuse;

• Uma refinaria não pode armazenar menos que sua capacidade mínima: ao receber pedido de proposta para o descarregamento de um tanque, o agente oleoduto solicita informações sobre o inventário da refinaria, se a mesma estiver com sua capacidade próxima do mínimo, o agente oleoduto irá enviar uma mensagem ao tanque indicando o estado crítico da refinaria, fazendo com que o tanque o escolha para o descarregamento;

• A quantidade de óleo descarregado pelo navio em um período de tempo deve ser igual ao período de tempo multiplicado pela vazão de descarregamento: essa restrição é tratada pelo agente píer, que ao receber a resposta do pedido de cotação vinda do tanque, verifica se a quantidade proposta é proporcional ao tempo necessário para receber o inventário multiplicado pela vazão do navio;

• A quantidade de óleo descarregado pelo tanque em um período de tempo deve ser igual ao período de tempo multiplicado pela vazão de descarregamento: essa restrição é tratada pelo agente tanque, que ao receber a resposta do pedido de cotação vinda do oleoduto, verifica se a quantidade proposta é proporcional ao tempo necessário para enviar o inventário multiplicado pela vazão do oleoduto;

• Ao transportar duas classes de óleo distintas no oleoduto, gera-se uma interface: restrição tratada pelo oleoduto, o qual possui uma agenda das últimas classes transportas, com isso é possível verificar o valor da interface que será utilizada;

• Um tanque só pode enviar óleo pelo oleoduto após um período de decantação de no mínimo 24 horas: restrição tratada pelo agente tanque, que ao aferir que sua capacidade ultrapassou a metade do nível máximo, agenda o período de decantação de 24 horas, e envia um pedido de cotação aos oleodutos para o descarregamento na seqüência.

As restrições apresentadas anteriormente são restrições operacionais, entretanto quando se utiliza tempo contínuo na PLIM, existe a necessidade de adicionar uma série de restrições referentes ao tempo de ocorrência dos eventos. Para a modelagem do SMA, essas restrições temporais não foram necessárias, já que a representação temporal é tratada de maneira diferente.

3.3.3 Representação Temporal no SMA

Ao contrário da PLIM em que se pode optar pelo tempo discretizado ou contínuo, no SMA proposto o tempo é tratado apenas de forma contínua.

Para a utilização de tempo contínuo na PLIM, é necessária a definição de restrições temporais, por exemplo, indicar que a hora de término do descarregamento de um navio nos tanques deve ser menor que a hora em que o navio desatraca do píer.

Para o SMA proposto não são necessárias tais restrições, uma vez que o processo de alocação acontece de forma seqüencial, tendo início com a chegada do navio nas proximidades do porto. Esse evento inicia uma seqüência de leilões (Figura 8) que objetivam alocar o novo navio nos píeres, distribuir seu inventário entre os tanques mais lucrativos, agendar a decantação dos tanques que atingirem sua capacidade máxima e selecionar oleodutos para enviarem o óleo dos tanques decantados para as refinarias. Todos os eventos

citados anteriormente possuem uma hora de início, uma hora de fim e um quantificador que informa, por exemplo, o volume de óleo que será movimentado no sistema.

Como os agendamentos dos recursos acontecem de forma seqüencial (seguindo a lógica dos três leilões - Figura 8), não acontecem inconsistências temporais nos agendamentos, como terminar de descarregar o inventário de um navio nos tanques após o mesmo ter desatracado do píer.

3.3.4 Política para a Escolha dos Recursos

A política para escolha de recursos no SMA foi elaborada após a observação de vários resultados ótimos obtidos pelo modelo de MÁS (2001) para diferentes cenários. O resultado ótimo representa a maneira mais lucrativa de alocar os navios e seus inventários no porto. Caso não seja possível uma observação prévia dos resultados ótimos, uma coleta de informações com especialistas no problema pode auxiliar na definição das políticas para escolha dos recursos.

Após a observação dos resultados ótimos gerados pela PLIM, foi identificado que, na maioria dos casos, no início da simulação (etapa inicial), os tanques decantados com maiores nobrezas eram os primeiros a serem enviados para a refinaria. Com isso os tanques mais nobres tornam-se disponíveis antes dos tanques menos nobres, permitindo que navios os utilizem precocemente.

Em uma etapa intermediária, foi identificado que na maioria das vezes os navios são descarregados primeiramente no tanque livre mais nobre, caso não seja possível descarregar todo o inventário do navio nesse tanque, então os mesmos selecionam o segundo tanque mais nobre e assim por diante.

Outra característica observada nos resultados ótimos é que o processo de descarregar dos tanques é feito totalmente, ou seja, ao descarregar um tanque no oleoduto todo seu inventário é enviado, permanecendo no tanque apenas a quantidade mínima, já que o custo de interface não depende da quantidade descarregada. Por esse motivo, é comum ao final da simulação não haver uma etapa final de descarregamento, já que conforme os tanques vão recebendo inventário, os mesmos vão descarregando no oleoduto. Havendo a necessidade de um descarregamento final, os tanques que possuem um menor custo de interface são descarregados primeiro.

• Etapa inicial: define-se uma agenda para descarregamento dos tanques já decantados no início da simulação, a fim de aumentar a disponibilidade dos tanques para receberem o inventário dos navios;

• Etapa intermediária: atracar os navios, selecionando os tanques mais lucrativos para receber o inventário. Se o tanque chegar à sua capacidade máxima, deve-se agendar a decantação do tanque, descarregando-o totalmente no oleoduto assim que possível, respeitando a capacidade mínima e máxima da refinaria;

• Etapa Final: Verificar quais tanques possuem inventário ao final da simulação, definindo uma agenda para descarregamento dos mesmos.

Após observação, as características relatadas foram implementadas no SMA. Com o objetivo de produzir resultados próximos do ótimo global sem avaliar todas as possíveis soluções (o que acontece na PLIM que faz uso do algoritmo branch-and-bound, por exemplo), mas apenas as soluções potenciais para o resultado ótimo.

Na Figura 13 é apresentado um exemplo simplificado da chegada de um navio ao porto (navio Muriae), o qual possui a opção de atracar em dois píeres (P-1 e P-2), e descarregar em dois tanques (T-1 e T-2). Para o exemplo, considerou-se que o Muriae está carregado com 15 u.m. (unidade de medida) de um tipo de óleo. Ambos os tanques possuem uma capacidade livre igual a 10 u.m. O tanque T-1 possui uma nobreza igual a 5, enquanto a nobreza do tanque T-2 é igual a 10. Dadas essas informações (sem considerar outras variáveis ou informações temporais), o algoritmo branch-and-bound geraria uma árvore semelhante à da Figura 13.

Nesse exemplo, são apresentadas na árvore todas as opções de atracagem para o navio Muriae. A primeira pesquisa será realizada para calcular o lucro do navio atracando no P-1, descarregando 10 u.m no tanque T-1 e 5 u.m. no tanque T-2. Somando-se os lucros e subtraindo deste o custo do píer, tem-se um lucro final de 90.

Assim o algoritmo irá explorar as outras possíveis soluções até chegar na solução do ramo mais a direita da figura, onde o mesmo atracaria no P-2, descarregando 10 u.m no T-2 e 5 u.m. no T-1, obtendo um lucro final de 120. Essa é a solução com maior lucro final, logo seria escolhida pelo modelo de MÁS (2001) que faz uso do algoritmo branch-and-bound.

Com a aplicação do SMA no mesmo cenário, a princípio o navio Muriae escolheria o píer com menor custo (P-2) para continuar sua pesquisa por soluções a partir dele. A segunda escolha seria o tanque mais lucrativo (T-2). Como o inventário não pode ser descarregado totalmente nesse tanque, o segundo tanque mais lucrativo é escolhido para o inventário restante (T-1), o que produziria o resultado final. Dessa forma, o SMA consegue encontrar resultados próximos dos ótimos (e em algumas vezes o resultado ótimo) rapidamente, já que ao escolher as opções mais lucrativas acontece uma poda na árvore, sendo que as soluções podadas não serão mais consideradas.Entretanto, o SMA proposto não garante que a melhor solução seja encontrada, uma vez que o espaço de busca explorado é menor que o espaço de busca da PLIM.

Complementando o exemplo anterior, se no SMA, após a alocação do navio Muriae for adicionado um segundo navio, sendo que este deve permanecer um tempo muito curto no porto para não ser cobrada a taxa de sobre-estadia, e sendo ele carregado de 5 u.m. de um óleo que só pode ser descarregado no T-2, o SMA já não encontraria a melhor solução. Isso porque a solução encontrada pelo SMA para o navio Muriae utilizou a capacidade máxima do tanque T-2, e esse tanque deve decantar por 24 horas, descarregar seu conteúdo no oleoduto para só então poder receber o inventário do segundo navio. Provavelmente até essa hora, já tenha sido cobrada uma taxa considerável de sobre-estadia. Na Figura 14, é apresentada a carta de Gantt (detalhes sobre cartas de Gantt são apresentados no APÊNDICE 1), com informações gráficas sobre o exemplo citado.

Figura 14: Mapa de Gantt apresentando um exemplo de cenário onde o SMA não encontra a solução ótima

Nessa situação, como a PLIM gera um grafo contendo mais possibilidades de alocações, ela irá alocar o navio Muriae fazendo com que ele utilize apenas 5 u.m. do tanque T-2, deixando o restante livre para receber o segundo navio, que será atracado na seqüência,