Leilão (Presa - Predador)

O que é o Leilão?
Baseado em um leilão verdadeiro, o Algoritmo de Leilão faz uma oferta inicial para o preço dos produtos e os consumidores começam a submeter ofertas a fim de subir esse preço até que reste um único consumidor para aquele produto.

O Leilão trata-se de um algoritmo de Tomada de Decisão, que pode ser classificado como um método para resolver problemas de atribuição.

Como Funciona o Leilão?
Inicialmente temos um número X de agentes e Y de objetos. Definimos como preço inicial dos objetos o valor de 0. Calculamos então o valor da constante ε, que precisa ser maior que zero. Esse cálculo é feito dessa forma: ε < 1/MaxAtribuicoes (para que a solução seja ótima) Para iniciar os cálculos, precisamos também avaliar qual a finalidade do Leilão. Se for para maximizar benefícios, o valor das arestas são positivas. Se for para minimizar custos, o valor das arestas são negativas. Utilizaremos como exemplo à seguir um caso em que o Leilão esteja sendo usado para minimizar custos.

Definidos essas questões, podemos começar a rodar o algoritmo. Para isso, podemos preencher uma tabela com cinco opções: Ao rodar a primeira Iteração, fazemos a Alocação dos Agentes para o objeto cujo valor da aresta seja o maior (mais próximo de 0). Fazemos então, o cálculo do Valor Real dos dois melhores objetos, usando a fórmula abaixo: Vr = ValorAresta - Preço O próximo passo a ser feito é o cálculo do Incremento, definido pela fórmula abaixo: Incremento = Vr(MelhorObjeto) - Vr(SegundoMelhorObjeto) + ε E então, atualizamos o preço do objeto seguindo a seguinte fórmula: PreçoNovo = PreçoAtual + Incremento E alocamos o Agente para o Objeto em questão. Caso algum agente já esteja alocado naquele objeto, fazemos a próxima iteração apenas para o Agente que foi desalocado, repetindo os passos anteriores já atualizados.
 * Número da Iteração Atual
 * Alocação
 * Incremento
 * Novo Preço
 * Desalocação

O leilão termina quando todos os agentes forem alocados. Fazemos então a soma das arestas de cada objeto que foi alocado e encontramos o resultado.

Exemplo em Jogos
Foi utilizado o Leilão como exemplo em um jogo Presa - Predador para que os agentes sejam realocados após a execução do algoritmo.

Primeiramente são geradas duas listas (uma de Presas e outra de Predadores) e também definimos a constante ε, que é calculada dessa forma: ε = (1 / MaxAtribuicoes) - 0.00001 Os benefícios são definidos através da distância calculada entre a presa e o predador.

O Leilão começa a rodar no algoritmo de forma que os Predadores fazem os lances, calculando o valor real da distância até a presa, calculando o incremento e o novo preço. Após esse calculo, os Predadores são realocados no mapa de forma a perseguir as Presas.

Vídeo: Baixar package:

https://drive.google.com/file/d/1BPh2BnMhAvVP8_IPFcE0676pUMxrCgNF/view?usp=sharing

Otávio Henrique Horsth