我在AnyLogic中为我的课程人工智能科目制作了一个大学项目。这涉及到创建一个我称之为“Veiculo”(葡萄牙语,英语中意为“Vehicle”)的代理群体。
在“Veiculo”代理内部,有1个参数、1个变量、1个椭圆形状和1个与我的问题相关的函数,分别是“velocidade”(意为“速度”)、“modoEmergencia”(意为“紧急模式”)、luzEmergencia(意为“紧急灯”)和velocidadeEmergency(意为“紧急速度”),它们有以下详细信息:
参数“velocidade”
类型:double
默认值:50
变量“modoEmergencia”
类型:boolean
初始值:uniform(0, 1) < 0.10;
椭圆形状“luzEmergencia”
Visible: modoEmergencia
椭圆形状“luzEmergencia”。其可见性由函数“modoEmergencia”定义
函数“velocidadeEmergencia”
-不返回任何值
函数体:
if (modoEmergencia) { velocidade = 100;} else { velocidade = 50;}
问题
在主代理中,我有一个高速公路网络,来自“Veiculo”代理群体的veiculos(意为车辆)通过8个车辆来源进入。我遇到的问题是,当我尝试将车辆来源的“初始速度”定义为:veiculos.velocidade
高速公路网络中一个车辆来源的详细信息
出现了以下错误:
描述:velocidade无法解析或不是一个字段。
我还尝试将车辆来源的“初始速度”定义为veiculos.modoEmergencia ? 100 : 50
或Veiculo.modoEmergencia ? 100 : 50
或agent.modoEmergencia ? 100 : 50
但这些都不起作用。
在我的项目中,我希望处于紧急模式的车辆在高速公路上以100公里/小时的速度行驶,而非紧急模式的车辆以50公里/小时的速度行驶。
回答:
如果你的代理被正确初始化,你只需要注意一点。在CarSource
块中,当你进入Initial Speed
时,你会在文本控件的左侧看到一个灯泡。这个灯泡显示在该上下文中可用的任何特殊变量。
在这种情况下,你有self
(指向块本身)和car
,它指向正在创建的车辆实例。如果你想使用这些信息,你可以将初始速度设置为例如car.velocidadeEmergencia()
– 这将在每个实例上调用该函数。
再次强调,在这种情况下,代理(车辆)被正确初始化非常重要。在这种情况下是正确的,因为modoEmergencia
变量有一个初始值。