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

バックナンバー ( 2018 Vol.2 ) 2018 年 3 月 14 日 発行

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  数理システム 最適化メールマガジン  http://www.msi.co.jp/nuopt/
                           2018 Vol.2 ( 2018 年  3 月 14 日 発行 )
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

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

++++ [目次] ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ■ <トピック> RNUOPT バージョンアップのお知らせ
 ■ <トピック> Excel アドイン
 ■ <セミナー> 特別セミナーのご案内
 ■ <セミナー> 4 月・5 月定例セミナーのご案内
 ■ <お知らせ> V20 からの SIMPLE 仕様変更について
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

******************************************************************
■ <トピック> RNUOPT バージョンアップのお知らせ
******************************************************************

RNUOPT がバージョンアップしました!

RNUOPT は統計解析ソフトウェア R をインターフェースとする汎用数理
計画法パッケージです.制約付き最適化に対応しているため,本格的な
数理最適化が R 上で行えます. 
新しい RNUOPT では最新の R 3.4 に対応し,ソルバー性能も Numerical
Optimizer V20 と同等です.より強力になった RNUOPT をぜひお使い
ください!

詳しくはこちらまで:
  http://www.msi.co.jp/nuopt/products/derivation/rnuopt/index.html

                                                 (藤井 浩一)

******************************************************************
■ <トピック> Excel アドイン
******************************************************************

昨年リリースされた Numerical Optimizer V19 において Excel 向けの
インターフェースがリニューアルされました.

使いやすさを徹底追求し,お使いの Excel 上でデータの登録,最適化の
実行,結果の表示が,直感的な操作で実現できるようになりました.

さらに今年の 2 月にリリースされた Numerical Optimizer V20 では,
Excel アドインに最適化モデルのテンプレートが追加され,モデルを
記述することなく手軽に最適化ができるようになりました.

テンプレートモデルは制約の追加,目的関数の変更など Nuorium を用い
て自由にカスタマイズ可能なので実用的なモデルも手早く記述できます.

テンプレートモデルには Numerical Optimizer に付属の例題集が含まれ,
サンプルブックを開いて最適化の例題を即実行することができます.

使いやすくなった Excel インターフェース,是非お試しください.

                                                 (村山 昇)

******************************************************************
■ <セミナー> 特別セミナーのご案内
******************************************************************

◆ Numerical Optimizer 金融工学セミナー
  
本セミナーは金融工学分野における数理最適化ソリューションをご紹介
するセミナーでございます.イールドカーブ推定や格付け推移確率行列
など,数理計画法を用いて実装されている数理モデルの実際を紹介いた
します.
また,金融工学におけるリスク最小化の考え方と,意思決定のツールと
しての最適化ソルバーの関係についても紹介いたします.

   ☆   日時:2018 年 5 月 29 日 (火) 15:00~17:00

   ☆ 参加費:無料

   ☆   会場:
         (株) NTT データ数理システム セミナールーム
           (東京都新宿区信濃町 35 信濃町煉瓦館 4F)
             http://www.msi.co.jp/msi/location.html

   ☆ 上記セミナーのお申込み・詳細は下記をご覧ください.
             https://msi.hmup.jp/nuopt/seminar/finance

皆様のご参加をお待ちしております.

                                                 (山本 和寛)

******************************************************************
■ <セミナー> 4 月・5 月定例セミナーのご案内
******************************************************************

---[ Numerical Optimizer 定例セミナー開催日程 ]-------------------

・4 月 11 日 (水) 13:30~17:00 Numerical Optimizer 体験セミナー
                  https://msi.hmup.jp/nuopt/seminar/seminarRegular

・5 月 25 日 (金) 13:30~17:00 Numerical Optimizer 体験セミナー
                  https://msi.hmup.jp/nuopt/seminar/seminarRegular

------------------------------------------------------------------

実際に PC 上で Numerical Optimizer を体験できるセミナーです.
数理最適化ソルバーをお探しの方はもちろんのこと,数理最適化とは
どんなものか知りたい方にもお薦めです.
また,機能を強化した Excel アドインもご紹介いたします.
モデルとデータの連携を気軽に行いたい方や,解を集計しグラフを
書いて分析を行いたい方にお薦めの機能です.
皆様のご参加をお待ちしております.

                                                 (山本 和寛)

******************************************************************
■ <お知らせ> V20 からの SIMPLE 仕様変更について
******************************************************************

Numerical Optimizer に組み込まれているモデリング言語 SIMPLE が,
他のモデリング言語と比べて特徴的なのは,Element が宣言時に集合 Set
とバインドされ,追従し続けることです.

例えば

------------------------------------------------------------------
  Element j(set=S);
------------------------------------------------------------------

と書いたら,以降 j は集合 S の要素だと宿命付けられる(j から見て
集合 S を「定義集合」と呼んでいます).ですので,Element を含む式を,
例えば

------------------------------------------------------------------
  x[j] >= 0;
------------------------------------------------------------------

と書くだけで,j は S の範囲すべてを代表するものだと解釈され,この
式は j が取り得る値の数(集合 S の要素の数)だけ展開されるものとして
解釈されます.この仕様のおかげで,glpk などのモデリング言語にある
ループ変数的な記法を省き,記述を減らすことができる他,Element を
オブジェクトの宣言時に集合のかわりに使う,

------------------------------------------------------------------
  Variable x(index=j); // x は j で添字付ける
------------------------------------------------------------------

といった記述も可能になっています.

ただ,この描像に真っ向から対立するのが,

------------------------------------------------------------------
 j = 3;      // j は以降 3 しか取らなくなる!
 x[j] == 0;  // この制約は x[3] == 0 という意味
------------------------------------------------------------------

というように「 = 演算子で要素を固定できる」という仕様です.
ここから派生して Element は for 文のループ変数としても使えることに
なり

------------------------------------------------------------------
  Element j(set=S);             // j の定義集合は S だが
  for ( j = 1; j <= 10; ++j ) { // この for 文の中では逐一固定される
      if ( j >= 2 ) {
         x[j-1] + x[j] >= 0;    // j が固定されているので
      }                         // この式は一本分しか展開されない
  }
------------------------------------------------------------------

といった記述が許されます.
漸化式のような記述が柔軟にできればと思って追加した仕様なのですが,
伴って次のようなトラブルが多数報告されました.

1. j が定義集合 S の値以外に固定されたのでエラーになった,なぜ?
2. 添字 j を使って宣言されているオブジェクトの添字付けの有効範囲が
   瞬間的に変化したので意味のわからない添字エラーになった !
3. j が固定されてたのを知らずに制約を書いたら,思ったように展開
   されてない!

3. については,固定された要素は "j < S;" とかいう,j を含む条件式を
何か書くと,固定が解除されるという仕様を用意していました.しかし,
前後の書きぶりによって,Element の示す範囲というか意味が変わって
しまうのは,確かにわかりにくい.

そこで V20 より,定義集合を持つ Element については,固定しようと
するとエラーがでるようにして,上記のトラブルを未然に解消することに
しました.

具体的には,

------------------------------------------------------------------
  Element j(set=S); // j は S を定義集合として持つ
------------------------------------------------------------------

と宣言された要素が

------------------------------------------------------------------
  j = 3;
------------------------------------------------------------------

と固定されると,以下のようなエラーメッセージが表示され,
プログラムが終了します.

------------------------------------------------------------------
model.smp:8:error: (SIMPLE 452) 要素 "j" は定義集合を
持っているので固定できません(V20 からの新しい仕様).
------------------------------------------------------------------

同じ理由で定義集合を持つ Element を次のように for 文のループ変数
として使うこともできません.

------------------------------------------------------------------
  Element j(set=S);
  for ( j = 1; j <= 10; ++j ) { // エラー 452
      ..
  }
------------------------------------------------------------------

V20 からは Element を for 文のループ変数などで固定して使いたい場合
には定義集合なしで宣言します.

------------------------------------------------------------------
  Element j; // j は定義集合を持たないので固定自由
------------------------------------------------------------------

SIMPLE は 1995 年の NUOPT3.0 のリリース以来アッパーコンパチビリティーを
維持してきたのですが,この仕様追加のために,旧版との互換性が一部
失われ,以前のバージョンで実行できていたモデルがエラーになって
しまう可能性があります.もし上述の 452 が出た場合には,定義集合を
持たない Element を使って記述を書き換えて頂けますでしょうか.

記述に関するトラブルを防ぎ,実装を堅牢にするためということで,
どうかご了承くださいませ.

                                                 (田辺 隆人)

==================================================================
※ このメールは,弊社ツールのユーザー様,過去に展示会などでお名刺
   等を頂いたことのある方や当社に直接お問合せを頂いたことのある方
   にお送りしています.
※ バックナンバーはこちらから御覧頂けます.
     http://www.msi.co.jp/nuopt/mailmagazine/index.html
※ 本メールマガジンは等幅フォントでお読みになることを推奨します.
※ 今後,本メールマガジンやご案内に関するメールが不要な方は,誠に
   お手数ですが,下記 URL より「案内停止手続き」をしてくださいます
   ようお願いいたします.

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

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

   上記にアクセスができない場合には「メール不要」と明記の上,
     nuopt-ms@ml.msi.co.jp
   (このメールに返信で結構です)にメール送付してください.

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