Q 行列が半正定値 (PSD) ではないため、gurobi がエラーを返すという小さな問題があります。
Minimize
CAV_TDiff_LK_0_0 + CAV_TDiff_LK_0_1 + 0 TC_l_0_0 + 0 TC_lz1_0_1
Subject To
CSTR_T_LK_0_1: CDV_T_EPS_L_0 + 7.8133169096884169e+006 C_l_0 - CAV_T_LK_0_1 + 319573.9014647137 TC_l_0_1 = 0
CSTR_T_l_z1_LK_0_0: T_lz1_0_0 = 24.7593615199
CSTR_T_l_z1_LK_0_1: - 1.3992339234055925e+007 C_lz1_0 - T_lz1_0_0 + T_lz1_0_1 + 159786.9507323569 TC_lz1_0_0 = 0
CSTR_TDiff_LK_TEPGEqT_0_0: CAV_TDiff_LK_0_0 + CAV_T_LK_0_0 >= 24.7593615199
CSTR_TDiff_LK_TEPGEqT_0_1: CAV_TDiff_LK_0_1 + CAV_T_LK_0_1 >= 24.4491708299
CSTR_TDiff_LK_TGEqTEP_0_0: CAV_TDiff_LK_0_0 - CAV_T_LK_0_0 >= -24.7593615199
CSTR_TDiff_LK_TGEqTEP_0_1: CAV_TDiff_LK_0_1 - CAV_T_LK_0_1 >= -24.4491708299
CSTR_C_l_T_l_z1_LK_0_0: 3.888e+007 TC_l_0_0 + [ - 40 C_l_0 * TC_l_0_0 + 0.025 T_lz1_0_0 ^ 2 - 972000 T_lz1_0_0 * TC_l_0_0 ] <= 0
CSTR_C_l_T_l_z1_LK_0_1: 3.888e+007 TC_l_0_1 + [ - 40 C_l_0 * TC_l_0_1 + 0.025 T_lz1_0_1 ^ 2 - 972000 T_lz1_0_1 * TC_l_0_1 ] <= 0
CSTR_C_l_z1_T_l_z1_LK_0_0: 7.4210304e+007 TC_lz1_0_0 + [ - 40 C_lz1_0 * TC_l_0_0 + 0.025 T_lz1_0_0 ^ 2 - 1.8552576000000001e+006 T_lz1_0_0 * TC_lz1_0_0 ] <= 0
CSTR_C_l_z1_T_l_z1_LK_0_1: 7.4210304e+007 TC_lz1_0_1 + [ - 40 C_lz1_0 * TC_l_0_1 + 0.025 T_lz1_0_1 ^ 2 - 1.8552576000000001e+006 T_lz1_0_1 * TC_lz1_0_1 ] <= 0
Bounds
End
gurobi によって生成された '.lp' を使用して、SCIP がこのモデルを解決できるかどうかを確認してみます。コンパイル済みのバイナリで「scip-3.1.0.win.x86_64.msvc.opt.spx.ld」バージョンを使用しています。残念ながら、SCIPは戻ってきます
[src\scip\reader_lp.c:147] ERROR: Syntax error in line 18 ('972000'): two consecutive values.
input: + 0.025 T_lz1_0_0 ^ 2 - 972000 T_lz1_0_0 * TC_l_0_0 ] <= 0
^
[src\scip\reader_lp.c:3307] ERROR: Error <-2> in function call error reading file <myfile.lp>
私の質問は次のとおりです。(a) このエラーの原因とそれを克服する方法についての手がかりはありますか?
(b) たとえば、このエラーが修正された場合、SCIP はこの制約を自動的に線形化しますか? これは凸モデルですが、二次円錐ではありません。SCIP は外部近似 (またはその他の方法) でそれを緩和しますか?
(c) そうでない場合、それが gurobi の生成されたフォーマットによって制限される場合、SCIP が解決できるように私がすぐに記述できるモデリング言語をお勧めしますか?