運用中の設定


勤務表の設定は、一度設定したらそれで終わりではありません。多くの場合、毎月ちょっとした変更が入るものです。
それらの変更についても、自分で制約を書けるようになることが、勤務表作成マイスターへの道です。

設定の練習を行います

サンプルフォルダに行列制約練習というファイルが入っているので、それを読み込み、以下のページを開きます。



例題仕様は、以下です。
 高橋以外のスタッフ全員1日もしくは、2日のうちどちらかは休みとする
 この制約は、今月だけのもので、来月はこの制約を適用しません。

というものです。
まず、求解して、解が出てくることを確認します。現段階では、なにも制約が入っていませんので、出鱈目なシフトになっています。




次の順序でマウスをクリックしていきます。

  1. 川畑の1日をクリック
  2. をクリック
  3. である。をクリック







下の位置でマウスカーソルを置き、右クリックでメニューを出し貼り付けを行います。



貼り付けが正常に行われると次のようになります。
うまくいかない場合は、クリップボードクリアをクリックしてから、もう一度最初からやり直してください。
である。を忘れずに。


これで、川畑の5月1日が深夜勤務である という制約の記述が終りました。
本当に、そうなるか、求解して確認してください。



矛盾を記述しない

このようにして、制約を追加していくことができますが、気をつけることがあります。矛盾を記述しないようにすることです。

試しに、矛盾を記述してみましょう。

  1. クリップボードクリアをクリック
  2. 川畑の1日をクリック
  3. をクリック
  4. でない。をクリック
  5. 下記位置に貼り付け


この記述は、川畑の1日が深夜勤務ではないという制約記述になります。明らかに、先ほどの記述と矛盾していますね。この状態で求解してエラーが出てくることを確認してください。





エラーメッセージを確認しましたら、不要なので下のように右クリックでメニューを出して削除します。


〜ならば〜である。 〜ならば〜でない。 〜でないなら〜である。 〜でないなら〜でない。 の記述

さて、例題に戻って、上の構文を使って、記述してみましょう。

まずは、次の順序でマウスをクリックします。

  1. クリップボードクリアをクリック
  2. 川畑の1日をクリック
  3. をクリック
  4. ならば、をクリック
  5. 川畑の2日をクリック
  6. をクリック
  7. でない。をクリック
  8. 下記位置に貼り付け


間違った場合や、うまく行かなかった場合は、1番からやり直してください。


これを求解すると、下のようになります。1日2日共、*休になっていません。
ところで、 
制約
 川畑の1日が休なら、川畑の2日は休でない。

を良く見ると、川畑の1日が明の場合、上記制約では、2日のシフトは何等制約されないことになり、狙い通りに動かないことが分かります。

*この結果は、絶対ではありません。制約がないということは、何が入ってもよいことを意味するので、休が1日・2日のどちらかに入る場合もあり得ます。




当初の仕様を思い返すと、次の制約であるべきです。
制約
 川畑の1日が休でないなら、川畑の2日は休である。

元の制約をクリアして、再度書き直します。



次の順序でマウスをクリックします。

  1. クリップボードクリアをクリック
  2. 川畑の1日をクリック
  3. をクリック
  4. でないなら、をクリック
  5. 川畑の2日をクリック
  6. をクリック
  7. である。をクリック
  8. 下記位置に貼り付け




求解すると、1日・2日のうち1日が休になりました。


$Or構文を使う

〜ならば構文を使わないで、同じ効果の記述をすることができます。$Or()を使う方法です。

当初の仕様は、1日2日のうち、どちらを休みにしたい、ということだったので、むしろ、$Or構文を使った方がすっきり記述できます。

  1. クリップボードクリアをクリック
  2. $Or()をクリック
  3. 川畑の1日と2日を選択 (Ctrlキーを押しながら、マウスをクリック)
  4. をクリック
  5. 下記位置に貼り付け



求解して、前と同じ結果になることを確認してください。



制約をコピペする


当初の仕様では、高橋以外の全員について、上の川畑で行った制約を記述する必要があります。
しかし、人数が多いと大変ですね。そこで、コピペしたくなるのですが、制約の名前だけを変えてコピーする必要があります。
まさに、そういう機能が実装されているので、ここでそのやり方を説明します。


1スタッフ名の選択
下のようにスタッフという項目を出すと、各スタッフ名が表示されます。コピー先の名前をCTRLキー+マウスクリックで選択します。コピー元と制約しない人は選択しません。
 (画面では、渡邊までしか出ていませんが、末端まで選択できます。)
2コピー元制約の選択
 下のようにコピー元を選択します。
3行置換コピー&貼り付け
 をクリックします。



すると、下のように、名前が置換されてコピーされます。高橋以外の全員の制約を記述することが出来ました。



これを求解すると次のように、目論見通り、仕様を達成することができました。




$And構文を使う

参考までに、$And構文についてみます。

$Or構文が、どちらかを休みにしたい、でしたが、どちらも休みにしたい場合が、$And構文になります。

  1. クリップボードクリアをクリック
  2. $And()をクリック
  3. 川畑の1日と2日,3日を選択 (Ctrlキーを押しながら、マウスをクリック)
  4. をクリック
  5. 下記位置に貼り付け



$Andにより、川畑の1・2・3日全部が休になっていることが分かります。
($Or, $And ,否定構文 !を使えば、どのような複雑な論理でも記述することができます。)





ワンタイム化

上の制約は、次月には使わないでしょう。なぜなら、特定の日付を元にしている制約だからです。制約が次月に残っていると、悪さをする可能性があります。次月は忘れずに消去すればよいのですが、大体、人間は一ヶ月前の事は忘れていますね。そのための対策がワンタイム化です。

ワンタイムのところにチェックしておくと、日付が変わったときに、適用しないにチェックが自動的に入ります。つまり次月では自動的に、適用されなくなります。


[Prev] [Next] [Index] [Home]