Anylogic系统建模,使用excel表进行数据库

时间:2016-04-24 14:13:27

标签: database excel system modeling anylogic

是的,有人可以帮助我吗?! 我是Anindogic。有一个人口(=股票),分为10个不同的群体(取决于年龄)。我想用它来做我的结构。 我已经在我的结构中有excel表但我不知道,我如何使用它。或者如果我使用“tablefuntion”会更好吗?! 我找不到任何关于此的好教程。只有一些例子,你只有一个数字。 例如。库存:起始值= 10000。 但我需要股票:起始价值=第1组:50,第2组:30,第3组:20。

是的,有人可以帮助我吗?! 非常感谢!

1 个答案:

答案 0 :(得分:0)

所以听起来你正在使用数组库存,其中数组具有十值AnyLogic维度。

如果您点击初始值的Edit...按钮,您会看到它们是用Java表示法{v1, v2, ..., v10}指定的,其中v1是第一维选项的初始值,等等。(令人困惑的,这是Java数组表示法,它与数组 stock 不同。)

没有直接的方法从Excel数据初始化这些。使用AnyLogic 7.2+,您可以非常轻松地将Excel值转换为AnyLogic数据库表,但与基本的AnyLogic变量或参数不同,没有可视化向导来设置查询来填充库存的初始值。

可能最好的办法是将Excel工作表导入AnyLogic数据库表,然后在模型的启动代码中,通过查询显式循环设置10个值。您可以使用库存上的set方法(函数)来设置每个值(它有两个参数:要设置的值,然后是要设置的维度替换的数量)。

示例

有关如何将Excel工作表导入为表格,请参阅AnyLogic帮助Database --> Importing database tables

假设您的表名为stock_vals,其中包含stock_name列(标识值所用的库存),val1val2等。(给出{维度条目1,2等的{1}}值。

然后假设您的阵列库存名为double,其population维度包含备选AgeRangeYOUNGMIDDLE_AGED(备选方案1,2和3) - 我只使用了三种替代方案,使其更简单)。然后在表中假设您有条目

OLD

然后您可以在启动逻辑中使用以下代码:

"population", 100.0, 200.0, 300.0

AnyLogic 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); 帮助显示了此数据库选择Java代码的工作原理。

上面的代码可以整理/变得更优雅,但这才是最重要的。