(現在 過去ログ39 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■6062 / inTopicNo.1)  3交代の出勤簿
  
□投稿者/ 緒方 -(2010/09/13(Mon) 17:18:21)
    いつもお世話になっております。
    桐9-2004sp3 windows xp
    3交代の出勤簿を考えているのですが
    a勤務、b勤務、c勤務、休日があり,
    毎月の日にちと個人でそれぞれの勤務回数が決まっている場合
    自動で各日に勤務を割り振ることが出来るでしょうか
    以下のイメージです

       1日2日3日4日------31日
    あさん a  a   b  a      c  a5回,b6回,c10回,休日10回(固定)
    いさん
    うさん
    ....
    んさん

    合計 1日2日3日4日------31日
       a10回
       b15回
        c10回
      休日 6回
     (固定)
    随分前から考えているのですが、簡単なようで非常に難解なようで
    自分の能力を超えているので皆さんの力を借りたいと思い投稿しました
    よろしくお願いします。
引用返信 [メール受信/OFF] 削除キー/
■6063 / inTopicNo.2)  Re[1]: 3交代の出勤簿
□投稿者/ うにん -(2010/09/13(Mon) 20:28:13)

    > 随分前から考えているのですが、簡単なようで非常に難解なようで

    この条件だけでは答えが1通りにならないでしょうから、他に割り当ての方針が必要でしょう。
引用返信 [メール受信/OFF] 削除キー/
■6064 / inTopicNo.3)  Re[2]: 3交代の出勤簿
□投稿者/ 尾形 -(2010/09/14(Tue) 06:22:20)
    どうも、こんにちは

    全社員分の1カ月分の定型雛形を
    準備しておいてそれをベースにして
    フォームで区分縦計・区分横計を表示させて
    手動で調整するとか

    ダメかな (^^;

引用返信 [メール受信/OFF] 削除キー/
■6065 / inTopicNo.4)  Re[3]: 3交代の出勤簿
□投稿者/ 緒方 -(2010/09/14(Tue) 08:44:15)
    No6064に返信(尾形さんの記事)
    うにんさん尾形さんおはようございます
    早速の回答ありがとうございます
    うにんさんの件ですが
    回答は一つでなくて良いのです
    個人の各勤務回数とその日のa勤務何人b勤務何人等と決まっているだけです
    尾形さんの件ですが
    人数が少ないときはおっしゃるように手作業の方が早いです
    人数が多くなると結構大変なものですから簡単に一括処理でできないものかと相談いたしました
    ありがとうございました
引用返信 [メール受信/OFF] 削除キー/
■6066 / inTopicNo.5)  Re[4]: 3交代の出勤簿
□投稿者/ うにん -(2010/09/14(Tue) 13:26:47)
    > 回答は一つでなくて良いのです
    > 個人の各勤務回数とその日のa勤務何人b勤務何人等と決まっているだけです

    テスト用のデータが欲しいですね。

引用返信 [メール受信/OFF] 削除キー/
■6067 / inTopicNo.6)  Re[5]: 3交代の出勤簿
□投稿者/ 緒方 -(2010/09/14(Tue) 16:59:42)
    No6066に返信(うにんさんの記事)
    うにんさんありがとうございます
    私が以前作りかけていたものを添付します
    tblとwfmです

1284451182.lzh
/43KB
引用返信 [メール受信/OFF] 削除キー/
■6069 / inTopicNo.7)  Re[1]: 3交代の出勤簿
□投稿者/ 通りすがり -(2010/09/16(Thu) 10:10:06)
    なんか面白そうなことやってるじゃん
    って、この問題を解く(数学的に解く)のはPCの能力では無理でないのかな

    通りすがりで戯言を書いてみる
    結局、マス目を一つずつ埋めていく方法に行きつくような
    条件を満たす解は相当多数ある筈だけど、そのうちの一つを求めてシャッフル

    10人x31日なら310マスを埋めていく
    1.まず、希望が出てるマス目(Aさんは15日に休日希望、Cさんは7日にb希望 等々)を埋める
    2.残りのマス目の1つ目を埋める、aを入れて条件満たさなかったら、bを入れる、まだ条件満たさなかったらcを入れる、まだなら休を入れる
    3.同様に、残りのマス目の2つ目を埋める、a入れて条件満たさなかったら、bを入れる、まだならcを、まだなら休を入れる
    4、同様に全部埋める(1の希望が悪くて全部埋まらないケースは自明で大抵事前に解るとおもうが、全部埋まらなかったら希望を削ってやり直し)
    ★完成(左上の方にaが、右下の方に休が偏る)
    5、1の希望に含まれない縦列(1日〜31日の希望が出てない日)をシャッフルして日にちを入れ替える
    6、休日条件の同一な人を同一グループとして、同一グループ内で希望を出さなかった人(横列)をシャッフルして人を入れ替える
    ★★かなーりバラけて完成
    7、気が向けば、もう一度縦列をシャッフル

    飽きたら、a,b,c,休 の優先順位で埋めていくのを別の順番に変えてみたりすると、また変わった解が出現するかも
    実際には表で処理して出力を転置集計
引用返信 [メール受信/OFF] 削除キー/
■6070 / inTopicNo.8)  Re[1]: 3交代の出勤簿
□投稿者/ ONnoji -(2010/09/16(Thu) 10:51:20)
    「シフト勤務表作成」というキーワードでググルといろいろ見つかりますよ。

    あくまでも私(ONnoji)の個人的な感想ですが…、
    桐で自作するのもよいですが、ちゃんと作ろうとすると、考慮すべき点が多すぎて大変だろうと思いますよ。
引用返信 [メール受信/OFF] 削除キー/
■6071 / inTopicNo.9)  Re[2]: 3交代の出勤簿
□投稿者/ ONnoji -(2010/09/16(Thu) 11:14:21)
引用返信 [メール受信/OFF] 削除キー/
■6072 / inTopicNo.10)  Re[3]: 3交代の出勤簿
□投稿者/ ONnoji -(2010/09/16(Thu) 11:27:04)
    蛇足です。

    こういうのもありましたよ。

    フリーソフトで勤務表やシフト表を作ろう!
    http://kinmuhyou.seesaa.net/

引用返信 [メール受信/OFF] 削除キー/
■6073 / inTopicNo.11)  Re[4]: 3交代の出勤簿
□投稿者/ ONnoji -(2010/09/16(Thu) 11:56:24)
    さらに蛇足です。

    いろいろググッてみましたが…

    どうやら、勤務表を最適化するアルゴリズムのひとつは、「遺伝的アルゴリズム」と呼ばれるもののようですよ。

    【引用】システムバンク株式会社 |システムバンクからのお知らせ | 当社の新しい取り組み
    http://www.sbn.co.jp/0600news/0630torikumi/
    汎用GAエンジンと勤務表作成エンジンGA(Genetic Algorithm)=遺伝的アルゴリズムはメタヒューリスティック(メタヒューリスティクスとは特定の問題に限定されず、どのような問題に対しても汎用的に対応できるように設計された、アルゴリズムの基本的な枠組み)の一部でデータ(解の候補)を遺伝子で表現した「個体」を複数用意し、適応度の高い個体を優先的に選択して交叉・突然変異などの操作を繰り返しながら解を探索する方法です。
    一般的なアルゴリズムを用いたプログラミング、例えば近似アルゴリズムのように厳密な解法による計算方法は、正確な答えをいきなり求めようとするあまり、計算時間が爆発的に増加してしまいます。
    ところが答えの範囲をなるべく「答えに近い」まで拡大すると、 計算時間は飛躍的に短縮させることができます。
    ただし、 一般的にGAのようなメタヒューリスティクスは特定の問題専用のヒューリスティクスより平均的な解の精度が劣ります。これは汎用的な探索をするためには問題に対する事前知識を必要とせずに実装しなければならないので、それらを有効に使用することで解の探索を行う方法に対してどうしても不利な立場で探索を進める必要があるからです。
    当社では、このメタヒューリスティックスの弱点を克服するため、問題専用ヒューリスティックスの組み合わせで「勤務表作成エンジン」を開発し、短時間で正確な「解」を導き出すことに成功しました。
    その1つの成果が勤務表作成システム「セルヴィス」です。一般的に看護師の勤務表作成はNSP(ナーススケジューリングプロブレム)として昔から議論されるように、 2次元解の中で最も複雑(勤務表の中で最も作成するのが難しい)と言われています。
    当社では上記「勤務表作成エンジン」を組み込んだ「セルヴィス」を普及価格のプロダクトとして流通させています。
    この実績は汎用的なGAエンジンをベースに、様々な業種専用のヒューリスティック(セルヴィスは看護師専用のヒューリスティックを実装)を開発することで、あらゆる業種の勤務表作成ソリューションとなり得ることを示しています。
    例として、当社の保有する汎用に使えるGAエンジンを現在構築している勤務表作成アプリケーションやシステムに組み込み、専用のヒューリスティックを開発することで、大人数のパートやアルバイト人員を抱える各種工場や、何百の店舗の人員のスケジューリングに最適なシステムを構築することができます。

引用返信 [メール受信/OFF] 削除キー/
■6074 / inTopicNo.12)  Re[2]: 3交代の出勤簿
□投稿者/ うにん -(2010/09/16(Thu) 14:31:40)
    > 1.まず、希望が出てるマス目(Aさんは15日に休日希望、Cさんは7日にb希望 等々)を埋める

    緒方さんのとこでは「希望」という制約はないようですが、あった方が応用が利くかな

    > 2.残りのマス目の1つ目を埋める、aを入れて条件満たさなかったら、bを入れる、まだ条件満たさなかったらcを入れる、まだなら休を入れる

    これだと試行錯誤が多くなるので、「希望」同様に条件から自動的に決まるマスを
    先に入れてった方がいいと思うのです。

    結合表でやったらすんごく遅かった(31日x19人で5分で半分ぐらいしか終わってなかった)ので改良中。

    しかし試行錯誤した方が却って早いのかな。人数はどのくらいまで必要ですか。

    表定義でなく、「実際に解の得られる問題」が欲しかったんだけど、
    乱数で解を作れば問題は自動的にできますね。
引用返信 [メール受信/OFF] 削除キー/
■6075 / inTopicNo.13)  Re[2]: 3交代の出勤簿
□投稿者/ 緒方 -(2010/09/16(Thu) 18:12:55)
    No6069に返信(通りすがりさんの記事)
    通りすがりさんありがとうございます
    1.から6.迄の手順を一括処理を組みましたが
    やたら長くなり結局頭がパニックってうまく組めませんでした
    eoさんの投稿が削除されていますが、あんなやり方もあるのだと
    目から鱗が落ちる思いでした、工夫すればおもしろいし良いヒントになりました
    取りすがりさんeoさんありがとうございました
引用返信 [メール受信/OFF] 削除キー/
■6076 / inTopicNo.14)  Re[3]: 3交代の出勤簿
□投稿者/ 緒方 -(2010/09/16(Thu) 18:17:10)
    No6074に返信(うにんさんの記事)
    うにんさんありがとうございます
    > 緒方さんのとこでは「希望」という制約はないようですが、あった方が応用が利くかな
    希望はあります
    > しかし試行錯誤した方が却って早いのかな。人数はどのくらいまで必要ですか。
    人数は約100人です
    > 乱数で解を作れば問題は自動的にできますね。
    私の理解を超えていますが乱数を使うのですね勉強してみます
    ありがとうございました
引用返信 [メール受信/OFF] 削除キー/
■6077 / inTopicNo.15)  Re[5]: 3交代の出勤簿
□投稿者/ 緒方 -(2010/09/16(Thu) 18:26:38)
    No6073に返信(ONnojiさんの記事)
    ONnojiさんありがとうございます
    「エクセルで学ぶ遺伝的アルゴリズム」という本を買って勉強しましたが理解不能でした
    色々なフリーソフトを紹介していただきましてありがとうございます
    ダウンロードして研究してみます
    ありがとうございました
引用返信 [メール受信/OFF] 削除キー/
■6078 / inTopicNo.16)  Re[3]: 3交代の出勤簿
□投稿者/ eo -(2010/09/17(Fri) 12:11:00)
    2010/09/17(Fri) 12:11:51 編集(投稿者)

    > eoさんの投稿が削除されていますが、あんなやり方もあるのだと
    > 目から鱗が落ちる思いでした、工夫すればおもしろいし良いヒントになりました

    表だけアップするのもどうかな〜と思い削除しました^^;
    shift表の分解までは出来ました。
    再度、これを氏名毎の表に展開すればと思っています。



shift.zip
/17KB
引用返信 [メール受信/OFF] 削除キー/
■6079 / inTopicNo.17)  Re[4]: 3交代の出勤簿
□投稿者/ eo -(2010/09/17(Fri) 16:53:23)
    2010/09/17(Fri) 17:10:45 編集(投稿者)

    イメージ的にはこんな感じでないでしょうか?
    パターンがあって、機械的っていうのが売りです(笑)
    日にち毎の勤務制約はクリアしますが、個人毎の制約のクリア方法はわかりません^^;


shift2.zip
/22KB
引用返信 [メール受信/OFF] 削除キー/
■6080 / inTopicNo.18)  Re[3]: 3交代の出勤簿
□投稿者/ うにん -(2010/09/17(Fri) 22:24:35)
    >>2.残りのマス目の1つ目を埋める、aを入れて条件満たさなかったら、bを入れる、まだ条件満たさなかったらcを入れる、まだなら休を入れる
    >
    > これだと試行錯誤が多くなるので、「希望」同様に条件から自動的に決まるマスを
    > 先に入れてった方がいいと思うのです。

    その時点ですでに破綻している場合があるみたいで、休を入れてもだめなので
    前の仮定に戻ってやり直す必要がありそう。だから遺伝的〜の出番なのかな。
    どのくらい戻れば答えに当たるのかな。最初まで戻れば結局しらみつぶしになるから
    必ず答えは出ますが。

    > 結合表でやったらすんごく遅かった(31日x19人で5分で半分ぐらいしか終わってなかった)ので改良中。

    戻る処理の実装する前の段階ですがいくつか試して見たところ、5人だと人の条件が
    きついせいかランダムに割り当ててもそのまま答えが出る確率が高いようですが
    10人になるとやり直し処理をしないと答えが出ません。
    「あ〜ん」の82人で1回やってみたら、9分で終わって(たまたま)人に対しては
    全部割り当てがうまくいってたけど、31日中7日が条件を満たしていませんでした。

引用返信 [メール受信/OFF] 削除キー/
■6088 / inTopicNo.19)  Re[4]: 3交代の出勤簿
□投稿者/ うにん -(2010/09/20(Mon) 23:56:03)
    完成してないけど参考までに上げときます。
    使用方法:
    XYmakeSampleData.cmdを実行(XYanswer.tblに答えを生成)
    XYa2q.cmdを実行(XY.tblに答えから問題を生成)
    XY4.cmdを実行(問題を解く。51人で2分強かかる。800Mhzの遅いマシンですが)
    XY.TBLのA〜Dが全部0になってれば正解。
    (Xが横軸=日付、Yが縦軸=人のつもり。転置集計で縦横表示は作ってません)

    >>緒方さんのとこでは「希望」という制約はないようですが、あった方が応用が利くかな
    > 希望はあります

    問題を解く一括処理の最初で解答ファイルを消去してますが、それを無くせば
    解答ファイルに前もって希望を入れて置くことも可能です。

    >>しかし試行錯誤した方が却って早いのかな。人数はどのくらいまで必要ですか。
    > 人数は約100人です

    100人だと1回も正解を出せてません(試行錯誤を一切しないので当然ですが)
    51人だと最初の1回は正解が出た。その後3回はだめでした。ものすごい偶然だったぽい。
    グループの人数を少なくすれば、こんなんでも答えが出るかな?

    >>乱数で解を作れば問題は自動的にできますね。

    乱数だけだと、31日間に3日しかD(休み)がない人ができてました。
    そういう意味でも「正しい問題の例」か、3日以上勤務が続かないとか
    もうちょっと条件があった方がいいですね。(それで答えが出やすくなるかは?)

XY.zip
/11KB
引用返信 [メール受信/OFF] 削除キー/
■6090 / inTopicNo.20)  Re[4]: 3交代の出勤簿
□投稿者/ 緒方 -(2010/09/22(Wed) 10:08:12)
    No6080に返信(うにんさんの記事)
    うにんさんeoさんおはようございます
    昨日出張から帰りまして今朝からじっくり一括処理を見ているところですが
    うにんさんの一括処理は理解するのに時間がかかりそうです(理解できるか自信はありませんが)eoさんのヒントで構想は何となく出来ているのですがよーく考えてみると結局うにんのやり方になるのかな等と思っています
    うにんさんeoさん貴重な時間を割いていただきまして有り難うございました

引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -