JP5807978B2 - プログラム - Google Patents

プログラム Download PDF

Info

Publication number
JP5807978B2
JP5807978B2 JP2014047565A JP2014047565A JP5807978B2 JP 5807978 B2 JP5807978 B2 JP 5807978B2 JP 2014047565 A JP2014047565 A JP 2014047565A JP 2014047565 A JP2014047565 A JP 2014047565A JP 5807978 B2 JP5807978 B2 JP 5807978B2
Authority
JP
Japan
Prior art keywords
constraint
cnf
search
schedule
solution
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.)
Active
Application number
JP2014047565A
Other languages
English (en)
Other versions
JP2015172794A (ja
Inventor
孝幸 菅原
孝幸 菅原
Original Assignee
孝幸 菅原
孝幸 菅原
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 孝幸 菅原, 孝幸 菅原 filed Critical 孝幸 菅原
Priority to JP2014047565A priority Critical patent/JP5807978B2/ja
Publication of JP2015172794A publication Critical patent/JP2015172794A/ja
Application granted granted Critical
Publication of JP5807978B2 publication Critical patent/JP5807978B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、プログラム、スケジューリング方法及びスケジューリング装置に関し、特に解探索の高速化に寄与する。
従来より、所定の集団に属するスタッフのスケジュールを最適化するナーススケジューリング問題が一般的に知られている。この種のスケジューリング問題に対する解法として、特許文献2に開示されているように遺伝的アルゴリズムがある。また、非特許文献1にあるように、混合線形計画問題(MILP)や、充足可能性判定問題(SAT)による解法が提案されている。
特許4398672 特許4467286
SATを用いたナーススケジューリング問題の厳密解法の評価(スケジューリング)日本オペレーションズ・リサーチ学会春季研究発表会アブストラクト集 2010, 120-121, 2010-03-04 ナーススケジューリング問題における混合整数線形計画問題と充足可能性判定問題による厳密解法の比較 オペレーションズ・リサーチ : 経営の科学 55(11), 706-712, 2010-11-01 システムLSI設計自動化技術の基礎 97−110p 培風館 C. Sinz, "Towards an Optimal CNF Encoding of Boolean Cardinality Constraints", in International Conference on Principles and Practices of Constraint Programming , 2005
前記特許文献1では、仮割付によるヒューリスティクスによる方法、特許文献2で開示されたスケジューリング方法では、遺伝的アルゴリズムにより解の探索が行われ準最適解が得られる。しかしながら、解は準最適解であり常に最適解であるとは限らないという問題がある。非特許文献1では、MILPまたは、SATソルバを用いることにより最適解が得られることが示されている。非特許文献2ではSATソルバは、制約エラーの数が少ない問題ではMILPより性能的に優秀であることが示されているが、制約エラーが多い問題では、解の探索速度が遅くなる問題を指摘している。本発明は、この課題を解消するためになされたものである。
所定の集団に属するスタッフのスケジューリング制約に対する解をコンピュータを用いて解くためのプログラムは、各スタッフのスケジュールをCNFにエンコードする手段と制約エラーの部分和を得る手段と前記部分和に対して許容最大値を設定する手段と
前記部分和と制約エラーに対する総和をカウントする手段と前記総和に対して許容最大値を設定する手段と前記CNFに対する充足判定を行うSATソルバを有する。
本発明によれば、スケジュール制約の最適解を迅速に探索できる。
本発明によって得られた解の一出力例である。 本発明の係わるシステムの一部で、本発明からみると入力の一部になる。 本発明の係わるシステムの一部で、本発明からみると入力の一部になる。 本発明の係わるシステムの一部で、本発明からみると入力の一部になる。 本発明に係わるシステムのブロック図である。 CNFフォーマットの一例(Dimacsフォーマット)である。 制約の説明図である。 ソフト制約の実現方法の説明図である SATソルバを用いたソフト制約をエラーの最小値を求めるフローチャートである。 従来方法によるソフト制約エラーの計算部ブロック図である 本発明によるソフト制約エラーの計算ブロック図である。 従来と本発明のCNF節数の比較である。 タイムアウトを附加した本発明の実施例である。 本発明による優先度付きソフト制約の実行を方法を示すフローチャートである。 本発明による複数の解を得るフローチャートである。 本発明による出力を入力に戻して編集を行う方式のフローチャートである。 出力を入力に戻した後、ユーザが編集を行った後の画面の一例である。 UNSATの原因を解析する手順を示したフローチャートである。
以下、本発明の実施の形態を図面に基づいて説明する。
図1は、本発明によって得られた解をコンピュータの表示部に表示された出力例である。この勤務表の例では、病院の特定病棟に勤務する看護師(スタッフ)について勤務スケジュールを割り当てた結果が表示されている。各セルには、勤務形態(シフト)を示すシンボルが記入されている。各スタッフのスケジュールは、1日毎になんらかのシフトが割り当てられており、この例では、37日分のシフトが割りあてられている。
解を得るには、スケジュールの制約を入力することが必要である。図2は、制約の一つである初期条件の入力画面の例である。予め決まったスケジュールや、スタッフの希望勤務・休み等を入力する。
図3は、スタッフの勤務パターン(行制約)に関する制約例である。図4は、毎日のシフトに関する制約(列制約)である。図1、図2、図3、図4の関係をまとめたものが、図5である。すなわち、本発明による方法では、スケジュールに関する制約をCNFで表現し、SATソルバへの入力とする。
図6は、図2、図3、図4の制約をCNFで現した一部である。この例の場合、本発明を実施した結果、CNF変数の数が10103、CNF節数が、46155となった。CNF変数数とCNF節数は問題の規模と相関があるとされている。より大規模な問題またはより複雑な制約程、CNF変数数とCNF節数が大きくなる傾向にある。従って、同じ問題に対して、より小さなCNF変数数・CNF節数で表現できれば、よりSATソルバの求解高速化を期待できる。
制約は、図7のように必ず満たさなければいけないハード制約とソフト制約(必ずしも満たさなくてもよいができるだけ満たしたい制約)に分けられる。法令遵守や予め決まったスケジュール等はハード制約になる。ソフト制約は、できれば避けたい勤務パターン、例えば、スタッフにとって負荷の高い2連続深夜等がこれに該当する。
SATソルバ単体には、ソフト制約に対するハンドリング機構はない。SATソルバは、与えられたCNFに対して充足可能ならば、充足可能な1解を示すのみである。図8に示すように、ソフト制約の「できれば」は、ソフト制約エラーの総数を最小にすることに他ならない。
すなわち、スケジュール制約における最適化とは、ハード制約を全て満たした上で、ソフト制約エラー数(制約を遵守できない数)の総和を最小にすることである。ソフト制約エラーの最小解を求めるには、図9に示すように、ソフト制約エラーの総和が許容エラー値以下であるという制約を附加しそれに対して充足可能かどうかを見る、という探索操作を複数回行えば可能である。この探索手法としては、バイナリサーチやリニアサーチ等がある。
図10は、ソフト制約総数の計算構造を示した従来技術の実施例である。 全制約エラー総数は、各スタッフのスケジュール期間中のエラー数和と各日(列)に対する制約エラーの和になる。ソフト制約を実現するには、制約エラーを現す変数(x1,x2,..xn)がのうち真になる変数数が、ある許容設定値K以下であるときに、充足解が得られればよい。これを一般化すると数1式になる。
数1式を実現するCNF記述は、いくつか公知のものが知られている。例えば、非特許文献4に記載の方法によれば、そのCNF節数は、次のオーダになる。
図11は、本発明の根幹の構造図である。従来実施例に対して、制約エラーの部分和に対する制約を追加している。数2式により、従来実施方法と、本発明とで、CNF節数の比較を行ったものが、表1である。
表1から本発明では、従来技術に比べCNF節数が大幅に減少していることが分かる。表1の従来技術と本発明によるCNF節数の比をプロットしたのが、図12である。特に本発明による効果が、各スタッフの制約エラー数が少ないときに顕著であることを示している。CNF節数の大幅な減少は、所要メモリの減少、アクセス帯域の増加、キャッシュヒット率の向上が期待でき、求解速度の高速化が期待できる。この例では、スタッフ毎の制約エラー数の和を制約としたが、本発明はこれに限定するものではない。
尚、本発明は、前記実施形態について、以下のような構成としてもよい。
最適解ではなくとも、より迅速に準最適解を得たい場合がある。そのような場合に好適な構成を図13に示した。前記実施形態において、SATソルバ起動時にタイマーを設け、予め決められた時間内にSATソルバの解が得られなければ充足不能と判断し、次の許容エラー数Kについて探索を行う。
前記実施形態を複数回呼び出す構成(図14)としてもよい。図3のソフト制約レベル31が、ソフト制約のレベルの例である。この場合、まずソフト制約4について、最小値の探索が行われ、続いて3、2についても同様に行われる。つまり、ソフト制約4を優先的に最小値が求められたことになる。ソフトレベル3は、ソフトレベル2よりも優先的に最小値が求められる。
前記実施形態において、複数の解を得たい場合がある。そのような場合に、好適な構成を図15に示した。複数回、SATソルバを呼べばよいが、それでは同じ解が出力されてしまう場合がある。これを避けるためには、現在の解の否定を制約として入力すればよい。例えば、解の集合が{1 2 -3 4 5 }である場合には、{-1 -2 3 -4 -5} というCNF節をSATソルバに追加すればよい。こうすれば、現在の解があってはならないという制約になるので別解が得られることになる。
前記実施形態において、解の一部を編集して新たな解を得たい場合がある。そのような場合に好適な構成を図16に示す。解を得た後に、図17に示すようにユーザは、解を得たあとに必要な部分をブランクにする。その後、ブランク以外の箇所はハード制約としてCNFを生成するようにすれば、より探索空間を狭めることができ、必要な複数解を高速に得ることが出来る。
解は、常に充足可能(SAT)であるとは限らない。ユーザが入力するスケジュール制約に対して充分な人的資源が与えられない場合があるからである。SATソルバーは、このときUNSAT(充足不能)を示すだけであって、充足不能の原因がどこにあるかは分からない。しかしながら、図18の構成を取れば、UNSATの原因となる制約箇所を示すことが出来る。CNF生成時に個々の制約と対応するCNF集合とをテーブルに格納しておく。このテーブルに対して、解の結果がUNSATだった場合、例えば、バイナリサーチ、リニアサーチ等の探索によりUNSATとSATの境界を得る。SATからUNSATに変ったところの制約181が、UNSATの原因である。
このようにして、ユーザは、UNSATの原因を知ることが出来、制約を修正して速やかに、前記実施形態により解を得ることが可能になる。
図1、図2、図3、図4の形態において、従来技術による方法と本発明による方法とで比較を行った。
本実施例は、ある病棟のスタッフ数26名の勤務シフト休み希望(図2)と制約(図3、図4)を使って行ったものである。
結果を表2に示す。本発明の適用によりCNF変数数および節数が従来技術による方法に比べ大幅に削減されている。その結果、本発明は、約4倍高速であり本発明の有効性を確認できる。
31 ソフト制約レベル
111 制約エラーの部分和 112 部分和に対する最大許容エラー数 113 部分和に対して最大許容エラー数を制約する手段 114 制約エラーの総和 115 全体の許容エラー数設定 116 総和に対して最大許容エラー数を制約する手段
181 UNSATの原因制約

Claims (2)

  1. 所定の集団に属するスタッフのスケジュールを構成するシフトとスケジュール制約をCNFにエンコードし、前記CNFを用いて充足可能解を得ることによってスケジュールの最適化を行う方法をコンピュータに実行させるためのプログラムであって、
    前記スケジュール制約は、必ず守るべき制約であるハード制約と、必ずしも満たす必要はないができれば満たしたい制約であるソフト制約とから成り、
    前記ソフト制約のエラー数の和がK以下となる不等式を前記CNFにエンコードするエンコード手段、
    前記CNFに対する複数の充足可能または充足不能の結果を用いて、前記Kの最小値を、バイナリサーチまたはリニアサーチに基づいて探索する探索手段、
    前記探索手段による探索の開始時にタイマを起動させるタイマ起動手段、
    前記タイマ起動手段により前記タイマを起動させてから予め決められた時間内に充足判定結果が得られない場合に、充足不能の判断を行う充足不能判断手段、
    として前記コンピュータを機能させ、
    前記エンコード手段が、前記充足不能判断手段によって充足不能と判断された場合に、前記Kの値を更新して、前記不等式を前記CNFにエンコードし直し、
    前記探索手段が、前記充足不能判断手段によって充足不能と判断されなくなるまでの間、前記Kの最小値の探索を繰り返し実行するように前記コンピュータを機能させるためのプログラム。
  2. 請求項1に記載したプログラムであって、
    前記エンコード手段が、各スタッフ毎に前記不等式を前記CNFにエンコードするように前記コンピュータを機能させるためのプログラム。
JP2014047565A 2014-03-11 2014-03-11 プログラム Active JP5807978B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014047565A JP5807978B2 (ja) 2014-03-11 2014-03-11 プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014047565A JP5807978B2 (ja) 2014-03-11 2014-03-11 プログラム

Publications (2)

Publication Number Publication Date
JP2015172794A JP2015172794A (ja) 2015-10-01
JP5807978B2 true JP5807978B2 (ja) 2015-11-10

Family

ID=54260094

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014047565A Active JP5807978B2 (ja) 2014-03-11 2014-03-11 プログラム

Country Status (1)

Country Link
JP (1) JP5807978B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6364638B1 (ja) * 2017-07-27 2018-08-01 孝幸 菅原 プログラム、制約充足問題解決装置、制約充足問題解決方法
JP6901683B2 (ja) 2017-09-22 2021-07-14 富士通株式会社 調整プログラム、調整装置および調整方法

Also Published As

Publication number Publication date
JP2015172794A (ja) 2015-10-01

Similar Documents

Publication Publication Date Title
US10171284B2 (en) Reachability-based coordination for cyclic dataflow
EP3021217A1 (en) Distributed analysis and attribution of source code
Alviano et al. WASP: A native ASP solver based on constraint learning
US20170300367A1 (en) Streaming Graph Optimization Method and Apparatus
JP2015215886A (ja) 高速変更計画システム、高速変更計画方法および高速変更計画プログラム
JP4908073B2 (ja) サービスベースソフトウェア設計支援方法及びそのための装置
JP5807978B2 (ja) プログラム
US10289795B1 (en) Routing tree topology generation
Kreter et al. Using constraint programming for solving RCPSP/max-cal
US9984118B2 (en) Data loading techniques for an in-memory database
US8091060B1 (en) Clock domain partitioning of programmable integrated circuits
Yan et al. SDS: an optimal slack-driven block shaping algorithm for fixed-outline floorplanning
US10169501B1 (en) Timing context generation with multi-instance blocks for hierarchical analysis
CN105164667B (zh) 修改分析流
JP2010262471A (ja) 並列化スケジューリング装置
US10896270B2 (en) Method for solving multi-fidelity optimization problems
CN106021495A (zh) 一种分布式迭代计算系统的任务参数优化方法
US10402533B1 (en) Placement of cells in a multi-level routing tree
JP6173644B1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP5807980B1 (ja) スケジューリング装置
JP2017111749A (ja) 計算コード生成装置、方法及びプログラム
KR101176504B1 (ko) 소프트웨어 구조의 설계를 위한 장치 및 방법
US10963301B2 (en) Scheduling operations on a computation graph
US11074054B1 (en) Integrated system for designing a user interface
US20210232374A1 (en) Integrated System for Designing a User Interface

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150825

R150 Certificate of patent or registration of utility model

Ref document number: 5807978

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250