機械学習を使ったMPCによる空調制御デモ
PID(Proportional Integral Differential)制御という言葉を聞いたことある方は多いかと思いますが、MPC(Model Predictive Control=モデル予想制御)というのをご存じでしょうか? 大学でも習う古典な制御方式のPIDに対し、MPCは1980年代に登場した比較的新しい制御手法です。このコラムでは、MPCと機械学習を組み合わせた空調制御のデモを紹介します。
MPC(Model Predictive Control)のしくみ
下の図は、MPCの構成を表したものです。目標設定と現在状態を入力とし、予想モデルによる将来状態の予想と最適化器により、最適な制御入力を決定します。制御結果のフィードバックに基づき逐次予想を更新することで、精度の高い制御を行うことができます。
MPCについての詳しい説明はここでは省略します。末尾に掲載した参考資料をご参照ください。今回はこの予想モデルを、機械学習を利用して構築します。機械学習は、いろいろな推論問題に応用できます。特に、時系列の状態変化による将来値の予想(回帰分析)は、その典型的な利用方法の1つです。
PID制御による空調管理の例
機械学習を用いたMPC制御の例 ― 学習により精度が高くなっている
エッジAI・機械学習ライブラリ「Ekkono SDK」
今回のデモ作成では、Ekkono社(スウェーデン)の機械学習エンジンEkkono SDK を利用します。Ekkono SDKは、いくつかの機械学習アルゴリズムをライブラリ形式で提供する、商用ベースの機械学習開発キットです。数学や統計学の専門知識がなくても、エンジニアレベルで機械学習を利用した製品を開発できます。ここでは、その特長を3つご紹介します。
1. 超軽量実装
ArmⓇ CortexⓇ-M0 レベルのマイコンでも動作可能な、超軽量実装を可能にしています。クラウドなどは不要で、機械学習をエッジデバイスのみで実現します。OS非依存なので、さまざまな装置に適用可能で、例えば、今回のデモのように、リモコンや壁掛けコントロールパネル装置に制御コードを実装できます。
2. リアルタイム学習
リアルタイム学習をサポートします。デバイスでは、開発時に事前に学習したモデルを用いて推論だけを行うこともできますが、追加学習あるいはゼロからの新規学習をデバイス上でリアルタイムに行うことができます。今回取り組む空調制御でも、間取りや吹出し口の位置、天候や熱源など、単純な熱伝導以外にさまざまな要因が関係するため、リアルタイム学習による環境に合わせた予想は非常に有効です。
3. 豊富なライブラリ
組込み用のCライブラリのほか、互換のある開発検証用の高次元ライブラリが用意されています。試行錯誤的な検証がともなう機械学習のモデルを、いきなり組込みデバイスで開発するのは大変です。WindowsやLinuxで利用できるPythonや.NETのライブラリや検証用のツールも提供していますので、パソコンでモデル開発を行うことができます。今回のデモも、Raspberry Pi & Linuxを使って、お手軽にPoCしてみました。
空調制御について
オフィスはもちろん、最近では、戸建て住宅でも広いLDKや開口部の多い間取りが増えてきているようです。近年の断熱性・機密性の向上により、各部屋個別にエアコンを設置する代わりに、少数のエアコンで家全体をカバーするような提案も見かけます。
MPCとEkkonoのリアルタイム学習を組み合わせると、例えば下図のようなシナリオを構築することができます。開口部が大きいスペースに、2台のエアコンが設置され、室内に3か所の温度センサーと外気温センサーが取り付けられています。2台のエアコンの風量と風向きを統合的に制御して、室内温度センサーをそれぞれ設定された温度に近けたいのですが、空調制御に間取りや機器設置の位置情報を取り入れるのは大変です。また、外気温・外光や戸の開閉などによっても、制御条件は変わってくるかもしれません。
MPCとリアルタイム学習を組み合わせると、このような複雑系のシナリオでも学習によって自動的に最適制御ができるのではないか、というのが今回のデモ(PoC)のきっかけでした。
デモについて
しかし、弊社は空調メーカーではないので設備や予算はありませんし、加えてリモートワーク中です。そこで、手元でできそうなシナリオを考えてみました。
サーボモーターで数枚のフィンの角度を制御する吹き出し口を工作し、これと2つの温度センサーをRaspberry Pi3に接続し制御できるようにします。それらを小さなプラスチックケースの中にいれて、2つあるセンサーの1つを箱内の壁に(写真①の上壁)、もう1つは箱外に出します。箱の蓋を閉めるとRaspberry Pi3の発する熱などの影響も受けて、箱外のセンサー(箱外気温)と、箱内のセンサー(箱内気温)に温度差が生じます。
廃熱用に吹き出し口の裏に穴を空け、扇風機からホースで風が送り込まれるようにしています(写真②)。風量は一定の送風状態なのですが、箱内センサーと吹き出し口の位置関係により、吹き出し口の向きに応じて箱内センサーの温度が変化します。風が直撃すると外気温に近くなり、そっぽを向いた状態だと測定温度が上がります。送風しかできないので、目標温度は初期状態の箱内の定常温度と、箱外温度の中間値にします。
Raspberry Pi上で、PythonコードからEkkonoを使ってMPC制御を行います。入力は、①箱内温度、②箱外温度、③吹き出し口の角度です。①をターゲット変数として、複数の吹き出し口の角度それぞれの場合の将来の温度変化を予想します。予想した①の温度が目標温度に一番近くなる角度を選択し、③の吹き出し口の向きを制御します。 もちろん、センサーの位置などの情報は一切なく、これらの入力情報とそれによる温度変化の結果の学習だけで空調制御を行います。サンプリングは5秒間隔にして、5秒ごとに①②③を更新して学習を更新しながら、新しい予想値を算出します。結果が分かりやすいように、同Raspberry PiでWebサーバーを立てて、各値を時系列でリアルタイムにグラフ化しました。
下図が初動です。黒線が箱内温度、黄土色線が箱外損度、水色線が吹き出し口の向きで、赤線が目標温度です。吹き出し口の初動はランダムですが、この回は左から右に線形に移動しています。
下図は、しばらく放置したときの状態です。どうやらうまくいったようです。吹き出し口がうまく制御されて、箱内温度を設定値に合わせようとしている様子が分かります。くり返しになりますが、箱内のレイアウトはもちろん、風量など一切の予備情報はなく、上記③つの入力値の経験(学習)だけで、予想と制御を行っています。
まとめ
今回はシンプルなシステム構成のデモでしたが、リアルタイム学習によるMPC制御の様子がお判りいただけましたでしょうか。MPCによるより精度の高い制御だけでなく、リアルタイム学習を用いた複雑系・環境適応型の制御は、今回の空調制御以外にも様々な場面に応用できるのではないかと思います。
今回のデモやEkkono SDKについての詳細は、以下のボタンよりお気軽にお問い合せください。
参考資料
- https://qiita.com/RyosukeH/items/bf95c58e352774ed8de7
- https://www.fixhome.jp/column/20200220/
- https://iiie296.com/?page_id=28
このコラムの著者
株式会社ユビキタスAI
企画室 主席研究員
吉田 一茂​(よしだ かずしげ)
マイクロソフトの開発部門で25年間エンジニアを経験。言語・アプリケーション・OS開発をはじめ、組込からクラウドまで幅広いプログラミングをカバーする。帰国にあたりユビキタスAIに入社、企画室にて新規事業アイデアの立案やPoC作成、組織にわたる社内支援などを担当している。
より詳しく技術や関連製品について知りたい方へ
本コラムに関係する技術や関連する製品について知りたい方は、お気軽にご相談ください。