コード例 #1
0
        C = np.eye(n_st)
        fy = mtimes(C, xk2) + vk2
        h = Function('h', [xk2, vk2], [fy])
        Ch = Function('Ch', [vertcat(xk2, thetah2)],
                      [jacobian(fy, vertcat(xk2, thetah2))])
        Chx = Function('Chx', [xk2], [jacobian(fy, xk2)])

        uk_opt = np.array([2.5 * 10**(-6) * discritize, 280])
        xkp = np.array([V0, Ca0, Cb0, Cc0, T0, Tj0, Tj0_in])
        theta_par = theta_nom
        xkh0 = xkp
        zkh0 = vertcat(xkh0, theta_par)
        Sigmak_p = Qz

        Jce, qu_ce, lbq, ubq, g, lbg, ubg, qu_init = Dual.ce_mpc(
            F_ode, n_pred, n_ctrl, n_st, n_par, n_ip, uk_lb, uk_ub, xk_lb,
            xk_ub, xk2, theta_par, uk2, Tsamp, xkh0, uk_opt)
        qp_mpc = {'x': vertcat(*qu_ce), 'f': Jce, 'g': vertcat(*g)}
        solver_mpc = nlpsol(
            'solver_mpc', MySolver, qp_mpc, {
                'ipopt': {
                    'max_iter': 1000,
                    "check_derivatives_for_naninf": 'yes',
                    "print_user_options": 'yes'
                }
            })
        res_mpc = solver_mpc(x0=qu_init, lbx=lbq, ubx=ubq, lbg=lbg, ubg=ubg)
        res = res_mpc['x'].full().flatten()

        xce1 = res[0::n_st + n_ip]
        xce2 = res[1::n_st + n_ip]
コード例 #2
0
                xt = xt['xf']
                x_t[i9,:] = xt.T

            #plt.plot(range(len(xce1)),xce1)
            #plt.plot(range(len(xce1)),xce2)
            plt.plot(range(run_time), x_t[:,0], ':')
            plt.plot(range(run_time), x_t[:,1], ':')
            #plt.plot(range(len(xce1)),xe[0]*np.ones((len(xce1),1)))
            #plt.plot(range(len(xce1)),xe[1]*np.ones((len(xce1),1)))
            plt.show()

        import pdb; pdb.set_trace()
        uk_opt = .55

        Jce,qu_ce,lbq,ubq,g,lbg,ubg,qu_init=Dual.ce_mpc(M_ode,run_time,n_ctrl,
                                            n_st,n_par,n_ip,uk_lb,uk_ub,xk_lb,
                                            xk_ub,xk4,uk4,Tsamp,x0,uk_opt)
        qp_mpc = {'x':vertcat(*qu_ce), 'f':Jce, 'g':vertcat(*g)}
        solver_mpc = nlpsol('solver_mpc', MySolver, qp_mpc,{'ipopt':
                            {'max_iter':1000,"check_derivatives_for_naninf":
                            'yes', "print_user_options":'yes' }})
        res_mpc = solver_mpc(x0=qu_init, lbx=lbq, ubx=ubq, lbg=lbg, ubg=ubg)
        res = res_mpc['x'].full().flatten()

        xres = res[0:(run_time+1)*2]
        xce1 = xres[0::n_st]
        xce2 = xres[1::n_st]
        uce1 = res[(run_time+1)*2:]

        xt = x0
        x_t = np.zeros((run_time,n_st))