数理最適化の現在と生成 AI の活用

MSIISM conference 2023 @ 東京カンファレンスセンター・品川
2023年11月22日
株式会社NTTデータ数理システム 数理計画部
藤井浩一© 2023 NTT DATA Mathematical Systems Inc.

生成 AI と数理最適化

生成 AI と数理最適化◼ マニュアル作成◼ 自動メール作成・応答◼ プレゼンテーション資料の作成◼ 文章の校正© 2023 NTT DATA Mathematical Systems Inc.

Vaswani, Ashish, et al. "Attention isall you need." Advances in neural
information processing systems 30(2017).

数理最適化と生成 AI

一定のルールの範囲内で、できるだけよい答えを見つける
変数： 何を変えるか

数理最適化問題

目的関数： 何の値を最大化（最小化）するか

制約式： 満たすべき条件© 2023 NTT DATA Mathematical Systems Inc.

数理最適化と生成 AI
変数： 何を変えるか品物をナップサックに詰め込むかどうか

数理最適化問題目的関数： 何の値を最大化（最小化）するか詰め込んだ品物の総価値を最大化

制約式： 満たすべき条件詰め込んだ品物の総量がナップサックの容量以下

𝒙𝟏50 [円] 𝒄𝟏90 [g] 𝒂𝟏𝒙𝟐200 [円]
300 [g]© 2023 NTT DATA Mathematical Systems Inc.

𝒄𝟐𝒂𝟐𝒙𝟕80 [円]
90 [g]

𝒄𝟕𝒂𝟕

400 [g]𝒃数理最適化と生成 AI
変数： 何を変えるか

機械学習モデルのパラメータ
数理最適化問題

目的関数： 何の値を最大化（最小化）するか機械学習モデルができるだけ現実に近く
https://www.wikipedia.org より

制約式： 満たすべき条件

Vaswani, Ashish, et al. "Attention is
all you need." Advances in neural
information processing systems 30(2017).

億を超える次元の非線形最適化© 2023 NTT DATA Mathematical Systems Inc.

数理最適化と生成 AI

1. 問題の制約条件や目的関数を整理

2. 定式化

3. モデリング言語による記述

マス目に入力できる数字の条件は何だろう？

整理した情報を数式で記述！

定式化した問題をモデリング言語で記述しよう！

定式化技法集やオンラインマニュアルを活用して定式化をしよう！

次の三つからモデリング言語を選択しよう！
C++ インターフェース SIMPLE
Python インターフェース PySIMPLE
R インターフェース RSIMPLE...
from pysimple import *・ マス目には 1 ～ 9 の数字を入力
・ 列には 1 ～ 9 のいずれかの数字を入力
・ 行には 1 ～ 9 のいずれかの数字を入力
...

53

76

1
99෍ 𝑥𝑣,𝑟,𝑐 = 1,5664

873

312

662
418𝑟 ∈ 𝑅, 𝑐 ∈ 𝐶𝑣 ∈ 𝑉, 𝑐 ∈ 𝐶𝑟∈𝑅88෍ 𝑥𝑣,𝑟,𝑐 = 1,𝑣∈𝑉89579

෍ 𝑥𝑣,𝑟,𝑐 = 1,𝑐∈𝐶𝑣 ∈ 𝑉, 𝑟 ∈ 𝑅

V = R = C = Set(value=range(1, 10))v = Element(set=V)
r = Element(set=R)
c = Element(set=C)
prob = Problem()x = BinaryVariable(index=(v,r,c))prob += Sum(x[v,r,c], v) == 1
prob += Sum(x[v,r,c], r) == 1
prob += Sum(x[v,r,c], c) == 1...

生成 AI が助けになる？
© 2023 NTT DATA Mathematical Systems Inc.

数理最適化と生成 AI：［タスク１］数式 → モデリング言語 PySIMPLE◼ 数理最適化に現れる数式（ TeX 形式）を 20 個用意◼ OpenAI 社の ChatGPT を用いてPySIMPLE 言語のコードを生成させる[Task]
Please answer: write pysimple code of “{数式}".

◼ 条件# Condition- pysimple is similar to python, but somehow different,so please read pysimple manual carefully.

◼ PySIMPLE のマニュアルは読み込ませる◼ （ちょっとした）プロンプトエンジニアリング◼ 利用するモデルは二種類◼ gpt-3.5 (gpt-3.5-turbo-1106)◼ gpt-4© 2023 NTT DATA Mathematical Systems Inc.

# Answer- Let's think step by step.
- Answer pysimple code

数理最適化と生成 AI：［タスク２］数理最適化問題 → モデリング言語 PySIMPLE◼ 数理最適化の代表的例題 10 問を用意
◼ OpenAI 社の ChatGPT を用いてPySIMPLE 言語のコードを生成させる◼ 条件

Please give me a pysimple code of {数理最適化問題}[Task]# Condition- {x}◼ PySIMPLE のマニュアルは読み込ませる◼ （ちょっとした）プロンプトエンジニアリング◼ 利用するモデルは二種類◼ gpt-3.5 (gpt-3.5-turbo-1106)◼ gpt-4© 2023 NTT DATA Mathematical Systems Inc.

# Condition- pysimple is similar to python, but somehow different, so
please read pysimple manual carefully.
# Answer- Let's think step by step.
- Answer pysimple code

数理最適化と生成 AI：［タスク１］数式 → モデリング言語 PySIMPLE◼ 数理最適化に現れる数式を 20 個用意© 2023 NTT DATA Mathematical Systems Inc.

数理最適化と生成 AI：［タスク１］数式 → モデリング言語 PySIMPLE◼ 数理最適化に現れる数式を 20 個用意© 2023 NTT DATA Mathematical Systems Inc.

数理最適化と生成 AI：［タスク２］数理最適化問題 → モデリング言語 PySIMPLE◼ 数理最適化の代表的例題 10 問を用意

GPT-3

GPT-4

ナップサック問題⭕️⭕️

最大被覆問題⭕️⭕️

集合被覆問題⭕️⭕️

一般化割当問題⭕️❌

巡回セールスマン問題

🔺

🔺

配送ルート問題❌

❌

ビンパッキング問題❌

❌

ジョブショップスケジューリング問題❌

❌

カッティングストック問題❌

❌

二次割当問題❌

❌

© 2023 NTT DATA Mathematical Systems Inc.

⭕️： PySIMPLE コードとして正解
🔺：Python コードとしては動くがPySIMPLE コードとしては不正解❌：Python コードとして動かない数理最適化と生成 AI：まとめ◼ ［タスク１］数式 → モデリング言語 PySIMPLE◼ 精度高く解がもとまっている◼ 特に model=gpt-4 の精度が高い◼ ［タスク２］数理最適化問題 → モデリング言語 PySIMPLE◼ 比較的単純な問題であれば対応可能◼ ナップサック問題◼ 最大被覆問題◼ 集合被覆問題◼ 複数の数式がまとまった形で変換するのは難易度が高い◼ 生成 AI （ ChatGPT ）の活用はタスクを限れば，有効な可能性がある© 2023 NTT DATA Mathematical Systems Inc.

数理最適化と生成 AI の未来◼ 数理最適化の知識を身につけて，生成 AI 時代に備えましょう！
◼ 定式化技法集◼ 各種最適化セミナー
Nuorium Optimizer 紹介セミナー

ぜひ Nuorium Optimizerブースにお立ち寄りください！！

数理最適化への入口

内容も十分に理解できた製品の使い方のイメージもできている

試用版
1 カ月無償nuopt-info@ml.msi.co.jp© 2023 NTT DATA Mathematical Systems Inc.

内容は十分に理解できた
使いこなせるか心配オンライン
ハンズオンセミナー
http://msi.co.jp/nuopt/seminar/hands-on.html

まだ自分の課題とのギャップを感じる
ソリューションの導入に興味がある

個別相談会
http://msi.co.jp/nuopt/seminar/consultation.html