我有一个涉及连续变量和二元变量的问题。完成创建目标函数后,我添加了导致CPLEX无法找到解决方案的约束。请让我知道我做错了什么。CPLEX拒绝找到给定相等约束的解决方案
IloNumExpr cbin1 = cplex.prod(EB_s[a-1],binHandelSprzedaj[a-1]);
cplex.addEq(EB[a],cbin1);
“binHandelSprzedaj”是二元变量数组。 “EB_s”和“EB”是连续cplex浮点变量的数组。
如果代替“cbin1”,代码可以使用“EB_s [a-1]”或“binHandelSprzedaj [a-1]”。我认为这是因为我最终得到了二次约束。然而,CPLEX提供的示例之一是“QCPex1”,它提供的解决方案具有“不太平等”的二次约束,并且代码看起来与我写的非常相似。我不明白为什么我的代码不起作用。是因为约束是二次的,还是因为它是二元和连续变量的混合,或者它是“相等”类型的约束。
错误信息接收:CPLEX错误5002:Q的目的不是半正定
我在优化一个大菜鸟。我该如何处理这个问题?我更喜欢CPLEX是否为我做了尽可能多的数学运算(也许可以提供一些神奇的命令)。
约束在它的最终形式是更复杂,所以简单的变量放宽(如在这里呈现http://orinanobworld.blogspot.com/2010/10/binary-variables-and-quadratic-terms.html)将无法正常工作。限制在完全定义问题会看起来像这样:
A = B + C + d +二进制* F - (1-二进制)* G
其中 - 克是连续变量。
任何帮助将深表谢意。
谢谢,到目前为止工作:) – t4u