第一次运行gekko时,收到此错误“无法从werkzeug.http'导入名称'dump_csp_header'。

问题描述 投票:3回答:1

我正在使用Spyder运行安装了gekko的Python 3.7。但是,我尝试从Wikipedia运行一个简单的gekko代码,它给了我以下错误:

[导入错误:无法从'werkzeug.http'导入名称'dump_csp_header'(C:\ Users \ zulfan.adiputra \ AppData \ Local \ Continuum \ anaconda3 \ envs \ PythonNew \ lib \ site-packages \ werkzeug \ http.py)

当我检查Anaconda提示符时,安装的werkzeug是1.0.0。在这方面该怎么办?

谢谢

python-3.x spyder werkzeug gekko
1个回答
0
投票

您可以使用以下方法解决错误:

  1. GUI=False中设置m.solve()
  2. [python myProgram.py从命令行运行Python程序。如果您尝试通过从Spyder或IDLE之类的IDE中运行来使用GUI,则Flask服务器有时会出现问题。

而不是使用GUI选项,使用matplotlib绘制结果相对容易。这是一个示例脚本:

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

m = GEKKO()  # initialize gekko
nt = 101
m.time = np.linspace(0, 2, nt)
# Variables
x1 = m.Var(value=1)
x2 = m.Var(value=0)
u = m.Var(value=0, lb=-1, ub=1)
p = np.zeros(nt)  # mark final time point
p[-1] = 1.0
final = m.Param(value=p)
# Equations
m.Equation(x1.dt() == u)
m.Equation(x2.dt() == 0.5 * x1 ** 2)
m.Obj(x2 * final)  # Objective function
m.options.IMODE = 6  # optimal control mode
m.solve()  # solve
plt.figure(1)  # plot results
plt.plot(m.time, x1.value, "k-", label=r"$x_1$")
plt.plot(m.time, x2.value, "b-", label=r"$x_2$")
plt.plot(m.time, u.value, "r--", label=r"$u$")
plt.legend(loc="best")
plt.xlabel("Time")
plt.ylabel("Value")
plt.show()

Example of how to plot results

© www.soinside.com 2019 - 2024. All rights reserved.