Haskell でハイブリッド システム用のコントローラーの開発に取り組んでいます。
FRP ライブラリ (現在はnetwireを使用していますが、優れたライブラリがいくつかあり、将来的には多くの興味深い研究が行われています) は、問題の連続時間側に優れたソリューションを提供します。信号名、次元、優先単位などでそれらを拡張すると、モジュール性があり、自己記述的で、正確さの信頼への直接的な道を持つシステムが得られます。
離散時間側に同様の特性を提供する情報、民間伝承、または論文を探しています。ある意味では、問題ははるかに簡単です。ステート マシンは十分に研究されており、単純です。ある意味難しいので、簡単に説明します。
正確さは明らかに最も重要なことであり、ありがたいことにそれは簡単でもあります。
自己記述はもっと問題です。コントローラーを正しい状態にするだけでなく、コントローラーがどのような状態にあるかを伝えることができるようにしたいと考えています。そして、それが次にどこへ行くのか。したがって、すべてに名前を付けることができ、機能しますが、モジュール性とは多少矛盾します。また、単純なものから複雑な離散時間動作を構築できるようにしたいと考えています。しかし、システムがどのような状態にあるかをシステムに尋ねると、一般に、高レベルの回答は低レベルの回答よりも興味深い (または少なくとも同じくらい興味深い) ものになります。これどうやったらきれいに取れますか?私はいくつかの素朴なアプローチを試し、いくつかの異なる方法でスパゲッティに身を包みましたが、エレガントな解決策があるに違いないようです。
自己記述に関して私が抱えていたもう 1 つの問題は、自己記述条件のリストが欲しいということです (一般的に比較: 10 秒経過しましたか? 次のウェイポイントから 3 フィート以内にいますか? バッテリーの電力が低下していますか? 15% 未満? など) 監視されており、次の状態遷移をトリガーする可能性があります。これらのイベントのいくつかは「下から上へ」 (たとえば、実行している低レベルのステップの予期される終了条件) と「上から上から」のほうが適切に処理されるように思われるため、ここでは何が望ましいセマンティクスであるかというトリッキーな質問があります。ダウン」 (例: 機器の故障検出、ジオフェンシングなど)。これは、自己記述の目標を緩めても、それ自体がスパゲッティにつながる可能性があります。
診断に加えて、ここでの正確な自己記述情報は、抽象的な解釈にも非常に役立ち、どのイベントがいつ発生する可能性があるかを推測することにより、システムの状態を将来に予測します。イベント条件の多くは、かなり単純な推測につながります (たとえば、適切な速度、燃料消費率、タイマーを使用)。他のものはより複雑ですが、一部のアプリケーションの予測を開発する努力をする価値があるかもしれません (例えば、オペレーターからの予想される命令、天気予報、関心のある移動オブジェクトの予測された軌跡)。条件に名前だけでなく、この種の機能も付けて注釈を付ける設計を見つけるとよいでしょう。
これについて共有したいという経験を持っている人はいますか?