工場の電力の使用実績と生産計画・気温の予報から、翌日の30分ごとの電力需要を見込み、デマンドの上限を超えそうな時間帯と止める設備の候補を生産の担当へ出す
デマンド監視装置の30分値と、翌日の生産計画・気温の予報から、翌日の30分ごとの電力需要を見込みます。上限を超えそうな時間帯と、止める・ずらす設備の候補を、前日のうちに生産の担当へ出します。
- 連携・自動化
- Python
- 対象業界
- 物流/製造
- 対象部門
- 生産
- 対象業務
- 比較検討/集計・分析
- 主な課題
- データ分析に時間がかかる/判断に時間がかかる/属人化している
- AIで行う処理
- 予測
- 主な効果
- 判断支援/工数削減/機会損失防止
- 導入難易度
- ★★★★★
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 夕方、電気の担当が、デマンド監視装置の画面で当日と前週の同じ曜日の30分値を見る
- 翌日の生産計画の表から、動くラインと設備を拾い、定格の電力を足し合わせる
- 天気予報のサイトで、翌日の最高気温と時間ごとの気温を見る
- 経験から、上限を超えそうな時間帯を見込む
- 超えそうな時間帯があれば、止める・ずらす設備を考え、現場の班長に伝える
- 当日、警報が鳴れば、担当者が現場に行って設備を止める
- 月末に、月の最大のデマンド値を記録する
- 自動毎日14時、デマンド監視装置から前日までの30分値をCSVで取り込む
- 自動翌日の生産計画の表から、30分ごとに動く予定の設備と、その定格の電力の合計を作る
- 自動Open-Meteo の JMA API から、工場の場所の翌日の1時間ごとの気温と湿度の予報を取る
- 自動勾配ブースティングのモデルで、翌日の30分ごとの電力需要を、真ん中(50%点)と多め(90%点)の2本で見込む
- 自動多めの見込みが目標のデマンドを超える時間帯と、超える量を出す
- 自動超える時間帯について、設備の停止・後ろ倒しの優先順位の表から、超える量を満たす設備の候補を選ぶ
- 人電気の担当が候補を見て、品質と納期の都合を確かめ、班長に段取りを伝える
- 自動翌朝6時、最新の気温の予報で見込みを出し直し、変わった時間帯だけを担当者に知らせる
- 自動前日の見込みと実際の30分値を並べ、多めの見込みを超えた時間帯の割合を工場ごとに出す
各工程の詳しい説明を読む
- 夕方、電気の担当が、デマンド監視装置の画面で当日と前週の同じ曜日の30分値を見る
- 翌日の生産計画の表から、動くラインと設備を拾い、定格の電力を足し合わせる
- 天気予報のサイトで、翌日の最高気温と時間ごとの気温を見る
- 経験から、上限を超えそうな時間帯を見込む
- 超えそうな時間帯があれば、止める・ずらす設備を考え、現場の班長に伝える
- 当日、警報が鳴れば、担当者が現場に行って設備を止める
- 月末に、月の最大のデマンド値を記録する
(a)読むのに毎日時間がかかる。 3つの工場それぞれで、30分値、生産計画、天気予報を並べて読みます。1工場40分で、稼働日ごとに3工場分です。 生産計画が変わった日は、読み直しになります。
(b)読み方が人に頼っている。 「乾燥機が5台同時に立ち上がると危ない」「32度を超える日の午後は空調で100kWは上がる」といった勘所は、担当者の頭の中にあります。担当者が異動すると、勘所も一緒に異動します。
(c)多めに備える基準が無い。 「たぶん大丈夫」と読んだ日に、気温が予報より上がったり、立ち上げが重なったりして超えることがあります。どこまで余裕を見るかが、担当者の性格で決まっています。
(d)警報に頼ると、不在の日に超える。 警報は超えそうになってから鳴るため、止める人がその場にいなければ間に合いません。 1回超えると、その値が1年間の契約電力になります。
- 【自動】 毎日14時、デマンド監視装置から前日までの30分値をCSVで取り込む
- 【自動】 翌日の生産計画の表から、30分ごとに動く予定の設備と、その定格の電力の合計を作る
- 【自動】 Open-Meteo の JMA API から、工場の場所の翌日の1時間ごとの気温と湿度の予報を取る
- 【自動】 勾配ブースティングのモデルで、翌日の30分ごとの電力需要を、真ん中(50%点)と多め(90%点)の2本で見込む
- 【自動】 多めの見込みが目標のデマンドを超える時間帯と、超える量を出す
- 【自動】 超える時間帯について、設備の停止・後ろ倒しの優先順位の表から、超える量を満たす設備の候補を選ぶ
- 【人】 電気の担当が候補を見て、品質と納期の都合を確かめ、班長に段取りを伝える
- 【自動】 翌朝6時、最新の気温の予報で見込みを出し直し、変わった時間帯だけを担当者に知らせる
- 【自動】 前日の見込みと実際の30分値を並べ、多めの見込みを超えた時間帯の割合を工場ごとに出す
7番目が、この設計の分かれ目です。 候補はあくまで表から選んだものです。その日に限って止めてはいけない設備(試作の成形、納期の迫った品番の乾燥)は、担当者しか知りません。 担当者は候補を入れ替え、入れ替えた理由を残します。
8番目で翌朝に出し直すのは、気温の予報が日に何度も更新されるからです。 前日の14時の予報と、当日の朝の予報では、午後の気温が1〜2度違うことがあります。空調の負荷の大きい夏は、その差でデマンドが動きます。
02今回想定するシステム構成
デマンド監視装置(30分値 CSV) 生産計画の表(翌日の設備) 設備の一覧(定格の電力) │ │ │ ▼【トリガー】毎日 14:00(翌朝 6:00 に出し直し) Python ├──▶ Open-Meteo JMA API(jma_msm:1時間ごとの気温・湿度の予報) ▼ 特徴の作成 ── 30分ごとの動く設備の定格の合計/気温/曜日/前日の同じ時刻の実績 ▼ HistGradientBoostingRegressor ├── 50%点(loss="quantile", quantile=0.5) └── 90%点(loss="quantile", quantile=0.9) ▼ 目標のデマンドとの比べ ── 超える時間帯と超える量 ▼ 停止・後ろ倒しの優先順位の表 ── 超える量を満たす設備の候補 ▼ 【電気の担当が確かめ、班長に段取りを伝える】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Python(pandas・scikit-learn の HistGradientBoostingRegressor と TimeSeriesSplit) | R、BigQuery ML |
| 連携 | Open-Meteo の JMA API(気温・湿度の予報) | 気象会社の予報の配信サービス |
| 集計 | Python(30分ごとの設備の定格の合計) | 生産計画の表の集計 |
| データの取得元 | デマンド監視装置のCSV出力、生産計画の表、設備の一覧 | 電力会社の30分値の提供サービス |
| 結果の出力先 | 生産管理課の共有フォルダの翌日の見込みの表 | 工場の掲示板の画面 |
デマンド監視装置の設定には触れません。 警報の目標の値も、当日の警報で止める順番も、今のまま使います。この構成は前日の備えを足すもので、当日の守りはこれまでどおり警報が受け持ちます。
気温の予報は、Open-Meteo の JMA API から取ります。 気象庁の数値予報のモデルを使った予報を返すサービスで、日本と朝鮮半島を5km程度の細かさで扱う JMA MSM は、1時間ごとの値を4日先まで返し、3時間ごとに更新されるとされています。1時間ごとの変数には、地上2mの気温と相対湿度があります。商用の利用では、サーバーのURLに customer- を付け、APIキーを使うとされており、工場の業務で使うこの構成はこちらにあたります。非商用の利用は無料とされています。
生成AIは使いません。 見込みも候補も数字と表で出します。止める設備の候補を文章で考えさせると、優先順位の表に無い設備を挙げるおそれがあります。
03どうやって実装するのか
処理の起点を決める
毎日14時に、定時で動かします。 生産計画の表は、翌日の分が毎日13時に確定します。14時に見込みを出せば、夕方の班長との打ち合わせに間に合います。 夕方より前に段取りが決まれば、乾燥機の立ち上げをずらすといった前日の準備ができます。
翌朝6時に、もう一度動かします。 JMA MSM は3時間ごとに更新されるとされていて、当日の朝の予報のほうが、前日の昼の予報より午後の気温が確かです。 出し直しで超える時間帯が増えた場合だけ、担当者と班長に知らせます。減った場合は表を差し替えるだけにします。
休日の前の稼働日は、休日明けの分まで出します。 金曜の14時に、月曜の分も出します。ただし月曜の分は、月曜の朝6時の出し直しを必ず見る決まりにします。
モデルの学び直しは、季節の変わり目の年4回にします。 設備を入れ替えた、ラインを増やした、といった変化があったときは、その月のうちに学び直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 30分デマンド値 | 日付、時刻(0〜30分、30〜60分の区切り)、30分の平均の電力(kW) | デマンド監視装置のCSV |
| 生産計画 | 翌日のラインごと・設備ごとの稼働の開始と終了の予定 | 生産計画の表 |
| 設備の一覧 | 設備ごとの定格の電力、立ち上げのときの電力の目安、立ち上げにかかる時間 | 設備の担当が持つ一覧 |
| 気温の予報 | 工場の場所の1時間ごとの気温と相対湿度 | Open-Meteo の JMA API |
| 目標のデマンド | 工場ごとに、ここを超えないようにする値(契約電力より少し下) | 生産管理課が決める値 |
| 停止・後ろ倒しの優先順位の表 | 止めてよい・ずらしてよい設備、減らせる電力、止めてよい時間の長さ、品質への影響 | 生産と設備の担当が決める表 |
質を決めるのは、いちばん下の優先順位の表です。 見込みがどれほど確かでも、止めてよい設備が決まっていなければ、候補は出せません。 空調の一部、予備のコンプレッサー、乾燥機の立ち上げの後ろ倒し、フォークリフトの充電の時刻など、品質に影響しない順に並べます。
設備の一覧の「立ち上げのときの電力」も外せません。 乾燥機や温調機は、立ち上げの30分ほどのあいだ、ふだんより多くの電力を使います。定格だけで足し算をすると、立ち上げが重なる朝の時間帯を少なく見積もります。
データの取得方法を決める
30分デマンド値は、デマンド監視装置から毎日CSVで書き出します。 中小企業基盤整備機構の J-Net21 の解説では、30分デマンド値は毎時0〜30分と30〜60分の30分間の使用量から平均の電力を出したものとされています。取り込むときは、時刻の区切りがこの30分に合っているかを最初に確かめます。装置によっては、終わりの時刻で記録しているためです。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 30分デマンド値 | デマンド監視装置のCSV | 予測する値、前日の同じ時刻の特徴 |
| 翌日の設備の稼働の予定 | 生産計画の表 | 30分ごとの定格の合計の特徴 |
| 気温と湿度の予報 | Open-Meteo の JMA API(hourly=temperature_2m,relative_humidity_2m、models=jma_msm) | 空調の負荷の特徴 |
| 過去の気温 | 同じ API で過去の日を取り、学習用に保存する | 学習のときの気温の特徴 |
気温は、予報の値で学習するのが理想です。 実際の気温で学習すると、予報が外れる分の誤差をモデルが知らないまま、見込みの幅が狭く出ます。過去の予報を取れない期間は実際の気温で学習し、取り込みを始めた日から、毎日の予報の値を保存しておきます。 1年分たまったら、予報の値で学び直します。
API の場所の指定は、工場の緯度と経度で行います。 timezone には Asia/Tokyo を指定し、30分値の時刻と同じ時刻の並びで受け取ります。
AIへ渡す前に整形する
- 時刻の区切りをそろえる … 30分値の時刻を、区切りの始まりの時刻にそろえます
- 生産計画を30分ごとにする … 設備ごとの稼働の開始と終了から、30分ごとに動いている設備の定格の合計を作ります。立ち上げの30分には、立ち上げのときの電力の目安を使います
- 気温を30分ごとにする … 1時間ごとの予報を、前後の時刻の値で30分ごとに直します
- 特徴を作る … 時刻、曜日、休日明けか、30分ごとの定格の合計、立ち上げる設備の数、気温、湿度、前日の同じ時刻の実績、前週の同じ曜日・同じ時刻の実績
- 特殊な日の印 … 停電、設備の故障、計画外の停止、棚卸で止めた日に印を付け、学習から外します
- 設備の変化の印 … 設備を増やした・入れ替えた日の前後で、印を付けて分けます
2番目の「立ち上げの30分」を軽く見ないでください。 30分デマンド値は30分の平均なので、立ち上げを15分ずらすだけで、その30分の平均が変わります。 J-Net21 の解説にも、30分のうち後半の15分の負荷を下げれば30分デマンド値が下がる例が載っています。立ち上げを30分単位で扱うと、この効き方が見えません。
学習と検証は、時間の順で分けます。 scikit-learn の TimeSeriesSplit は、未来のデータで学習して過去を評価しないための分け方です。翌日を見込むモデルなので、gap を1日分(48行)にします。
AIに処理させる
この構成の「AI」は、30分ごとの電力需要の見込みだけです。 超える量の計算と設備の候補は、決まった規則で出します。
| 段 | させること | させないこと |
|---|---|---|
| 50%点の見込み | 30分ごとの電力需要の真ん中 | 当日の警報の判断 |
| 90%点の見込み | 30分ごとの電力需要の多めの値 | 止める設備の選び方 |
| 超える量の計算 | 90%点 - 目標のデマンド | 目標の値の決定 |
| 設備の候補 | 優先順位の表の上から、超える量を満たすまで選ぶ | 表に無い設備の提案 |
見込みには、scikit-learn の HistGradientBoostingRegressor を使います。 損失の関数に quantile を選び、quantile に0.5と0.9を指定した2つのモデルを作ります。欠けた値(NaN)をそのまま扱えるので、前週の同じ時刻の実績が無い休日明けの行も落とさずに済みます。
多めの見込みに90%点を使うのは、超えたときの損が大きいからです。 1回超えるとその値が1年間の契約電力になり、500kW以上の協議で決まる契約でも、超えれば割増の違約金を払うことになると J-Net21 の解説にあります。備える回数が少し増えても、超える回数を減らすほうに寄せます。
設備の候補は、優先順位の表の上から順に選びます。 超える時間帯ごとに、その時間に動く予定の設備のうち、表で止めてよいとされたものを、減らせる電力の合計が超える量を上回るまで選びます。止めてよい時間の長さを超える時間帯には、その設備を選びません。
| 機械にさせないこと | 理由 |
|---|---|
| 表に無い設備を止める候補にする | 品質と納期への影響を知らない |
| 設備を自動で止める | 段取りと安全の確認がいる |
| 目標のデマンドを動かす | 契約と基本料金の判断がいる |
| 生産計画を書き換える | 納期と人の配置に関わる |
2行目がいちばん起きやすい失敗です。 見込みが出ると、設備の制御までつなげたくなります。前日の見込みで当日の設備を自動で止めると、見込みが外れた日に、止める必要のない設備が止まります。
指示内容を固定する
この構成は生成AIを使わないため、指示は Python の設定ファイルに書きます。 何をどう見込み、どの規則で候補を選ぶかを、生産と設備の担当が読める形で残すためです。
# 翌日のデマンドの見込みの設定(demand_forecast.yaml)
工場: [第1工場, 第2工場, 第3工場]
時刻の区切り: 30分(毎時0〜30分、30〜60分)
予報:
取得先: Open-Meteo JMA API(models=jma_msm)
変数: [temperature_2m, relative_humidity_2m]
timezone: Asia/Tokyo
取得: 毎日14:00(翌日分)、6:00(当日分の出し直し)
見込み:
50%点: {loss: quantile, quantile: 0.5}
90%点: {loss: quantile, quantile: 0.9}
学び直し: 年4回(3月・6月・9月・12月)と設備の変更のあと
検証: TimeSeriesSplit(n_splits=5, gap=48)
目標のデマンド(kW): {第1工場: 450, 第2工場: 380, 第3工場: 300}
候補の選び方:
- 90%点が目標を超える時間帯だけを対象にする
- 停止・後ろ倒しの優先順位の表の上から、その時間に動く予定の設備を選ぶ
- 減らせる電力の合計が超える量を上回ったら止める
- 止めてよい時間の長さを超える設備は選ばない
- 表に無い設備は選ばない。足りなければ「候補不足」と書く
守ること:
- 立ち上げの30分は、定格ではなく立ち上げのときの電力の目安を使う
- 90%点が50%点を下回った行は、並べ替えずに印を付けて人に見せる
- 予報が取れなかった日は、前日の同じ時刻の予報の値で見込み、表の冒頭に書く
- 結果を設備の制御やデマンド監視装置の設定に書き込まない
「表に無い設備は選ばない。足りなければ候補不足と書く」が、この設定の要です。 候補が足りない日は、生産計画そのものを見直すべき日です。黙って足りないまま出すと、担当者は表の候補だけで足りると思い込みます。
「90%点が50%点を下回った行に印を付ける」は、2つのモデルを別々に作ると起きることへの備えです。 並べ替えて隠すと、見込みの不安定な時間帯があることに誰も気づきません。
出力形式を固定する
翌日の見込みを、次の形のJSONと、それを表にしたものの2つで出します。
{
"plant": "第1工場",
"target_date": "2026-10-08",
"forecast_issued_at": "2026-10-07T14:00",
"weather_run": "jma_msm",
"target_kw": 450,
"slots": [
{
"time": "13:30",
"planned_rated_kw": 0,
"temp_c": 0.0,
"p50_kw": 0,
"p90_kw": 0,
"excess_kw": 0,
"candidates": [
{ "equipment": "乾燥機 D-3", "action": "start_delay_30min", "reduce_kw": 0 }
],
"flag": ""
}
],
"shortage_slots": [],
"staff_decision": { "actions": [], "reason": "" },
"actual_review": { "over_p90_rate": 0.0, "max_actual_kw": 0 }
}
slots と shortage_slots は Python が埋め、staff_decision は電気の担当が書きます。actual_review は翌日の実績が取り込まれた後に Python が埋めます。
1つ目の理由は、見込みと段取りを同じ記録に並べられることです。 候補を入れ替えた日、候補を使わなかった日に、実際の30分値がどこまで上がったかを並べられます。
2つ目は、shortage_slots で候補の足りない時間帯が見えることです。 表の設備を全部止めても目標を超える時間帯は、生産計画の組み方を変えるしかない時間帯です。生産管理課の会議に、この欄の一覧を持っていきます。
3つ目は、forecast_issued_at と weather_run で、どの予報で見込んだかが分かることです。 朝6時の出し直しの後に、前日の14時の見込みのまま段取りをしていたことに気づけます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| デマンド監視装置 | CSVの書き出し(読み取りのみ) | 30分デマンド値 |
| 生産計画の表 | 読み取りのみ | 翌日のラインと設備の稼働の予定 |
| 設備の一覧・優先順位の表 | 読み取りのみ | 定格、立ち上げの電力、止めてよい設備 |
| Open-Meteo の JMA API | HTTP の呼び出し(1日2回、工場の数だけ) | 気温と湿度の予報 |
| 翌日の見込みの表 | 共有フォルダへの書き込み | 工場ごとの表とJSON |
デマンド監視装置にも、設備の制御にも書き込みません。 当日の守りは警報が受け持ち、この構成の結果が外れても、警報の働きは変わりません。 二重の備えにしておくことが、この構成を入れても安全な理由です。
予報の呼び出しは、1日2回、工場の数だけにします。 必要な時刻の変数だけを取り、取った予報の値はすべて保存します。 保存した予報の値が、後で予報の値で学び直すときの材料になります。
人が確認する
電気の担当は、毎日14時の見込みの表を必ず見ます。
- 振り返りを先に見る … 前日の見込みで、90%点を超えた時間帯が無かったかを見ます。続けて超えているなら、今日の見込みも割り引いて読みます
- 超える時間帯と候補を見る … 候補の設備について、翌日止めてはいけない事情(試作、納期、品質の確認中)が無いかを確かめます
- 候補不足の時間帯を見る …
shortage_slotsがあれば、生産計画の担当と稼働の順番を相談します - 段取りを決めて伝える … 班長に、どの設備をいつ止める・ずらすかを伝え、
staff_decisionに書きます
2番目を省かないでください。 優先順位の表は平時の順番です。納期の迫った品番の乾燥機を後ろ倒しにすると、成形の開始が遅れて納期に響きます。 その日だけ順番を入れ替えるのは、担当者の仕事です。
朝6時の出し直しで超える時間帯が増えたときは、班長に直接知らせます。 担当者がその日に不在なら、代わりに受け取る人を前もって決めておきます。 第3章の(d)を繰り返さないためです。
目標は、1工場1日あたり10分です。 超える時間帯の無い日は表を見て数分、超える時間帯のある日は候補の確かめと班長への連絡で15分前後かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 予報の API が応答しない | 前日に保存した同じ時刻の予報の値で見込み、表の冒頭に「予報の取り込みなし」と書く |
| デマンド監視装置のCSVが取れない | 前々日までの実績で見込み、取り込めた最新の日を表に書く |
| 生産計画が14時より後に変わった | 担当者がボタンで動かし直す。変わった時間帯だけ班長に知らせる |
| 新しい設備が入った | 設備の一覧に定格と立ち上げの電力を足すまで、その設備の分を印付きで足す |
| 候補を全部使っても超える | shortage_slots に入れ、生産計画の担当と相談する |
| 90%点が50%点を下回った | 印を付けて人に見せる。並べ替えない |
| 停電・故障で記録が飛んだ日 | 特殊な日の印を付け、学習と振り返りから外す |
| 休日に臨時の稼働が入った | 休日の行に稼働の予定を入れ、過去の休日稼働の日だけを参考に見込む |
上の2行は、運用の最初から起きます。 どちらも見込みを止める理由にはしませんが、どの予報と実績で見込んだかを表に書かないと、古い見込みが新しいものに見えます。
記録を残す
- 毎日の30分デマンド値のCSVと、取り込んだ日時
- 取得した気温と湿度の予報の値と、取得した時刻(14時と6時の両方)
- 生産計画の表と、設備の一覧・優先順位の表のそのときの版
- モデルの版、学習の期間、検証の結果
- 30分ごとの見込み(50%点と90%点)、超える量、設備の候補
- 担当者が決めた段取りと理由(
staff_decision)、翌日の実際の30分値と最大値
最後の行は、優先順位の表の見直しに使います。 候補にした設備を止めたのに超えた日があれば、減らせる電力の見積もりが大きすぎたということです。設備の担当と一緒に、表の値を直します。
04実装レベルの3段階
半自動化だけでも、②の15分はほぼ消えます。 生産計画の表から設備を拾って足す作業が無くなるからです。ただし、超えるかどうかの見込みは、まだ担当者の勘所です。 本格構成で1工場10分になり、この段階が本記事の想定です。 違いは、多めの見込みで超える時間帯が数字で出て、止める設備の候補まで並ぶことです。 段階を飛ばさないでください。 半自動化で1つの夏をすごすと、定格の合計と気温で、どこまで30分値が説明できるかが担当者の目で分かります。その感覚があるほうが、見込みの外れを正しく割り引けます。
05工数削減シミュレーション
導入後 60件 × 10分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 高圧で受電し、契約電力が30分デマンド値の最大値で決まる工場や冷蔵倉庫。デマンド監視装置を入れているが、警報が鳴ってから設備を止める運用で、前日には備えていない場合。生産計画で翌日のラインと設備の稼働が前日の昼までに決まる場合。夏や冬に空調の負荷が大きく、気温でデマンドが大きく動く場合。デマンド監視装置から30分値を1年以上書き出せる場合。
- 低圧で受電している小規模な事業所。契約電力が500kW以上で協議により決まっていて、30分デマンド値の最大値で契約電力が動かない場合(超過の違約金を避ける目的なら使える)。設備の稼働が受注に合わせて当日に決まり、前日に計画が無い工場。なお、どの設備を止めるかの最終の判断、契約電力の見直しの交渉、設備の更新の判断は、この構成では代替できません。
07最小構成で試す方法
- いちばんデマンドの高い工場を1つ選び、過去1年分の30分デマンド値をデマンド監視装置から書き出す
- 月の最大値が出た日を10日ほど選び、その日の生産計画と、動いていた設備を書き出す
- 気象庁のサイトなどで、その日の時間ごとの気温を調べて並べる
- 手元のAIサービスに、30分値と設備の数と気温の表を貼り、「最大値の出た時間帯に、どの設備の立ち上げと気温が重なっていたかを見てください」と聞く
- 出てきた傾向を、電気の担当の勘所と比べる
この段階ではモデルを作りません。 確かめたいのは、最大値の出た時間帯が、生産計画と気温で説明できるかです。
| 出てきた内容 | 判断 |
|---|---|
| 最大値の時間帯に、立ち上げの重なりと高い気温がそろっている | Python で30分ごとの見込みを出す段階に進む |
| 生産計画にない設備の稼働で最大値が出ている | 計画に載らない設備がある。設備の一覧と計画の作り方が先 |
| 最大値が毎回ちがう理由で、まとまりが無い | 見込むより、当日の警報で止める順番の整備が先 |
2行目が出ることは珍しくありません。 失敗ではなく、生産計画に載らない設備(試作の機械、臨時の空調、充電設備)が、デマンドを押し上げていることが分かったということです。それらを設備の一覧と計画に載せてから、同じ10日分を見直してください。手元のAIサービスに貼るのは数値と設備の種類だけにし、品番や取引先の名前は貼りません。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 朝の立ち上げの時間帯をいつも少なく見込む | 定格で足している。立ち上げの電力の目安を使う |
| 30分値の時刻が1つずれる | 装置が終わりの時刻で記録している。区切りの始まりにそろえる |
| 見込みの幅が狭く、実績がよく外れる | 実際の気温で学習している。予報の値を保存し、予報で学び直す |
| 検証ではよく当たるのに本番で外れる | 時間の順を無視して分けた。TimeSeriesSplit と gap で未来を見ない |
| 90%点が50%点を下回る | 2つを別に作ると起きる。印を付けて人に見せる |
| 候補の設備を止めても超えた | 減らせる電力の見積もりが大きい。実績で表を直す |
| 計画に無い設備でデマンドが上がる | 試作機・臨時の空調・充電設備を計画と一覧に載せる |
| 朝の出し直しを誰も見ていない | 増えた時間帯だけ班長に直接知らせる |
| 見込みで設備を自動で止めたくなる | つながない。 当日の守りは警報が受け持つ |
| 予報の API を商用で無料のまま使う | 商用の利用は APIキーを使う。条件を公式で確かめる |
上の3行が、見込みの失敗のほとんどです。 どれも数字は出ているので動いているように見えます。前日の見込みを超えた割合を毎日出す仕組みが無いと、ずれに気づけません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 工場の30分ごとの電力、生産計画(品番と稼働の予定)、設備の一覧。生産計画からは、取引先ごとの受注の量や新しい製品の立ち上げの時期が読み取れます。
- 外部へ送るのは工場の場所だけにする … 予報の API に渡すのは緯度と経度と変数の名前だけです。生産計画や電力の値は社外に出しません
- 設備の制御とつながない … 見込みは前日の段取りの材料です。設備を自動で止める経路を作らず、当日の守りは今の警報に任せます
- 止める設備は表から選ぶ … 品質と納期と安全に関わるため、表に無い設備を候補に挙げないことを設定で守ります
- 見込みを契約の判断に直接使わない … 契約電力の見直しは、1年分の実績と電力会社との相談で決めます。見込みの値を根拠に契約を下げると、超えたときの影響が大きくなります
- 見込みと段取りの記録を残す … 見込み、段取り、実際の30分値を並べて残し、超えた日に、なぜ備えが足りなかったかを説明できるようにします
誤りが起きた場合のリスクは、少なめの見込みで備えずに超えることと、多めの見込みで止めなくてよい設備を止めて生産が遅れることの2つです。 前者は90%点で備えることと朝の出し直しで、後者は担当者が候補を確かめることで防ぎます。
10まず何から始めるか
1週目:30分値と時刻の区切りを確かめる
デマンド監視装置から1年分の30分値を書き出し、時刻が区切りの始まりか終わりかを確かめます。月ごとの最大値が出た日と時刻を一覧にします。
2週目:最大値の日を並べてみる
最大値の出た10日ほどについて、生産計画と動いていた設備、時間ごとの気温を並べ、電気の担当の勘所と照らします。
3週目:優先順位の表を作る
生産・設備・品質の担当が集まり、止めてよい・ずらしてよい設備、減らせる電力、止めてよい時間の長さを表にします。設備の一覧に立ち上げの電力の目安を足します。
4週目:計画と予報をそろえる
Python で翌日の30分ごとの定格の合計と気温の予報を毎日そろえ、前週の同じ時刻の実績と並べるところまで作ります。この時点では見込みを出しません。予報の値の保存はこの日から始めます。
2か月目: 50%点と90%点の見込みを出し、TimeSeriesSplit で検証します。超える時間帯と設備の候補を付けます。3か月目以降: 朝の出し直しと振り返りを足し、候補で止めた日の実績で優先順位の表を直します。夏の最も暑い時期を、警報で設備を止めることなく越えられた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 30分デマンド値が毎時0〜30分・30〜60分の30分間の使用量から平均の電力として出されること。高圧受電で契約電力が500kW未満の場合、その月と過去11か月の月次最大電力の最大値が契約電力になり、1回でも大きな値が出ると1年間適用されること。500kW以上は協議で決まり、契約電力を超えると割増の違約金を払うこと。30分のうち後半の負荷を下げると30分デマンド値が下がる例。デマンド監視装置で設備を止めていた工場で、管理者の不在の日に超えた例 | J-Net21(中小企業基盤整備機構): 契約電力と30分デマンド値の関係について教えてください。 | 2026-10-07 |
JMA MSM が日本と朝鮮半島を約5kmで扱い、1時間ごとの値を4日先まで返し、3時間ごとに更新されること。地上2mの気温と相対湿度などの1時間ごとの変数、timezone・forecast_days・models の指定。商用の利用ではサーバーのURLに customer- を付けてAPIキーを使い、非商用の利用は無料であること | Open-Meteo: JMA API | 2026-10-07 |
HistGradientBoostingRegressor の loss に quantile があり、quantile で分位点を指定できること。欠けた値(NaN)をそのまま扱えること | scikit-learn: HistGradientBoostingRegressor | 2026-10-07 |
TimeSeriesSplit が時間順のデータの分け方を作り、未来のデータで学習して過去を評価しないようにすること。gap で学習用の末尾と検証用の間を空けられること | scikit-learn: TimeSeriesSplit | 2026-10-07 |
どの設備を止めるか、契約電力をどうするかは、生産・設備の担当と電力会社との相談で決めてください。 本記事は公的な解説と製品の公開ドキュメントで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0740)についてのご相談はこちらから。
