when running gekko for 1st time, got this error "cannot import name 'dump_csp_header' from werkzeug.http'

Viewed 699

I'm using Spyder to run Python 3.7 where I installed gekko. However, I tried running a simple gekko code from Wikipedia and it gives me the following error:

ImportError: cannot import name 'dump_csp_header' from 'werkzeug.http' (C:\Users\zulfan.adiputra\AppData\Local\Continuum\anaconda3\envs\PythonNew\lib\site-packages\werkzeug\http.py)

When I check in the Anaconda prompt, the werkzeug installed is 1.0.0. What to do in this regard?

Thanks

1 Answers

You can resolve the error with:

  1. Set GUI=False in m.solve()
  2. Run the Python program from the command line with python myProgram.py. There are sometimes problems with the Flask server if you try to use the GUI by running from an IDE like Spyder or IDLE.

Instead of using the GUI option, it is relatively easy to plot the results with matplotlib. Here is an example script:

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

Related