线性规划 - 问题 - Python Gekko

问题描述

我最近在学习 Python Gekko,我对线性编程非常陌生,所以请原谅我对某些主题的无知。

我有一个变量,它的值应该是 0 或大于 20。

我后来知道这叫做半连续变量。我的问题如下

  1. 是否可以将上述条件转化为线性方程
  2. 无论如何,Gekko 是否支持半连续变量,因为我在文档中找不到任何相关信息。

解决方法

您可以使用 if3() 函数来强制执行该约束。该函数使用二进制变量作为切换条件,因此它将问题从线性规划 (LP) 问题转换为混合整数线性规划 (MILP) 问题。

result

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt

m = GEKKO()

p = m.Param(np.linspace(0,50))
y = m.if3(p-20,p)

m.options.IMODE=2
m.solve()

# plot solution
plt.plot(p.value,'r-',lw=3)
plt.plot(y.value,'b.-')
plt.show()