Как установить один из предопределенных шаблонов макета только для одного типа агента?(желательно по коду) - PullRequest
0 голосов
/ 08 апреля 2019

Я планирую использовать два типа агентов в моей имитации.

Для одного типа агента я планирую использовать явное задание позиции с помощью метода setXYZ (), вызываемого в действии «При запуске» этого агента.type.

Для второго типа агента я планирую использовать один из предопределенных шаблонов макета (случайный или кольцевой), как описано в:

https://help.anylogic.com/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Fagentbased%2FContinuous_Layouts.html

Проблема заключается вследующий код, помещенный в действие «При запуске» типа Main agent, не делает различий между моими двумя типами агентов (и помещает все агенты в круг, например):

setLayoutType(Agent.LAYOUT_RING); 
applyLayout();

Должен ли я как-тоизменить код выше (как я уже пробовал) или есть другой способ?

1 Ответ

0 голосов
/ 09 апреля 2019

Я думаю, что тип макета должен быть одинаковым для всех агентов, присутствующих в пространстве ... тем не менее ... вы можете сделать это:

//first you apply the ring layout to everything
setLayoutType(Agent.LAYOUT_RING); 
applyLayout();
//then you define the type of agent you don't want to follow the ring layout separately
for(int i=0;i<100;i++){//assuming you will create 100 agents initially
    MyAgent p=add_myAgents();//you need to create your agents after the ring layout is applied though..
    p.setXY(uniform(0,500), uniform(0,500));//assuming your agents are in a 500x500 square in main
}

Я не знаю, есть лилучше ... но это то, что я знаю, возможно

...