<制約の構造は二つに分けられる>
一つは、ナースのシフトに関する制約で、各ナースに関するものです。もう一つは、各日に関する制約で、必要なナース人数に関する制約です。表現を変えれば、各ナース個人に関する制約と各日に関する組織制約となります。
<線形制約どうかの視点でいうと>
線形制約とは、ax+bのように、一次関数の形式で表現できる制約のことです。一般にナース個人の制約は、線形では表現できません。演算子ANDや、OR、NOTを用いて表現することになりますが、これらは、ax+bの形式ではありませんので、線形制約ではありません。
これに対して、各Day制約は、夜勤3人、日勤10人以上とか、一般に線形制約となります。ペア制約のペア禁止制約もΣx<=1という具合に、線形制約で表現できます。唯一の非線形制約は、ペア制約:AならばB制約です。ですので、これを除けば、皆Day制約は、線形制約になります。
<ナーススケジューリング問題は、ハイブリット構造をしている>
基本的には、各個人に関する非線形制約と各Dayに関する線形制約から成ります。例外は、ペア制約:AならばB制約のみです。アカデミックベンチマーク群では、ペア制約は一切現れません。
実務問題では、ペア制約は、よく現れますが、少なくともアカデミックベンチマーク群では現れません。つまり、問題構造の基礎部分は、いずれも、各ナースに関する非線形制約と各Dayに関する線形制約のハイブリッド構造をしていることが分かります。
それを基礎として、ペア制約等をその上に構築していくことが分かりやすいと思います。一般にペア制約AならばB制約が入ると、LBを求めるのはさらに困難となります。なので、まずは、基礎的な構造部分でLBを求められるようにすることが、ソルバとして必要不可欠なのです。
<ソルバのアプローチ方法>
問題の構造は、明快です。組織の制約は、ほぼ線形制約が主なので、リニアソルバを使うことが理に適っています。つまり、解はリニア解近辺にある、と暗黙の前提に立ちます。その前提は本当に合っているのか?というご質問には、「少なくともアカデミックベンチマーク群は、その前提でほぼ全て解けました。」という回答になります。
https://schedule-nurse.blogspot.com/2026/09/blog-post_17.html
ここで、リニアソルバは、Simplex,Barrier,First Orderと種類がありますが、得意な規模領域によって使い分けることが適切なアプローチとなります。
一方、各ナースの表現は、論理演算は勿論ですが、シフト回数制約等、線形制約もあります。特に、この線形制約が加わることにより、各ナースだけでもRCSP(Resource Constraint Shortest Path Probelm)となり、NP困難なシステムになることが分かっています。
つまり、組織ではリニアソルバ、各ナースではRCSPソルバを使うことが、最も理に敵ったアプローチとなります。
<整数化>
リニアソルバで解が求まったにしても、その解は、浮動小数点です。例えば、人が0.3人という解は、整数解にする必要があります。浮動小数点空間から、整数空間にマッピングするのは、自明ではありません。(単純にroundしても、制約を満たす解にはなりません。)分枝限定法と呼ばれる手法で、整数化がなされますが、一般には、時間がかかりすぎる傾向があります。そこでSATソルバを用いた手法を併用します。
<まとめ>
ナーススケジューリング問題の組織制約は、リニア制約が主であり、解も線形解近辺にあると思われる。ナースシフトパターン制約は、専用のRCSPソルバを使い、リニア解を求めたあとに、分枝限定+SATソルバにより高速求解することが理に敵ったアプローチということになります。
現代的なナーススケジューリング問題ソルバの構造と、技術領域分野について解説しました。
<参考>
こちらもAIによる挿絵を追加したのでよろしかったら御覧ください。
https://schedule-nurse.blogspot.com/2026/10/blog-post_29.html


