- ベストアンサー
EXCELマクロでバイトのポジションを自動的に決めたい
最近EXCELのマクロの勉強を始めました。 同じ時間に20人前後いる飲食アルバイトでその人達の配置を自動的に決めるプログラムを作ろうという試みをしています。ただ、アルゴリズムの構成でどんなのが効率がいいか詰まってます。 ポイントは ・休憩=つまり同じ時間帯にいる人といない人が存在する ・難しいポジションが存在(だれでもできるわけでもないポジションが存在) ・ずっと同じポジションにならないためにある程度ランダム的な要素が必要 と以上のようになってます。 アルゴリズムとして現在やろうとしていることは ・ポジション別スキルを5段階ぐらいに数値化してデータベース化 ・その時間帯にいる人を全員ピックアップ ・難しいポジション順にできる人をピックアップして一定以上のスキルを持っている人のなかからランダムで決めていく このような感じです。 詰まっているところは ・データベースから取り出してきたスキルデータをその時間にいる人というデータといかにつなげるか →時間ごとにワークシートをつくって名前とポジション別スキルデータの二軸の行列をつくっている人は×1いない人は×0で計算するというのを考えましたが、効率悪いような・・・ ・仮にその時間帯にいる人かつそのポジションができる人のデータをつくれたとして、そこから難しい順にポジションを振っていく時にどうやってそのデータを取り出してランダム化するか。 →Rand関数の使い方が分かっていないのかここがよーわかりません。名前とポジション別スキルデータの表からいかに取り出してランダマイズするか。また、できる人たちを上の方法で数値を取り出してもいかに名前とつなげるかなど・・・ よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
このコーナーの質問には、ほとんど正解があるものが多い。しかし正解が、出しにくい問題も考えられる。 本質問のように、条件のある、組み合わせ問題は難しいもののひとつと思います。ご存知のように、場合の数が増えて組み合わせの全てをチェックすることができないからです。将棋や碁の対戦などはこのタイプに似ているようにおもう。 知識ベース、推論ベースなども似た困難を抱えている。 ーー 私の思いつきは (1)全てをプログラムの組み合わせで解決しようとせず、人間が総合的に判断して暫定的に良いと決めた組み合わせを作って、テーブル化して、その範囲内で組み合わせを作る、プログラムを作ることを勧めたい。 例えば2者の相性の問題も、2次元テーブル化してチェックすれば、できる理屈だが処理が大変であるので、禁止組み合わせを少数テーブル化するとか。 スキルも工程(時間帯など)の中で、スキルありが1人含まれればよいとか、簡素化できないか考えては。 (2)テーブル化して許容組み合わせを表現する。テーブル化は行きつくところデータベースです。 ランダム化の部分は限られた局面に限定する。 (3)候補組み合わせを少数通り(とおり)毎回出させて、人間の総合的判断のチェックを得て、1つに絞るような考え方をするのはどうかな。ズバリ完成組み合わせを出そうとすると、収収不可能な複雑さになる恐れがある。 (4)繰り返しこのプログラムを実行するとランダムにやっても同じ組み合わせが算出される恐れがある。だから例えば(職位や工程別スキルのような)チーフなどは1度組み合わせに採られたらサインを持ったり、次ぎの候補から抹消して、組み合わせの重複回避などを考えてはどでしょう。 ーー 前もって下記を読んでください。 http://research.nii.ac.jp/~uno/combi_2.htm その上で もうひとつ、この質問を載せるカテゴリの問題なのですが この質問の背景には、数学的素養の裏づけがある回答を得なければならないと思いますが、質問者は、そう思いませんか。 しかしこのオフィスのカテの質問の読者にそういう方でエクセルにも興味がある方がおればよいが、文系プログラマなどは、数学に弱い方がなっている場合も多い。小生は5、6年質問を見ているが、このカテで理数系の質問が出ると、極端に回答が少ないようだ。 もし良い回答が無ければ、理数系のカテに再質問してはどうでしょう。 組み合わせの数も関係するので、場合の数を明示し、質問をもう少し、具体的に(何と何を組みあわせて考えるのか、質問ではメンバー、スキル、従事時間帯などが出ているが、あと受付などで、男女とか、必要管理者とか、チーフなど重複不要とか、禁避組み合わせなど)表現する必要はあると思うが。 ただし理系のコーナーでは、回答があっても、基礎概念が難しく、質問者に理解できない恐れもあるが。
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
満足できる勤務管理表を作るのは、かなり難しいことです。 ・時間帯毎の定数を満たす ・各時間帯にチーフが最低○名必要 ・バイト君のスキル管理 ・バイト君たちの出勤予定日の管理(休む予定の管理) ・バイト君どおしの相性(A君とB君は一緒にできない等) など色々と考慮しないと、「とりあえず勤務表は作れたが、実用に耐えない」ことになってしまいます。 まずは既にあるものを使ってみて、使いにくければ改造してみたらいかがでしょうか http://www.vector.co.jp/soft/win95/business/se331132.html http://www.vector.co.jp/soft/win95/business/se356652.html http://members.at.infoseek.co.jp/kenchan_h/index22.html これ以外にも「エクセル 勤務表 作成」で検索すれば色々ヒットします。