Anylogic 参数变化实验:我以何种方式使用“表达式”列在其允许的状态下改变布尔参数?
Posted
技术标签:
【中文标题】Anylogic 参数变化实验:我以何种方式使用“表达式”列在其允许的状态下改变布尔参数?【英文标题】:Anylogic Parameter Variation Experiment: In which way do I use the "Expression"-column to vary boolean parameters in their permitted states? 【发布时间】:2021-08-11 01:52:17 【问题描述】:我在 AnyLogic 中设置了一个参数变化实验,我想在其中改变布尔参数。本质上,这些布尔参数(parameter01 - parameter20)中有 20 个按指定顺序排列,我尝试模拟参数值的每种可能组合。唯一的限制是两个连续的参数不能都是true(所以如果parameter01是true,parameter02不能是,以此类推)。
我尝试做的是使用 Freeform Variation 中的“Expression”列并为每个参数制定规则。例如,我为 parameter01 编写的代码是(parameter01 && !parameter02) || (!parameter01 && parameter02) || (!parameter01 && !parameter02)
。正如您可能知道的那样,我尝试为 parameter01 和 parameter02 编写每个允许的值组合,仅排除两者都是 true 的情况,这是不允许的。不幸的是,这并没有按预期工作,因为 anylogic 在每次模拟运行中都将每个参数都设置为 false。
你能告诉我我做错了什么,或者更重要的是,你有解决我问题的方法吗? 提前致谢!
【问题讨论】:
【参考方案1】:我建议你编写一个函数,为每个参数和迭代次数返回正确的参数值,即
myFunction(int ParamNumber, int iterationNumber)
// write code here to satisfy your constraint
在每个参数的表达式部分调用该函数,相应地设置各个参数。您可以使用getCurrentIteration()
获取当前迭代次数
最好使用 Excel 准备逻辑,但它可能不是火箭科学 :)
【讨论】:
以上是关于Anylogic 参数变化实验:我以何种方式使用“表达式”列在其允许的状态下改变布尔参数?的主要内容,如果未能解决你的问题,请参考以下文章