提问者:小点点

从excel中逐行读取参数进行Any逻辑实验


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


共2个答案

匿名用户

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

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

其中row是参数变化实验中更改的参数,colNumber是表示要评估的特定变量的列。

匿名用户

一个非常有用的问题。

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

这只会让您对模型执行有更多的控制,您可以使用一些模拟运行前后的代码。

图片如下超简单模型

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

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

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

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

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

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

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

10.0
20.0
30.0