我有两个变量E[i]
and Y[i]
,其中E
是一个连续变量并且Y
是二元的。所以条件是:
if E[i] <= rmin:
Y[i]==1
else:
Y[i]==0
如何if-else
使用 Python将此循环转换为线性约束?
为了简化一点,让E'[i] = E[i] - rmin
。
你要表达Y[i] = 1 if E'[i] <= 0, and 0 otherwise
。
如果E'
(严格)受某个 number 的限制c
,则很容易:Y[i] > -E'[i]/c
和Y[i] < E'[i]/c
。
否则,我认为您不能仅使用约束来做到这一点,但是如果您可以使用最大化子句和松弛变量,则可以。您可以编写k = max(min(E'[i], 0.5), -0.5)
, Y[i] > -k
, Y[i] < k
,然后使用标准 LP 技巧来表达max
和min
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句