python - 最大方程长度

我读了大部分问题都出现了同样的错误,但大多数问题的回答都是一样的,这与我的问题不同。我正在解决一个非常简单的模型,唯一的问题是我正确管理的条件语句。但是我得到了这个错误,现在我不知道如何解决它! “APM 模型错误:字符串 > 15000 个字符 考虑将直线分解为多个方程

也可能是因为只使用了换行符 CR 而不是 CR LF(对于 Windows)或 LF(对于 MacOS/Linux) 要解决此问题,请使用适当的换行符保存 APM 文件

正在停止... “ 如果你能帮助我,那就太好了。

最佳答案

IMODE=2不需要求和。使用 m.Minimize()m.Obj() 将每个数据行和相关计算添加到目标函数。

尝试使用 m.if3() 函数代替 if 语句。这是为基于梯度的求解器提供连续的一阶和二阶导数所必需的。如果 m.if3() 花费的时间太长,也可以使用 m.if2()。有关优化问题中的逻辑条件的更多信息。

from gekko import GEKKO
import random
m = GEKKO()

# random numbers between -0.5 and 0.5
r = [30*(random.random()+1.0) for i in range(744)]

# power
Pw  = m.Param(value=r)
eta = m.Const(0.6)
Pre = m.Var(value=25,lb=20,ub=30)


def f(Pw,Pre):
    D = m.if3(Pw-Pre,Pw-Pre,eta*(Pw-Pre))
    return D

# constraint
#m.Equation(f(Pw,Pre)>=0)

# objective
m.Minimize(f(Pw,Pre))

# set global option and solve
m.options.IMODE = 2
m.solve()

不需要约束 m.Equation(f(Pw,Pre)>=0) 因为绝对值为正。这个脚本给出了解决方案:

 APMonitor Optimization Suite
 ----------------------------------------------------------------
 
 
 --------- APM Model Size ------------
 Each time step contains
   Objects      :            0
   Constants    :            1
   Variables    :            6
   Intermediates:            0
   Connections  :            0
   Equations    :            4
   Residuals    :            4
 
 Number of state variables:           3720
 Number of total equations: -         2232
 Number of slack variables: -         1488
 ---------------------------------------
 Degrees of freedom       :              0
 
 ----------------------------------------------
 Model Parameter Estimation with APOPT Solver
 ----------------------------------------------
Iter:     1 I:  0 Tm:      1.95 NLPi:    4 Dpth:    0 Lvs:    0 Obj:  7.00E+03 Gap:  0.00E+00
 Successful solution
 
 ---------------------------------------------------
 Solver         :  APOPT (v1.0)
 Solution time  :    1.99689999999828      sec
 Objective      :    7001.86498359946     
 Successful solution
 ---------------------------------------------------

下次提问时不要忘记发布代码,而不是代码图片。这样可以更轻松地提供更具体的建议。

https://stackoverflow.com/questions/72291208/

相关文章:

visual-studio - 如何一次查找和替换多个不同的键值对?

r - 无法在 MacOS M1 Monterey 上安装 stringi R 包

rust - 为什么 cargo build 在 git 更改锁时忽略锁文件?

javascript - React.useEffect 在依赖项发生变化时不会触发

mysql - 运行 mysql_secure_installation 时出现错误

aws-lambda - 让 Alexa 通过自定义技能通过从后端调用任何 API 而不说 'Ale

laravel - 对 Laravel Controller 策略中的 $this->authori

css - 使用 FontAwesome 网络字体时的 CSP 警告(工具包)

angular - 如何重置表单中的特定字段?

docker-compose - 如何获取分离容器的 docker-compose exec 的控制