こんにちは。今回は、発電プラントや製紙パルプ、製鉄、石油化学など各種プラントの自家発電設備の最適な生産計画について考えている人に向けて参考になる記事を書いています。特に複数の設備を保有する自家発電プラントの場合、構成する設備やその条件はたくさんあって、なかなか「最適とは何か?」について検討するのは簡単ではないようです。この辺りのヒントを書いておりますので、ぜひ読んで見てください!
発電プラントはじっくりと生産計画が検討された後、ヒートバランスをつくり、最適なエネルギーバランスを考え、その上でそのために必要な設備が納品されてくるわけです。しかし、プラントが運転開始した後にさまざまな変化が訪れます。
例えば、よくある変化とは以下の通りです。
- 計画時よりも工場の生産プロセスで必要な消費電力や蒸気消費が下がった
- 燃料を調達するための単価が上がった
- 複数ある設備のうち、一つがトラブルで1か月止まってしまいそう
- 外部から買ってくる電力料金の料金が上がった
- 脱炭素を実現するためにCO2を減らしたい
- 設備が老朽化したので一部を停止することが決まった
これらは何も今に始まったわけではありませんが、変化の激しい昨今では、こうしたことに直面することも多くなりそうですね。
例えば以下のようなプラント構成を考えてみましょう。

燃料の異なるさまざまな大きさのボイラー設備と、そこから蒸気を供給され、回転するさまざまな大きさの蒸気タービン発電機、蒸気タービンの一部から抽気されるさまざまな圧力の蒸気、それからさまなざまな燃料タイプとそれぞれの日々変わる燃料費、一部を外部から電気を買うなら買電量と単価、売るなら売電量と単価…などなど考えなければならないことが多すぎですよね?
読者の皆様の中にも「どうしたらよいものか?」と途方に暮れたことがあるのではないでしょうか。もしくは経験と勘と関連部署との連携でベテランさんがこの辺りの調整業務をされているかもしれません。
今回ご紹介するのは、組み合わせ最適化という考え方です。
例えば話をシンプルにするために合計100トンの蒸気を得るために、2つのボイラー設備の燃料費を最小にすることを考えてみましょう。
【例題】
ボイラーAは最大120トンの蒸気を得ることができますが、安全上、少なくとも50トンの蒸気を生まないと稼働することができません。1トンの蒸気をうみだすために必要なコストは50です。一方で、ボイラーBは最大60トンの蒸気を得ることができ、同じく少なくとも20トンの蒸気を生む必要があります。また、1トンの蒸気をうみだすために必要なコストは25です。この時、ボイラーAとボイラーBそれぞれ一体何トンずつ稼働させれば最も燃料費を小さくできるでしょうか?

ボイラーが2つくらいしかないときは、頭の中で考えられるかもしれません。
「ボイラーBの方がコストが安いので、これをまず最大の60トンまでBを稼働して、ボイラーAで残りの40を稼働して合計100トンを得たい。だけど、制約があって、ボイラーAは少なくとも50トンの蒸気を生まないといけないので…しょうがないからボイラーAを50トンにして、ボイラーBを50トンにするのかな」
それでは、ボイラーは全部で6つあって、蒸気タービンが3つあってそれぞれに稼働できる範囲が定まっていて、それぞれに燃料のコストが異なっていて、蒸気量だけでなく発電量の要求もあり、かつ売電は買電による収入の変化も加味しないといけない時にボイラーAが急にトラブルで停止したとしたらどうでしょうか?正直人間の頭の中では計算しきれませんよね。
そんなときに便利なもの、それが組み合わせ最適化というものです。
先ほどの言葉で表された問題を、計算式に表現することができれば、どの組み合わせが最適なのかについてコンピュータに任せることができるわけですね。ただし、単純にコンピュータだからといってすべてのケースを計算させてはいけません。
X1とX2それぞれで、51、52、53…などと蒸発量の候補を1ずつ変化させたとしても、ボイラーAは70通り、ボイラーBは40通りあり、70×40で合計2800通りの計算をさせなければなりません。これが1ずつ変化させた整数だからまだ良いですが、0.1刻みにしてみましょう。700通りと400通りになり、700×400で合計280000通りとなります。さらにもう2つボイラーCとDが増え、それの蒸発量の候補が500通りあると、実に700億通りとなってしまいますね。コンピュータの演算能力が高まっている現在であってもビジネスの現場で利用しようとするとなかなか大変な数の計算数となります。
これがいわゆる組み合わせ爆発という問題です。こうした問題にこたえるために数学者が取りくんできたのが組み合わせ最適化(数理最適化)というテーマで、いかにして理論的に素早く最適な答えを導くかというものです。どんな式でも良いというものではありませんが、ある決まった形の式に持ち込むことができればかなりパワフルなツールになると思います。
どういうことをしているかというと、先ほどの2つのボイラーの例について式にしてみます。
【例題】を式にすると以下の通り。求めたいボイラーAの蒸発量を”X1″、ボイラーBの蒸発量を”X2″とします。
燃料費合計は以下になりますね。燃料の英語”Fuel”の頭の文字をとって記号Fを割り当てました。このFがもっとも小さくするためのX1とX2の組み合わせを見つけるのが今回の問題です。
燃料費合計(F) = 50 X1 + 25 X2 (目的の式)
一方で、条件としては、以下の3つでした。
①合計が100トンになること
100 = X1 + X2 (条件式1)
②ボイラーAの蒸発量は50~120トンの範囲であること
50 < X1 < 120 (条件式2)
③ボイラーCの蒸発量は20~60トンの範囲であること
20 < X2 < 60 (条件式3)
目的の式は、以下のように変形できます。
X2 = -2X1 + F/25 (変形した目的の式)
条件式1も、以下のように変形できます。
X2 = -X1 + 100 (変形した条件式1)
そしてこれらを横軸にX1、縦軸にX2をとった平面に記載すると以下のようになります。
制約式で与えられる範囲の中で、自由にX1とX2は組み合わせを変えることができ、その中で目的式のFがもっとも小さくなるところを探すわけです。

こうして式に表わすことができれば、あとは機械的にコンピュータに計算させることができます。まず一番わかりやすい条件式2と3でX1とX2がとれる範囲が決まりますね。図の薄い青で塗られた領域が範囲になります。また、条件式1を変形させた線が点P1とP2を通り記載されています。結局このP1とP2の間にあってかつ、目的式のFが一番小さくなるところを探せばよいわけです。この場合赤い斜めの線がX1とx2の取れる範囲で動きますが、目的式の直線がP1と交わるところが最もX2軸との切片(F)が小さくなっていますよね。したがって、その時のX1とX2の値が50と50になっているというものです。
いかがでしたか、組み合わせをすべて総当たりで計算することなく、式変形と平面上の線の移動だけで決まりましたね。こうした手法で総当たりによる組み合わせ爆発の問題を防ぎながら、答えを導いていく手法をまとめて数理最適化、組み合わせ最適化などと呼ばれます。
今回は説明をシンプルにするためにX1とX2しか登場させませんでしたが、それがX3,X4, …Xnと増えたとしても、出てくる目的式や制約式が1次式(Xの2乗、3乗といったものではなくX, Y, Zなど右肩に数字が乗っていない複数の変数)で表現されている限り、数学的に証明された方法で最適な組み合わせにたどりつけます。それを証明するのはかなり難しいのですが、こうした問題を線形最適化問題などと呼ばれます。ぜひ身の回りでご利用になってみてはいかがでしょうか。たいていの場合、式になっていないケースが多いですが、目的と制約を良くコミュニケーションすれば式に上手く当てはめることができることもあります。
私たちも活用していますので何かあればご相談くださいませ。
以上で今回の説明は終わりです。最後まで読んでいただき、ありがとうございました!引き続きお役立ち情報を配信してまいりますのでご希望御座いましたら何なりとお申し付けください。