在AnyLogic建模人口密度(Modelling population density in An

2019-10-29 22:53发布

我想人口密度AnyLogic的建模。 为此,我已经插在主要国家的形象,并用折线绘制区域(称为pl_ [AREANAME],各省在这种情况下,然后使用主要功能(SetHomeLocation),我配售代理(例在这种情况下)在这些领域中,如果一个条件成立。为简洁起见,代码的一部分如下所示。

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 );

在病人中,我创建了两个变量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>制服(1)<= Y?

任何其他提示,都涉及到造型人口密度当然也很欢迎!

Answer 1:

要回答你的问题的至少一个,你必须在一开始就创建一个变量,并在你的函数的其余部分使用它:

double rand=uniform();
if(rand <=  0.0343995) /// province 1
//your code
else if(rand > 0.0343995 && rand <= 0.0725446) /// province 2
//your code
else //rand>0.0725446
//your code

首先检查是否能解决您的其他问题,或者没有。



Answer 2:

在一个局部变量首先,关于你的第二个问题,一般你的代码,你最好攒产生的随机数,像double rand = uniform(); 然后使用局部变量在下面的代码的部分。 这种方式可以评估if(rand > x && rand <= y)正确。 此外,它可以解决您的第一个问题,因为你的第二个,如果在先前声明的形式(如你所提到的)将无法正常工作。

第二,如果你画的是你省份的折线,也没有必要使用do while找到你的折线中的一个点。 您可以使用pl_[areaname].randomPointInside()找到一个随机点里面`pl_ [AREANAME]”。



文章来源: Modelling population density in AnyLogic
标签: java anylogic