質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

2回答

1280閲覧

組み合わせ リソース分配について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2017/05/25 00:03

A~Zさんまで人がいるとします。各人はそれぞれ技能を持っています。技能を「アルファ、ベータ、ガンマ、デルタ・・・」とします。各人はそれぞれ重複した技能を持っています。

Aさん:アルファ、ベータ
Bさん:アルファ、
Cさん:アルファ、カッパ
Dさん:エプシロン
Eさん:ベータ、エプシロン
Fさん:アルファ、イオタ、ベータ、ラムダ
Gさん:ベータ、エプシロン

仕事は1~31日まであるとします。仕事は1日完結とします。各人は1日1つの技能しか使いません。例えば、Aさんはアルファとベータの技能を同じ日に使う事はありません。やりたい事は、人員を最適に分配したいと思っています。

例えば、アルファという技能を持った人はAさん、Bさん、Cさん、Fさんです。しかし、Aさんに仕事を振った時、Aさんはベータの技能がつかえなくなってしまいます。よって、仕事をしてもらうのはBさん。というように、人員を31日分最適に割り振るにはどうしたらいいでしょうか?

このような事をするのに知らないといけない数式だったり、アルゴリズム名だったりあればお教え願います!または、このソフトウェアのこの機能を使えばいいと思うといったものでも結構です。宜しくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/05/25 01:00

1日の仕事に必要な技能と、各技能を持つ従事者の必要数が決まっているというような想定でしょうか? また、何を基準にして"最適"を判断するのでしょうか? カッパの技能が毎日必要な場合、Cさんを31日間働き詰めにするという労働基準法違反の割り振りをどう考えるのですか?
退会済みユーザー

退会済みユーザー

2017/05/25 01:46

ご回答ありがとうございます。質問の仕方が悪かったです。申し訳ありません。再度、質問内容をまとめて修正したいと思います。31日間の話は例え話なので、労働基準法とかそういった事は考えていませんでした。不快に思われましたら申し訳ありません。
guest

回答2

0

ベストアンサー

詳しくないけど興味があったので調べてみました。
質問者様の例くらいならアルゴリズムとか関係なしに、順番に割り当てていけばそれっぽいのはできそうですが、病院スタッフのスケジューリングとか(想像しただけで大変そう…)、それだけで一分野を築いているみたいですね。
とりあえずググったキーワードとリンクだけ書いておきます。

スタッフスケジューリング アルゴリズム
人員配置 アルゴリズム

投稿2017/05/25 00:33

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/25 01:41

ご回答ありがとうございます。スタッフスケジューリングアルゴリズム、人員配置アルゴリズムというキーワードで一度調べてみます。参考にさせて頂きます。
guest

0

プログラムの基本文法レベルでできると思います。

投稿2017/05/25 00:27

workaholist

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2017/05/25 00:34

文法的なことを問う質問ではないと思うのですが…
workaholist

2017/05/25 00:42

アルゴリズムとか別に不要かなと個人的に思って書いただけです。 誤りであれば申し訳ありません。
maisumakun

2017/05/25 00:47 編集

てっきり、皮肉のつもりで書いた回答かと誤解してしまい、すみませんでした。低評価は取り消します。 とはいえ、「組み合わせ問題」は全般に難問揃いの世界です。
ozwk

2017/05/25 01:30

組合せ最適化にアルゴリズムいらないというのもどうかと思いますが。
退会済みユーザー

退会済みユーザー

2017/05/25 01:41

ご回答ありがとうございます。私の質問が悪かったです。申し訳ありません。
workaholist

2017/05/25 01:42

この例の場合、31日分という情報は不要ですよね? 1日目に働いた人は2日目には働けないというような制限はないので。 1日目に発生した仕事に必要な技能をその日にいる人の技能で割り当てるロジックを31回繰り返すだけなので。 単純にマイノリティな技能から割り当てていくのかなくらいしか考えてませんでした。
退会済みユーザー

退会済みユーザー

2017/05/25 01:48

おっしゃる通り、31日という情報は不要でした。質問の仕方が悪かったです。申し訳ありません。
fuzzball

2017/05/25 01:52 編集

最適化したいのであれば期間は必要なのでは?
workaholist

2017/05/25 02:01

同じ技能の仕事が毎日続いた場合に、その技能を持つ人達の中でできるだけ同じ人が割り振られないように、というような条件があるのであれば期間は必要ですね。 機械的に仕事を埋めるという最適化であれば毎日同じ人が働こうが知ったこっちゃないので期間は関係ないですよね。
fuzzball

2017/05/25 02:04

それは最適化していないでしょう?
workaholist

2017/05/25 02:10

書かれている条件だけだとそうなると考えました。 見えていない最適化条件を想像しても人によって回答が変わりますので。 明記されているのは「各人は1日1つの技能しか使いません」ですよね。
fuzzball

2017/05/25 02:21

「最適に分配」というのは明記されています。 その具体的な内容が書かれていないだけです。 そういうときは、coco_bauerさんのように質問者に聞けばいいのですよ。
退会済みユーザー

退会済みユーザー

2017/05/25 02:30

私の質問の仕方が悪かったせいで皆様に不快な目に合わせてしまい申し訳ありません。もっと質問内容を考えてするべきでした。一度考え直し再度質問させて頂きます。申し訳ありません。
workaholist

2017/05/25 02:33

> fuzzballさん 承知しました。 後はお願いします。 > goodtimesbadtiさん いえいえ、質問者さんの視点としては普通の質問だと思います。 私の思慮も足りなかったと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問