gpt4 book ai didi

c++ - 如何将条件约束转换为 cplex 的 Concert C++?

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:59 24 4
gpt4 key购买 nike

我使用 OPL for Linear Programming 使用 IBM ILOG Cplex optimization Studio 编写了一个模型。但现在我需要使用 Concert C++ 编写相同的模型。但是我无法转换我的约束。

我的约束之一如下:

forall(i in Nodes)
edgeSum[i]:
if(i==0)
sum (j in Ein[0])x[<j,i>] - sum (j in Eout[0])x[<i,j>] == -1;
else if (i>=1 && i<n/2)
sum (j in Ein[i])x[<j,i>] - sum (j in Eout[i])x[<i,j>] == 0;
else
sum (j in Ein[i])x[<j,i>] <= 1;

特别是我需要知道如何编写条件约束。感谢您的提前。

最佳答案

尝试类似的东西

for (i=0; i<numNodes; i++)
{
if (i == 0)
{
IloExpr expr1(env);
for (j=0; j<numIn[0]; j++)
expr1 += x[EInIndex[0][j]];
IloExpr expr2(env);
expr2 += x[EOutIndex[0][j]];
model.add(expr1 - expr2 == -1);
}
else if ((i >= 1) && (i < n/2))
{
// etc
}
else
{
// etc
}
}

我只是凭内存做的,所以语法可能有点困惑,而且我没有填写所有案例的所有细节——它们应该可以用类似的结构来完成。我也可能破坏了你的索引——不确定你是如何在你的 C++ 代码中 reshape 你的切片方法的,所以我根据我之前所做的做了一些猜测。我也没有命名约束 - 也可以很容易地添加。查看 CPLEX 提供的一些 C++ 示例。

希望对您有所帮助

关于c++ - 如何将条件约束转换为 cplex 的 Concert C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23044428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com