【问题标题】:How do I input 3D array data in CPLEX?如何在 CPLEX 中输入 3D 数组数据?
【发布时间】:2021-02-17 04:43:32
【问题描述】:
Set of inputs
int i=...; //set of origins
int j=...; //set of destinations
int t=...;//set of time periods
i=100;
j=100;
t=4;

如何在 CPLEX 中输入这些数据? Cplex 无法从 excel 读取 3D 数组。有什么方法可以告诉 CPLEX 从 CPLEX 读取 3D 数组数据?

【问题讨论】:

    标签: arrays 3d cplex opl


    【解决方案1】:

    您只能直接读取二维数组,但通过一些技巧可以从任何维度读取。

    一个非常好的技术说明回答了这个问题:

    https://www.ibm.com/support/pages/node/125333

    还有一个来自https://github.com/AlexFleischerParis/oplexcel的小例子

    .mod

    range A=1..2;
    range B=1..3;
    range C=1..4;
    
    
    tuple someTuple{
        key int a;
        key int b;
        key int c;
        int value;
        };
        
    
    {someTuple} someSet = ...;
    
    int v[a in A][b in B][c in C]=item(someSet,<a,b,c>).value;
    
    dvar int X[A][B][C];
    
    subject to
    {
        forall(a in A,b in B,c in C) X[a][b][c]==v[a][b][c];
    }
    
    
    assert forall(a in A,b in B,c in C) X[a][b][c]==a*b*c;
    

    .dat

    SheetConnection sheet("write3Darray.xlsx");
    
    someSet from SheetRead(sheet,"A1:D24"); 
    

    【讨论】:

    • hugexls.mod 是二维的。我尝试了与 3D 类似的方法,但没有奏效。无论如何,谢谢。
    猜你喜欢
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多