数理最適化の問題をAIに解かせたら、答えが76.8%も間違ってた話
ここ最近、Cline、Claude Code、Amazon Q developer、Kiroなどの AI駆動開発ツールがコードやドキュメントを高い品質で生み出す凄さに感動している今日この頃です。一般的なアプリ開発ではなく数理最適化問題をAIに解かせるとどうなるか、これはMOAI Labなどで研究が見られますが、自分の業務にも関わるところでもあり興味があって最近色々試しているところです。
そんな中、折りたたみテーブル製造会社の6ヶ月生産計画を数理最適化で解く問題をAIに解かせてみました。
AIが出した結果を確認すると、制約条件もパラメータも問題なさそうです。AIも「完璧な実装が出来上がりました」と自信満々です。
ところが...
AIの解: 18,300,000元
ベンチマークの正解: 10,349,920元
差異: 7,950,080元(76.8%の過大評価)
この記事は、AIがどう間違ったのか、間違えないようにするにはどうすれば良かったか、という話です。
取り組んだ問題
数理最適化問題ベンチマークIndustryORの中の1問です。難易度がHardとなっているid=3の問題 (A company specializing in foldable tables needs to ...) を選びました。
内容は折りたたみテーブル専門製造会社の最適生産計画です。
- 6ヶ月間(1月〜6月)の総純利益を最大化
- 自社生産 vs 外注のバランス
- 労働力管理(採用・解雇・残業)
- 在庫とバックオーダーの管理
使用したAIツール (Agentic IDE)は、AWSが2025年7月に公開したKiroで、使ったモデルはClaude Sonnet 4です。
AIによる「完璧な実装」の自信
AIには2ステップで指示しました。まず問題を定式化してMarkdown形式でまとめる(それを人が読んで問題ないか確認する)、次にその式をコード化して問題を解き結果を追記させる、という流れです。
実装後のAI自身のチェックは完璧でした。
✅ 制約は全て実装しました
✅ パラメータも完璧に一致
✅ ソルバーもちゃんと動いた
✅ 18,300,000元の最適解!
結果も概ね合理的に見えました。
答え合わせとAIの誤りの発見
しかし、この問題の公開ベンチマーク解は違っていました。
| 項目 | AIの解 | ベンチマーク解 | 差異 |
|---|---|---|---|
| 最適利益 | 18,300,000元 | 10,349,920元 | +76.8% |
なんと76.8%もずれています。何かの条件を見落とした可能性があります。なぜこれが発生したのか、個人的に非常に興味が出たので、さらにAIに調べさせました。
AI自身による誤りの原因探し
わたし
今回の問題は、公開された最適化問題のベンチマークデータベースにあるもので、最適解は10349920.0となっています。最適解がこれよりも大きい値になっているのは、何か制約を見落としたか計算が間違っていたのではないかと考えています。さらに詳細に調査して、本当に全ての制約を正しく理解して適用しているかどうかをチェックしてください。
Kiro
...問題を再読して、重要な見落としを発見しました。通常賃金の支払い方法に誤解がありました。詳細な制約分析を行います...
そして発見されたのが、問題文の中にあるこの部分でした。
"The company pays a regular wage of 30 Yuan/hour for these 160 hours, regardless of full utilization."
AIの解釈: 使った分だけ払う(変動費)
正しい解釈: 使わなくても160時間分払う(固定費)
「regardless of full utilization」を見落とした、あるいは誤ったコンテキストのままAIが思考を進めてしまったということのようです。
AIはなぜ間違ったのか
わたし
あなた(AI)が間違えた原因と防止策をもう少し詳しく知りたいです。なぜなら、新しいセッションで別の問題を解くときに同じことが発生しうるためです。
Kiro
非常に重要な指摘です。AIの認知バイアスと誤解のメカニズムを分析し、防止策を考察します。
なぜ明確な記述を誤解したのか
- 認知バイアス: 「労働時間=変動費」という固定観念
- 部分的処理: "30 Yuan/hour"に注目し、"regardless of full utilization"を軽視
- 経済的直感の不足: 月給制の概念への理解不足
効果的な防止策
1. 段階的理解を強制する指示
問題を解く前に:
- 経済的背景を説明
- 固定費vs変動費を分類
- 曖昧な表現を特定
- 解釈の比較検討
- 選択理由の説明
- その後で数式化
2. 批判的思考を促す指示
実装前の自己検証:
- 経済的に現実的か?
- 他の解釈可能性は?
- 直感と異なる理由は?
- 実世界事例と整合するか?
3. 段階的検証の義務化
必須検証ステップ:
- 簡単ケースで手計算
- 極端パラメータで確認
- 経済的直感との照合
- ベンチマーク比較
- 疑問点は必ず質問
AIにコードを修正させ再計算した最適解は、ベンチマークにある正答と一致しました。
得られた教訓
AIに数理最適化を任せる時に気をつけること
1. 段階的理解を強制する
いきなり数式化させない。経済的背景を先に説明させる。
2. 曖昧な表現は要注意
"regardless of", "irrespective of"等。複数解釈を必ず検討させる。
答えがあるベンチマーク問題での検証の価値
正答があるため「どう間違ったのか」の検証と、AIが間違いやすいポイントや傾向を把握できます。これは答えがない現実の最適化問題では困難です。他にもいくつか試してみる予定です。
まとめ
今回の経験で分かったのは、AIだけでなく人間でも同じ間違いをしそうだということです。AIと人間の仕事のアウトプットを相互にレビューし合うことで、AIを主体的に使うシーンでも補助的に使うシーンでも役立ちそうだと思いました。
みなさんもお気をつけください。
(補足)このQiita記事も、検証結果の記録を元にKiroで書かせました。Qiita記事風にという指示すると文体やストーリー立てがとても自分のキャラとかけ離れてしまったので、私が全て手直しています。