Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 非线性约束_Python_Cplex - Fatal编程技术网

Python 非线性约束

Python 非线性约束,python,cplex,Python,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确实有关于如何输入二次约束的知识,但在一般情况下输入非线性约束时,我找不到 from docplex.mp.model import Model mdl = Mod

我正在尝试使用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确实有关于如何输入二次约束的知识,但在一般情况下输入非线性约束时,我找不到

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);

帮助?

CPLEX不支持一般非线性约束。然而,我认为如果你通过将分母项移到另一边来重新排列这些约束,它们可以作为线性约束输入。谢谢,这样做了,它成功了。