JP2023035664A - 情報処理装置、求解方法、および求解プログラム - Google Patents

情報処理装置、求解方法、および求解プログラム Download PDF

Info

Publication number
JP2023035664A
JP2023035664A JP2021142683A JP2021142683A JP2023035664A JP 2023035664 A JP2023035664 A JP 2023035664A JP 2021142683 A JP2021142683 A JP 2021142683A JP 2021142683 A JP2021142683 A JP 2021142683A JP 2023035664 A JP2023035664 A JP 2023035664A
Authority
JP
Japan
Prior art keywords
linear programming
solution
programming problem
constraint
subproblems
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021142683A
Other languages
English (en)
Inventor
浩 大塚
Hiroshi Otsuka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021142683A priority Critical patent/JP2023035664A/ja
Priority to US17/842,859 priority patent/US20230068699A1/en
Priority to EP22180118.6A priority patent/EP4145311A1/en
Publication of JP2023035664A publication Critical patent/JP2023035664A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/12Simultaneous equations, e.g. systems of linear equations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Operations Research (AREA)
  • Strategic Management (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Development Economics (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Marketing (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】線形計画問題の求解時間の短縮化を図ること。【解決手段】情報処理装置101は、求解対象の線形計画問題の求解にかかる許容時間に基づいて、線形計画問題の分割粒度を決定する。情報処理装置101は、決定した分割粒度に基づき線形計画問題から分割されるそれぞれの部分問題の目的関数を、線形計画問題の目的関数から作成する。情報処理装置101は、線形計画問題の制約式群と、線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、それぞれの部分問題の制約式を作成する。情報処理装置101は、それぞれの部分問題について作成した目的関数と制約式とに基づいて、それぞれの部分問題を順に解くことにより、線形計画問題の解を求める。【選択図】図1

Description

本発明は、情報処理装置、求解方法、および求解プログラムに関する。
近年、労働力不足を背景に、運送業、人材管理、介護施設などの様々な業種で、現場データを活用して、ヒトとモノ・コトとの間をマッチングし、業務の効率化を図るサービスへのニーズが高まっている。また、線形計画法を用いて、病院における看護師やコールセンタにおけるオペレータのシフト割当を行う場合がある。
先行技術としては、対象期間に係る進捗計画入力データを抽出し、回帰データに基づいて制約条件を満たすように対象期間を複数に分割する計算ユニットを求め、進捗計画入力データから計算ユニットごとに進捗計画を逐次作成し、対象期間に係る進捗計画を作成するものがある。回帰データは、進捗計画入力データの規模パラメータに対応する。
また、与えられた環境変数および状態変数から目的関数を作成し、目的関数の最小値を求める技術がある。また、リソースに対して作業工程を割り当てる計画の作成精度の指定を受け付け、その作成精度に対応するアルゴリズム、および、その作成精度に対応する計画の作成の終了条件に基づいて計画の作成を行う技術がある。
特開2009-258969号公報 特開平5-204891号公報 特開2018-190417号公報
しかしながら、従来技術では、線形計画問題の問題サイズが大きくなり、ユーザが許容可能な時間内で求解できない場合がある。
一つの側面では、本発明は、線形計画問題の求解時間の短縮化を図ることを目的とする。
1つの実施態様では、求解対象の線形計画問題の求解にかかる許容時間に基づいて、前記線形計画問題を複数の部分問題に分割する際の分割粒度を決定し、決定した前記分割粒度に基づき前記線形計画問題から分割されるそれぞれの部分問題の目的関数を、前記線形計画問題の目的関数から作成し、前記線形計画問題の制約式群と、前記線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、前記それぞれの部分問題の制約式を作成し、前記それぞれの部分問題について作成した前記目的関数と前記制約式とに基づいて、前記それぞれの部分問題を順に解くことにより、前記線形計画問題の解を求める、処理を実行する制御部を有する情報処理装置が提供される。
本発明の一側面によれば、線形計画問題の求解時間の短縮化を図ることができるという効果を奏する。
図1は、実施の形態にかかる求解方法の一実施例を示す説明図である。 図2は、情報処理システム200のシステム構成例を示す説明図である。 図3は、求解処理装置201のハードウェア構成例を示すブロック図である。 図4は、過去事例DB220の記憶内容の一例を示す説明図である。 図5は、求解対象の線形計画問題の具体例を示す説明図である。 図6は、求解処理装置201の機能的構成例を示すブロック図である。 図7は、問題サイズと求解時間との対応関係を示す説明図である。 図8は、予測モデルの具体例を示す説明図である。 図9は、元の問題の分割例を示す説明図である。 図10は、割当結果データの抽出例を示す説明図である。 図11は、部分問題の制約式の作成例を示す説明図(その1)である。 図12は、部分問題の制約式の作成例を示す説明図(その2)である。 図13は、部分問題の制約式の作成例を示す説明図(その3)である。 図14Aは、求解処理の具体例を示す説明図(その1)である。 図14Bは、求解処理の具体例を示す説明図(その2)である。 図15は、求解処理装置201の割当処理手順の一例を示すフローチャートである。 図16は、許容サイズ探索処理の具体的処理手順の一例を示すフローチャートである。 図17は、問題分割処理の具体的処理手順の一例を示すフローチャートである。 図18は、ルール抽出処理の具体的処理手順の一例を示すフローチャートである。 図19は、求解処理の具体的処理手順の一例を示すフローチャートである。
以下に図面を参照して、本発明にかかる情報処理装置、求解方法、および求解プログラムの実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかる求解方法の一実施例を示す説明図である。図1において、情報処理装置101は、線形計画問題を求解するコンピュータである。線形計画問題は、最適化問題において、目的関数が線形関数で、かつ、線形関数の等式や不等式で制約条件を記述することができる問題である。また、線形計画問題を求解するとは、制約条件のもとで、目的関数を最適化(最大化あるいは最小化)するような変数の値を求めることである。
ここで、線形計画法を用いて、ヒトとモノ・コトとのマッチングを行う場合がある。例えば、看護師の勤務スケジュールを作成するにあたり、これまでベテラン担当者が手作業で行ってきたシフト割当業務を、線形計画法を用いたシフト割当により自動化したい場合がある。
また、手術室や医療器具などの使用スケジュールを作成するにあたり、これまで手作業で行ってきた割当業務を自動化したい場合がある。また、コールセンタにおけるオペレータのシフト割当を行うにあたり、これまで手作業で行ってきた割当業務を自動化したい場合がある。
一例として、看護師のシフト割当を例に挙げると、看護師と各日の勤務シフト(日勤、夜勤、深夜勤など)との間の組み合わせを求める最適化問題として線形計画問題を定式化することで、既存のソルバを用いて線形計画問題を解くことができる。この際、法律上の要件、個人の希望、業務上の条件などの様々な制約条件が設定される。
例えば、法律上の要件としては、1週間の勤務時間上限や勤務間インターバルなどがある。また、個人の希望としては、休暇希望、研修希望などがある。また、業務上の条件としては、深夜・早朝勤務を均等に割り当てる、勤務開始時刻が極端に変わらないように割り当てるなどがある。
一方で、線形計画問題の求解にかかる時間(計算量)は、線形計画問題の問題サイズが増えるにつれて指数関数的に増加する。問題サイズは、例えば、線形計画問題に含まれる要素数(例えば、ヒト、モノ、コト)や、それに関係する制約式(制約条件)の数によって表される。
線形計画問題の問題サイズが大きくなると、ユーザが許容可能な時間内に求解できない場合がある。このため、例えば、要素数を減らすように問題を複数の部分問題に分割することが考えられる。しかし、部分問題の求解においても、ユーザが許容可能な時間内に求解できない場合があるという同じ問題が発生し得る。
また、部分問題の作り方によっては、求解不可になる場合がある。例えば、1ヶ月分のシフト割当を行うにあたり、1ヶ月中に3回、Aさんのシフトを日曜日に割り当てるという条件があるとする。また、問題を1週間ごとの部分問題に分割し、Aさんの日曜日のシフトのON/OFFを選択する場合を想定する。この場合、例えば、1週目、2週目および3週目の日曜日のAさんのシフトをOFFにすると、求解ができなくなる。
ここで、複数の要素(ヒト・モノ・コト)によって満たされるべき制約がある場合、その一部分を切り出しても、満たされるべき制約が存在するはずである。そこで、本実施の形態では、過去の割当結果データから、その一部分について満たされるべき制約を抽出し、それを用いて問題を求解することで、問題全体を通して制約を満たした解(近似解)を短い時間で求める求解方法について説明する。
以下、情報処理装置101の処理例について説明する。
(1)情報処理装置101は、求解対象の線形計画問題の求解にかかる許容時間に基づいて、線形計画問題の分割粒度を決定する。ここで、分割粒度は、線形計画問題を複数の部分問題に分割する際の単位である。線形計画問題は、目的関数と、制約式群とを含む。
目的関数は、最適化問題において、最大化あるいは最小化したい関数である。目的関数は、変数を含む1次式によって表される。制約式群は、変数が満たすべき制約式(制約条件)の集合である。許容時間は、任意に設定可能であり、例えば、ユーザが許容可能な時間である。
具体的には、例えば、情報処理装置101は、線形計画問題の問題サイズと許容時間とに基づいて、許容時間内に解ける最大の問題サイズを探索する。そして、情報処理装置101は、探索した最大の問題サイズに基づいて、線形計画問題の分割粒度を決定する。
図1の例では、求解対象の線形計画問題を「線形計画問題110」とし、線形計画問題110の目的関数を「目的関数120」とし、制約式群を「制約式群130」とする。また、線形計画問題110の求解にかかる許容時間に基づいて、線形計画問題110の分割粒度dが決定された場合を想定する。
(2)情報処理装置101は、決定した分割粒度に基づき線形計画問題から分割されるそれぞれの部分問題の目的関数を、線形計画問題の目的関数から作成する。具体的には、例えば、情報処理装置101は、各部分問題について、線形計画問題から各部分問題に対応する変数を抽出する。
例えば、期間(日数)によって線形計画問題を分割する場合、各部分問題に対応する変数は、各部分問題に対応する期間に含まれる変数である。また、人数によって線形計画問題を分割する場合、各部分問題に対応する変数は、各部分問題に対応する人数のヒトについての変数である。そして、情報処理装置101は、各部分問題について、線形計画問題の目的関数から、抽出した変数とは異なる変数を除去することにより、各部分問題の目的関数を作成する。
図1の例では、分割粒度dに基づき線形計画問題110から分割される部分問題を「部分問題110-1,110-2」とする。部分問題110-1を例に挙げると、線形計画問題110の目的関数120(元の目的関数)から、部分問題110-1に対応する変数とは異なる変数を除去することにより、部分問題110-1の目的関数120-1が作成される。
(3)情報処理装置101は、線形計画問題の制約式群と、線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、それぞれの部分問題の制約式を作成する。過去の割当結果データは、求解対象の線形計画問題に対応する過去の割当結果データであり、例えば、求解対象の線形計画問題と同一期間(日数)、同一人のシフト割当結果を示す。
具体的には、例えば、情報処理装置101は、線形計画問題の制約式群のうち、各部分問題に含まれる変数のみで成り立つ制約式を抽出することによって、各部分問題の第1の制約式を作成する。また、情報処理装置101は、線形計画問題の制約式群のうちの第1の制約式を除く残余の制約式と過去の割当結果データとに基づいて、各部分問題の第2の制約式を作成する。
より詳細に説明すると、例えば、情報処理装置101は、残余の制約式から、部分問題に含まれる変数のみの項を抽出する。つぎに、情報処理装置101は、過去の割当結果データを参照して、抽出した各項の値を特定する。そして、情報処理装置101は、特定した各項の値に基づいて、抽出した各項を含む第2の制約式を作成する。
図1の例では、線形計画問題110の制約式群130(元の制約式群)と、線形計画問題110に含まれる変数についての過去の割当結果データ140とに基づいて、部分問題110-1,110-2の制約式が作成される。部分問題110-1を例に挙げると、線形計画問題110の制約式群130のうち、部分問題110-1に含まれる変数のみで成り立つ制約式を抽出することによって、部分問題110-1の第1の制約式130-1が作成される。また、線形計画問題110の制約式群130のうちの第1の制約式130-1を除く残余の制約式と過去の割当結果データ140とに基づいて、部分問題110-1の第2の制約式130-2が作成される。
(4)情報処理装置101は、それぞれの部分問題について作成した目的関数と制約式とに基づいて、それぞれの部分問題を順に解くことにより、線形計画問題の解を求める。具体的には、例えば、情報処理装置101は、既存のソルバ(線形計画ソルバ)を用いて、部分問題の目的関数と制約式とに基づいて、部分問題を順に求解する。
この際、情報処理装置101は、部分問題の求解結果に基づいて、全ての変数について「変数=求解結果の値」という制約式を作成し、他の部分問題の制約式として追加する。部分問題に含まれる一部の変数を既に求めた解で固定することで、部分問題の問題サイズが小さくなる。このようにして、情報処理装置101は、各部分問題を順に解くことにより、線形計画問題の解を求める。
図1の例では、既存のソルバを用いて、各部分問題110-1,110-2を順に求解することにより、線形計画問題110の解が得られる。
このように、情報処理装置101によれば、求解対象の線形計画問題を部分問題に分割して求解することができる。また、情報処理装置101によれば、過去の割当結果データから部分問題に適用する制約を抽出することで、問題全体を通した制約を満たした解(近似解)を許容時間内に得ることができる。
これにより、線形計画問題の求解時間の短縮化を図りつつ、看護師やオペレータなどについての高精度なシフト割当を実現することが可能となる。図1の例では、求解対象の線形計画問題110を部分問題110-1,110-2に分割して求解することで、問題全体を通した制約を満たした解を、ユーザが許容可能な時間内に得ることができる。
(情報処理システム200のシステム構成例)
つぎに、図1に示した情報処理装置101を含む情報処理システム200のシステム構成例について説明する。ここでは、図1に示した情報処理装置101を、情報処理システム200内の求解処理装置201に適用した場合を例に挙げて説明する。情報処理システム200は、例えば、ヒト、モノなどのリソースの割当を自動化するサービスに適用される。
図2は、情報処理システム200のシステム構成例を示す説明図である。図2において、情報処理システム200は、求解処理装置201と、ユーザ端末202と、を含む。情報処理システム200において、求解処理装置201およびユーザ端末202は、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
ここで、求解処理装置201は、過去事例DB(Database)220を有し、求解対象の線形計画問題の解を求めるコンピュータである。求解処理装置201は、例えば、サーバにより実現される。ただし、求解処理装置201は、PC(Personal Computer)により実現されてもよい。
過去事例DB220は、過去の割当結果データを記憶する。割当結果データは、ヒト、モノなどのリソースの割当結果を示す。例えば、割当結果データは、病院における看護師のシフトの割当結果や、手術室の割当結果などを示す。過去事例DB220の記憶内容については、図4を用いて後述する。求解対象の線形計画問題の具体例については、図5を用いて後述する。
ユーザ端末202は、情報処理システム200のユーザが使用するコンピュータである。ユーザ端末202は、例えば、PC、タブレットPCなどである。ユーザ端末202において、ユーザは、例えば、求解処理装置201に対して、求解対象となる線形計画問題を指定することにより、その線形計画問題の求解結果を得ることができる。
なお、情報処理システム200には、例えば、複数のユーザ端末202が含まれていてもよい。また、求解処理装置201は、例えば、複数のコンピュータにより実現されることにしてもよい。また、求解処理装置201は、例えば、ユーザ端末202により実現されることにしてもよい。また、過去事例DB220は、求解処理装置201がアクセス可能な他のコンピュータが有していてもよい。この場合、求解処理装置201は、他のコンピュータを介して、過去事例DB220を参照することができる。
(求解処理装置201のハードウェア構成例)
図3は、求解処理装置201のハードウェア構成例を示すブロック図である。図3において、求解処理装置201は、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、求解処理装置201の全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
通信I/F305は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータ(例えば、図2に示したユーザ端末202)に接続される。そして、通信I/F305は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
なお、求解処理装置201は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有することにしてもよい。また、図2に示したユーザ端末202についても、求解処理装置201と同様のハードウェア構成により実現することができる。ただし、ユーザ端末202は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有する。
(過去事例DB220の記憶内容)
つぎに、求解処理装置201が有する過去事例DB220の記憶内容について説明する。過去事例DB220は、例えば、図3に示したメモリ302、ディスク304などの記憶装置により実現される。
図4は、過去事例DB220の記憶内容の一例を示す説明図である。図4において、過去事例DB220は、過去事例データ(例えば、過去事例データ400-1-400-3)を記憶する。過去事例データは、過去の割当結果を示す。過去の割当結果は、例えば、人手により割り当てられた結果を示す。ただし、過去の割当結果は、任意の割当アルゴリズムにより自動で割り当てられた結果を示すものであってもよく、また、自動で割り当てられたものを人手により修正したものであってもよい。
例えば、過去事例データ400-1は、4週間分の各日(日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日)のXのシフトの割当結果(0または1)を示す。割当結果「0」は、シフトが割り当てられていないことを示す。割当結果「1」は、シフトが割り当てられたことを示す。
Xは、看護師の名称である。パターンは、勤務時間帯を示す。パターン1は、日勤を示す。パターン2は、夜勤を示す。パターン3は、深夜勤を示す。例えば、1週目の日曜日を例に挙げると、Xにパターン3のシフトが割り当てられたことを示す。また、2週目の日曜日を例に挙げると、Xにパターン2のシフトが割り当てられたことを示す。
(求解対象の線形計画問題の具体例)
つぎに、図5を用いて、求解対象の線形計画問題の具体例について説明する。
図5は、求解対象の線形計画問題の具体例を示す説明図である。図5において、線形計画問題500は、4週間分の各日(日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日)の看護師(X,Y,Z,…)のシフトを割り当てるための問題である。ただし、図5では、線形計画問題500のうちの要素群を示している。
線形計画問題500において、例えば、vX1,vX2,…,vX66は、各日のXのシフトの割当結果を示す変数である。また、vY1,vY2,…,vY66は、各日のYのシフトの割当結果を示す変数である。また、vZ1,vZ2,…,vZ66は、各日のZのシフトの割当結果を示す変数である。
なお、図4に示した過去事例データ400-1は、線形計画問題500に含まれる変数(例えば、vX1,vX2,…)についての過去の割当結果を示す情報に相当する。
(求解処理装置201の機能的構成例)
図6は、求解処理装置201の機能的構成例を示すブロック図である。図6において、求解処理装置201は、受付部601と、決定部602と、分割部603と、求解部604と、出力部605と、を含む。受付部601~出力部605は制御部となる機能であり、具体的には、例えば、図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
受付部601は、求解対象の線形計画問題の入力を受け付ける。線形計画問題は、目的関数と制約式群とを含む。具体的には、例えば、受付部601は、図2に示したユーザ端末202から対象問題情報を受信することにより、受信した対象問題情報に含まれる線形計画問題の入力を受け付ける。
ここで、対象問題情報は、求解対象の線形計画問題(例えば、図5に示した線形計画問題500)と許容時間tlimitとを含む。許容時間tlimitは、求解対象の線形計画問題の求解にかかる許容時間である。また、受付部601は、不図示の入力装置を用いた操作入力により、求解対象の線形計画問題の入力を受け付けることにしてもよい。
また、受付部601は、求解対象の線形計画問題の問題IDの指定を受け付けることにしてもよい。この場合、受付部601は、指定された問題IDの線形計画問題を、不図示の問題DBから抽出することにより、求解対象の線形計画問題の入力を受け付けることにしてもよい。
決定部602は、求解対象の線形計画問題の求解にかかる許容時間tlimitに基づいて、線形計画問題の分割粒度を決定する。分割粒度は、線形計画問題を部分問題に分割する際の単位である。許容時間tlimitは、例えば、対象問題情報に含まれる。
具体的には、例えば、決定部602は、線形計画問題の問題サイズと許容時間tlimitとに基づいて、許容サイズdmaxを探索する。許容サイズdmaxは、許容時間tlimit内に解ける最大の問題サイズである。この際、決定部602は、例えば、二分探索アルゴリズムを用いて、問題サイズと求解時間との対応関係を示す予測モデルに基づいて、許容サイズdmaxを探索することにしてもよい。そして、決定部602は、探索した許容サイズdmaxに基づいて、線形計画問題の分割粒度を決定する。
以下の説明では、求解対象の線形計画問題を「元の問題」と表記する場合がある。なお、許容サイズdmaxの探索例については、図7および図8を用いて後述する。
また、決定部602は、元の問題の問題サイズが日にちによって定められる場合、分割粒度を週または月のいずれかの単位に決定してもよい。具体的には、例えば、分割部603は、週単位(または、月単位)の問題サイズが許容サイズdmax以下の場合、分割粒度を週単位(または、月単位)に決定する。
分割部603は、決定された分割粒度に基づいて、元の問題を分割する。元の問題を分割するとは、要素数を減らすように、元の問題から部分問題(目的関数、制約式)を作成することに相当する。具体的には、例えば、分割部603は、第1の作成部606と、第2の作成部607とを含む。
第1の作成部606は、元の問題の目的関数から、決定された分割粒度に基づき元の問題から分割されるそれぞれの部分問題の目的関数を作成する。具体的には、例えば、第1の作成部606は、各部分問題について、元の問題から各部分問題に対応する変数を抽出する。
例えば、期間(日数)によって元の問題を分割する場合、各部分問題に対応する変数は、各部分問題に対応する期間に含まれる変数である。そして、第1の作成部606は、各部分問題について、元の問題の目的関数から、抽出した変数とは異なる変数を除去することにより、各部分問題の目的関数を作成する。
一例として、元の問題を「線形計画問題500」とし、元の問題500の目的関数を「min(sum(日曜日の全ての変数))=min(vX1+vX2+vX3+…+vX64+vX65+…)」とする。この目的関数は、例えば、日曜日は極力シフトを入れないようにするために設定される(割当数を最小にする)。また、ある部分問題に含まれる変数を「vX1,vX2,vX3」とする。
この場合、第1の作成部606は、元の問題500の目的関数「min(sum(日曜日の全ての変数))=min(vX1+vX2+vX3+…+vX64+vX65+…)」から、変数vX1,vX2,vX3とは異なる変数を除去することにより、部分問題の目的関数を作成する。ここでは、部分問題の目的関数は、「min(sum(当該期間の日曜日の全ての変数))=min(vX1+vX2+vX3)」となる。当該期間は、部分問題に対応する期間(例えば、1週目)である。
以下の説明では、元の問題から分割される部分問題を「部分問題P1~Pk」と表記する場合がある(k:1以上の自然数)。また、部分問題P1~Pkのうちの任意の部分問題を「部分問題Pi」と表記する場合がある(i=1,2,…,k)。
第2の作成部607は、元の問題の制約式群と、元の問題に含まれる変数についての過去の割当結果データとに基づいて、部分問題P1~Pkのそれぞれの部分問題Piの制約式を作成する。元の問題に含まれる変数についての過去の割当結果データは、元の問題に対応する過去の割当結果データである。元の問題に対応する過去の割当結果データは、例えば、元の問題と同一期間(日数)、同一人のシフト割当結果を示す。
過去の割当結果データは、例えば、対象問題情報において元の問題(求解対象の線形計画問題)とともに指定されることにしてもよい。また、第2の作成部607は、例えば、図4に示した過去事例DB220を参照して、元の問題と同一期間(日数)、同一人のシフト割当結果を示す過去事例データを検索することにしてもよい。元の問題を「線形計画問題500」とすると、元の問題に含まれる変数についての過去の割当結果データは、例えば、図4に示した過去事例データ400-1である。
具体的には、例えば、第2の作成部607は、元の問題の制約式群のうち、各部分問題Piに含まれる変数のみで成り立つ制約式を抽出することによって、各部分問題Piの第1の制約式を作成する。これにより、第2の作成部607は、元の問題の制約式群から、部分問題Piに関わる制約式を抽出する。
一例として、元の問題を「線形計画問題500」とし、元の問題500の制約式として、制約式1「vX1+vY1+vZ1=1」と制約式2「vX2+vX3+vX23+vX24+vX43+vX45+vX65+vX66≦3」があるとする。制約式1は、部分問題P1に現れる変数のみで成り立つ式であるとする。また、制約式2は、部分問題P1には含まれない変数も含まれる式であるとする。この場合、第2の作成部607は、制約式1,2のうち、部分問題P1に含まれる変数のみで成り立つ制約式1を抽出することによって、部分問題P1の第1の制約式を作成する。
また、第2の作成部607は、元の問題の制約式群のうちの第1の制約式を除く残余の制約式と過去の割当結果データとに基づいて、各部分問題Piの第2の制約式を作成する。より詳細に説明すると、例えば、第2の作成部607は、残余の制約式から、部分問題Piに含まれる変数のみの項を抽出する。
つぎに、第2の作成部607は、過去の割当結果データを参照して、抽出した各項の値を特定する。そして、第2の作成部607は、特定した各項の値に基づいて、抽出した各項を含む第2の制約式を作成する。なお、元の問題(求解対象の線形計画問題)の分割例については、図9を用いて後述する。また、部分問題Piの制約式(第2の制約式)の作成例については、図10~図13を用いて後述する。
求解部604は、部分問題P1~Pkのそれぞれの部分問題Piについて作成した目的関数と制約式とに基づいて、それぞれの部分問題Piを順に解くことにより、元の問題の解を求める。具体的には、例えば、求解部604は、既存のソルバ(線形計画ソルバ)を用いて、作成した部分問題Piの目的関数と制約式とに基づいて、部分問題Piを求解する。
つぎに、求解部604は、部分問題Piの求解結果に基づいて、全ての変数について「変数=求解結果の値」という制約式を作成し、部分問題Pi+1の制約式として追加する。このように、部分問題Pi+1に含まれる一部の変数を既に求めた解で固定することで、部分問題Pi+1の問題サイズが小さくなる。
そして、求解部604は、既存のソルバを用いて、作成した部分問題Pi+1の目的関数と制約式(部分問題Piの求解結果をもとに追加した制約式を含む)とに基づいて、部分問題Pi+1を求解する。このようにして、求解部604は、部分問題P1~Pkを順に解くことにより、元の問題の解を求める。なお、元の問題の解を求める求解処理の具体例については、図14Aおよび図14Bを用いて後述する。
出力部605は、求解結果を出力する。ここで、求解結果は、元の問題の解を示す。ただし、解が得られない場合がある。この場合、求解結果は、解なしを示す。出力部605の出力形式としては、例えば、メモリ302、ディスク304などの記憶装置への記憶、通信I/F305による他のコンピュータ(例えば、ユーザ端末202)への送信、不図示のディスプレイへの表示、不図示のプリンタへの印刷出力などがある。
上述した求解処理装置201の機能部は、例えば、情報処理システム200内の複数のコンピュータ(例えば、求解処理装置201、ユーザ端末202)により実現されることにしてもよい。
(許容サイズdmaxの探索例)
つぎに、図7および図8を用いて、許容サイズdmaxの探索例について説明する。
図7は、問題サイズと求解時間との対応関係を示す説明図である。図7において、グラフ700は、問題サイズの増加とともに増加する線形計画問題の求解時間を示す。グラフ700は、問題サイズと求解時間との対応関係を示す予測モデルに相当する。
決定部602は、例えば、グラフ700を参照して、許容時間tlimitに対して、問題サイズを変化させながら、求解時間が許容時間tlimit内となる許容サイズdmax(最大の問題サイズ)を二分探索によって求める。
ここで、予測モデルの具体例を用いて、許容サイズdmaxの算出例について説明する。ここでは、看護師のシフト割当を行うものとし、元の問題の問題サイズを「20人、30日」とし、元の問題を日にち(日数)で分割することによって、部分問題P1~Pkに分割する場合を想定する。
図8は、予測モデルの具体例を示す説明図である。図8において、テーブル800は、問題サイズ(日数)と求解時間(総計算時間)との対応関係を示す予測モデルの一例である。テーブル800は、例えば、予め生成されてメモリ302、ディスク304などの記憶装置に記憶されている。
テーブル800において、総計算時間(最大値)は、元の問題を各日数の問題に分割した際に、20人のシフト割当にかかる時間(最大値)を示す(単位:秒)。計算時間および必要実行回数は、元の問題を各日数の問題に分割した際に、各部分問題の求解処理にかかる時間と、求解処理の実行回数を示す。総計算時間(最大値)は、計算時間と必要実行回数を乗算した値となる。
ここで、許容時間tlimitを「tlimit=1800秒」とする。この場合、まず、決定部602は、分割する日数の単位を「30日」とし、テーブル800を参照して、総計算時間「24201」を特定する(探索のステップ0)。ここでは、総計算時間「24201」が許容時間tlimitを超えている。
このため、決定部602は、問題サイズが小さくなるように、次に調べる日数(問題サイズ)を算出する。ここでは、次に調べる日数は、「次に調べる日数=30-{(30-0)/2}=15」となる。この場合、決定部602は、分割する日数の単位を「15日」とし、テーブル800を参照して、総計算時間「311」を特定する(探索のステップ1)。ここでは、総計算時間「311」が許容時間tlimit内である。
このため、決定部602は、問題サイズが大きくなるように、次に調べる日数を算出する。ここでは、次に調べる日数は、「次に調べる日数=15+{(22-15)/2}=19(小数点以下四捨五入)」となる。この場合、決定部602は、分割する日数の単位を「19日」とし、テーブル800を参照して、総計算時間「1195」を特定する(探索のステップ3)。ここでは、総計算時間「1195」が許容時間tlimit内である。
このため、決定部602は、問題サイズが大きくなるように、次に調べる日数を算出する。ここでは、次に調べる日数は、「次に調べる日数=19+{(22-19)/2}=21(小数点以下四捨五入)」となる。この場合、決定部602は、分割する日数の単位を「21日」とし、テーブル800を参照して、総計算時間「2342」を特定する(探索のステップ4)。ここでは、総計算時間「2342」が許容時間tlimitを超えている。
このため、決定部602は、問題サイズが小さくなるように、次に調べる日数を算出する。ここでは、次に調べる日数は、「次に調べる日数=21-{(21-19)/2}=20」となる。この場合、決定部602は、分割する日数の単位を「20日」とし、テーブル800を参照して、総計算時間「1673」を特定する(探索のステップ5)。ここでは、総計算時間「1673」が許容時間tlimit内である。
また、分割する日数が「21日」のときは総計算時間「2342」が許容時間tlimitを超えている。このため、決定部602は、許容サイズdmaxを「20日」に決定する。なお、ここでは、元の問題を日にち(日数)で分割する場合を例に挙げて説明したが、これに限らない。例えば、決定部602は、元の問題を人数で分割する際の許容サイズdmaxを決定することにしてもよい。
(元の問題の分割例)
つぎに、図9を用いて、元の問題(求解対象の線形計画問題)の分割例について説明する。ここでは、元の問題として、図5に示した線形計画問題500を例に挙げて説明する。また、元の問題500の問題サイズを「16人、28日」とし、元の問題500を日にち(日数)で分割することによって、部分問題P1~Pkに分割する場合を想定する。
図9は、元の問題の分割例を示す説明図である。ここで、許容サイズdmaxを「dmax=8日」とする。ここでは、元の問題500の問題サイズが日にちによって定められている。このため、決定部602は、問題サイズが許容サイズdmax以下となるように、元の問題500を均等に分割しつつ、週または月の単位で分割する基準サイズdbaseを決定する。基準サイズdbaseは、分割粒度に相当する。
ここで、期間全体dtotalは、「dtotal=28日」である。このため、基準サイズdbaseは、例えば、許容サイズdmax以下の週の単位である「dbase=7」となる。この場合、各部分問題Piの問題サイズ(日にち)は、例えば、「i・dbase」となる(i=1,2,…,dtotal/dbase-1)。
図9の例では、分割部603は、決定された基準サイズdbaseに基づいて、例えば、元の問題500の先頭から週(7日)の単位で区切ることにより、元の問題500を部分問題901~903に分割する。部分問題901は、1週目に相当する。部分問題902は、1,2週目に相当する。部分問題903は、1~3週目に相当する。なお、図9では、各問題の一部を抜粋して表示している。
部分問題901の問題サイズは、「7日」である。部分問題902の問題サイズは、「14日」である。部分問題903の問題サイズは、「21日」である。求解処理装置201は、例えば、問題サイズが小さい順に、各部分問題901~903を解く。なお、部分問題902,903の問題サイズが許容サイズdmaxを超えているが、一連の求解処理の中で、一部の変数が既知となるため、実際の問題サイズは許容サイズdmax以下となる。
(部分問題Piの制約式の作成例)
つぎに、図10~図13を用いて、部分問題Piの制約式(第2の制約式)の作成例について説明する。ここでは、元の問題を「線形計画問題500」とし、図9に示したように元の問題500が部分問題901~903に分割された場合を想定する。
図10は、割当結果データの抽出例を示す説明図である。図10において、過去事例データ400-1が示されている。過去事例データ400-1は、元の問題500に含まれる変数についての過去の割当結果を示す。なお、図10では、過去事例データ400-1の一部を抜粋して表示している。
この場合、第2の作成部607は、例えば、過去事例データ400-1から、部分問題901(図9参照)に対応する過去の割当結果データを抽出する。ここで、部分問題901は、元の問題500の1週目に相当する。このため、第2の作成部607は、過去事例データ400-1から、1週目の割当結果データ1001を、部分問題901に対応する過去の割当結果データとして抽出する。割当結果データ1001は、部分問題901と同一期間、同一人の過去のシフト割当結果に相当する。
また、第2の作成部607は、例えば、過去事例データ400-1から、部分問題902(図9参照)に対応する過去の割当結果データを抽出する。ここで、部分問題902は、元の問題500の1,2週目に相当する。このため、第2の作成部607は、過去事例データ400-1から、1,2週目の割当結果データ1002を、部分問題902に対応する過去の割当結果データとして抽出する。割当結果データ1002は、部分問題902と同一期間、同一人の過去のシフト割当結果に相当する。
また、第2の作成部607は、例えば、過去事例データ400-1から、部分問題903(図9参照)に対応する過去の割当結果データを抽出する。ここで、部分問題903は、元の問題500の1~3週目に相当する。このため、第2の作成部607は、過去事例データ400-1から、1~3週目の割当結果データ1003を、部分問題903に対応する過去の割当結果データとして抽出する。割当結果データ1003は、部分問題903と同一期間、同一人の過去のシフト割当結果に相当する。
図11~図13は、部分問題の制約式の作成例を示す説明図である。図11において、部分問題901の制約式(第2の制約式)を作成する場合について説明する。ここで、制約式「vX2+vX3+vX23+vX24+vX43+vX45+vX65+vX66≦3」は、元の問題500の制約式の一つであり、部分問題901には含まれない変数も含まれる制約式であるとする。
この場合、第2の作成部607は、元の問題500の制約式「vX2+vX3+vX23+vX24+vX43+vX45+vX65+vX66≦3」の左辺から、部分問題901に含まれる変数「vX2,vX3」のみの項を抽出して、下記式(1)のような新たな制約式を作成する。ただし、C1は、変数である。
vX2+vX3=C1 ・・・(1)
つぎに、第2の作成部607は、部分問題901に対応する過去の割当結果データ1001を参照して、上記式(1)に含まれる変数vX2,vX3と同じ変数に対する割当結果(値)を特定する。ここでは、変数vX2に対する割当結果「0」と、変数vX3に対する割当結果「1」とが特定される。
そして、第2の作成部607は、特定した割当結果(値)を、上記式(1)の左辺に代入することにより、C1の値を算出する。ここでは、C1の値は、「1」となる。第2の作成部607は、算出したC1の値を上記式(1)に代入することにより、下記式(2)のような制約式を、部分問題901の制約式(第2の制約式)として作成する。
vX2+vX3=1 ・・・(2)
なお、ここでは、上記式(1)のような等式によって制約式を表す場合を例に挙げて説明したが、これに限らない。例えば、第2の作成部607は、上記式(1)の代わりに、下記式(3)のような、不等式によって表される新たな制約式を作成することにしてもよい。ただし、C1は、変数である。aは、定数である。
C1-a≦vX2+vX3≦C1+a ・・・(3)
図12において、部分問題902の制約式(第2の制約式)を作成する場合について説明する。ここで、制約式「vX2+vX3+vX23+vX24+vX43+vX45+vX65+vX66≦3」は、元の問題500の制約式の一つであり、部分問題902には含まれない変数も含まれる制約式であるとする。
この場合、第2の作成部607は、元の問題500の制約式「vX2+vX3+vX23+vX24+vX43+vX45+vX65+vX66≦3」の左辺から、部分問題902に含まれる変数「vX2,vX3,vX23,vX24」のみの項を抽出して、下記式(4)のような新たな制約式を作成する。ただし、C2は、変数である。
vX2+vX3+vX23+vX24=C2 ・・・(4)
つぎに、第2の作成部607は、部分問題902に対応する過去の割当結果データ1002を参照して、上記式(4)に含まれる変数vX2,vX3,vX23,vX24と同じ変数に対する割当結果(値)を特定する。ここでは、変数vX2に対する割当結果「0」と、変数vX3に対する割当結果「1」と、変数vX23に対する割当結果「1」と、変数vX24に対する割当結果「0」とが特定される。
そして、第2の作成部607は、特定した割当結果(値)を、上記式(4)の左辺に代入することにより、C2の値を算出する。ここでは、C2の値は、「2」となる。第2の作成部607は、算出したC2の値を上記式(4)に代入することにより、下記式(5)のような制約式を、部分問題902の制約式(第2の制約式)として作成する。
vX2+vX3+vX23+vX24=2 ・・・(5)
図13において、部分問題903の制約式(第2の制約式)を作成する場合について説明する。ここで、制約式「vX2+vX3+vX23+vX24+vX43+vX45+vX65+vX66≦3」は、元の問題500の制約式の一つであり、部分問題903には含まれない変数も含まれる制約式であるとする。
この場合、第2の作成部607は、元の問題500の制約式「vX2+vX3+vX23+vX24+vX43+vX45+vX65+vX66≦3」の左辺から、部分問題903に含まれる変数「vX2,vX3,vX23,vX24,vX43,vX45」のみの項を抽出して、下記式(6)のような新たな制約式を作成する。ただし、C3は、変数である。
vX2+vX3+vX23+vX24+vX43+vX45=C3 ・・・(6)
つぎに、第2の作成部607は、部分問題903に対応する過去の割当結果データ1003を参照して、上記式(6)に含まれる変数vX2,vX3,vX23,vX24,vX43,vX45と同じ変数に対する割当結果(値)を特定する。ここでは、変数vX2に対する割当結果「0」と、変数vX3に対する割当結果「1」と、変数vX23に対する割当結果「1」と、変数vX24に対する割当結果「0」と、変数vX43に対する割当結果「1」と、変数vX45に対する割当結果「0」とが特定される。
そして、第2の作成部607は、特定した割当結果(値)を、上記式(6)の左辺に代入することにより、C3の値を算出する。ここでは、C3の値は、「3」となる。第2の作成部607は、算出したC3の値を上記式(6)に代入することにより、下記式(7)のような制約式を、部分問題903の制約式(第2の制約式)として作成する。
vX2+vX3+vX23+vX24+vX43+vX45=3 ・・・(7)
(求解処理の具体例)
図14Aおよび図14Bを用いて、元の問題500の解を求める求解処理の具体例について説明する。
図14Aおよび図14Bは、求解処理の具体例を示す説明図である。図14Aにおいて、まず、求解部604は、既存のソルバを用いて、作成した部分問題901の目的関数と制約式とに基づいて、部分問題901を求解する。この結果、求解結果1401が得られたとする。求解結果1401は、部分問題901に含まれる各変数の値を示す。
つぎに、求解部604は、求解結果1401を参照して、部分問題901に含まれる全ての変数について、「変数=求解結果の値」という制約式を作成し、部分問題902の制約式として追加する。例えば、部分問題901に含まれる変数vX1について、求解結果1401の値が「0」であったとする。この場合、求解部604は、変数vX1について、「vX1=0」という制約式を作成し、部分問題902の制約式として追加する。
このようにして、部分問題902に含まれる一部の変数を既に求めた解で固定することで、部分問題902の問題サイズが小さくなる。そして、求解部604は、既存のソルバを用いて、作成した部分問題902の目的関数と制約式(求解結果1401をもとに追加した制約式を含む)とに基づいて、部分問題902を求解する。この結果、求解結果1402が得られたとする。求解結果1402は、部分問題902に含まれる各変数の値を示す。
図14Bにおいて、つぎに、求解部604は、求解結果1401,1402を参照して、部分問題902に含まれる全ての変数について、「変数=求解結果の値」という制約式を作成し、部分問題903の制約式として追加する。ただし、部分問題901に含まれる変数についての制約式は、作成済みのものを流用してもよい。
例えば、部分問題902に含まれる変数vX22について、求解結果1402の値が「0」であったとする。この場合、求解部604は、変数vX22について、「vX22=0」という制約式を作成し、部分問題903の制約式として追加する。このようにして、部分問題903に含まれる一部の変数を既に求めた解で固定することで、部分問題903の問題サイズが小さくなる。
そして、求解部604は、既存のソルバを用いて、作成した部分問題903の目的関数と制約式(求解結果1401,1402をもとに追加した制約式を含む)とに基づいて、部分問題903を求解する。この結果、求解結果1403が得られたとする。求解結果1403は、部分問題903に含まれる各変数の値を示す。
つぎに、求解部604は、求解結果1401~1403を参照して、部分問題903に含まれる全ての変数について、「変数=求解結果の値」という制約式を作成し、元の問題500の制約式として追加する。ただし、部分問題901,902に含まれる変数についての制約式は、作成済みのものを流用してもよい。
例えば、部分問題903に含まれる変数vX43について、求解結果1403の値が「0」であったとする。この場合、求解部604は、変数vX43について、「vX43=0」という制約式を作成し、元の問題500の制約式として追加する。このようにして、元の問題500に含まれる一部の変数を既に求めた解で固定することで、元の問題500の問題サイズが小さくなる。
そして、求解部604は、既存のソルバを用いて、元の問題500の目的関数と制約式(求解結果1401~1403をもとに追加した制約式を含む)とに基づいて、元の問題500を求解する。この結果、最終解1404が得られる。最終解1404は、元の問題500の解であり、元の問題500に含まれる各変数の値を示す。
(求解処理装置201の割当処理手順)
つぎに、図15を用いて、求解処理装置201の割当処理手順について説明する。
図15は、求解処理装置201の割当処理手順の一例を示すフローチャートである。図15において、求解処理装置201は、対象問題情報を受け付けたか否かを判断する(ステップS1501)。ここで、求解処理装置201は、対象問題情報を受け付けるのを待つ(ステップS1501:No)。
求解処理装置201は、対象問題情報を受け付けた場合(ステップS1501:Yes)、許容サイズ探索処理を実行する(ステップS1502)。許容サイズ探索処理の具体的な処理手順については、図16を用いて後述する。
つぎに、求解処理装置201は、求解対象の線形計画問題(元の問題)の問題分割処理を実行する(ステップS1503)。問題分割処理の具体的な処理手順については、図17を用いて後述する。そして、求解処理装置201は、部分問題のルール抽出処理を実行する(ステップS1504)。ルール抽出処理の具体的な処理手順については、図18を用いて後述する。
つぎに、求解処理装置201は、求解対象の線形計画問題の求解処理を実行する(ステップS1505)。求解処理の具体的な処理手順については、図19を用いて後述する。そして、求解処理装置201は、求解対象の線形計画問題の求解結果を出力して(ステップS1506)、本フローチャートによる一連の処理を終了する。
これにより、求解処理装置201は、問題全体を通した制約を満たした解を、ユーザが許容可能な時間内に得ることができる。
つぎに、図16を用いて、図15に示したステップS1502の許容サイズ探索処理の具体的な処理手順について説明する。
図16は、許容サイズ探索処理の具体的処理手順の一例を示すフローチャートである。図16のフローチャートにおいて、まず、求解処理装置201は、二分探索アルゴリズムを用いて、線形計画問題の問題サイズと予測モデルから、許容サイズdmaxを探索する(ステップS1601)。
そして、求解処理装置201は、探索した許容サイズdmaxを記録して(ステップS1602)、許容サイズ探索処理を呼び出したステップに戻る。これにより、求解処理装置201は、許容時間tlimit内に解ける最大の問題サイズを求めることができる。
つぎに、図17を用いて、図15に示したステップS1503の問題分割処理の具体的な処理手順について説明する。ここでは、元の問題(処理対象の線形計画問題)の問題サイズが日にちによって定められており、元の問題を期間(日数)で分割する場合を例に挙げて説明する。許容サイズdmaxは、例えば、求解可能期間に相当する。
図17は、問題分割処理の具体的処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、求解処理装置201は、許容サイズdmaxから、元の問題を分割する基準サイズdbaseを決定する(ステップS1701)。dbaseは、例えば、許容サイズdmax以下の週または月の単位である。
そして、求解処理装置201は、決定した基準サイズdbaseに基づいて、k個の期間T{t1,t2,…,tk}を設定する(ステップS1702)。kは、例えば、「k=dtotal/dbase」である。dtotalは、元の問題の期間全体を示す。期間tiは、1日目からi・dbase目までの期間である(i=1,2,…,k)。
つぎに、求解処理装置201は、「i=1」とし(ステップS1703)、元の問題から期間tiに含まれる変数を抽出する(ステップS1704)。そして、求解処理装置201は、元の問題の目的関数から範囲外の変数を除去して、新たな目的関数を作成する(ステップS1705)。範囲外の変数は、ステップS1704において抽出された変数とは異なる変数である。
つぎに、求解処理装置201は、元の問題の制約式群から範囲外の変数が含まれる制約式を除去して、新たな制約式を作成する(ステップS1706)。そして、求解処理装置201は、作成した目的関数と制約式を、期間tiの部分問題Piとして出力する(ステップS1707)。
つぎに、求解処理装置201は、「i=i+1」として(ステップS1708)、iがkより大きくなったか否かを判断する(ステップS1709)。ここで、iがk以下の場合(ステップS1709:No)、求解処理装置201は、ステップS1704に戻る。一方、iがkより大きくなった場合(ステップS1709:Yes)、求解処理装置201は、問題分割処理を呼び出したステップに戻る。
これにより、基準サイズdbase(分割粒度)に基づき元の問題(求解対象の線形計画問題)を、各期間t1~tkについての部分問題P1~Pkに分割することができる。
つぎに、図18を用いて、図15に示したステップS1504のルール抽出処理の具体的な処理手順について説明する。
図18は、ルール抽出処理の具体的処理手順の一例を示すフローチャートである。図18のフローチャートにおいて、まず、求解処理装置201は、「i=1」とし(ステップS1801)、元の問題の制約式群のうち、図17に示したステップS1706において作成された制約式を除く残余の制約式から、部分問題Piに含まれる変数を含む制約式を抽出する(ステップS1802)。
つぎに、求解処理装置201は、抽出した制約式のうち選択されていない未選択の制約式を選択する(ステップS1803)。そして、求解処理装置201は、選択した制約式から部分問題Piに含まれない変数を除去する(ステップS1804)。つぎに、求解処理装置201は、過去の割当結果データを参照して、残余の各項を含む新たな制約式を作成する(ステップS1805)。
そして、求解処理装置201は、作成した制約式を、部分問題Piの制約式に追加する(ステップS1806)。つぎに、求解処理装置201は、抽出した制約式のうち選択されていない未選択の制約式があるか否かを判断する(ステップS1807)。ここで、未選択の制約式がある場合(ステップS1807:Yes)、求解処理装置201は、ステップS1803に戻る。
一方、未選択の制約式がない場合(ステップS1807:No)、求解処理装置201は、「i=i+1」として(ステップS1808)、iがkより大きくなったか否かを判断する(ステップS1809)。ここで、iがk以下の場合(ステップS1809:No)、求解処理装置201は、ステップS1802に戻る。一方、iがkより大きくなった場合(ステップS1809:Yes)、求解処理装置201は、ルール抽出処理を呼び出したステップに戻る。
これにより、過去の割当結果データを利用して、各部分問題Piの制約式(第2の制約式)を作成することができる。
つぎに、図19を用いて、図15に示したステップS1505の求解処理の具体的な処理手順について説明する。
図19は、求解処理の具体的処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、求解処理装置201は、「i=1」とし(ステップS1901)、線形計画ソルバを用いて、部分問題P1~Pkのうちの部分問題Piを求解する(ステップS1902)。
そして、求解処理装置201は、求解できたか否かを判断する(ステップS1903)。ここで、求解できなかった場合(ステップS1903:No)、求解処理装置201は、ステップS1910に移行する。一方、求解できた場合(ステップS1903:Yes)、部分問題Piの求解結果に基づいて、全ての変数について「変数=求解結果の値」という新たな制約式を作成する(ステップS1904)。
そして、求解処理装置201は、作成した制約式を部分問題Pi+1(または、元の問題)の制約式として追加する(ステップS1905)。つぎに、求解処理装置201は、「i=i+1」として(ステップS1906)、iがkより大きくなったか否かを判断する(ステップS1907)。
ここで、iがk以下の場合(ステップS1907:No)、求解処理装置201は、ステップS1902に戻る。一方、iがkより大きくなった場合(ステップS1907:Yes)、求解処理装置201は、線形計画ソルバを用いて、元の問題を求解する(ステップS1908)。
そして、求解処理装置201は、求解できたか否かを判断する(ステップS1909)。ここで、求解できた場合(ステップS1909:Yes)、本フローチャートによる一連の処理を終了する。一方、求解できなかった場合(ステップS1909:No)、求解処理装置201は、求解結果を解なしとして(ステップS1910)、求解処理を呼び出したステップに戻る。
これにより、求解処理装置201は、元の問題を部分問題P1~Pkに分割して求解することができる。また、求解処理装置201は、各部分問題Piに含まれる一部の変数を既に求めた解で固定することで、各部分問題Piの問題サイズを抑えて、元の問題の求解にかかる時間の短縮化を図ることができる。
以上説明したように、実施の形態にかかる求解処理装置201によれば、元の問題(求解対象の線形計画問題)の求解にかかる許容時間tlimitに基づいて、元の問題の分割粒度(基準サイズdbase)を決定することができる。また、求解処理装置201によれば、決定した分割粒度に基づき元の問題から分割される部分問題P1~Pkの各部分問題Piの目的関数を、元の問題の目的関数から作成し、元の問題の制約式群と、元の問題に含まれる変数についての過去の割当結果データとに基づいて、各部分問題Piの制約式を作成することができる。そして、求解処理装置201によれば、各部分問題Piについて作成した目的関数と制約式とに基づいて、各部分問題Piを順に解くことにより、元の問題の解を求めることができる。
これにより、求解処理装置201は、元の問題を部分問題P1~Pkに分割して求解することで、元の問題の求解時間を短縮することができ、問題全体を通した制約を満たした解を、ユーザが許容可能な時間内に求めることができる。
また、求解処理装置201によれば、元の問題の制約式群のうち、各部分問題Piに含まれる変数のみで成り立つ制約式を抽出することによって、各部分問題Piの第1の制約式を作成することができる。また、求解処理装置201によれば、元の問題の制約式群のうちの第1の制約式を除く残余の制約式と過去の割当結果データとに基づいて、各部分問題Piの第2の制約式を作成することができる。
これにより、求解処理装置201は、部分問題Piを作成するにあたり、元の問題の制約式を流用しつつ、部分問題Piには現れない変数を含む制約式については、過去の割当結果を利用して値を補完して新たな制約式を作成することができる。
また、求解処理装置201によれば、元の問題の問題サイズと許容時間tlimitとに基づいて、許容サイズdmaxを探索し、探索した許容サイズdmaxに基づいて、元の問題の分割粒度を決定することができる。具体的には、例えば、求解処理装置201は、二分探索アルゴリズムを用いて、問題サイズと求解時間との対応関係を示す予測モデルに基づいて、許容サイズdmaxを探索する。
これにより、求解処理装置201は、最終的な解が制約を満たす確率が下がらないように、できるだけ大きい問題サイズで分割しつつ、許容時間tlimit内に解が得られるような分割粒度を決定することができる。
また、求解処理装置201によれば、元の問題の問題サイズが日にちによって定められる場合、分割粒度を週または月のいずれかの単位とすることができる。
これにより、求解処理装置201は、問題サイズが日にちによって定められる場合、週や月の単位で制約がかけられることが多いため、週または月の単位を分割粒度とすることで、部分問題Piの制約式として良好な結果を導きやすいものを作成することが可能となる。
また、求解処理装置201によれば、元の問題の解を出力することができる。
これにより、求解処理装置201は、看護師やオペレータなどのシフト割当結果(求解対象の線形計画問題の解)を提供することができる。
これらのことから、求解処理装置201によれば、問題全体を通した制約を満たした解を、ユーザが許容可能な時間内に得ることができる。これにより、シフト勤務の従業員(例えば、看護師、オペレータなど)の勤務スケジュールや、手術室などの使用スケジュールといった、これまで手作業で行われていた割当業務を自動化して省力化することができる。
なお、本実施の形態で説明した求解方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本求解プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本求解プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した情報処理装置101(求解処理装置201)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)求解対象の線形計画問題の求解にかかる許容時間に基づいて、前記線形計画問題を複数の部分問題に分割する際の分割粒度を決定し、
決定した前記分割粒度に基づき前記線形計画問題から分割されるそれぞれの部分問題の目的関数を、前記線形計画問題の目的関数から作成し、
前記線形計画問題の制約式群と、前記線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、前記それぞれの部分問題の制約式を作成し、
前記それぞれの部分問題について作成した前記目的関数と前記制約式とに基づいて、前記それぞれの部分問題を順に解くことにより、前記線形計画問題の解を求める、
処理を実行する制御部を有することを特徴とする情報処理装置。
(付記2)前記制御部は、
前記制約式群のうち、前記それぞれの部分問題に含まれる変数のみで成り立つ制約式を抽出することによって、前記それぞれの部分問題の第1の制約式を作成し、
前記制約式群のうちの前記第1の制約式を除く残余の制約式と前記過去の割当結果データとに基づいて、前記それぞれの部分問題の第2の制約式を作成する、
処理を実行することを特徴とする付記1に記載の情報処理装置。
(付記3)前記制御部は、
前記線形計画問題の問題サイズと前記許容時間とに基づいて、前記許容時間内に解ける最大の問題サイズを探索し、
探索した前記最大の問題サイズに基づいて、前記分割粒度を決定する、
処理を実行することを特徴とする付記1または2に記載の情報処理装置。
(付記4)前記制御部は、
二分探索アルゴリズムを用いて、問題サイズと求解時間との対応関係を示すモデルに基づいて、前記許容時間内に解ける最大の問題サイズを探索する、処理を実行することを特徴とする付記3に記載の情報処理装置。
(付記5)前記制御部は、
前記線形計画問題の問題サイズが日にちによって定められる場合、前記分割粒度を週または月のいずれかの単位とする、ことを特徴とする付記3または4に記載の情報処理装置。
(付記6)前記制御部は、
前記それぞれの部分問題について、前記線形計画問題の目的関数から当該部分問題に含まれる変数とは異なる変数を除去することにより、前記それぞれの部分問題の目的関数を作成する、ことを特徴とする付記1~5のいずれか一つに記載の情報処理装置。
(付記7)前記制御部は、
前記線形計画問題の解を出力する、ことを特徴とする付記1~6のいずれか一つに記載の情報処理装置。
(付記8)求解対象の線形計画問題の求解にかかる許容時間に基づいて、前記線形計画問題を複数の部分問題に分割する際の分割粒度を決定し、
決定した前記分割粒度に基づき前記線形計画問題から分割されるそれぞれの部分問題の目的関数を、前記線形計画問題の目的関数から作成し、
前記線形計画問題の制約式群と、前記線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、前記それぞれの部分問題の制約式を作成し、
前記それぞれの部分問題について作成した前記目的関数と前記制約式とに基づいて、前記それぞれの部分問題を順に解くことにより、前記線形計画問題の解を求める、
処理をコンピュータが実行することを特徴とする求解方法。
(付記9)求解対象の線形計画問題の求解にかかる許容時間に基づいて、前記線形計画問題を複数の部分問題に分割する際の分割粒度を決定し、
決定した前記分割粒度に基づき前記線形計画問題から分割されるそれぞれの部分問題の目的関数を、前記線形計画問題の目的関数から作成し、
前記線形計画問題の制約式群と、前記線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、前記それぞれの部分問題の制約式を作成し、
前記それぞれの部分問題について作成した前記目的関数と前記制約式とに基づいて、前記それぞれの部分問題を順に解くことにより、前記線形計画問題の解を求める、
処理をコンピュータに実行させることを特徴とする求解プログラム。
101 情報処理装置
110,500 線形計画問題
120 目的関数
130 制約式群
140,1001,1002,1003 割当結果データ
200 情報処理システム
201 求解処理装置
202 ユーザ端末
210 ネットワーク
220 過去事例DB
300 バス
301 CPU
302 メモリ
303 ディスクドライブ
304 ディスク
305 通信I/F
306 可搬型記録媒体I/F
307 可搬型記録媒体
601 受付部
602 決定部
603 分割部
604 求解部
605 出力部
606 第1の作成部
607 第2の作成部
700 グラフ
800 テーブル
901,902,903 部分問題
1401,1402,1403 求解結果
1404 最終解

Claims (7)

  1. 求解対象の線形計画問題の求解にかかる許容時間に基づいて、前記線形計画問題を複数の部分問題に分割する際の分割粒度を決定し、
    決定した前記分割粒度に基づき前記線形計画問題から分割されるそれぞれの部分問題の目的関数を、前記線形計画問題の目的関数から作成し、
    前記線形計画問題の制約式群と、前記線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、前記それぞれの部分問題の制約式を作成し、
    前記それぞれの部分問題について作成した前記目的関数と前記制約式とに基づいて、前記それぞれの部分問題を順に解くことにより、前記線形計画問題の解を求める、
    処理を実行する制御部を有することを特徴とする情報処理装置。
  2. 前記制御部は、
    前記制約式群のうち、前記それぞれの部分問題に含まれる変数のみで成り立つ制約式を抽出することによって、前記それぞれの部分問題の第1の制約式を作成し、
    前記制約式群のうちの前記第1の制約式を除く残余の制約式と前記過去の割当結果データとに基づいて、前記それぞれの部分問題の第2の制約式を作成する、
    処理を実行することを特徴とする請求項1に記載の情報処理装置。
  3. 前記制御部は、
    前記線形計画問題の問題サイズと前記許容時間とに基づいて、前記許容時間内に解ける最大の問題サイズを探索し、
    探索した前記最大の問題サイズに基づいて、前記分割粒度を決定する、
    処理を実行することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記制御部は、
    前記線形計画問題の問題サイズが日にちによって定められる場合、前記分割粒度を週または月のいずれかの単位とする、ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記制御部は、
    前記線形計画問題の解を出力する、ことを特徴とする請求項1~4のいずれか一つに記載の情報処理装置。
  6. 求解対象の線形計画問題の求解にかかる許容時間に基づいて、前記線形計画問題を複数の部分問題に分割する際の分割粒度を決定し、
    決定した前記分割粒度に基づき前記線形計画問題から分割されるそれぞれの部分問題の目的関数を、前記線形計画問題の目的関数から作成し、
    前記線形計画問題の制約式群と、前記線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、前記それぞれの部分問題の制約式を作成し、
    前記それぞれの部分問題について作成した前記目的関数と前記制約式とに基づいて、前記それぞれの部分問題を順に解くことにより、前記線形計画問題の解を求める、
    処理をコンピュータが実行することを特徴とする求解方法。
  7. 求解対象の線形計画問題の求解にかかる許容時間に基づいて、前記線形計画問題を複数の部分問題に分割する際の分割粒度を決定し、
    決定した前記分割粒度に基づき前記線形計画問題から分割されるそれぞれの部分問題の目的関数を、前記線形計画問題の目的関数から作成し、
    前記線形計画問題の制約式群と、前記線形計画問題に含まれる変数についての過去の割当結果データとに基づいて、前記それぞれの部分問題の制約式を作成し、
    前記それぞれの部分問題について作成した前記目的関数と前記制約式とに基づいて、前記それぞれの部分問題を順に解くことにより、前記線形計画問題の解を求める、
    処理をコンピュータに実行させることを特徴とする求解プログラム。
JP2021142683A 2021-09-01 2021-09-01 情報処理装置、求解方法、および求解プログラム Pending JP2023035664A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021142683A JP2023035664A (ja) 2021-09-01 2021-09-01 情報処理装置、求解方法、および求解プログラム
US17/842,859 US20230068699A1 (en) 2021-09-01 2022-06-17 Information processing device, solution method, and computer-readable recording medium storing solution program
EP22180118.6A EP4145311A1 (en) 2021-09-01 2022-06-21 Information processing device, solution method, and solution program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021142683A JP2023035664A (ja) 2021-09-01 2021-09-01 情報処理装置、求解方法、および求解プログラム

Publications (1)

Publication Number Publication Date
JP2023035664A true JP2023035664A (ja) 2023-03-13

Family

ID=82163424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021142683A Pending JP2023035664A (ja) 2021-09-01 2021-09-01 情報処理装置、求解方法、および求解プログラム

Country Status (3)

Country Link
US (1) US20230068699A1 (ja)
EP (1) EP4145311A1 (ja)
JP (1) JP2023035664A (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204891A (ja) 1991-11-29 1993-08-13 Hitachi Ltd 計画立案方法および装置
JP2009258969A (ja) 2008-04-16 2009-11-05 Toshiba Corp 進捗計画作成装置及び進捗計画作成方法
JP2018190417A (ja) 2017-05-02 2018-11-29 キヤノン株式会社 情報処理装置、情報処理方法

Also Published As

Publication number Publication date
US20230068699A1 (en) 2023-03-02
EP4145311A1 (en) 2023-03-08

Similar Documents

Publication Publication Date Title
Restrepo et al. Home healthcare integrated staffing and scheduling
Vanberkel et al. An exact approach for relating recovering surgical patient workload to the master surgical schedule
Lanzarone et al. Robust nurse-to-patient assignment in home care services to minimize overtimes under continuity of care
Lamiri et al. Column generation approach to operating theater planning with elective and emergency patients
Agnetis et al. A decomposition approach for the combined master surgical schedule and surgical case assignment problems
Molina-Pariente et al. A stochastic approach for solving the operating room scheduling problem
Joustra et al. To pool or not to pool in hospitals: a theoretical and practical comparison for a radiotherapy outpatient department
Gupta Queueing models for healthcare operations
Hans et al. Operating theatre planning and scheduling
KR102376755B1 (ko) 시간, 리소스 및 예산 제약 하에 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위한 프레임워크
CN110751358A (zh) 一种机场地面服务人员的排班方法、电子设备及存储介质
Lin et al. Resource allocation and outpatient appointment scheduling using simulation optimization
US20160292369A1 (en) Methods and Apparatus for Scheduling Optimization and Preferences Resolution Automation with No Show Overbooking
Xie et al. Integrated driver rostering problem in public bus transit
Davis et al. Theoretical bounds and approximation of the probability mass function of future hospital bed demand
Huo et al. Two machine scheduling subject to arbitrary machine availability constraint
CN112017765A (zh) 一种大型三甲教学医院超声科智能排班方法及系统
Faridimehr et al. Managing access to primary care clinics using scheduling templates
CN116502869B (zh) 任务分配方法、装置、电子设备和计算机可读介质
JP2023035664A (ja) 情報処理装置、求解方法、および求解プログラム
Zonderland Appointment planning in outpatient clinics and diagnostic facilities
Zander et al. Dynamic appointment scheduling with patient time preferences and different service time lengths
Dexter et al. Scheduling of cases in an ambulatory center
Hur et al. An investigation of shift and break flexibility with real-time break assignments using a rolling horizon approach
Morikawa et al. Performance evaluation of candidate appointment schedules using clearing functions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240509