Gurobi:在Python中放松不可行模型

Gurobi:在Python中放松不可行模型,python,gurobi,feasibility,Python,Gurobi,Feasibility,我在古罗比的数学符号中设置了以下约束x变量是二进制的sigmaplus和sigmaminus变量为正且连续 Subject To 858 x[1,_2] + 1092 x[1,_3] - sigmaplus[1] + sigmaminus[1] = -200 # Constraint 1 858 x[1,_2] + 1092 x[1,_3] >= -1800 # Constraint 2 858 x[1,_2] + 1092 x[1,_3] <= 0 # Constraint

我在古罗比的数学符号中设置了以下约束<代码>x变量是二进制的
sigmaplus
sigmaminus
变量为正且连续

Subject To
 858 x[1,_2] + 1092 x[1,_3] - sigmaplus[1] + sigmaminus[1] = -200  # Constraint 1
 858 x[1,_2] + 1092 x[1,_3] >= -1800 # Constraint 2
 858 x[1,_2] + 1092 x[1,_3] <= 0 # Constraint 3
 x[1,_2] + x[1,_3] = 1 # Constraint 4
 720 x[2,_1] + 990 x[2,_2] - sigmaplus[2] + sigmaminus[2] = 2000 # Constraint 5
 720 x[2,_1] + 990 x[2,_2] >= -500 # Constraint 6
 720 x[2,_1] + 990 x[2,_2] <= 3000 # Constraint 7
 x[2,_1] + x[2,_2] = 1 # Constraint 8
 ...
 ...
在某些情况下,这很有效。我的意思是,它将创建变量的不可行性设置为0。但是,在一些其他情况下,
约束1,2、
3
不会产生任何不可行,
约束4
会产生不可行,解算器会增加
约束4
的右侧。因此,在这种情况下,我需要找到一种方法将它们设置为0。如有任何建议,我们将不胜感激

feasRelaxS ( relaxobjtype, minrelax, vrelax, crelax )
参数:

relaxobjtype:查找最小成本松弛时使用的成本函数

minrelax:要执行的可行性放松类型

vrelax:指示是否可以放宽变量边界

crelax:指示是否可以放松约束

此函数用于修改模型对象以创建可行性松弛。 此方法提供了许多用于指定松弛的选项。 minrelax参数是一个布尔值,用于控制创建的可行性松弛的类型。如果minrelax=False,则优化返回的模型会提供一个将违规成本降至最低的解决方案。如果minrelax=True,优化返回的模型会找到一个使原始目标最小化的解决方案,但只能从那些使违规成本最小化的解决方案中找到如果您希望模型放宽约束不可行的变量值,请将vrelax从False更改为True。您可以阅读以下内容的完整说明:

参数:

relaxobjtype:查找最小成本松弛时使用的成本函数

minrelax:要执行的可行性放松类型

vrelax:指示是否可以放宽变量边界

crelax:指示是否可以放松约束

此函数用于修改模型对象以创建可行性松弛。 此方法提供了许多用于指定松弛的选项。 minrelax参数是一个布尔值,用于控制创建的可行性松弛的类型。如果minrelax=False,则优化返回的模型会提供一个将违规成本降至最低的解决方案。如果minrelax=True,优化返回的模型会找到一个使原始目标最小化的解决方案,但只能从那些使违规成本最小化的解决方案中找到如果您希望模型放宽约束不可行的变量值,请将vrelax从False更改为True。您可以阅读以下内容的完整说明:

feasRelaxS ( relaxobjtype, minrelax, vrelax, crelax )