Anylogic 创建和调用函数以求和多个变量并创建一个累积变量
Anylogic creating and calling function to sum multiple variables and create a cumulative variable
我是 Java、编程和 Anylogic 的新手。我想将“sowsInSystem”变量计算为所有 weekOne、weekTwo 等变量的总和。我知道各个变量的初始值字段中的值仅在模型开始时计算并且不会自动更新,所以我试图编写然后调用一个函数(getSowNumbers)来给我总和一个新的累积变量 (sowsInSystem) 中的所有单个变量,随着模型的进展而更新。
谢谢。
Screenshot of variables, function
Screenshot of variables, function
一个简单的解决方案是使用事件。您需要将事件的触发类型设置为“超时”,将模式设置为“循环”。然后,在事件的动作中,简单地写:
sowsInSystem = getSowNumbers();
使用此方法,每次触发事件时都会更新“sowsInSystem”。您可以将循环时间设置为 1 秒、1 天、1 周或您需要的任何值。但是,我建议不要将循环时间设置得过小(例如 1 毫秒),因为这会导致许多不必要的计算并减慢您的模型。
为什么不使用变量作为计数器?例如 SowsInSystem+=1;当母猪进入系统和 Sink 时,您可以减去 SowsInSystem-=1 之类的值;
这将为您提供系统中的母猪总数。
我是 Java、编程和 Anylogic 的新手。我想将“sowsInSystem”变量计算为所有 weekOne、weekTwo 等变量的总和。我知道各个变量的初始值字段中的值仅在模型开始时计算并且不会自动更新,所以我试图编写然后调用一个函数(getSowNumbers)来给我总和一个新的累积变量 (sowsInSystem) 中的所有单个变量,随着模型的进展而更新。
谢谢。
Screenshot of variables, function
Screenshot of variables, function
一个简单的解决方案是使用事件。您需要将事件的触发类型设置为“超时”,将模式设置为“循环”。然后,在事件的动作中,简单地写:
sowsInSystem = getSowNumbers();
使用此方法,每次触发事件时都会更新“sowsInSystem”。您可以将循环时间设置为 1 秒、1 天、1 周或您需要的任何值。但是,我建议不要将循环时间设置得过小(例如 1 毫秒),因为这会导致许多不必要的计算并减慢您的模型。
为什么不使用变量作为计数器?例如 SowsInSystem+=1;当母猪进入系统和 Sink 时,您可以减去 SowsInSystem-=1 之类的值; 这将为您提供系统中的母猪总数。