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

バックナンバー ( 2020 Vol.3 ) 2020 年 5 月 28 日 発行

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

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

++++ [目次] ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ■ <トピック> 学生研究奨励賞
 ■ <トピック> 数理計画用語集 用語追加
 ■ <トピック> ロボティクス・メカトロニクス 講演会 2020 の
               オンライン出展
 ■ <オンラインセミナー> Numerical Optimizer 紹介セミナーのご案内
 ■ <  tips  > 使ってみよう PySIMPLE(第 8 回)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

******************************************************************
■ <トピック> 学生研究奨励賞
******************************************************************

2020 年春学生研究奨励賞は 3 月に審査結果が発表され,成蹊大学理工学部
情報科学科所属の加藤尚瑛様の
  「ナーススケジューリング -改善モデルと複数最適解の生成-」
というタイトルの研究が優秀賞として選出されました.

以下弊社の研究奨励賞審査員による講評です.
==========================================
標準的な定式とその改善モデルについて,多様なインスタンスについて
具体的に厳密解を求める実験は,実務的な応用可能性を示す意味が
あります.本研究では,そこからさらに進んで,シフト表の「相違度」を
定量化し,真の意味で「多様な解」をいかに求めるかという課題に進めて
います.似たような解を量産するのでは実用面では物足りない,という
のはスケジューリングに関わる実務者が共通して表明する見解ですが,
この課題をきちんと定量的にモデル化し,一つの着眼において結果の算出が
可能であることを実験で示している点で,先駆的で意義深い研究だと
考えます.
==========================================

研究内容は順次 HP に公開しますので期待してお待ちください.

2020 年秋も学生研究奨励賞を募集しています!

学生研究奨励賞のご案内:
  https://www.msi.co.jp/userconf/student/index.html

研究にエントリーされる方には製品の貸与も行なっております.
皆様のご応募お待ちしております.

                                                 (藤井 浩一)

******************************************************************
■ <トピック> 数理計画用語集 用語追加
******************************************************************

弊社数理計画部では「数理計画用語集」を公開しています.
  http://www.msi.co.jp/nuopt/glossary/index.html

今回は新語に加えて数理計画用語集の中でもアクセス数の多い用語の内容
をさらに充実させています.是非ご一読下さい!

  <新語>
     ・PySIMPLE
     ・量子コンピュータ

  <改修用語>
     ・単体法
     ・標準形

ご意見,ご要望等ありましたら,お気軽に Numerical Optimizer 
サポートチーム<nuopt-support@ml.msi.co.jp>までご連絡下さい.

                                                 (村山 昇)

******************************************************************
■ ロボティクス・メカトロニクス 講演会 2020 の
              オンライン出展
******************************************************************

5/27 - 5/30 に行われるロボティクス・メカトロニクス 講演会 2020 にて
弊社はオンライン出展いたします.

ロボティクス・メカトロニクス 講演会 2020 :
  https://robomech.org/2020/

今年のロボティクス・メカトロニクス講演会は,新型コロナウイルスの
感染拡大を踏まえ,web を介したオンライン開催となりました.
facebook 上で講演およびポスター展示が行われ,企業展示もオンラインで
行われます.
講演会にご参加の方は是非弊社展示にお立ち寄りください.

                                                 (藤井 浩一)

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

弊社では今年 4 月から「Numerical Optimizer 紹介セミナー」と題して,
オンラインセミナー (Webinar) を開催しています.ご来社が難しい遠方の
方々の参加も多く,参加者からは「知りたかった内容が聞けて役にたった」
と大変ご好評いただいております.
6 月には日曜日開催のオンラインセミナーもご用意しています.平日が
お忙しい方も数理最適化を学ぶ機会として本セミナーをご利用ください.

また,本セミナーにご参加いただいた方には「プライベートウェビナー」
という無料のオンライン個別セミナーをご案内しています.トピックを
一つお選びいただき,そのトピックに関する数理最適化問題や事例を
ご紹介する 30 ~ 60 分程度のセミナーになります.

[トピック例]
   生産スケジューリング
   エネルギーマネジメント
   シフトスケジューリングや人員配置
   Numerical Optimizer ハンズオン
   数理最適化以外の AI 技術

プライベートウェビナーにご興味ある方は,まずは Numerical Optimizer
紹介セミナーにご参加ください.

[Numerical Optimizer 紹介セミナーの日程とお申込みページ]
    2020年06月09日 (火) 13:30~15:00 (お申込み締め切り 06月04日 (木))
      https://area34.smp.ne.jp/area/card/12417/h6R7cd/M?S=pfqdk0lbsf0mjrjp
    2020年06月14日 (日) 13:30~15:00 (お申込み締め切り 06月10日 (水))
      https://area34.smp.ne.jp/area/card/12417/jEtbfI/M?S=pfqdk0lbth0mjrjp
    2020年06月23日 (火) 10:30~12:00 (お申込み締め切り 06月18日 (木))
      https://area34.smp.ne.jp/area/card/12417/69u47G/M?S=pfqdk0lbti0mjrjp
    2020年06月30日 (火) 13:30~15:00 (お申込み締め切り 06月25日 (木))
      https://area34.smp.ne.jp/area/card/12417/hCMjd3/M?S=pfqdk0lbtd0mjrjp
    2020年07月21日 (火) 13:30~15:00 (お申込み締め切り 07月16日 (木))
      https://area34.smp.ne.jp/area/card/12417/9IEdCC/M?S=pfqdk0lbsg0mjrjp
    2020年08月18日 (火) 13:30~15:00 (お申込み締め切り 08月13日 (木))
      https://area34.smp.ne.jp/area/card/12417/bBcGI2/M?S=pfqdk0lbte0mjrjp

[Numerical Optimizer 紹介セミナー詳細ページ]
   https://msi.hmup.jp/nuopt/seminar/webinar

                                                 (石橋 保身)

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

このコーナーでは,Numerical Optimizer V21 の新機能であるモデリング
言語 PySIMPLE のエッセンスを紹介していきます.
前々回はデータ解析分野で表操作によく使われる pandas モジュールを
利用して PySIMPLE の出力を加工する方法を紹介しました.今回は,この
pandas を用いて入力データを読み込み,PySIMPLE オブジェクトとして
読み込む方法を紹介します.

まず,添字が 1 つのデータ value, size を考えます.
以下では knapsack.csv があるとします.

------------------------------------------------------------------
i,value,size
缶コーヒー,120,10
水入りペットボトル,130,12
バナナ,80,7
りんご,100,9
おにぎり,250,21
パン,185,16
------------------------------------------------------------------

これを pandas を用いて読み込み,Parameter にするには次のようにします.

PySIMPLE:
------------------------------------------------------------------
import pandas as pd
# 1D, 1 index, 複数データ
data = pd.read_csv('knapsack.csv', index_col='i')
i = Element(value=data['value'].keys())  # 品物
value = Parameter(index=i, value=data['value'].to_dict())
size = Parameter(index=i, value=data['size'].to_dict())
------------------------------------------------------------------

添字が 2 つの場合も同様です.以下では assign.csv があるとします.

------------------------------------------------------------------
i,j,gain,cost
1,A,31,13
1,B,12,60
1,C,19,76
2,A,76,32
2,B,75,120
2,C,15,6
------------------------------------------------------------------

これを読み込むには次のようにします.

------------------------------------------------------------------
# 1D, 2 index, 複数データ
data = pd.read_csv('assign.csv', index_col=['i', 'j'])
ij = Element(value=data['gain'].keys())
gain = Parameter(index=ij, value=data['gain'].to_dict())
cost = Parameter(index=ij, value=data['cost'].to_dict())
------------------------------------------------------------------

PySIMPLE で添字が複数次元のデータを与えるには key がタプルの辞書に
変換する必要がありますが,これは DataFrame の MultiIndex を使う
ことで簡単に実現できます.read_csv 関数で読み込む場合,index_col
キーワードで MultiIndex を指定することができます.

表形式の場合は少し加工が必要です.以下では product2.csv があると
します.

------------------------------------------------------------------
i,A,B
0,60,40
1,10,60
------------------------------------------------------------------

これを読み込むには次のようにします.

------------------------------------------------------------------
# 1D, 2 index
#data = pd.read_csv('product1.csv', index_col=['i', 'j'])

# 2D, 2 index
data = pd.read_csv('product2.csv')
data = data.melt(id_vars='i', var_name='j', value_name='product')
data = data.set_index(['i', 'j'])
ij = Element(value=data['product'].keys())
product = Parameter(index=ij, value=data['product'].to_dict())
------------------------------------------------------------------

表形式の場合,read_csv 関数で読み込んだ後,melt 関数で整形し,
set_index 関数を用いることで MultiIndex を指定することができます.

いかがでしたでしょうか.PySIMPLE と pandas モジュールを連携することで
より簡単に入出力の操作を行うことができます.以下では添字が 3 つの
場合も紹介しています.

pandas を用いた csv データの読み込みの解説はこちら:
    http://www.msi.co.jp/nuopt/docs/v22/pysimple/guide/readcsv.html

                                                 (池田 悠)

==================================================================
※ このメールは,弊社ツールのユーザー様,過去に展示会などでお名刺
   等を頂いたことのある方や当社に直接お問合せを頂いたことのある方
   にお送りしています.
※ バックナンバーはこちらから御覧頂けます.
     https://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
==================================================================