Anylogic系统建模,使用excel表作为数据库
Posted
技术标签:
【中文标题】Anylogic系统建模,使用excel表作为数据库【英文标题】:Anylogic System Modelling, using excel table for database 【发布时间】:2016-08-17 21:05:09 【问题描述】:有人可以帮助我吗?! 我用的是 Anylogic。有一个人口(=股票),分为 10 个不同的组(取决于年龄)。我想将它用于我的结构。 我的结构中已经有 excel 表,但我不知道如何使用它。或者如果我使用“tablefuntion”会更好?! 我找不到任何关于这个的好教程。只有一个数字的例子。 例如。库存:起始值 = 10000。 但我需要库存:起始值 = Group1:50,Group2:30,Group3:20。
有人可以帮助我吗?! 非常感谢!
【问题讨论】:
您能否说明一下您当前的模型是什么样的以及您想要实现的目标?理想情况下有一些屏幕截图......一般来说,系统动力学股票只能采用一种“流体”(即人口),听起来你希望它处理 10? @Benjamin 我假设他正在使用阵列股票。看我的回答。 顺便说一句,您的问题标题有点误导/含糊。也许像“使用 Excel 数据初始化 AnyLogic 数组股票”这样的东西会更好? 【参考方案1】:所以听起来您正在使用数组股票,其中数组是十值 AnyLogic 维度。
如果您点击Edit...
按钮获取初始值,您会看到它们是在Java 符号v1, v2, ..., v10
中指定的,其中v1 是一维备选方案的初始值,等等。(令人困惑的是,这是Java与数组 stock 不同的数组表示法。)
没有直接的方法可以从 Excel 数据初始化这些。使用 AnyLogic 7.2+,您可以相当轻松地将 Excel 值导入 AnyLogic 数据库表,但与基本的 AnyLogic 变量或参数不同,没有可视化向导来设置查询以填充股票的初始值。
您最好的选择可能是将 Excel 工作表导入 AnyLogic 数据库表,然后在模型的启动代码中,通过查询显式循环设置 10 个值。您可以在股票上使用set
方法(函数)来设置每个值(它有两个参数:要设置的值,然后是要设置的维度替代数)。
示例
请参阅 AnyLogic 帮助 Database --> Importing database tables
,了解如何将 Excel 工作表导入为表格。
假设您的表名为 stock_vals
,列有 stock_name
(标识值所针对的股票)、val1
、val2
等(为维度条目 1 提供 double
值, 2等)。
然后假设您的数组股票被称为population
,其维度为AgeRange
,具有替代品YOUNG
、MIDDLE_AGED
和OLD
(替代品1、2和3——我只是使用了三个替代品来实现它更简单)。然后假设你的表中有条目
"population", 100.0, 200.0, 300.0
那么你可以在你的启动逻辑中使用如下代码:
stock.set(selectFrom(stock_vals).where(stock_vals.stock_name.eq("population")).uniqueResult(stock_vals.val1), 1);
stock.set(selectFrom(stock_vals).where(stock_vals.stock_name.eq("population")).uniqueResult(stock_vals.val2), 2);
stock.set(selectFrom(stock_vals).where(stock_vals.stock_name.eq("population")).uniqueResult(stock_vals.val3), 3);
AnyLogic Database --> Querying
帮助显示了此数据库选择 Java 代码的工作原理。
上面的代码可以整理/变得更优雅,但这就是本质。
【讨论】:
以上是关于Anylogic系统建模,使用excel表作为数据库的主要内容,如果未能解决你的问题,请参考以下文章