0
我想为我的设施位置问题使用大型数据集(3100个需求位置)。如何将多维数组模型转换为CPLEX中的元组结构?
其中一个约束是距离矩阵的大小。如果我使用二维数组来存储位置之间的距离,我会存储大量不必要的数据。 (像我不会在我的模型中使用长距离,所以我添加另一个约束,如< = maxdist)
而不是使用二维数组我试图使用下面的元组,但是如果我不使用完整的距离矩阵(转换为元组)我没有得到解决方案?
感谢您的建议...
{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];
是否与工作小例子问题,例如与3,4或5个位置来检查逻辑和一致性 – TimChippingtonDerrick
元组结构不适用于小尺寸,但我用阵列结构(行与//dexpr ...)的小问题,它工作正常... – KaanU
该模型应该与这两种实现类似或相同。我建议您尝试使用两个版本的小型实例,并将CPLEX中的模型作为LP文件导出,以便您可以将它们进行比较。 – TimChippingtonDerrick