---------- ファイル構成 ----------
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 プログラム) ----------
- rhfuncu.c, rhmainu.c, aginvpendC.c を同じディレクトリに置いて,aginvpendC.c「だけ」をコンパイルすれば,rhfuncu.c, rhmainu.c もインクルードされて,実行ファイルが作られます.標準的な C コンパイラなら使えるはずです.
- シミュレーション結果は複数の Matlab M ファイル(拡張子 m)として保存されます.Matlab で plotsim.m を実行するとグラフが描かれます.
- plotsim.m を実行した後で animInvPend.m を実行すると,AVI 形式のアニメーションが保存されます.
計算条件や重み等は aginvpendC.c の最初の方で定義されており,変更が可能です.
plotsim.m と animInvPend.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 でも実行可能です.
---------- 参考文献 ----------
- T. Ohtsuka, and A. Kodama: Automatic Code Generation System for Nonlinear
Receding Horizon Control, 計測自動制御学会論文集, Vol. 38, No. 7, pp. 617-623, 2002.
(扱っているアルゴリズムは異なりますが,自動生成について述べています.)
- 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 に関する詳細です.)
- 大塚敏之: 非線形 Receding Horizon 制御の計算方法について, 計測と制御, Vol. 41, No. 5, pp. 366-371,
2002.
(C/GMRES と自動生成に関する解説です.)
- 大塚敏之: 非線形最適制御入門, コロナ社, 2011.
(最適制御全般とモデル予測制御についてC/GMRESも含めてまとめた書籍です.)
|