我想用cyipopt解决以下(宽松的,即 v(t) \xe2\x88\x88 [0, 1])最优控制问题:
\n\n这是迄今为止我解决离散问题的方法:
\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom cyipopt import minimize_ipopt\nfrom scipy.optimize._numdiff import approx_derivative\n\n# z = (x1(t0) .... x1(tN) x2(t0) .... x2(tN) v(t0) .... v(tN))^T\n\ndef objective(z, time):\n x0, x1, v = np.split(z, 3)\n res = 0.0\n for i in range(time.size-1):\n h = time[i+1] - time[i]\n res += h*((x0[i]-1)**2 + (x1[i]-1)**2)\n return res\n\n\ndef ode_rhs(t, x, v):\n x0, x1 = x\n xdot1 = x0 - x0*x1 - 0.4*x0*v\n xdot2 = -x1 + x0*x1 …Run Code Online (Sandbox Code Playgroud)