• 締切済み

スケジューラーのプログラミング方法

いくつかの制約条件を持つ一週間分の予定をスケジューリングするプログラムを作成したいのですが、プログラミングを始めたばかりでどのように作ればいいのかわかりません。 プログラミングを実行した結果は、 <条件の例> スケジュール名 優先度 必要な時間(時間) 必要な人数 期限日 スケジュール1  2    3         5   ○月□日 スケジュール2  3    5         10   ○月▽日 スケジュール3  1    2         7   ○月□日 ・・・ 日にち     自由な時間(時間) 確保できる人数 ○月×日(月)   10          15 ○月△日(火)   9          7 ○月▽日(水)   12          10 ・・・ という条件があったときに、 <実行結果の例> ○月×日(月)(スケジュール名2) (スケジュール名4) ○月△日(火)(スケジュール名1)  ○月▽日(水)(スケジュール名5) (スケジュール名3) ・・・・・・ という結果が出るようにしたいのですが、どうしたらいいのでしょうか? よろしくお願いします。

noname#61995
noname#61995
  • Java
  • 回答数3
  • ありがとう数0

みんなの回答

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.3

No2です。返事が遅くなって申し訳ありません。 とりあえず、 ・スケジュールはスケジュール名と必要な人数のみとし、 各スケジュールを完了させる日数をとりあえず1日とする。 つまり、人数を確保できればその日にスケジュールは完了する、ということ。 これで実際に数件のデータがあったと仮定して、 自分の手で実際にスケジュールを組んでみた方がよいでしょう。 その「組み方」を元にプログラムを作成することになります。 ※もちろん、本番ではコンピュータがスケジューリングするので、 何となく組む、とかだいたいで、というような「人間的な」やり方はNGです。 それができれば、次にスケジュール完了が2日かかったとして、 同じようにスケジューリングを考えていきます。 2日分必要なので上の用件よりも相当難しいでしょう。 同様に3日だったら…として考えていき、最終的には スケジュールごとに完了するまでの日数がバラバラの場合を考えます。 そこまでできれば、人数と時間(ただし単位は「時間」ではなく「日」) を考慮したスケジューリングができるようになります。 以上が、スケジューリングを組む考え方、アルゴリズムについてです。 ここまでは実際にプログラムを組む前の話です。 プログラムを組む際には、上で考えたアルゴリズムを プログラムとしてコード化していくことになります。 実際に「○○する」という話ではなく、あくまで「どう作っていくか」 という方向性の話になりました。 これでもかなり難しい話になったと思います。 (自分の説明がかなり分かりづらい、というのもあると思いますが…) 本当はプログラム初心者の場合、こういった「アルゴリズムを考える所」は 他の人にまかせて、コードを書く所に専念した方が効率的に勉強できます。 メーラーやテキストエディタのようなメジャーなプログラムの場合、 書籍やWebでもいろいろ解説されているので、 アルゴリズムを自分で考える必要はありません。 それを読んでプログラムの作成方法や考え方を勉強し、 ある程度読みこなした上で自分オリジナルのアルゴリズムを考える段階に ステップアップしていく方がお勧めです。 >人数の条件だけを考慮しただけのプログラミングだったら容易に作れるのでしょうか? どこかに似たようなものを作っている書籍、サイトがあれば、 それを倣って勉強し、自分の必要とするものに作り直していけばよいですが、 これまで誰も作ってないようなものを作る場合、 初心者には相当高いハードルになると思います。 もし超えられそうにない、と感じるようでしたら、 遠回りでも、もっと簡単なもの、サンプルのあるようなものを いろいろ勉強してスキルを上げてから再挑戦しても良いと思います。

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.2

>スケジュールの必要な時間と日にちの自由な時間との関係ですが、 >(自由な時間1)-(必要な時間)=(自由な時間2) >(自由な時間2)> 0 >という関係を満たすとき、スケジュールを組み込むことができるという風にしたいのです。 条件に人数がありますが、人数は考慮しなくて良いのでしょうか? 考慮しなくて良いなら、話はずいぶん簡単です。 ですが、時間も入れてスケジューリングしないといけない場合、 ものすごく話がややこしくなります。 時間と人数という2つの要素をどう組み合わせてスケジュールするか、 という問題をクリアしないといけません。 これは、プログラムどうこうの前に、どう効率的なスケジュールを組むか、 というアルゴリズムの問題になります。 また、スケジューリングを考える際にも、いろいろ考慮する点はあります。 スケジュールが組めない場合の対応も考えないといけませんし、 スケジューリングの組み合わせが複数になることもあるでしょう。 ちなみに、今回のスケジューリングプログラムはどういう目的で作るのでしょうか? プログラムの勉強として?仕事で作らないといけない? いずれにしても、質問者さんが一人で考えるには少し荷が重そうな気がします。

noname#61995
質問者

補足

条件の人数は考慮したいです。むしろ、この人数の条件を時間の条件よりもメインに扱いたいと考えています。それなので、最低限、人数の条件を考慮したスケジューリングができるようにしたいです。人数の条件だけを考慮しただけのプログラミングだったら容易に作れるのでしょうか? >スケジュールが組めない場合の対応も考えないといけませんし、 組めなかった場合には、『スケジュールが組めませんでした。』と出力させてくれれば大丈夫です。 >スケジューリングの組み合わせが複数になることもあるでしょう。 一番はじめに見つかった解を出力するようにしてくれればいいです。 >ちなみに、今回のスケジューリングプログラムはどういう目的で作るのでしょうか? 現在、Javaによるスケジューラーを作る勉強をしています。仕事ではありません。 回答になっていないかも知れませんが、すみません。 いろいろと助言をありがとうございます。

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

スケジュール名4と5は何?スケジュール1~3から割り出せるものではなさそうだし… 期限の曜日は? 必要な時間と自由な時間との関係は? 掲示された表からは法則性とか条件が導き出せません。もう少し整理願います。

noname#61995
質問者

補足

ご意見ありがとうございます。 すみません。いろいろと説明不足な点が多くて。 条件についてですが、こんな感じの条件の項目があって欲しいということをわかっていただこうと思い、書いただけです。それなので数値自体は適当です。すみません。 それなので、スケジュール1~スケジュール5のそれぞれの数値などは適当でかまいません。実際、プログラムの利用者がこのプログラムを利用してスケジューリングするときに、任意に入力するようにしたいので。 同様に、日にちも3日間のみ書いてあるのですが、これも条件の項目だけを表したかっただけです。また、実際には日にちは月曜日から日曜日など7日間あり、例で書いた数値などには例として書いただけで意味はありません。プログラムの利用者に日にちの数値も任意で入力してもらうことになります。 スケジュールの必要な時間と日にちの自由な時間との関係ですが、 (自由な時間1)-(必要な時間)=(自由な時間2) (自由な時間2)> 0 という関係を満たすとき、スケジュールを組み込むことができるという風にしたいのです。 どうでしょうか?まだ不足している点がありましたら、指摘してください。よろしくお願いします。

関連するQ&A

  • スケジューラー又はグループウエアーを探しています

    以下のようなことができるWebスケジューラ及びグループウエアー(無料)を探しています。 今、一つのプロジェクトに3名(Aさん、Bさん、Cさん)のセクションリーダがいて、それぞれのリーダは各自プロジェクト会議をもっています。 Aさんは会議名M1、M2、M3を開催します。BさんはN1、N2、N3、N4の会議を開催します。 CさんはL1、L2、L3、L4の会議を開催します。 各リーダは自分の開催する会議に出席させる社員名(複数名)をプロジェクトのメインスケジューラ上で会議開催日・時間に記入します。 このスケジューラ上で3名のリーダは会議のスケジュールを管理します。 一方、リーダによって会議出席を登録された社員のカレンダーには自動的にその会議名が記載されるようなことができるスケジューラ及びグループウエアーを探しています。 このようにして一か月の会議スケジュール管理を行います。 会議はほぼ毎日開催されます。 入力はカレンダー形式で入力できるほうが好ましいです。 また、一日の時間区分も自分で設定できるものがいいです。 社員は予めプロジェクトの方で登録します。 例) Aさんが、8月1日の13:00-14:30の時間帯にスケジューラ上で社員の「橋本」さんを会議M1に出席させるために カレンダー上のその日時のところに「橋本」と入力すると、「橋本」さんのカレンダー上の8月1日 13:00-14:30のところに M1と自動的に記載される どなたか教えてください。

  • 要員管理について

    要員管理について 現在 週休1日で休みを取っていただいてる作業者の方達を週休2日制に変更致します。 勤務時間の変更はありません。 休日を1日増やすことに依り1日当たりの出勤人数が減ってしまことになります。 週休1日の時と同じ出勤人員を確保したい時は、どのように人員を増やせばよいでしょうか? 現状通り、各人の休日は、固定で曜日指定で変わりません。 例)Aさん (月) Bさん (火) Cさん(水)   改定後は、連続休みです。Aさん (月)(火) Bさん (火)(水) Cさん(水)(木) もし、5名の場合は、(月)~(金)まで一人1曜日が休みなので             (月)~(金)4名出勤で(土)(日)は5名出勤ですが 週休2日だと(月)4名 Aさん休み(火)3名A.Bさん休み(水)3名B.Cさん休み         (木)3名C.Dさん休み(金)3名D.Eさん休み(土)4名Eさん休み(日)5名 休みなし *週休1日と同一の各曜日の出勤人員を確保する為に増やさなければならない人数の求め方・計算式・法則はありませんか?工程毎に在籍人員は5~18名となっています。 宜しくお願い致します。

  • 要員管理について

    要員管理について 現在 週休1日で休みを取っていただいてる作業者の方達を週休2日制に変更致します。 勤務時間の変更はありません。 休日を1日増やすことに依り1日当たりの出勤人数が減ってしまことになります。 週休1日の時と同じ出勤人員を確保したい時は、どのように人員を増やせばよいでしょうか? 現状通り、各人の休日は、固定で曜日指定で変わりません。 例)Aさん (月) Bさん (火) Cさん(水)   改定後は、連続休みです。Aさん (月)(火) Bさん (火)(水) Cさん(水)(木) もし、5名の場合は、(月)~(金)まで一人1曜日が休みなので             (月)~(金)4名出勤で(土)(日)は5名出勤ですが 週休2日だと(月)4名 Aさん休み(火)3名A.Bさん休み(水)3名B.Cさん休み         (木)3名C.Dさん休み(金)3名D.Eさん休み(土)4名Eさん休み(日)5名 休みなし *週休1日と同一の各曜日の出勤人員を確保する為に増やさなければならない人数の求め方・計算式・法則はありませんか?工程毎に在籍人員は5~18名となっています。 宜しくお願い致します。

  • 複数の関数を組み合わせる方法

    曜日 開始時間 終了時間 実働時間 月   9:00  12:45  3:45 火   9:30  11:30  2:00 水   9:00  11:30  2:30 月   13:00 15:00  2:00 月   15:00 16:45  1:45 上記のデータから以下の条件を満たしたデータだけを抽出したいのですが どう関数を組み合わせれば良いか教えて下さい。 [条件] (1)曜日は月である。 (2)終了時間が12:00以前 (3)実働時間が3時間未満 上記のデータの場合、件数結果は1件となる。

  • パソコンでプログラミングはできますか?

    お教え下さい。 プログラミングを全く勉強したことがありません。 まず、どういう方法でプログラミングするかがわかりません。 Windowsについているメモとかワードパッドとかでもプログラムが組めるよという人もいますが本当でしょうか。 たしかコンパイラーというものが必要という話を聞いたこともあります。 話を具体的にするために例をあげさせていただきますが、まずは自分の定年退職まであと何日かを表示するプログラムを練習問題として考えています。ほんの一例ですが。 プログラミング言語というより、それをPC上で動かすまでの手段を求めています。 よろしくおねがいします。

  • 得た結果を別の値にして返す方法は?

    VBスクリプトについて質問があります。日付関数で例えば関数で今月を取得し(例:2008年1月に実行したとして)200801という結果を得たとします。もし出た結果が01の時2007_10-12という値を返すような方法はあります でしょうか? 条件としては四半期ごとにVBSでファイル名を作成するので作成のソースに埋め込むために値を出したいということになります。 ★バッチで1,4,7,10月に実行する 実行したときに1月であれば前の年と前四半期の月を入れる 例として2008年1月に実行すると2007_10-12 2008年4月に実行すると2008_01-03 といった具合になります。 どんな風にコーディングしたらよいのでしょうか?

  • アルゴリズム java お店の営業時間を知る方法

    よろしくお願いいたします。 行いたい事 条件から、お店の営業時間(open)を知るプログラムの作成 以下の条件がテキストファイルより渡されます。 ・曜日毎のopen時間 ・月毎に決まった条件のopen時間、close時間 ・特別な日のopen時間、close時間 (openは営業時間、closeは休業時間です。) 条件には、優先順位があります。 特別な日>月毎>曜日毎 曜日毎の設定で、営業時間になっていても、 特別な日として、休みを設定すれば、そちらが優先されます。 ----------------------------------------------------------------------- データ例.(実際は、決まったフォーマットで条件式が与えられています。) ・曜日毎の条件 月曜日~金曜日 7:00~19:00 open ・月毎の条件 毎月第3,4土曜日は 7:00~12:00 open 毎月1日、15日は、7:00~12:00 close ・特別な条件 特別なclose 4/29 5/3 特別なopen 5/1 19:00~ 22:00 ----------------------------------------------------------------------- この条件から、一定期間のお店の営業時間を表示する必要があります。 ----------------------------------------------------------------------- 取得したい内容 4/26日から1週間の営業時間 4/26(土)07:00~12:00 4/27(日) 4/28(月)07:00~19:00 4/29(火) 4/30(水)07:00~19:00 5/1 (木)12:00~22:00 5/2 (金)07:00~19:00 5/3 (土) ----------------------------------------------------------------------- ・データをどのようにもつか? ・どのように処理していくか? 恥ずかしながら、解法の手がかりすらつかめない状態です。 どなたか、ヒントや参考書、アルゴリズムなどを、ご教示していただけないでしょうか? よろしくお願いいたします。

  • これから学ぶべきプログラミングについて

    プログラミングのまったくの初心者です。以下の質問に語弊等がありましたらどうかご容赦下さい。 仕事上の顧客データ(氏名、生年月日、購入歴等)、製品情報(商品名、仕様、値段等)を外出中にPCや携帯で、簡単な条件を入れて検索し、条件に合ったものをサーバーからダウンロード?して参照したいと思っています。情報量はほんのわずかなものです。 資金に乏しく自力で構築したいのです。 そのようなプログラミングを作る場合、PCと携帯ではまたべつの言語が必要なのでしょうか? PCではPHPというのを覚えればよいのでしょうか? Perlやrubyというものとの違い、初心者にとっての覚えやすさ、それぞれの特製を詳しく教えて頂けたら助かります。 また色々調べるとXMLといのも必要な感じなのですが、どうかかわるのでしょうか? サーバーについても難しいようなのでレンタルしようと思うのですが、それだと初心者にも扱えますでしょうか? ブログを作った事はありますが、HPなどは作った事はないです。 自分なりに図解雑学シリーズのソフトウェアやプログラミング言語などを読んだのですが、開発の歴史がわかっただけで、どの言語が何に向いているのかはよくわかりませんでした。 どういうような過程で、何が必要で、習得する年月の目安等も教えて頂けたらありがたいです。どうぞ宜しくお願いします。

  • 学校課題のプログラミングにとても悩まされています…。

    学校課題のプログラミングにとても悩まされています…。 学校でC言語でプログラミングせよ。 との課題が出たのですが、プログラミングが全くわからなくて困っています!! お願いします!!誰か助けて下さい!! 待ち行列 ・レジ到着は一時間あたり平均20人。 ・客は一番待ち人数の少ないレジに並ぶ。 ・待ち人数の同じレジが二つ以上ある場合は等確率でその内の一つをランダムに選択。 ・客一人あたりの勘定時間は平均値10分の指数分布 ・一つの勘定台には最長平均5分までしか客を待たせられない レジの必要数の推定と客の平均待ち時間およびレジの平均空き時間を推定せよ。 ともありますが、さっぱりです…。

  • Excelで曜日・数字が含まれた文字列を曜日別に分割したいです

    Excel関数で悩んでいます。 ひとつのセルに曜日と数字が入っていた場合に 数字別に曜日を分割する方法はあるでしょうか。 例)              月  火  水  木  金  土  日 月:500、水:800     500     800 月火:700、木:500    700  700 500 月:500、火水木金:700  500  700 700 700 700 上記のようにです。 条件のセルはひとつです。月~日は別セルです。(内容は数字になる) MINとかLENと使って数字を抜くことはできても複数の条件に対しての 数字がどうしても読み取れません。 よろしくお願いいたします。