proxima-technology/casadi_mpc_nyuumon

5.6.7 最適な制御入力を出力する関数の作成 について

Closed this issue · 1 comments

@da1996-04 @th1991-01

これは誤りの指摘ではなくて質問ですが、共有したいのでここに投稿します。

5.6.7 節に以下のコードが書かれています。

def compute_optimal_control(S, x_init, x0):
    x_init = x_init.full().ravel().tolist()

    lbx = x_init + x_lb * K + u_lb * K
    ubx = x_init + x_ub * K + u_ub * K
    lbg = [0] * nx * K
    ubg = [0] * nx * K

    res = S(lbx=lbx, ubx=ubx, lbg=lbg, ubg=ubg, x0=x0)

    offset = nx * (K + 1)
    x0 = res["x"]
    u_opt = x0[offset : offset + nu]
    return u_opt, x0

この関数は x0 という引数を受け取ってそれを x0 = res["x"] で上書きして、更新された x0 を返り値として返しているようですが、print してみると引数の x0 と更新された x0 の値は同じであるように見え、どういう更新を x0 に対して行いたいのか疑問に思いました。

自己解決したのでクローズします