如何在OPL中反映3维参数的数据

时间:2018-12-24 17:38:28

标签: opl

我愿意在我的LP项目中使用3D参数。但是,我无法以正确的方式读取参数的数据。 是否可以通过使用Excel或通过将参数的值以矩阵形式写入.dat文件来获取数据。另外,其他潜在的解决方案也可能会有所帮助。

float rt[B][P][Z]=...; //Response time of boat type b at port p to zone z

1 个答案:

答案 0 :(得分:0)

好吧,一个3dim数组用于3个索引的所有组合,而excel是2dim表格式,因此在开始编写内容时,您不能直接从excel读取3dim数组。 3dim是否表示您确实需要所有组合或其中的一些组合。如果稍后存在B / P / Z用于某些组合,则可以将三元组使用元组格式... 元组类型的声明类似于

tuple BPZ {int B; 
       float P; 
       float Z};

然后,您使用如下类型声明数据

{BPZ} myData = ...;

然后在excel中,您有1张包含所有三胞胎的表。

如果第一个(所有组合都具有数据),那么另一种方法是使每个PZ 2dim数组/表/矩阵以excel B倍...繁琐,但是如果您不手动而是以编程方式创建数据,则可行=在Python中,您可以使用openpyxl(https://openpyxl.readthedocs.io/en/stable/-我已经使用过,非常好/简单),然后使用DOOPL将OPL / Python组合在一起(https://developer.ibm.com/docloud/blog/2018/09/26/opl-and-python/ + https://pypi.org/project/doopl/)。在所有组合都存在的情况下,您可以在任何情况下使用三元组/元组,但是这可能会有很多价值,因此取决于B P Z的大小。