我有一個涉及連續變量和二元變量的問題。完成創建目標函數後,我添加了導致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