答案 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
列(标识值所用的库存),val1
,val2
等。(给出{维度条目1,2等的{1}}值。
然后假设您的阵列库存名为double
,其population
维度包含备选AgeRange
,YOUNG
和MIDDLE_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代码的工作原理。
上面的代码可以整理/变得更优雅,但这才是最重要的。