我想使用大型数据集(3100个需求位置)来解决我的设施位置问题。
其中一个限制因素是距离矩阵的大小。如果我使用二维数组来获取位置之间的距离,我会存储大量不必要的数据。 (就像我在模型中不会使用的长距离,所以我添加了另一个约束,如< = maxdist)
我没有使用2D数组,而是尝试使用以下元组,但是如果我不使用完整的距离矩阵(转换为元组)我没有得到解决方案?
感谢您的建议......
{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];
答案 0 :(得分:0)
将解决方案从问题转移到答案:
我的新代码作为解决方案:
tuple Arc { 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 = { <FROM,TO> | <FROM,TO,MILES> in Distance : FROM in Supply && TO in Demand && MILES<=maxDist}; setof(Arc) DCD_Arcs = { <FROM,TO> | <FROM,TO,MILES> 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) X[ARC][a][p]*G2[DIST]*C[i][j];