9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PyCon JP 2025@広島でStreamlit × 数理最適化アプリを展示してきた話

Last updated at Posted at 2025-09-28

はじめに

 2025年9月26日,27日に開催されたPyCon JP 2025(広島)に,Streamlitコミュニティメンバーとして参加し,数理最適化アプリケーションのデモ展示を行ってきた.PyConは今まで東京開催が続いていたが,今回初めて広島での開催となり,多くの参加者が新鮮な雰囲気の中で技術交流が図れたようである(私自身はPyCon自体に初参加).来年も広島同地での開催が決まっているようであるため,ぜひ,また参加してみたい.

 本記事では,展示した数理最適化アプリケーションの技術的な実装内容と,PyConでの展示を通じて得られた知見を共有する.特に,Streamlitを使った数理最適化の可視化と,実務課題への適用について詳しく解説していく.

image.png

展示の工夫と来場者の反応

動画デモによる興味喚起

 ブース展示で最も効果的だったのは,事前に収録したデモ動画を常時流し続けたことである.実際に試してみたところ,静的な説明資料よりも動いているアプリケーションの方が圧倒的に来場者の足を止める効果があった.特に万博訪問ルートが最適化されていく様子や,工事立会者の配置が動的に変化する可視化は,多くの方の興味を引いた.

 来場者が立ち止まったタイミングで,その方の関心に応じて実際のアプリケーションを操作しながら解説を行った.配送業務に関わる方には巡回セールスマン問題のデモを,インフラ関係の方には工事立会者手配のデモを重点的に説明するなど,それぞれの属性に応じた対応を心がけた.

image.png

PyConにおける数理最適化への関心の高さ

 意外だったのは,このようなイベントにおいて数理最適化への関心が予想以上に高かったことである.私たちのブース以外にも,株式会社Jijが数理最適化に関する事業のブースを出展しており,多くの来場者が数理最適化技術に触れる機会となっていた.

 さらに驚いたことに,求人コーナーでは数理最適化エンジニアを募集している張り紙も存在していた.これは数理最適化技術が単なる研究レベルではなく,実務で求められる技術として認知されていることを肌で感じることができた.

image.png

展示したアプリケーションの全体像

 今回展示したのは,4つの数理最適化アプリケーションとそれらを統合するポータルサイトである.各アプリケーションは異なる最適化問題を扱っており,実務での活用を想定した設計となっている.

ポータルアプリケーション

 まず,全体の入り口となるポータルアプリケーションから解説する.

デモサイト: https://pycon2025-top.streamlit.app/
リポジトリ: https://github.com/mshdtksk/pycon2025-top/

 ポータルの実装では,複数のアプリケーションを効率的に管理・表示するための工夫を行った.ソースコードの主要部分は以下の通りである.

import streamlit as st
from datetime import datetime
import pandas as pd

# ページ設定
st.set_page_config(
    page_title="最適化アプリケーション ポータル",
    page_icon="🔧",
    layout="wide",
    initial_sidebar_state="expanded"
)

# アプリケーションデータ
apps_data = [
    {
        "title": "ネットワーク設計業務の数理モデル",
        "category": "ネットワーク最適化",
        "description": "連結巡回路による頂点被覆問題の数理モデルを用いたネットワーク設計の最適化ツール。実務への適用を考慮した設計支援システム。",
        "url": "https://st-app-nw-circle4-504242909255.asia-northeast1.run.app/",
        "tags": ["ネットワーク", "グラフ理論", "最適化"],
        "icon": "🔗"
    },
    {
        "title": "工事立合者手配最適化アプリ",
        "category": "リソース配置",
        "description": "集合被覆問題(Set Cover Problem)を応用した工事立合者の効率的な手配を実現する最適化アプリケーション。",
        "url": "https://st-app-setcoverproblem2-504242909255.asia-northeast1.run.app/",
        "tags": ["スケジューリング", "リソース管理", "集合被覆"],
        "icon": "👷"
    },
    {
        "title": "巡回セールスマン問題(TSP)",
        "category": "経路最適化",
        "description": "古典的な最適化問題であるTSPを解くアプリケーション。効率的な巡回経路の探索と可視化機能を提供。",
        "url": "https://streamlit20250322tsp-h9bxa0dkdqgwfqgx.eastasia-01.azurewebsites.net/",
        "tags": ["TSP", "経路探索", "組合せ最適化"],
        "icon": "🗺️"
    },
    {
        "title": "万博訪問ルート最適化アプリ",
        "category": "経路最適化",
        "description": "万博会場内の効率的な訪問ルートを計算する最適化アプリ。待ち時間や移動距離を考慮した最適なルート提案。",
        "url": "https://st-app-expo-504242909255.asia-northeast1.run.app/",
        "tags": ["イベント", "ルート最適化", "観光"],
        "icon": "🎡"
    }
]

 フィルタリング機能の実装では,カテゴリとタグによる絞り込みを可能にした.表示形式は3種類(カード表示,リスト表示,カテゴリ別表示)を用意し,ユーザーの好みに応じて切り替えられるようにした.

image.png

個別アプリケーションの技術解説

1. ネットワーク設計業務の数理モデル

デモサイト: https://st-app-nw-circle4-504242909255.asia-northeast1.run.app/
論文: https://ipsj.ixsq.nii.ac.jp/records/2002616

 通信ネットワークの県内リング設計を連結巡回路による頂点被覆問題として定式化した.NTT西日本における実際の業務課題から生まれたこのアプリケーションは,従来NW設計の専門家の経験と勘に頼っていた設計業務を数理最適化により自動化することを目指している.

問題の背景と課題

 通信ネットワーク設備の設計では,複数の通信ビルを光ファイバーで結び,冗長性を確保した巡回路(リング)を構築する必要がある.現状では以下の課題が存在していた.

  1. 設計品質の人的スキル依存
  2. 検討可能な構成案の数の限界
  3. 最適設計の不明瞭さ

数理モデルの定式化

 本問題は以下のような整数計画問題として定式化される.

  • 目的関数:使用される中継ケーブルの総コストを最小化
  • 制約条件:
    • 各伝送リングにおいてフロー保存則を満たす
    • 各通信ビルが少なくとも1つの入出辺を持つ
    • 各辺がいずれかの伝送リングに属する
    • ネットワーク全体の連結性を確保(ネットワークフロー制約)

実験結果と業務での活用に向けて

 200拠点規模の問題を3.11秒で解くことができ,実務適用可能な性能を確認した.今後の課題として,さらに大規模な問題例に対応するために,メタヒューリスティクスを用いた解法の開発を検討していく.

image.png
※本イメージで可視化しているデータはダミーデータを用いています

2. 工事立会者手配最適化アプリ

デモサイト: https://st-app-setcoverproblem2-504242909255.asia-northeast1.run.app/
博士論文: https://nagoya.repo.nii.ac.jp/records/2005628

問題の背景

 近年,道路等のインフラの老朽化が深刻な社会問題となっている.国土交通省のデータによると,建設後50年以上経過する社会資本の割合は急速に増加しており,これに伴い補修工事の件数も増加している.

 インフラの補修工事には各設備に関する知識を有する監督者が必要であり,電話等の通信設備への影響を防ぐためにNTTの社員が立会を行っている.

現状の業務フロー

 従来の工事手配業務は以下のように行われていた.

事前準備

  • 国から道路等の舗装依頼に関する工事情報が1回100件近くFAXやメールにて送信される
  • 立会者の人員リソース状況から60件より多くの工事全てに立ち会うことは困難であるため,真に立会が必要な工事を精査し,60件以下,できれば40件近くまで工事数を削減する
  • 地図を印刷した紙の上に透明なアクリル板を載せ,水性ペンを用いて住所情報を元に立会すべき工事を地図上に点をつけて記す

工事手配の決定

  • 地図上に記された点が1つから3つになるようにグループ分けを行う
  • 分けられたグループをいずれの立会者が担当するかを決定する
  • 工事に関する知識やスキル不足などの理由から,あるグループの工事に対して適当な立会者がいない場合,グループ分けを再度やり直す

事後作業

  • 工事の手配結果を描写した地図を工事立会者に見てもらい,各立会者は担当工事を記憶し,工事現場に向かう
  • 工事の手配結果を描写した地図の写真を撮り,データ化する

数理モデル構築のアプローチ

 本工事手配業務を改革するため,以下の3つのステップで取り組んだ.

  1. 実用的な数理モデルの構築
  2. 解の評価尺度の提案
  3. 組合せ爆発に対する実用的な解の探索手法の提案

 数理モデル構築の際の現場ヒアリングと,計算実験を行う際にStreamlitを利用した.

提案された解法の比較

 以下の4つの定式化に基づく求解法の比較を行っている.

  1. 非線形の定式化(TOM59Model)
  2. 集合被覆アプローチによる定式化(Enum):実行可能なルートを全列挙
  3. 制約生成法に基づく定式化(CG):部分巡回路除去制約を逐次追加
  4. 実行可能なルート候補を削減した集合被覆アプローチによる定式化(Enum+):最適な巡回路のみを列挙

 実験結果(W=9の場合)では,Enum+が最も効率的であることが確認された.

問題規模 工事数 立会者数 担当工事上限 Enum(計算時間) Enum+(計算時間)
小規模 18 7 3 0.37秒 0.87秒
小規模 18 7 8 7.01秒 3.56秒
中規模 20 8 3 0.25秒 1.11秒
中規模 20 8 8 37.15秒 6.88秒
大規模 36 14 3 2.86秒 6.40秒
大規模 36 14 4 38.47秒 41.64秒

実務への適用効果

 数理モデル導入により以下の効果が得られた.

項目 過去の工事立会者手配業務 デジタルデータ活用による工事立会者手配業務
人件費 年間1億円(関東エリア:年間6万件) 年間0.1億円(関東エリア:年間6万件)(想定)
品質 年間工事事故5件 年間工事事故0件(想定)
手配時間 3時間×2回/1日 5分×2回/1日
やり方 アナログ(手書き) デジタル

image.png
※本イメージで可視化しているデータはダミーデータを用いています

3. 巡回セールスマン問題(TSP)

デモサイト: https://streamlit20250322tsp-h9bxa0dkdqgwfqgx.eastasia-01.azurewebsites.net/
Qiita記事: https://qiita.com/mshdtksk/items/6717a38dbab7ab04fb45

 本TSPアプリケーションの特徴は,Google Maps APIを活用したリアルタイム移動時間の取得と,計算結果のSnowflakeまたはMicrosoft Fabric等のクラウドデータウェアハウスへの保存である.

 数理最適化の計算結果をクラウドデータウェアハウスに保存し,簡単に取り出しができる仕組みを構築した.また,移動時間の情報はGoogle Map APIを用いてリアルタイムのデータを取得している.

image.png

4. 万博訪問ルート最適化アプリ

デモサイト: https://st-app-expo-504242909255.asia-northeast1.run.app/
発表資料: https://www.docswell.com/s/3324212129/5R2DEW-2025-06-08-120616

 万博会場での効率的な訪問ルートを提案するアプリケーションである.

問題の複雑さ

 万博で訪問したい場所が複数ある場合,その訪問順序の組み合わせは膨大になる.例えば,9箇所を訪問する場合でも362,880通りの組み合わせが存在する.

 訪問場所が増えると組合せ数は爆発的に増加する.

  • 10箇所の総数:3,628,800通り
  • 40箇所の総数:815,915,283,247,897,734,345,611,269,596,115,894,272,000,000,000通り
  • 52箇所の総数:80,658,175,170,943,878,571,660,636,856,403,766,975,289,505,440,883,277,824,000,000,000,000通り

アプリケーションの機能

 本アプリケーションでは,以下の3ステップで最適化ルートを探索し,結果を出力する.

  1. 地図上に訪問したい場所をクリック
  2. 探索方法を選択(Gurobiがお勧め)
  3. 最適化ルートを探索ボタンをクリック

 探索方法としては,Gurobiによる厳密解の他に,メタヒューリスティクスアルゴリズムも選択可能である.

システムアーキテクチャ

 アーキテクチャは以下の通りである.

  • 数理最適化による計算機能部:GurobiやPuLP,メタヒューリスティクスアルゴリズム
  • App Service(Container)利用:最適化計算でGurobi利用,Fabricへのデータ書き込みでodbcドライバ利用
  • Fabricのデータを用いてデータ可視化:今回は未対象,FrontのStreamlitで実装
  • Graph APIを利用してFabricに取得データを書き込み:Fabricへの認証にEntra IDを利用

 また,Azure OpenAI Service(AOAI)を用いた訪問ルートの提示機能も実装されており,生成AIによるルート提案も可能となっている.

image.png

クラウドとの連携

数理最適化×クラウドのメリット

 クラウドと数理最適化(MO)の相性について考察してみた.

クラウドの特徴

  • 強み:無制限のデータ保存領域,コンピューティングの拡張性
  • 弱み:データを起点にした価値創造,データがあることが前提,データの信頼性が求められる,厳密性の保証はできない

MOの特徴

  • 強み:データ有無に関係なく価値創出,推論ではなく探索による厳密性の保証
  • 弱み:計算過程の解の保持が困難,一部の解のみ保持,メモリ使用量が大きくなる場合あり

 クラウドとMOは互いの強み・弱みを補完しあう関係にあり,現在のBI・ML・AIの次世代技術として,データの生成によるさらなるデータ量増とそのデータから得られるインサイトの厳密性の保証を行えるMOが期待されている.

使用技術

  • フロントエンド: Streamlit
  • 最適化ソルバー: Gurobi, PuLP
  • クラウド: Streamlit Cloud,Google Cloud Run, Azure App Service
  • データ基盤: Snowflake, Microsoft Fabric
  • API: Google Maps API, Azure OpenAI Service

まとめと今後の展望

 PyCon JP 2025(広島)での展示を通じて,数理最適化技術への関心の高さと,Streamlitを使った可視化の有効性を確認できた.特に,実務課題を数理モデルに落とし込み,インタラクティブに解を探索できるアプリケーションの需要は高いと感じた.

 苦労した点は,限られた時間で数理最適化の本質を伝えることであった.そこで,万博訪問ルート最適化のような身近な例から入り,徐々に実務課題へと話を広げる流れを作った.

 今後は,より大規模な問題に対応するため,メタヒューリスティクスを含む解法の拡充と,クラウドネイティブな実装への移行を進めていく予定である.また,生成AIとの組合せによる問題定式化の自動化にも取り組んでいきたい.

謝辞

 最後に,ブース運営を共にしたStreamlitコミュニティメンバーのsakatoku氏yasunori氏ayumu-y氏Yuichiro氏tanako-氏および本イベントのプラチナスポンサーでもあるSnowflake社の社員のtsho氏Grace氏に感謝の意を表する.

image.png

参考リンク

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?