• ベストアンサー

乱数を使うがバランスよくデータ取得したい

私の職場は交替制です。通常の昼勤務と夜勤があります。毎日一人ある当番を昼勤務者の中から決めたいのです。 社員に番号を割り当てたExcelの勤務の予定表から昼勤務者を抽出するところまでは完成しています。その中から乱数を使って一人選びたいのですが、乱数だけですと例えば一ヶ月の中である社員は6回当番で、ある社員は1回当番というように不公平が生じてしまいます。昼勤務の数は社員によって異なりますし、完全に同回数にはできませんが、なるべく大きな差が生じないようにすることはできますか。また、同一の社員の当番が連続したり短期間に集中しないようにもしたいです。理解しづらいかもしれませんがどんなヒントでも構いませんのでよろしくお願いします。 乱数はExcelの関数ですが、その他はVBAで作っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • WizAsura
  • ベストアンサー率37% (29/77)
回答No.3

 つまりは「乱数で当番を決める」「回数は平均化したい」という事だと思いますが…、あってます?  もし上記2点をクリアするのであれば、一定の条件下で一巡する当番表というのを作成するようなマクロを組み上げるのはどうでしょう? 例)  5人の社員がいると仮定します(仮にA~Eと命名)。条件は…、 1.前回の当番の順番から、2つ以上離れている事。 2.前回と同じ順番にはならない事。  この時、最後の順番の人から決定すると、すんなり決まると思います。 前回:月B 火A 水C 木D 金E 今回:月A 火D 水B 木E 金C 次回:月D 火B 水E 木C 金A  こんな感じで、マクロを組むというのはどうでしょうか?  参考になれば幸いです。

kazukinatti
質問者

お礼

回答ありがとうございました。 みなさんからいただいた回答を一通りじっくり検討したいと思います。ポイントは現在私にとって取り組みやすそうなものを選ばせていただきました。

その他の回答 (4)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.5

5人だったら、 5日周期でスケジュールを組むってのは どうでしょうか? その5日の間は 同じ人が2回夜勤になら内容にすればいいだけで。

kazukinatti
質問者

お礼

回答ありがとうございました。 みなさんからいただいた回答を一通りじっくり検討したいと思います。ポイントは現在私にとって取り組みやすそうなものを選ばせていただきました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

取りとめも無い事を記します。迷いが吹っ切れるヒントになればと思います。 ・夜勤=苦痛=>分散化を図る、でしょうね。  あるいは夜勤=収入有利=>取り合い、も考えられます が ・その場合分散とは「平等」に負担してもらうということと思います。  そのほかにくじ引き的な事象で納得させることも行われます。本件はそれは除外するとします。 また当事者グループ内で、話し合いと言うルールも行われます。一般には納得性を最大化できます。これも除外します。 ・「平等」とは一律とか比例という概念と関係します。 一律が平等と納得されないケースもあります。 ・さて本件は何に係わらせて夜勤の日数を出すべきか。   夜勤日数=定数×○ ・○は昼勤務日数    賃金収入    人数割り  などが考えられますが、これらについて本質問は、決定  されていません。 ・その他の特殊事情、例・独身所帯持ち、年齢、子持ち、通勤距離、性別、などが考えられます。これらについては 述べられていません。 ・また夜勤も土日は平日より負担感が大であるとすると複雑化します。 ・これらは各企業・事業所での伝統や年令層や社員雇用形態でいろいろ考えられます。 ・一番大きい要素は、「今までこうやってきた」と言う伝統です。今までの不満の声、要望の声なども参考にします。上層部の鶴の一声の要素も大きい。この点どうなんでしょうか。 ・乱数は、超長期の間において、出現頻度が等しいと言うもので、短期では偏りが出ます。 ・また担うメンバーが相当入れ替わる事業所では平等化も考え難い・図りがたいです。 ・ともあれ、割り振りルールを明文化・規則化され説明・周知責任を取られることも中身と併せて肝心です。 (私案) 前期夜勤延べ人数と今期のそれとがそんなに大幅に変らない予想の場合。 ・過去6ヶ月とか1年の間の  (勤務日数または労働時間の事業所合計A)を出しま  す。夜勤対象者に限り集計に加えるのが良いかな。  夜勤日数やその労働時間も加えるべきかな。   (夜勤日数または延べ人数を合計B)を出します。   A÷Bを出し適当に切り捨てる。   余計の夜勤担当人数になるように少し少なめの   数に決めておく。今期の前期比夜勤日数の増加や   未消化(意味は下記を読んで下さい)退職者に備える  ためです。    仮に夜勤定数と言うことにしよう。 ・全部の(各人)夜勤対象者の勤務日数か労働時間を現在から考えて少し過去月から(注)集計(累計)したものを作り(またはあればそれを使って)、一番多い勤務日数の人より順に夜勤人数分(1日2人の場合2人)を割り当て、割り当てれば、上記夜勤定数時間をその夜勤者から差し引く。仮に残り時間と言うとしよう。 残り時間が定数に満たない人は、今回はスキップして、残り時間>夜勤定数の人のうち、残り時間の一番大きい人を対象に選ぶ。 (注)早い時期から本方式でデータを使えるようにするため 。 ・連続を避けるのなら、スキップして、次回か次割り当て作業時に優先考慮する。特別事情の事前申し出者についても同じ扱いをする。 人数が不足する場合は夜勤定数未満でも最大者を割り当てることもせねばならないかも知れない。 さてこう言うルールにした場合、エクセルの関数やVBAで自動決定化できるかと言うと、通常のプログラムには不得意な分野と思います。ルールの多い割り当て問題は 人工知能分野的なものだと思います。人間の判断と作業を 残さざるを得ないのでは。

kazukinatti
質問者

お礼

回答ありがとうございました。 みなさんからいただいた回答を一通りじっくり検討したいと思います。ポイントは現在私にとって取り組みやすそうなものを選ばせていただきました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

回答にならないかもしれませんが、本件、全て乱数で制御するのは難しいと思います。 1つの手段として、以下のような仕組みを作られてはいかがでしょうか。 1.割り当てを乱数で決める。 2.その乱数で決めた割り当てが、ある基準を満足するかチェックする。ある基準とは、漠然とした言い方ですが、なるべく全員が公平になる為の基準です。(これはたぶん、貴方しか決められないでしょう) 3.その基準を満足すれば、それでOK。満足しない場合は、もう一度、割り当てを乱数で決める。 上記を繰り返すことにより、割り当てが決められると思いますが、例えば1月単位で考えると、最初は、簡単にきまりますが、そのうち、何回もやり直しになるかもしれません。そのときは、乱数でなく、人間が強引に決める方法も残しておくべきです。 ある基準が、どれだけ公平でかつ偏らないことを満足出来るかが、このポイントです。 この基準の要件として考えられるのは、 1.当番が連続しないこと。又は、N日以内に当番になっていないこと。(Nの値は要チューニング) 2.当番の回数が規定回数を超えないこと。

kazukinatti
質問者

お礼

回答ありがとうございました。 みなさんからいただいた回答を一通りじっくり検討したいと思います。ポイントは現在私にとって取り組みやすそうなものを選ばせていただきました。

  • tan777tan
  • ベストアンサー率15% (35/220)
回答No.1

十分理解しないまま、答えをしますが、理解が当たっていなかったらお許しを、 完全に乱数で割り当てるのは大きな数がある場合は平等性は満たされますが、小さい数ではムラがでると思います。 そこで、ブロック内の乱数による選択とすればどうでしょう、あたる可能性のある人数は決まっていると思いますので、それをひとつのブロックとして、その中で当たる順番を乱数で決めれば平等性は満たされると思います。

kazukinatti
質問者

お礼

回答ありがとうございました。 みなさんからいただいた回答を一通りじっくり検討したいと思います。ポイントは現在私にとって取り組みやすそうなものを選ばせていただきました。

関連するQ&A