- ベストアンサー
シフト勤務表作成の条件と数学的解法
- 数学的に解決できるかどうか疑問があるシフト勤務表作成の条件について質問しています。
- この問題は6人の人員と4種類の勤務条件を満たすシフト勤務表を作成することです。
- 解決には数学的な知識が必要であり、条件に矛盾がある場合には不可能となります。また、数学以外の方法での解法も考えられます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
制御工学が専門の学生です. このような問題は最適化数学の分野では「ナーススケジューリング問題」と呼ばれています. この手の問題は解析的に解くことが非常に困難とされています. つまり,一番良い答えを短時間で得るのは困難であるということです. そのため,このような問題に対し比較的短時間でまあまあの解を得る方法として, 発見的手法(ヒューリスティクス)が数多く考案されています. ナーススケジューリング問題には「遺伝的アルゴリズム」が多用されているようですが,ここでは簡単な「山登り法(hill climbing)」を紹介します. 流れとしては, (1) まず適当に何通りかシフトを用意する. (2) 制約条件を違反したシフトには減点,好ましい条件を満たす場合は加点,といったように,それぞれのシフトに点数をつける. (3) すべての制約条件を考慮した結果,一番点数が良かったシフトだけを残して他を破棄. (4) 残った1つをもとに,少しだけ改変したシフトを何通りか用意する. (5) (2)に戻る. これをコンピュータで行い,シフトに変化が見られなくなった時点で終了します. 去年,私も学園祭で店番のシフトを決める時,最適化アルゴリズムを応用しました. 人数やシフト枠や制約が多いときに便利です. 最適化数学とプログラミングの知識があればちょっとした時に楽ができるので良いですよ笑
その他の回答 (2)
- Nouble
- ベストアンサー率18% (330/1783)
初めに謝罪にます、 素人なので とんちんかんな事を いうと思いますが ご容赦くださいね。 基本的に私は 「単位労働力」という考え方をしよう と、思いました。 まず仮定として、 一人は一日1シフトしか勤務できない 休日が当てられた日には A勤・B勤・C勤・D勤、共に何れも割り当てられない C勤・D勤は 翌日の休日とセットなので2単位労働力が必要 此所まで 仮定が合っているのでしょうか? やや不安ですが… まあ、このまま行きます。 まず基本的な事ですが 1週間に1人当り5単位労働力が提出(?)可能です 6人だと30単位労働力となります 次に必要とする労働力量を計算します。 A勤1回当り1単位労働力 B勤1回当り1単位労働力 C勤1回当り2単位労働力 D勤1回当り2単位労働力 と、いう事で 1日に必要な 総単位労働力量は 6単位労働力となります。 1週間では7倍の42単位労働力 加えて 此所までは1勤1人のみの 勤務として計算してましたから もし、複数人必要な場合が出るなら つまり各勤務に「2人必要」とか「3人必要」とか 各々にあるなら 1週当りに必要な総労働力量は 当然2倍、3倍、… と、増えていきますよね? ……… …… … あれ? なんか変ですよ? 最低でも42単位労働力必要なのに 30単位労働力しか購えていませんよね? 今このシフト勤で、この人数で回せているのですか? 24時間中に2勤以上する事あるのですか? 1週当りの標準的な上限労働時間数を教えて頂けませんか? (※:補足を求む) 慢性的な残業過多に陥ってませんか? ちゃんと総労働時間が 1月160時間労働以内に 抑えられていますか? 少なくとも毎月180時間以内に抑えないと、 何ヶ月も続くようなら 労働監督局が ものをいい始めるのでは? 取り越し苦労なら良いのですが… 因みに軽く計算してみたのですが (4勤+2勤)×6時間×30.5日÷6人=182.5時間と、 単純計算上では、 ヤバ目ではありますが まあまあ 上辺はぎりぎり足りている… のですが、 でもこれだと 誰かに偏らせられないし 病欠とか駄目ですよね? 毎月続くようだと 国内法にも 抵触して きませんでしたっけ? 人増やした方が お上のこともあるし、良いと思いますけど… 6人分の残業代を (月160時間を超えた分は基本的に残業代にしないといけなかったですよね?) 合計すると 単価×6人×22.5時間×1.25(残業割増分)>160×単価ですから これで人1人雇って おつり来ないですか? 8×1.25×単価分 もう1人雇った方が 経費削減になる と、思いますよ? p・s・ 此所まで示してきた「単位労働力」という考え方ですが、 一般的には「工数」と言われるものが これに当たります。 今回の場合で想定したのは 1人当りの工数 1人・時日で6人・時です。 シフトを組むのには「工数」という考え方を 知っていると 良いと思いますよ。 もしお役に立てていたなら 幸いです。
- yukaru
- ベストアンサー率12% (143/1118)
気がついたとこだけ >3. 5日連続勤務2日連続休日(C勤務かD勤務が 入る場合は例外) C勤務かD勤務が発生したらどうするのかが必要、これがないとはじまらないし 3を優先したら >8. 絶対にC勤務は1ヶ月中に必ず1日いれ る。 は無理 >11. B勤務→休日1日→A勤務は絶対に禁止。 元々3があるので考慮する必要なし >10. Hは毎週月曜日を休日とする。 >9. 昼勤、夜勤ともに一人勤務が発生する場合 はできる限り日曜日にする。 休日と日曜に区別があるのか? Hが月曜日に出勤したらCD勤務になるのかそれとも月曜休みが優先なのか? あとできる限りとかくと数学では考慮する必要なくなりますね
補足
ご回答、ご指摘ありがとうございます。 3の条件を変更します。 3. 5日連続勤務2日連続休日。但し、C勤務もしくはD勤務が入る場合は5日連続勤務→C勤務orD勤務→1日休日を可。 9の条件を変更します。 9.昼勤、夜勤ともに一人勤務が発生する場合は日曜日にする。 休日と日曜日は区別します。 Hは月曜休みを優先とします。 これでどうでしょう?よろしくお願いいたします。
お礼
ご回答ありがとうございます。 最適化数学? ナーススケジューリング問題? 遺伝的アルゴリズム? 全て初めて聞いた言葉ばかりです。 自分でどこまでできるかわかりませんが、面白そうなので調べてみたいとおもいす。