数理システム 最適化メールマガジン

バックナンバー ( 2022 Vol.4 ) 2022 年 7 月 20 日 発行

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  数理システム 最適化メールマガジン  https://www.msi.co.jp/nuopt/
                           2022 Vol.4 ( 2022 年  7 月 20 日 発行 )
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

数理システム 最適化メールマガジンでは,数理計画法パッケージ
Nuorium Optimizer をはじめとして,最適化に関する様々な情報や
ご案内を提供していきます.

++++ [目次] ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ■ <トピック> Nuorium Optimizer RSIMPLE のご紹介
 ■ <セミナー> オンラインセミナーのご案内
 ■ <  tips  > 使ってみよう PySIMPLE(第 19 回)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

******************************************************************
■ <トピック> Nuorium Optimizer RSIMPLE のご紹介
******************************************************************

Nuorium Optimizer V24 が 3/28 にリリースされました.
今回のリリースでは今まで別製品として扱っていた RNUOPT を RSIMPLE
として同梱するなど,より一層皆様に当社製品をご利用いただけるような
取り組みを行っています.

さて,この RSIMPLE について,どういったものか,ご存じない方も
多いかと思います.RSIMPLE は R 言語をインターフェースとする
モデリング言語です.SIMPLE 言語の特徴を継承しているため簡潔に
モデルを記述でき,さらには R との相性の良い多くのサンプルを含んで
いるため,数理最適化や金融工学,データ分析の学習にもピッタリです.
いくつかを例を挙げます.

- 重回帰
  - Nlsfit
  - Nlsfit.eq(パラメータの線形制約付き)
- 非線形回帰
  - LogReg(ロジスティック回帰)
- 資産調達の問題
  - Cashflow
- ポートフォリオ最適化問題
  - Marko(マルコビッツモデル)
  - MinCVaR(CVaR)
...

他にも様々なサンプルを含んでいます.
詳細は RSIMPLE のマニュアル「1.3 RSIMPLE に付属しているモデル」を
ご覧ください.
  http://msi.co.jp/nuopt/download/manual/module/newversion/RSIMPLE.pdf

また,MSIISM では RSIMPLE によるポートフォリオ最適化(マルコビッツ
モデル)の紹介記事も公開しています.お時間があればこちらもぜひご覧
ください.
  https://www.msiism.jp/article/nuorium-optimizer-v24-rsimple-portfolio.html

                                                (石橋 保身)

******************************************************************
■ <セミナー> オンラインセミナーのご案内
******************************************************************

当社では定期的に無料のオンラインセミナーを開催しています.
今までは Zoom を用いた Webinar を開催していましたが,7 月より
Cisco Webex を用いたセミナーとなります.

さて,現在ご用意しているセミナーについて,どちらかというと
「数理最適化を初めて知る」という方でも退屈することなく参加いただける
ような内容となっています.
セミナーの内容に関して「もうすこし発展的な内容が聞きたい」など,
ご要望がありましたらお気軽に nuopt-info@ml.msi.co.jp のお寄せ
ください.
今後のセミナー企画の参考にさせていただきます.

9 月までに開催予定の無料オンラインセミナー一覧

[ Nuorium Optimizer 紹介セミナー ]
  2022 年 08 月 23 日 (火) 13:30~15:30
  2022 年 09 月 29 日 (木) 13:30~15:30
  詳細とお申込み:https://www.msi.co.jp/nuopt/seminar/introduction.html

[ Nuorium Optimizer ハンズオンセミナー ]
  2022 年 07 月 27 日 (水) 13:30~16:00
  詳細とお申込み:https://www.msi.co.jp/nuopt/seminar/hands-on.html

[ 製造現場の業務改善に向けた数理最適化ソリューション紹介セミナー ]
  2022 年 09 月 15 日 (木) 13:30~15:30
  詳細とお申込み:https://www.msi.co.jp/nuopt/seminar/manufacture.html

[ Nuorium Optimizer 金融工学セミナー ]
  2022 年 08 月 04 日 (木) 13:30~15:30
  詳細とお申込み:https://www.msi.co.jp/nuopt/seminar/finance.html

                                                (石橋 保身)

******************************************************************
■ <  tips  > 使ってみよう PySIMPLE(第 19 回)
******************************************************************

このコーナーでは,Nuorium Optimizer の Python インターフェースである
PySIMPLE のエッセンスを紹介していきます.
3 月にリリースされた V24 では大きく 3 つの機能が追加されました.

- IIS オブジェクトの取得
- PySIMPLE オブジェクトのシリアライズ
- Problem オブジェクトの機能・属性追加

今回はこのうち Problem オブジェクトの機能・属性追加について見て
いきましょう.V24 では Problem 周りでは「目的関数の削除」,
「Problem の番号アクセス」,「登録されている変数一覧の取得」の
機能が追加されました.ひとつずつ見ていきましょう.

- 目的関数の削除

------------------------------------------------------------------
>>> x = Variable(name='x')
>>> y = Variable(name='y')
>>> p = Problem()
>>> p += x
>>> p.objective
x:
x
>>> p += y
pysimple.error.SimpleError: objective can only be assigned once
>>> del p.objective
>>> p += y
>>> p.objective
y:
y
------------------------------------------------------------------

V23 までの PySIMPLE では目的関数を一度,設定すると変更できません
でした.正確には一度求解を行うと再設定できるようになります.V24 では
del 文を用いて目的関数を削除できるようになりました.条件に応じて
目的関数を変更したい場合などに便利でしょう.

- Problem の番号アクセス

------------------------------------------------------------------
>>> x = Variable(name='x')
>>> y = Variable(name='y')
>>> p = Problem()
>>> p += x >= 1, 'cons1'
>>> p += y >= 1, 'cons2'
>>> p['cons2']
cons2:
y>=1
>>> p[1]
cons2:
y>=1
>>> p[-1]
cons2:
y>=1
>>> p.constraints['cons2']
cons2:
y>=1
>>> p.constraints[-1]
cons2:
y>=1
------------------------------------------------------------------

V23 までは problem[制約式名],または problem.constraints[制約式名]
で特定の制約式を参照できました.V24 では制約式名の他に制約式番号でも
参照ができるようになりました.番号は負数も用いることができるため,
-1 で直前に追加した制約式を参照することができます.

- 登録されている変数一覧の取得

------------------------------------------------------------------
>>> x = Variable(name='x')
>>> y = Variable(name='y')
>>> p = Problem()
>>> p += x >= 1, 'cons1'
>>> p.variables
x:
x
>>> p += y >= 1, 'cons2'
>>> p.variables
x:
x
y:
y
>>> p.variables['y']
y:
y
>>> p.variables[1]
y:
y
>>> p.variables[-1]
y:
y
------------------------------------------------------------------

Problem に constraints 属性と同様に variables 属性が追加されました.
V23 までは第 15 回のように Problem を関数化した場合,外部から変数を
参照するには,戻り値として渡す必要がありました.また,第 16 回のように
Problem を継承した場合でも,それぞれメンバ変数とする必要がありました.
V24 では problem.variables[変数名] によって Problem に登録した制約式,
目的関数に使用されている変数を取得することができるようになりました.
また,「Problem の番号アクセス」で見たように,変数の番号で参照する
こともできます.

いかがでしたでしょうか.V24 ではこれらの新機能に加え,動作環境の
追加や細かな不具合修正も行われていますので確認してみてください.

V24 の PySIMPLE の更新履歴はこちら:
    https://www.msi.co.jp/nuopt/docs/v24/pysimple/changelog.html

                                                (池田 悠)

==================================================================
※ msi-ms@ml.msi.co.jp は送信専用アドレスです。
  本メールにそのままご返信いただいてもご回答いたしかねます。

※ このメールは、弊社ツールのユーザー様、過去に展示会などで
お名刺等を頂いたことのある方や 当社に直接お問合せを頂いたことの
ある方にお送りしています。

※ バックナンバーはこちらから御覧頂けます。
     https://www.msi.co.jp/nuopt/mailmagazine/index.html

※ 本メールマガジンは等幅フォントでお読みになることを推奨します。

※ 今後、ご案内メールが不要な方は、誠にお手数ですが、下記 URL より
  「案内停止手続き」をしてくださいますようお願いいたします。

■ 案内停止はこちらから ■
      [都合により本ページでは URL を掲載しておりません]

ご登録される情報は、暗号化された通信(SSL)で保護され、プライバシーマークや
ISO27001/JIS Q 27001, ISO20000-1, ISO9001の 認証を取得している
株式会社パイプドビッツによる情報管理システム「スパイラル」で安全に管理されます。

上記にアクセスができない場合には「メール不要」と明記の上、
 nuopt-info@ml.msi.co.jp までご連絡いただけますと幸いです。

発行:株式会社 NTT データ数理システム 
          << 数理システム Nuorium Optimizer >> 担当
        東京都新宿区信濃町 35 番地 信濃町煉瓦館 1 階
                                   tel : 03-3358-6681
                                e-mail : nuopt-info@ml.msi.co.jp
==================================================================