終わったら夜勤新人月が終わった後、また来年も使うかもしれませんので、メンテナンスしておきましょう。実は、訓練期間が、下のようにブランクだと、右ペインに示されるようにエラーになってしまいます。原因は、行制約で訓練期間では、2回夜勤を行うという制約をハード制約として記述したからです。単純にソフト制約とすれば回避できますが、ソフトエラーとしてカウントされるのが面白くない、という方もおられでしょう。それが今日のテーマです。訓練期間が定義されていないときは、制約そのものをDisableしてしまえばよい、という発想が浮かびます。夜勤新人Disable()が制約をDisableする記述です。スタッフプロパティで夜勤新人を設定、上で期間設定を行う、ということをマニュアルに書いておけば、来年もまた使えます。sc3.print(st+'します。sc3.print(st+'します。sc3.print('公休数設定で、maxが整数型ではありません。sc3.print('公休数設定で、minが整数型ではありません。sc3.ConstraintEnable('夜勤新人.夜勤新人は、夜勤訓練期間に2回訓練を行う',False)夜勤回数設定()公休数設定()土曜以外の半休抑制()夜勤新人Disable()夜勤新人訓練期間がなくても意図通り動作しました。期間を日月火水木にした例です。夜勤新人の最初の2回は、プリセプター付4月5月は、看護師の移動が多い月です。看護師としてはベテランでも、その病棟にとっては夜勤新人という方が多いかもしれません。そのような状況を想定し、頑張って制約化してみましょう。(勿論、制約化しないで予定として入れてしまうのもアリです。)仕様は、最初の2回は、先輩看護師付で、以降は、通常ルーチンとします。月の前半を訓練期間としましょう。今月を全体集合として、上の補集合を求めましょう。スタッフプロパティで夜勤新人を定義します夜勤新人でないグループを定義します。夜勤新人は、訓練期間に2回訓練を行う制約を追加します。