Closed anibalsolon closed 9 years ago
Sim era exatamente isso que queriamos testar, obrigado Anibal!
Aproveitando o embalo, tu percebeu a distancia que o agente estava do shop quando ele recebeu isso?
Conversei com o Artur aqui do lado e podemos inicialmente mandar os agentes mais próximos aos shops para descobrir os preços, e aí eles enviam para o lider.
Também temos que descobrir o que acontece quando todos items são comprados, e o que o parametro de restoque significa (acredito que seja o ultimo dos 3 numeros dessa print). Mas para isso vamos ter que testar se o buy está funcionando sem problemas.
Parece que é quando ele chega no shop:
shop(shop1,52.3619,9.7299,[item(tool2),item(base1),item(base2),item(tool1),item(base3)])
routeLength(2)
shop(shop1,52.3619,9.7299,[item(tool2),item(base1),item(base2),item(tool1),item(base3)])
routeLength(0)
shop(shop1,52.3619,9.7299,[availableItem(tool2,139,3,0),availableItem(base1,5,508,2),availableItem(base2,17,56,3),availableItem(tool1,51,9,5),availableItem(base3,241,34,4)])
routeLength(0)
shop(shop1,52.3619,9.7299,[availableItem(tool2,139,3,0),availableItem(base1,5,509,2),availableItem(base2,17,56,3),availableItem(tool1,51,9,5),availableItem(base3,241,35,4)])
[vehicle] Arrived in shop1
No código do servidor, a reposição é feita unitariamente a cada X steps. Ou seja, se a reposição é feita a cada 7 passos, nos passos [ 7, 14, 21, 28 ... ] são acrescidos 1 item no estoque.
public void restock(int step){
for (Entry<Item, ShopStock> stockEntry : stock.entrySet()){
ShopStock stockItem = stockEntry.getValue();
if (stockItem.restock != 0 && step % stockItem.restock == 0){
stockItem.amount++;
}
}
}
Parece que é quando ele chega no shop
Então o que eles queriam dizer com estar perto
é o mesmo que no shop
.
No código do servidor, a reposição é feita unitariamente a cada X steps
Seria interessante usar um contador de steps para descobrir esse X em tempo de execução, eventualmente poderíamos decidir ir a outro shop ao invés de esperar o restock
.
Seria interessante usar um contador de steps para descobrir esse X em tempo de execução, eventualmente poderíamos decidir ir a outro shop ao invés de esperar o restock.
Para isso vamos precisar deixar um agente parado nos shops até descobrir o X de cada item em cada shop. Talvez se não tiver nenhum job no momento podemos fazer isso.
O tempo de restock é informado pela percepção ao chegar no shop, não tem como inferir sem chegar até o shop:
availableItem(base1,5,509,2) // a cada dois steps, amount++
Se o tempo de restock é zero, não tem reposição. :sob:
O que dá para fazer é saber a quantidade de itens enquanto nenhum inimigo passou pelo shop, mas depois de algum passar por lá, não tem como saber se a quantidade ainda é válida. Dá pra saber algo tipo: um inimigo passou por lá no step 10, então no step 21 é 100% certo que tem pelo menos 2 unidades do item Y.
Ah sim verdade, to viajando, no início eu mesmo falei e depois esqueci.
Vamos ter que passar nos shops de qualquer maneira uma vez para descobrir os preços, já salvamos o restock para futuramente utilizarmos essa info nos contextos dos planos quando precisar.
A quantidade a principio acho que não vale a pena salvar. Da para fazer um estratégia de espionagem para tentar descobrir os jobs que o inimigo está fazendo observando as quantidades de itens nos shops, mas essa já uma estratégia avançada, vamos começar pelo dummy e depois retomamos a ideia.
Resolvido.
Caros,
fiz com que o agente fosse direto para um shop, sempre monitorando as informações de preços que ele possui e recebi normalmente.
Segue debug do Jason:
Então acho que não é um problema isso, certo? O que percebi que vamos ter que nos preocupar também é o restock interval. Pode ter uma probabilidade de ainda ter no estoque do shop o item, baseado nas visitas do inimigo ao shop, coisa assim. Mas pensamos isso mais para frente.