Arrays 如何从excel中读取参数数组,使其值在股票初始化时可用?

Arrays 如何从excel中读取参数数组,使其值在股票初始化时可用?,arrays,excel,parameters,anylogic,Arrays,Excel,Parameters,Anylogic,问题是: 我需要将excel电子表格中的一行值读入参数数组,并使用这些值设置股票的初始值 具体内容: a。我可以使用ExcelControlName.getCellNumericValue(“ExcelSheetName”、RowNumber、ColumnNumber)从excel成功设置标量参数默认值 b。尝试使用ExcelControlName为数组参数设置默认值。readHyperArray(DestinationArrayName,“ExcelSheetName”、RowNumber、C

问题是:

我需要将excel电子表格中的一行值读入参数数组,并使用这些值设置股票的初始值

具体内容:

a。我可以使用ExcelControlName.getCellNumericValue(“ExcelSheetName”、RowNumber、ColumnNumber)从excel成功设置标量参数默认值

b。尝试使用ExcelControlName为数组参数设置默认值。readHyperArray(DestinationArrayName,“ExcelSheetName”、RowNumber、ColumnNumber、false)在生成时返回“无法返回无效结果”错误

c。我可以使用ExcelControlName.readHyperArray(DestinationArrayName,“ExcelSheetName”,RowNumber,ColumnNumber,false)从代理操作“启动时:”部分调用的函数中读取参数数组

d。初始值设置为函数成功加载的参数数组的股票都为零,即使参数数组显示值(运行时)。初始值:ParameterArrayName

e。当我通过值编辑器设置参数数组值时,股票将正确初始化

我怀疑:

我认为这个问题与Anylogic生成的模型内部的内部计时有关,这样加载参数的函数在股票获得初始值后执行——但这可能只是因为我的额头反复撞到墙上而引起的谵妄。但是,如果真的是这样,我如何才能更早地将函数偷偷引入,或者更好的是,那些真正知道自己在做什么的人如何实现这一点

我正在努力实现的目标:

作为一名七旬老人,我手头有很多时间,模糊地回忆起70年代初系统科学项目中使用Dynamo进行的动态建模(从那时起就没有使用过),我想我应该对基于年龄的新冠肺炎大流行建模进行一次重击。我想看看,除其他外,建立老年监狱(在现在空置的俱乐部药品、凉鞋中……我确信)是否是一个经济上有利的战略。要做到这一点,需要将经典的SIR方法分解为特定年龄的因果链。到目前为止,我有8个年龄组的27个年龄特定参数和24个标量参数。虽然我很想再打一次。。。所有这些数据我真的希望有更好的方法

我必须说,我对建模在短短50年左右的时间里取得的成就感到惊讶,我对Anylogic的应用程序着迷——尽管它对我来说有点像java

非常感谢你

卡尔·科特雷尔


我不确定我是否理解,但这里是:

我知道您有以下结构:

您需要如下初始化股票。

为此,在参数的初始值上,使用返回HyperParameter的函数:

函数getInitialValue应该返回一个超参数,我认为这段代码应该适合您(您必须根据excelfile上的内容选择RowNumber,MyDimension是维度的名称,ExcelControlName是保存股票初始值的excel)

HyperArray x=新的HyperArray(MyDimension);

对于(int i=0;i我不确定是否理解,但这里是:

我知道您有以下结构:

您需要如下初始化股票。

为此,在参数的初始值上,使用返回HyperParameter的函数:

函数getInitialValue应该返回一个超参数,我认为这段代码应该适合您(您必须根据excelfile上的内容选择RowNumber,MyDimension是维度的名称,ExcelControlName是保存股票初始值的excel)

HyperArray x=新的HyperArray(MyDimension);

对于(int i=0;你是SLAC的Les Cottrell的亲戚吗?你是SLAC的Les Cottrell的亲戚吗?
HyperArray x=new HyperArray(MyDimension);
for(int i=0;i<=numColumns;i++){
    x.set(ExcelControlName.getCellNumericValue("ExcelSheetName", RowNumber, i), i);
}

return x;