システム制御情報学会 学会誌 「システム/制御/情報」 56 巻,6 号,pp.???-???,2012 年

『初学者のための図解でわかる制御工学 II』 特集号

大塚:モデル予測制御

 アーム型倒立振子の振り上げ制御シミュレーションプログラム
(C プログラム,MATLAB 関連ファイル,Mathematica 関連ファイル)
AutoGenU_InvPend.zip
---------- ファイル構成 ----------

 AutoGenU_InvPend.zip は,以下のファイルを含みます.

【C プログラム関係】
 ・aginvpendC.c : 振り上げ制御シミュレーションの C ソースファイル
 ・rhfuncu.c : C ソースファイル(汎用関数)
 ・rhmainu.c : C ソースファイル(メイン関数)
 ・plotsim.m : シミュレーション結果のグラフを表示する Matlab M ファイル
 ・animInvPend.m : シミュレーション結果のアニメーションを作成する Matlab M ファイル
【自動生成関係】
 ・AutoGenU.nb : C ソースファイルを自動生成する Mathematica ノートブック
 ・AutoGenU.mc : C ソースファイルのテンプレートファイル
 ・inputInvPend.m : AutGenU.nb が読み込む問題設定ファイル
 ・Format2.m : AutoGenU.nb が使用するパッケージ
 ・Optimize2.m : AutoGenU.nb が使用するパッケージ
【説明】
 ・ReadmeInvPend.txt

 使い方は以下の通りです.

---------- 使い方(C プログラム) ----------
  1. rhfuncu.c, rhmainu.c, aginvpendC.c を同じディレクトリに置いて,aginvpendC.c「だけ」をコンパイルすれば,rhfuncu.c, rhmainu.c もインクルードされて,実行ファイルが作られます.標準的な C コンパイラなら使えるはずです.
  2. シミュレーション結果は複数の Matlab M ファイル(拡張子 m)として保存されます.Matlab で plotsim.m を実行するとグラフが描かれます.
  3. plotsim.m を実行した後で animInvPend.m を実行すると,AVI 形式のアニメーションが保存されます.
  計算条件や重み等は aginvpendC.c の最初の方で定義されており,変更が可能です.
 plotsim.manimInvPend.m は Matlab 基本モジュールだけで実行できるはずです.

---------- 使い方(自動生成システム) ----------

 AutoGenU 自体の詳細は,下記 URL で公開されている AutoGenU.zip の中の Readme.txt(英文) を参考にしてください.
  http://www-sc.sys.es.osaka-u.ac.jp/~ohtsuka/code/index_j.htm
C プログラムと Matlab M ファイルだけを使うのであれば自動生成は不要です.

 自動生成を行う場合,AutoGenU.nb, AutoGenU.mc, inputInvPend.m, Format2.m, Optimize2.m を同じディレクトリに置いて,Mathematica で AutoGenU.nb を実行すると,aginvpendC.c が生成されます.その際,AutoGenU.nb の中でディレクトリを正しく指定してください.

 元は Mathematica 4 で開発しましたが, Mathematica 8.0 でも実行可能です.

---------- 参考文献 ----------
  1. T. Ohtsuka, and A. Kodama: Automatic Code Generation System for Nonlinear Receding Horizon Control, 計測自動制御学会論文集, Vol. 38, No. 7, pp. 617-623, 2002.
    (扱っているアルゴリズムは異なりますが,自動生成について述べています.)
  2. T. Ohtsuka: A Continuation/GMRES Method for Fast Computation of Nonlinear Receding Horizon Control, Automatica, Vol. 40, No. 4, pp. 563-574, 2004.
    (AutoGenU が使っているアルゴリズム C/GMRES に関する詳細です.)
  3. 大塚敏之: 非線形 Receding Horizon 制御の計算方法について, 計測と制御, Vol. 41, No. 5, pp. 366-371, 2002.
    (C/GMRES と自動生成に関する解説です.)
  4. 大塚敏之: 非線形最適制御入門, コロナ社, 2011.
    (最適制御全般とモデル予測制御についてC/GMRESも含めてまとめた書籍です.)