バックナンバー ( 2025 Vol.4 ) 2025 年 7 月 16 日 発行
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
数理システム 最適化メールマガジン
https://www.msi.co.jp/solution/nuopt/top.html
2025 Vol.4 ( 2025 年 7 月 16 日 発行 )
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
数理システム 最適化メールマガジンでは,数理最適化パッケージ
Nuorium Optimizer をはじめとして,最適化に関する様々な情報や
ご案内を提供していきます.
++++ [目次] ++++++++++++++++++++++++++++++++++++++++++++++++++++++
■ <イベント> Nuorium Optimization Day 2025 開催のご案内
■ <トピック> Nuorium Optimizer V27 新機能紹介 (wls)
■ < tips > 使ってみよう PySIMPLE(第 37 回)
■ <セミナー> 無料オンラインセミナーのご案内
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
******************************************************************
■ <イベント> Nuorium Optimization Day 2025 開催のご案内
******************************************************************
毎年ご好評いただいております数理最適化に特化したイベント
Nuorium Optimization Day 2025 を開催いたします.
今年は「数理最適化によるリソースの有効活用と業務効率化」という
セミタイトルを設けております.ヒトやモノといったリソースを有効活用
する最適な計画をたてるために数理最適化がどのように活用されているのか,
そのポイントを事例を交えて紹介いたします.
是非イベント参加をご検討いただけますと幸いです.
イベント概要
- タイトル : Nuorium Optimization Day 2025
- 日時 : 2025 年 7 月 28 日(月)10:00 - 17:30
- 場所 : コモレ四谷タワーコンファレンス(東京都新宿区四谷)
- 参加費 : 無料
- 講演 :
1. 社会をデザインする意思決定への数理最適化の適用
~マクロ視点シミュレーションへの数理最適化適用の可能性~
(株式会社 NTT データ数理システム)
2. Nuorium Optimizer 複合展開および生成 AI の活用
(株式会社 NTT データ数理システム)
3. 現場で活きる数理最適化~東京ガス流 DX の挑戦と未来~
(東京ガス株式会社)
4. 数理最適化技術を活用した勤務計画ソリューションの事例について
(鉄道情報システム株式会社)
- 詳細・お申込み :
https://www.msiism.jp/event/nuorium-optimization-day2025.html
(保科 拓紀)
******************************************************************
■ <トピック> Nuorium Optimizer V27 新機能紹介 (wls)
******************************************************************
今年 3 月にリリースされた Nuorium Optimizer V27 では,
メタヒューリスティクス解法 weighting local search (wls) の機能が
追加されています.
・複数スレッドを用いた並列計算
・連続変数に対する探索能力の強化
解法 wls は「集中化」(一つの有望な解を深掘りすること)に優れた
探索手法ですが,今回の改良により「多様化」(さまざまな解を幅広く
探ること)も両立可能となり,より良い解を,より短時間で見つけられる
ようになりました.
並列化では,複数のスレッドがそれぞれ異なる初期解と探索パラメータを
用いて探索を進める「Racing」の仕組みを活用しています.
これにより,従来よりも探索の幅が広がり,大規模な最適化問題にも
対応しやすくなりました.
実行は,Python モデリング言語 PySIMPLE から簡単に指定できます.
例えば以下のように設定すると,解法 wls が 8 スレッドで実行できます:
--------------------------------------------------------------
# 解法を指定
problem.options.method = "wls"
# スレッド数を指定(任意)
problem.options.threads = 8
--------------------------------------------------------------
並列計算の詳細や性能については,以下の記事をご覧ください:
『Nuorium Optimizer V27 新機能のご紹介!重み付き局所探索法の並列計算』
URL: https://www.msiism.jp/article/nuorium-optimizer-v27-1.html
設定方法の詳細は,Nuorium Optimizer のマニュアルをご覧ください:
『5.6.4 解法 wls におけるスレッド数上限』
URL: https://www.msi.co.jp/solution/nuopt/docs/manual/html/05-06-04.html
最後に,V27 の改良によって得られた成果をご紹介します.
世界的なベンチマーク集「MIPLIB 2017」には,これまで最適解が
見つかっていなかった難問が多数含まれています.
今回,解法 wls がその中の 3 問において既知の最良解を更新しました.
・pb-grow22 : -417,980 → -449,302
・supportcase35 : -314.5160 → -501.2349
・neos-5045105-creuse: 20.57141 → 20.57125
実際の問題内容については,以下のリンクからご覧いただけます:
MIPLIB 2017, pb-grow22
URL: https://miplib.zib.de/instance_details_pb-grow22.html
以上を解法 wls の新機能紹介といたします.
上記のコード例のとおり,解法は簡単に切替可能なので,wcsp など
他の解法と併せお気軽にお試しください.
(神谷 俊介)
******************************************************************
■ < tips > 使ってみよう PySIMPLE(第 37 回)
******************************************************************
このコーナーでは,Nuorium Optimizer の Python インターフェース
PySIMPLE のエッセンスを紹介していきます.
3 月にリリースされた V27 では幾つもの機能追加がされました.
特に PySIMPLE のスタブファイルが同梱されたことによって,開発環境に
依っては,シンタックスハイライト,メソッド・引数・型のサジェストが
行われるようになります.また,型ヒントを記述しておくことで型チェッカー
による型チェックを補助できるようになります.
今回はこの PySIMPLE クラスの型ヒントの使い方について紹介します.
まず,pysimple モジュールから直接 import できるクラスは,そのまま
型ヒントに用いることができます.
------------------------------------------------------------------
from pysimple import Element
def element_name(i: Element) -> str:
return i.name
i = Element(value=[1, 2])
print(element_name(i)) # i
------------------------------------------------------------------
pysimple モジュールから直接 import できない一部のクラスは
pysimple.typing から import できます.
------------------------------------------------------------------
from pysimple import Condition
from pysimple.typing import Cond
def cond_name(c: Cond) -> str:
return c.name
i = Element(value=[1, 2])
c = Condition(i, i>1) # c: Cond
print(cond_name(c)) # (i, (i>1))
------------------------------------------------------------------
pysimple.typing には基底クラスやエイリアスも含まれています.
ELEMENT は Element や Condition に共通の基底クラスです.
------------------------------------------------------------------
from pysimple import Element, Condition
from pysimple.typing import ELEMENT
def ELEMENT_name(e: ELEMENT) -> str:
return e.name
i = Element(value=[1, 2])
c = Condition(i, i>1) # c: Cond
print(ELEMENT_name(i)) # i
print(ELEMENT_name(c)) # (i, (i>1))
------------------------------------------------------------------
IntegerVariable や BinaryVariable は Variable 型になることにご注意
ください.
------------------------------------------------------------------
from pysimple import Variable, IntegerVariable
def variable_name(v: Variable) -> str:
return v.name
def ivariable_name(v: IntegerVariable) -> str:
return v.name
x = IntegerVariable() # x: Variable
variable_name(x) # OK
#ivariable_name(x) # NG
------------------------------------------------------------------
いかがでしたでしょうか.今回は PySIMPLE の型ヒントを関数の引数に
絞って紹介してきました.次回は関数の引数に限定しない発展的な使い方
について紹介します.
型ヒントの使い方はこちら:
https://www.msi.co.jp/solution/nuopt/docs/pysimple/guide/typehint.html
pysimple.typing から import 可能なオブジェクト一覧はこちら:
https://www.msi.co.jp/solution/nuopt/docs/pysimple/api/typing.html
PySIMPLE の更新履歴はこちら:
https://www.msi.co.jp/solution/nuopt/docs/pysimple/changelog.html
(池田 悠)
******************************************************************
■ <セミナー> 無料オンラインセミナーのご案内
******************************************************************
9 月までに開催する無料のオンラインセミナーをご紹介します.
エネルギーや製造に関して,課題に特化したセミナーを実施いたします.
ご興味のあるセミナーございましたら詳細をご確認いただき,
是非セミナーにご参加いただけますと幸いです.
[ エネルギーマネジメント最適化セミナー ]
2025 年 9 月 4 日(木)13:30~15:30
詳細とお申込み
https://www.msiism.jp/event/nuopt-energy-management.html
(保科 拓紀)
==================================================================