首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CPLEX中将多维数组模型转换为元组结构?

如何在CPLEX中将多维数组模型转换为元组结构?
EN

Stack Overflow用户
提问于 2017-06-22 04:52:56
回答 1查看 354关注 0票数 0

我想使用一个大型数据集(3100个需求位置)来解决我的设施选址问题。

约束之一是距离矩阵的大小。如果我使用二维数组来表示位置之间的距离,我会存储大量不必要的数据。(比如我不会在模型中使用的长距离,所以我添加了另一个约束,比如<= maxdist )

我没有使用二维数组,而是尝试使用以下元组,但是如果我不使用完整的距离矩阵(转换为元组),我得不到解决方案?

谢谢你的建议...

代码语言:javascript
复制
    {string} Supply = ...;      // Supply locations
    {string} DC = ...;          // Candidate facility locations
    {string} Demand = ...;      // Demand locations

    tuple Dist_Tup{
    string FROM;
    string TO;
    float MILES;
    };

    setof(Dist_Tup) DistanceTmp=...;
    setof(Dist_Tup) Distance = { <FROM,TO,MILES> | <FROM,TO,MILES> in DistanceTmp : FROM in Supply || FROM in DC};

    dexpr float TransportCost1 = sum(i in Supply , a in Alt , j in DC , p in Period, BB in Distance : BB.TO==j && BB.FROM==i) X[i][a][j][p]*Dist[BB]*C[i][j];

    //dexpr float TransportCost1 = sum(i in Supply , a in Alt , j in DC , p in Period) X[i][a][j][p]*G[i][a][j]*C[i][j];
EN

回答 1

Stack Overflow用户

发布于 2017-07-04 02:16:39

将解决方案从一个问题移动到另一个答案:

我的新代码作为解决方案:

元组圆弧{ string FROM;string TO;} tuple Dist_Tup{ string FROM;string TO;float MILES;};setof(Dist_Tup) Distance=...;setof( Arc ) SDC_Arcs ={ < FROM,TO> | < FROM,TO,MILES> in Distance :FROM in Supply && TO in DC};setof(Arc) SD_Arcs ={ | in Distance :FROM in Supply & TO in Demand & MILES<=maxDist};setof( ARC ) DCD_Arcs ={ < FROM,TO> | in Distance :FROM in DC && TO in Demand && MILES<=maxDist};dexpr float TransportCost1 = sum(i in Supply,a in Alt,j in DC,p in Period,DIST in Distance : DIST.FROM==i && DIST.TO==j,ARC in SDC_Arcs : ARC.FROM==i && ARC.TO==j) XARCp*G2DIST*Ci;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44686075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档