2018年1月9日火曜日

時間制約

時間制約についてのマニュアルを追加しました。
パートタイムで、4.75時間とか、半端なシフト時間の合計に関する制約も扱えますが、同じ時間の集計に関する制約ならば、単にシフト回数を数えればよいだけなので必要ありません。

たとえば、4.75時間、5.5時間といった複数のシフト時間が混在して、合計104.25時間以下にしたい、そんな場合に、有用な制約です。

2017年12月8日金曜日

人間がつくった勤務表と機械がつくった勤務表で品質に差はあるか?

いつか、きちんとデータを取りたいと思っていたのですが、今回データを取ることができました。
パズルと解く速度については、異論がないと思いますが、人間が十数時間かけて作った勤務表と機械が十数秒で作った勤務表では、品質にどれだけの差があるか? というお話です。

詳しくは、こちらを見ていただきたいのですが、結論から言うと、人間の場合相当数の見落としがあるということです。(この辺は、池上先生の初期の論文でも指摘があります。)
たとえ一個でも、遅番ー早番というシフトがあったとすると、そのスタッフにとっては、苦しいシフトな筈で、不信感を生まないことを願うばかりです。

ハード制約というのは、必ず守らなければいけない制約のことですが、これが一個でも守られていないと、機械の方は、解がない、という事態になってしまいます。逆にいうと、ハード制約を全て満たした勤務表しか機械は作ることが出来ません。

一方、人間の方は、スタッフの希望最優先ということが至上命題になっていて、ついついルールを捻じ曲げてしまうということが見受けられます。「勤務表が出来た」 というのは、スタッフの希望を全部通した、になってしまっていて、元々のハード制約を捻じ曲げた結果であることに気づいていないことが多いのです。
機械の場合は、「ルール」として定めたものは、そのルール通りに配置しようとするので、ある意味融通が効かないのです。融通が効かないとは、安易に捻じ曲げることができない仕組みでもある訳です。

ちなみに、先月の勤務に制約をかけないのは、先月のルールと今月のルールが違う可能性もありますが、先月が人間が作った勤務表だと、お聞きしていたルールが守られていないことが多いためです。


脳内の制約がきちんと漏れなく守られているか? 管理する意味でも機械化をする意味があると思います。


2017年12月5日火曜日

親切な審査官

例によって、拒絶理由通知書を受け取りました。これは、一回目の拒絶理由通知と呼ばれるものです。何度受け取っても、愛を告白して、拒絶された心境になるのは変わりがありません。これから、特許査定を頂くために、手続き補正書と意見書(2ヶ月内に、同時にオンラインで出さないといけない)を出すのですが、その仕事量を考えると憂鬱な気分になります。

ところが、今回の事案は、通知書を見て頂いた弁理士さんによれば、親切な審査官ということになるのだそうです。拒絶しておいて親切とは如何なものか?今一ピンとこなかったのですが、実際に意見書を作成してみてよく分かりました。実は、今回意見書の作成は、2時間もかかっておりません。(前回特許は、数週間を要しました。) この辺は、明細書のQualityの差によるところが大きいでしょう。弁理士さんに指導を受けて提出したものと、そうでないものの差だろうと実感した次第です。確かに、出す前は色々と指摘を受けて文言を色々追加するので大変なのですが、後々、今回の事案のように楽になることを考えれば、やはり最初から弁理士さんの指導を受けた方が得策ということでしょう。

「親切な審査官の影に弁理士さんの力量あり」 これが今日の格言です。

2017年12月3日日曜日

Lisbon Wedding

結婚式(披露宴)の席順で、悩むのは、日本だけかと思っていたら、海外でも普遍的な悩み事のようです。(ナーススケジューリング問題と同様NP困難な問題) Finding an optimal seating chart という問題らしいです。 MIPソルバーによる解法が一般的だと思うのですが、MaxSATによる解法もあるというこで、MSE2017 Solver DescriptionのPage25をご覧ください。ちなみにPage12は、私の今年参加ソルバーMaxRosterが載っています。

2017年11月16日木曜日

ロバストな勤務表

勤務表を自動作成して最も困難なのは、月々の予想できない仕様変更に対処することです。

つまり、月々の仕様変更という外乱に、打ち勝つ耐性が必要なのですが、これを私的には、ロバスト性を有する自動勤務表作成と呼んでおります。 自動勤務表作成は、制約によって記述されますから、ロバスト性を有する勤務表は、ロバストな制約で記述されている必要があります。これは、結構難しいことなのですが、長い経験によりこんな風に作成したらよい、という経験則が少し見えてくました。そこで、この辺のノウハウをまとめています




2017年11月4日土曜日

オペレーションズ・リサーチ的アプローチとAI的アプローチ

Wekipediaによると
さまざまな計画に際して最も効率的になるよう決定する科学的技法である。
とありますが、学会での定義を見ると、「ORは問題の分野を選ばないという横糸的性格を持っています」 さらに、「人間社会で使われることのないORは意味がありません.みなさん,ORは実学です.」とも述べられてています。

私は、大学でORを勉強した事はありません。今にして、ORを勉強していればよかったなあ、と思いますが、その当時のMIPソルバーの性能比も数百万倍になっているわけで、その後の内点法(吉瀬先生)などのアルゴリズムの進化は、勉強していたとしても予想だにしなかったでしょう。ちなみに、大学で教わった言語は、Fortranのみで、しかもパンチカードという時代だったし、私の現在の主力言語C++は勿論存在していません。会社に入ってようやく、Cという言語でUNIXは書かれているらしい....、という時代でした。回路設計も、2000ゲートを回路図で数ヶ月というと超速レベル、その後、論理合成に基づくHDL設計という時代の後、合成も進化していきます。私のHDLシミュレータ(Veritak)も一定の貢献をしたと思いますが、アサーションのFeasibility Studyをしたところで、SATソルバーの存在を知り、当時看護師長だった妻の勤務表作成に応用することを思いつきました。(数年、妻の勤務表をモデルに改良を重ね、現在に至ります。妻は偉くなってしまい、現在は、Advanced Usersさんを中心に助言を頂いています。)

してみると、技術の進歩というのは、私達常人には予想できないことかもしれません。
ナーススケジューリングという、NP困難な組み合わせ最適化という、一つの分野にここ数年取り組んでみて分かった事は、「最適化」 Optimizationというキーワードは、OR的手法のみならず、AI的手法においても共通しているということです。同じ事を目指しているのに、全く違う手法なのです。

一方、先端のMIPソルバーは、AI的手法の肝である学習節を持っているらしいし、SCIPにおいても制約伝播的なアプローチが取られているようです。この先どのようなイノベーションが待ち受けているかは、分かりませんが、OR(数理計画)とAI(人工知能)の融合というのが、一つのテーマではないか、と思います。










2017年10月17日火曜日

勤務表から最適化された患者サービスが始まる

希望休が多い職場は良い職場か?

この辺は、病院ない労使の決まりごと、あるいは、看護師長の裁量によるところが多いのですが、

A 全く自由に(無制限に)出せるところ
B 5日まで
C 3日まで
D 2日まで

という区分に分類されます。

看護学会に出席した妻の話では、勤務表のセクションは、立ち見が出るほど盛況なようです。Aの職場も多いようですが、皆様の悩みは尽きないようです。

ところで、

希望休が多い職場が良い職場とは実は言えないのです。


一般的に、希望休を出せば出すほど、より好ましくない勤務パターンをスタッフに強いる関係があります。


なぜならば、日本の勤務環境では、縦方向の制約、その日に必要な夜勤や、遅番、早番、残り番の数は、きっちり決まっておりソフト制約とすることは殆どありません。(増員日のソフト制約はあっても、最低限その日必要なスタッフ数をソフト制約とするところはありません。)つまり、解を得るためには、横方向の制約、看護師のシフトパターンで無理を強いる方向に作用させることで解を得ています。
謙虚なスタッフは、必要最低限の希望休みしか入れませんが、「出さなきゃ損」 みたいな感覚で出してくるスタッフも中にはいると思います。そうしたスタッフには、上の知見を理解して必要最低限を心がけて欲しい としか言えないのでしょうか? 謙虚なスタッフと傲慢なスタッフがいたとして、勤務表は、限られた解空間で選ばないといけないので、結果として、そして全体として、より好ましくない勤務パターンを強いるとすれば、謙虚なスタッフは2重に不利益を被ることになるのではないでしょうか? 「勤務表から最適化された患者サービスが始まる」というのは、スタッフ間の公平がまず最初にあるべきと思います。

スケジュールナースは、これらの計算とシミュレーションで得られた知見から、より良いルールに向けての指針を提案しています。