繁体   English   中英

从 Excel 中逐行读取参数用于 Anylogic 实验

[英]Reading Parameters row by row from excel for Anylogic Experiment

我想运行一个Anylogic参数实验,并且我希望从excel文件中连续读取参数,以便excel数据的每一行对应一次运行的参数。 同样,我希望它运行的次数与 excel 中的参数行一样多。 我可以使用 ExcelControlName.getCellNumericValue("ExcelSheetName", RowNumber, ColNumber) 读取一行数据,但是如何设置它以便它通过运行所有行的参数自动运行多次。

在您的模拟模型中,创建一个名为row的参数,这将是您的参数变化实验中发生变化的唯一参数...然后您将模拟中的参数转换为变量,每个变量将按如下方式读取 excel 文件>

ExcelControlName.getCellNumericValue("ExcelSheetName", row, ColNumber)

其中 row 是在您的参数变化实验中发生变化的参数,colNumber 是表示您要评估的特定变量的列。

一个非常有用的问题。

一种选择是利用模拟对象,而不是让模型跳过实验并运行模型。

在此处输入图片说明

这只会让您更好地控制模型执行,并且您可以使用一些模拟运行之前和之后的代码。

对以下超简单模型进行成像

在此处输入图片说明

我有一个参数和一个跟踪参数然后停止模拟的事件。

然后在实验中,我有一个 Excel 对象,一个链接到 main 参数的变量,以及一个只调用run()的按钮

在此处输入图片说明

excel文件中有一些简单的数据

在此处输入图片说明

现在在实验的 Java 部分,您只需要添加以下代码。

在此处输入图片说明

这可确保根据运行计数使用正确的数据更新变量,并且当您停止模型时,如果 Excel 工作表中有更多值要加载,它将再次调用运行函数。

请注意,Excel 中的行索引从 1 开始,并且我们有一个数据标题,因此我们希望从第 2 行开始,因此我添加了2 + getExperiment().getRunCount()

如果您运行这个简单的模型,您将在控制台中看到打印出 Excel 文件中的值。

10.0
20.0
30.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM