optimization - 解决 NLP 时目标值不一致
问题描述
目标是二次函数。
final = np.zeros_like(m.time)
final[-1] = 1
final = m.Param(final)
final_obj = ((m.Cs_n_avg[0]*final-0.0226981-0.25)*100)**2
m.Obj(final_obj)
m.options.IMODE = 6
m.options.SOLVER = 3
m.options.MAX_ITER = 500
m.solve(disp=True)
m.options.OBJ
3718.2126872
m.Cs_n_avg[0]
[0.0226981, 0.059400736803, 0.093924942354, 0.13029876847, 0.17044062163, 0.21694119575, 0.27269809999]
如果将 m.Cs_n_avg[0] 的值代入目标函数,则值为 0。
解决方案
这是动态优化课程中的一个相关问题(参见问题 1b),其中最终值被最小化。当前问题不完整,因为代码缺少几个依赖项。请更新问题或使用以下示例来提供帮助。
import numpy as np
import matplotlib.pyplot as plt
from gekko import GEKKO
m = GEKKO()
nt = 101
m.time = np.linspace(0,1,nt)
# Variables
x1 = m.Var(value=1)
x2 = m.Var(value=0)
u = m.Var(value=-0.48)
p = np.zeros(nt)
p[-1] = 1.0
final = m.Param(value=p)
# Equations
m.Equation(x1.dt()==u)
m.Equation(x2.dt()==x1**2 + u**2)
m.Equation(final*(x1-1)==0)
# Objective Function
m.Minimize(x2*final)
m.options.IMODE = 6
m.solve()
plt.figure(1)
plt.plot(m.time,x1.value,'k:',lw=2,label=r'$x_1$')
plt.plot(m.time,x2.value,'b-',lw=2,label=r'$x_2$')
plt.plot(m.time,u.value,'r--',lw=2,label=r'$u$')
plt.legend(loc='best')
plt.xlabel('Time')
plt.ylabel('Value')
plt.show()
推荐阅读
- python - 使用 pygame 在 Mac 上不显示屏幕
- vue.js - Vue:不响应命令
- c# - 如何从外部结构的对象访问嵌套结构的属性
- amazon-web-services - AWS HTTP Gateway:相同路由的多种方法,不包括使用无服务器框架的选项
- laravel - Laravel 自定义邮箱验证
- r - R计算日期差异时的函数错误
- c++ - Boost Python - 对`_Py_NoneStruct'的未定义引用
- python - txt 中的数据格式。文件
- javascript - Javascript:什么是 Http 服务中的 reportProgress?
- testng - TestNG-每次运行后都会覆盖结果