非线性约束 Cplex
Non-linear constraints Cplex
我正在尝试使用 IBM 的 Cplex Python API 解决二次规划问题。该问题具有非线性约束。 Cplex 是否接受二次规划的非线性约束?更具体地说,给定未知数 [x1,x2,x3,x4,x5],我需要输入两个约束条件
约束 A (x2+x3) / (1-x1) = z1
约束 B (x4+x5) / (1-x1) = z2
其中 z1 和 z2 是已知数。
Cplex 确实有关于如何输入二次约束的 instructions,但是 none 我通常可以找到关于输入非线性约束的内容。
可以
from docplex.mp.model import Model
mdl = Model(name='example')
z1=2;
z2=3;
mdl.x1 = mdl.continuous_var(0,10,name='x1')
mdl.x2 = mdl.continuous_var(0,10,name='x2')
mdl.x3 = mdl.continuous_var(0,10,name='x3')
mdl.x4 = mdl.continuous_var(0,10,name='x4')
mdl.x5 = mdl.continuous_var(0,10,name='x5')
mdl.add_constraint(mdl.x2+mdl.x3==z1*(1-mdl.x1), 'A')
mdl.add_constraint(mdl.x4+mdl.x5==z2*(1-mdl.x1), 'B')
mdl.solve()
print(mdl.x1.solution_value);
print(mdl.x2.solution_value);
print(mdl.x3.solution_value);
print(mdl.x4.solution_value);
print(mdl.x5.solution_value);
帮助?
我正在尝试使用 IBM 的 Cplex Python API 解决二次规划问题。该问题具有非线性约束。 Cplex 是否接受二次规划的非线性约束?更具体地说,给定未知数 [x1,x2,x3,x4,x5],我需要输入两个约束条件
约束 A (x2+x3) / (1-x1) = z1
约束 B (x4+x5) / (1-x1) = z2
其中 z1 和 z2 是已知数。
Cplex 确实有关于如何输入二次约束的 instructions,但是 none 我通常可以找到关于输入非线性约束的内容。
可以
from docplex.mp.model import Model
mdl = Model(name='example')
z1=2;
z2=3;
mdl.x1 = mdl.continuous_var(0,10,name='x1')
mdl.x2 = mdl.continuous_var(0,10,name='x2')
mdl.x3 = mdl.continuous_var(0,10,name='x3')
mdl.x4 = mdl.continuous_var(0,10,name='x4')
mdl.x5 = mdl.continuous_var(0,10,name='x5')
mdl.add_constraint(mdl.x2+mdl.x3==z1*(1-mdl.x1), 'A')
mdl.add_constraint(mdl.x4+mdl.x5==z2*(1-mdl.x1), 'B')
mdl.solve()
print(mdl.x1.solution_value);
print(mdl.x2.solution_value);
print(mdl.x3.solution_value);
print(mdl.x4.solution_value);
print(mdl.x5.solution_value);
帮助?