スキップしてメイン コンテンツに移動

発電機起動停止計画最適化パッケージ 「ucgrb」の公開

2023年8月31日、東京理科大学 山口研究室 において、Gurobi Optimizerを用いた発電機起動停止計画(Unit Commitment: 以下UC)最適化を実施するためのPythonパッケージ「ucgrb」がGithub上で公開されました。


本ブロブの管理者が代表社員を務める合同会社「真鍋ラボ」が本パッケージの開発・運用に携わっています。そこで、本ブログ上で本パッケージを簡単に紹介させてください。

UCとしての特徴

本パッケージは連系線で接続された複数地域の電力系統を対象として、対象期間(受渡日)のUCが確定するように、前日計画と当日計画を連続で実施することができます。たとえば、日本全国の電力系統を対象として、UCを実施することも可能です。
本パッケージのUCは混合整数線形計画法(Mixed-integer linear programming: MILP)で定式化されています。詳細な定式化内容はGithub上にあるreadmeにおける「4. 最適化問題の定式化」で確認することができます。主な特徴は以下の通りです。
  • 最適化の目的関数は最適化対象期間の全地域の総コスト最小化である。
  • 決定変数は電力系統の各構成要素の運用計画である。
    • 大規模発電機(火力、原子力、水力)
    • エネルギー貯蔵装置(ESS)
    • 再生可能エネルギー(太陽光、風力)
    • 連系線
  • 主な制約条件は以下の通りである。
    • 電力系統の各構成要素の運用制約
    • 複数地域の需給バランス制約、調整力制約、慣性定数制約
前回の最適化で決定された変数の一部を最適化対象前時間帯に引き継ぐことで、連続した最適化(Rolling Optimization)を実現しています。

シミュレーションツールとしての特徴

MILPのソルバーとして、Gurobi Optimizerを用いています。大規模な問題を解くためには有償のライセンスが必要となります。Gurobi Optimizerの有償ライセンスがない場合でも、MILPをMPSファイル形式で出力することで、他のソルバーツールでの実施が可能となります。
また、最適化対象となる電力系統の各種パラメータはCSVファイル形式で記述され、特定のディレクトリに配置する必要があります。設定ファイルによってインポート対象のデータディレクトリを指定することができます。
各回の最適化結果はそれぞれXLSXファイル形式で保存されます。設定によっては、全決定変数の最適化結果をJSONファイル形式で出力することができます。
最適化を行う際の条件は、設定ファイルの記載を編集することで、簡単に変更することができます。主な設定項目はreadmeにおける「6. 設定値一覧」で確認することができます。
本シミュレーションツールは3つのクラスと2つの関数で構成されています。それらのクラスを参照し、編集、組み合わせることで自由度の高いシミュレーションモデルの構築が可能となります。
  • クラス「UCData」: 設定ファイルと電力系統モデルを読み込み保存する。
  • クラス「UCDicts」: 「UCData」で読み込まれた電力系統モデルを、Gurobiモデルで使用できるように、辞書型に変換し保存する。
  • クラス「UCVars」: 最適化の結果を一部保存し、その保存内容を参照して、関数「make_grb_model」で作られたGurobiモデル決定変数の一部を固定する。
  • 関数「make_grb_model」: 「UCData」「UCDicts」を元にGurobiモデルを生成する。
  • 関数「output_result」: 最適化結果をxlsxファイル等で出力、保存する。
山口研究室の記載にもある通り、本パッケージを通して、大学の方との共同研究や企業の方との共同分析ができたらよいと考えています。山口研究室へ直接連絡を取られても勿論大丈夫ですが、私へ連絡頂いても構いません。
本ブログ右上にある「プロフィール」にお問い合わせメールが表示されていますので、簡単なご質問等でも構いませんので、気兼ねなくご連絡いただければと思います。

コメント

このブログの人気の投稿

Sourcetreeを使って、特定のブランチやタグをローカルに再現する方法 - フェッチ(fetch)を使おう -

今や、プログラミング開発に欠かせない存在となったGit。上司や同僚から「修正版をブランチ"devlop"にプッシュしたから、それを反映させてね」「安定版はタグ”v1.2”だから、よろしくね」と言われることもあるでしょう。その時に「どうやってブランチやタグって変えたらいいかわからない」「そもそも言われたブランチやタグが見当たらないんだけど…」となったら、とても困ってしまいます。そんなときにどうしたらいいか、本記事では Sourcetree を使用している環境を想定して、おすすめの手順を紹介します。環境によって具体的な操作は異なるものの、手順自体は一緒です。基本的には、 フェッチ(fetch)をしてリモートリポジトリをちゃんと確認 すればよいのです。 1. コミットしていないファイルをなくそう まず、Sourcetreeのコミット一覧に「コミットされていない変更があります」とあるかどうか確認します(下記図赤下線参照)。「コミット」の箇所に青マークでコミットされてないファイル数も表示されます(下記図赤枠参照)。その変更をコミットするか、破棄するかを行い、コミットされていない変更がない、きれいな状態にしましょう。そうしないと、後の作業中にエラー等が発生して進まなくなってしまいます。 2. フェッチしよう フェッチとは、 リモートリポジトリの最新の履歴の取得だけを行う 操作です。これによって、自分から見えていなかったブランチ・タグが見えるようになります。ブランチへのマージが伴うプッシュやプルと異なり、単に履歴を取得するだけなので、意図しないコミットが発生しません。安心して実施しましょう。Sourcetreeでは下記図赤枠部分をクリックすれば、フェッチを行うことができます。 その際出てくるポップアップで「すべてのリモートからフェッチ」「全てのタグを取得」をチェックしてください(下図赤下線参照)。 3. 目的のブランチ・タグを見つけよう 目的のブランチ・タグを見つけるのに便利なのが、Sourcetreeの左側領域にある「ブランチ」「タグ」「リモート」「スタッシュ」です。目的のブランチを探したい場合は「リモート」をクリックして現れる「origin」をさらにクリックしましょう。これでリモート上にあるブランチの一覧を見ることができます。タグの場合は「タグ」をクリック

GitHubのプライベートリポジトリからクローンできてもプッシュできないときの対処法 - Write権限の有無を確認しよう -

 以前、 SourceTreeを使って、GitHubのプライベートリポジトリにアクセスする方法 を記事にしました。その際、プライベートリポジトリからクローンできても、プッシュできない!という現象に遭遇するときがあります。下記のように、”そんなリポジトリは存在しないよ”というエラーが表示されます。 remote: Repository not found. もし、そのリポジトリがOrganaizationに属するものならば、 あなたのアカウントの権限が”Read”のみで、”Write”になっていない 可能性があります。権限に関してOrganaizationの管理者に確認してもらいましょう。 管理者がどういうルールで権限を決定しているのかによって、対応が変わるかと思います。一番手っ取り早い対応は、全てのメンバーのデフォルト権限を”Write”に変えてしまえばよいでしょう。Organaizationのページの右上にある「Settings」をクリックし、左に表示されるメニューから「Member privileges」を選択します。すると、左下のような画面が表示されますので、赤枠で囲っている「Base permissions」のプルダウン部分を"Write"に変更してください。 その他に、リポジトリ毎にアクセスできるメンバーを管理したい場合もあるかと思います。その際にはリポジトリの「Settings」→「Manage access」を選択し、設定等を変更してください。

SourcetreeでGitHubのプライベートリポジトリをクローンする

Sourcetree は、初心者でも操作しやすいgitのGUIツールです。基本無料のソフトなので、あらゆる人が導入・利用しやすいという利点を持ちます。ですが、GitHubで非公開、つまりプライベートのリポジトリを取り扱う場合には、初期設定に一工夫が必要です。 本記事で紹介する設定の流れは以下の通りです。前提として、1)GitHubのアカウントとプライベートリポジトリを既に所有しているが、2)Sourcetreeを自身のPCにまだインストールしていない状態を想定しています。 GitHubのPersonal access tokenを作成する Sourcetreeを自身のPCにインストールする SourcetreeにGitHubのアカウントを登録する プライベートリポジトリをクローンする 今回はPersonal access tokenという手法を用います。秘密鍵や公開鍵が必要なSSH接続とは異なり、アカウント名とパスワードのみで認証できます。そのため、アカウント管理がより重要となりますので、 2段階認証 でより強力なアカウント保護をおこなうことをお勧めします。また、本記事で紹介するのはWindowsでの利用です。Macでもほぼ同じ流れになるかと思いますが、試してはいませんのでご了承ください。 1. GitHubのPersonal access tokenを作成する GitHubのPersonal access tokenとは、GitHub API またはコマンドラインを使用するときに GitHub への認証でパスワードの代わりに使用できる機能です。このトークンを自身のGitHubアカウントで作成することで、Sourcetreeからプライベートリポジトリにアクセスすることができるようになります。具体的な作り方は下記のGitHub公式ページををご参考ください。 Personal access tokenの作成方法: https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token ポイントは手順8に書かれているS