Movimento de agentes em planisfério

4 respostas
E

É o seguinte…Já desenvolvi alguns projetos em Java nos quais implementei ambientes de interação multiagentes. Desenvolvi representações gráficas desses ambientes e tudo mais…Nesses ambientes os agentes se movem, apresentando comportamentos diversos. Um desses comportamentos é o vulgar “presa-predador”, no qual um determinado agente cumprindo o papel de predador perseue outro que cumpre o papel de presa.

Todavia, até hoje não consegui ficar totalmente contente com minhas simulações. Eu gostaria de fazer com que a área na qual as interações ocorrem simulasse um planisfério. Ou seja, queria fazer com que os limites do meu plano se encontrassem. Da seguinte forma:

Minha representação do ambiente é uma área que vai de 0 a N pixels de largura e de 0 a M pixels de altura…Quando um agente que está na borda da largura (em N) continuar andando nesta direção, queria que ele surgisse em 0 (o oposto também e o mesmo para os dois casos no eixo Y).

Isso é relativamente simples de fazer se pensarmos apenas na ação de caminhar do agente, seria só fazer a consistência das suas coordenadas de localização. Se a posição dele adquirir um valor maior que N em x, transforme em 0, ou o oposto…Todavia, meus agente precisam perceber o ambiente também como um planisfério…Ou seja, uma presa em N, deve perceber o predador em 0 e fugir, pois ele está próximo…

Não sei se fui claro em minha explanação…Mas enfim…Alguém já implementou algo do gênero? Como eu poderia tratar essa percepção do agente?

4 Respostas

C

O thingol deve ter algo a lhe dizer, eu mesmo nao faco a minima ideia. :lol:

E

Alguém pode me ajudar nisso?

T

Pegue um lápis e papel, e complique um pouco os seus "ifs".

Por exemplo, digamos que você tenha definido que uma presa e um predador estão próximos se a distância entre eles for menor que 2:

Math.abs (x0 - x1) < 2 && Math.abs (y0 - y1) < 2

no caso de x0,y0 ser a coordenada da presa e x1,y1 ser a coordenada do predador.

Você quer que x vá de 0 até N - 1 e y vá de 0 até M - 1 (digamos).

Então, para calcular a distância, você tem de ver se algum dos pontos está em N - 1 ou M - 1; nesse caso, para seu cálculo de distância, é como se x0 fosse -1 em vez de N - 1, ou y0 fosse -1 em vez de M - 1.

bandrade

Isso se no “mapa” não houver peso diferente para cada célula… ex:
Andar uma célula de pântano é mais difícil que andar na areia, que por sua vez é mais difícil que andar na grama…
Entao os pesos seriam 5, 3 e 1 respectivamente… voce teria que somar o tipo de terreno que sua e presa e seu predador teriam que percorrer…

Procura pelo algoritmo A* (A estrela) que você via se divertir um bocado. (;

Criado 23 de agosto de 2008
Ultima resposta 27 de ago. de 2008
Respostas 4
Participantes 4