Я пытаюсь смоделировать плотность населения в AnyLogic.Для этого я вставил изображение страны в Main и использовал полилинию для рисования областей (в данном случае pl_ [areaname], в данном случае провинции). Затем, используя функцию (SetHomeLocation) в Main, я размещаю агентов (пациентовв данном случае) в этих областях, если выполняется условие. Для краткости часть кода показана ниже.
double x;
double y;
if(uniform(1) <= 0.0343995) /// province 1
do {
x = uniform( image.getX(), image.getX() + image.getWidth() );
y = uniform( image.getY(), image.getY() + image.getHeight() );
} while( ! pl_Groningen.contains( x, y ) );
else if(uniform(1) > 0.0343995 && uniform(1) <= 0.0725446) /// province 2
do {
x = uniform( image.getX(), image.getX() + image.getWidth() );
y = uniform( image.getY(), image.getY() + image.getHeight() );
} while( ! pl_Friesland.contains( x, y ) );
else
do {
x = uniform( image.getX(), image.getX() + image.getWidth() );
y = uniform( image.getY(), image.getY() + image.getHeight() );
} while( ! countrybounds.contains( x, y ) );
agent.setXY( x, y );
В Patient я создал две переменные XHome и YHome, а вПоле «при запуске», которое я ввел:
//setup home location (within the country bounds that are defined in Main)
main.setHomeLocation( this );
XHome = getX();
YHome = getY();
Теперь кажется, что код в функции SetHomeLocation не работает, как положено. В некоторых областях у меня меньше агентов, чем я ожидал.
Я также считаю, что
if(uniform(1) > x && uniform(y) <= y)
является ошибочным, так как я считаю, что утверждение будет оценивать две разные ничьи из равномерного распределения вместо одного.
Для полного раскрытия, следующая ссылка позволяет загрузить полную модель. https://www.mediafire.com/file/eaq65mgpqi9qlld/TestModelKaart.zip/file
Для ясности, этот пост содержит два вопроса: во-первых, что может быть причиной того, что модель показывает неожиданноеповедение, то есть размещение слишком мало агентов в некоторых областях?Во-вторых, как я могу позволить AnyLogic оценивать одну ничью из равномерного распределения, если я хочу x >iform (1) <= y? </p>
Любые другие советы, связанные с моделированием плотности населения, конечно, очень приветствуются!