【问题标题】:How to declare set of union? CPLEX如何声明一组联合? CPLEX
【发布时间】:2022-01-20 02:49:14
【问题描述】:

我正在尝试在 CPLEX OPL 上构建模型并面临声明一组联合的问题

5 set of union I have to declare

我是 CPLEX 的新手,我已经使用该方法声明了一个与文档相同的集合:

{float} all_nodes = hubs_nodes union suppliers_nodes union clients_nodes;
{float} IH = hubs_nodes union suppliers_nodes; 
{float} A1[IH][IH];
{float} JH = clients_nodes union suppliers_nodes;
{float} A2[JH][JH];
{float} A3[hubs][hubs];   
{float} A[all_nodes][all_nodes];

我的模型声明:

     minimize sum(k in hubs) operating_hub_cost[k]*allocation_variable[k][k] 
 + sum(i in suppliers, k in A3, l in A3) cih*distance[k][l]*total_quantity_flow[i]*fraction_flow_shipped[i][k][l]
 + sum(i, j in A1) cc*distance[i][j]*vehicle_traverses[i][j] + sum(i, j in A2) cd*distance[i][j]*vehicle_traverses[i][j]
 + sum(i in suppliers, k in hubs) one_unit_cost[k]*total_quantity_flow[i]*allocation_variable[i][k]
 + sum(i in suppliers, k,l in A3) one_unit_cost[l]*total_quantity_flow[i]*fraction_flow_shipped[i][k][l]
 + sum(k in hubs, i in suppliers || i in clients) vehicle_cost*vehicle_traverses[k][i];

它告诉我错误:

不能将类型 {float}[hubs][hubs] 与“in”一起使用。

我如何声明模型而不在我的代码中设置 A、A1、A2、A3 的错误?非常感谢您的建议

【问题讨论】:

    标签: optimization cplex


    【解决方案1】:

    对于 A 你可以写

    range N=1..4;
    
    tuple arc
    {
    int i;
    int j;
    };
    
    {arc} A={<i,j> | i,j in N};
    
    execute
    {
    A;
    }
    

    【讨论】:

    • 感谢您的回答。
    • 我能再问你一个吗?如何编写将数据从 excel 文件导入弧 A?
    • 您可以使用 SheetRead。在linkedin.com/pulse/… 上查看简单示例
    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 2015-07-07
    • 2010-09-22
    • 2020-08-26
    • 2012-07-18
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多