問題タブ [timetable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3422 参照

python - ワーカー/タイムスロット順列/制約フィルタリング アルゴリズム

この人たちと一緒に私を助けてくれることを願っています。それは仕事を助けるものではありません。非常に勤勉なボランティアの慈善団体のためのものであり、彼らは現在持っているものよりも混乱や煩わしさの少ないタイムテーブルシステムを実際に使用することができます.

これを(確かに)自動化する優れたサードパーティ製アプリを誰かが知っていれば、それはほぼ同じです. ただ...教室を予約するためのようなランダムな時間割を提案しないでください.彼らはこれを行うことができないと思います.

読んでいただきありがとうございます。私はそれが大きな投稿であることを知っています。ただし、これを明確に文書化し、自分で努力したことを示すために最善を尽くしています.

問題

次の基準を満たすワーカーのシフトを生成するワーカー/タイムスロット スケジューリング アルゴリズムが必要です。

入力データ

処理

上記から、シフト労働者は、処理する 2 つの主要な入力変数です。

各シフトには、必要な労働者の最小数と最大数があります。シフトの最小要件を満たすことは成功に不可欠ですが、他のすべてが失敗した場合、手動で埋めるギャップのある勤務表は「エラー」よりも優れています:) 主なアルゴリズムの問​​題は、十分な場合に不必要なギャップがあってはならないということです労働者が利用可能です。

理想的には、シフトの最大数の労働者が満たされることですが、これは他の制約に比べて優先度が最も低いため、何かを与える必要がある場合は、これにする必要があります。

柔軟な制約

これらは少し柔軟性があり、「完璧な」ソリューションが見つからない場合は、境界を少し広げることができます。ただし、この柔軟性は、ランダムに悪用されるのではなく、最後の手段であるべきです。理想的には、柔軟性は「fudge_factor」変数などで構成可能です。

  • 2 つのシフトの間に最小時間間隔があります。したがって、たとえば、同じ日に 2 つのシフトをスケジュールするべきではありません。
  • 労働者が特定の期間 (たとえば、1 か月) に行うことができるシフトの最大数があります。
  • 1 か月に行うことができる特定のシフトの最大数があります (夜勤など)。

あると便利ですが、必須ではありません

上記を実行し、これらの一部またはすべてを含むアルゴリズムを考え出すことができれば、私は非常に感銘を受け、感謝します. これらのビットを個別に実行するアドオン スクリプトも素晴らしいでしょう。

  • 重複するシフト。たとえば、「フロントデスク」のシフトと「バックオフィス」のシフトが同時に発生するように指定できるとよいでしょう。これは、異なるシフト データを使用してプログラムを個別に呼び出すことで実行できますが、特定の期間内に複数のシフトに人をスケジュールすることに関する制約が失われる場合があります。

  • (グローバルではなく) 作業者ごとに指定可能な、作業者の最小再スケジュール期間。たとえば、Joe が過労を感じているか、個人的な問題に対処している場合、または初心者であり、他の作業者よりも少ない頻度でスケジュールすることをお勧めします。

  • 利用可能な労働者が適合しない場合に、最小シフト数を満たすためにスタッフを選択する自動/ランダム/公正な方法。

  • 突然のキャンセルに対処し、他のシフトを再調整せずにギャップを埋める方法。

出力テスト

おそらく、アルゴリズムはできるだけ多くの一致するソリューションを生成する必要があります。各ソリューションは次のようになります。

上記のデータが与えられた場合の個々のソリューションのテスト関数を次に示します。これは正しいと思いますが、それについてのピアレビューもいただければ幸いです。

試み

これを遺伝的アルゴリズムで実装しようとしましたが、完全に調整できないようです。そのため、基本原理は単一シフトで機能するように見えますが、いくつかのシフトといくつかの簡単なケースでさえ解決できません。労働者。

私の最新の試みは、可能なすべての順列を解決策として生成し、次に制約を満たさない順列を絞り込むことです。これははるかに迅速に機能するようで、さらに理解を深めましたが、順列の生成を支援するために python 2.6 の itertools.product() を使用していますが、うまくいきません。正直なところ、問題は私の頭にうまく収まらないので、多くのバグがあっても驚かないでしょう:)

現在、このコードは、models.py と rota.py の 2 つのファイルにあります。models.py は次のようになります。

と rota.py は次のようになります。

結果の前にデバッグ出力を切り取ると、現在次のようになります。

0 投票する
1 に答える
4219 参照

javascript - 選択可能な Javascript Timetable ウィジェットをお勧めできますか?

jsの「タイムテーブル」ウィジェットを知っている人はいますか?

次のものが必要です。

  • 列の曜日と行の時間
  • 1 時間のタイムスロット セル (またはカスタマイズ可能)
  • マウスを使用してセルを強調表示/選択して、週に複数回選択する機能。
  • 曜日全体の時間を選択します (たとえば、月曜日から金曜日の午後 6 時の時間帯をマウスでハイライトします)。
  • 1 日に複数回選択します (例: 月曜日の午前 10 時から午後 13 時までをマウスでハイライトします)。
  • 1 日に複数の時間範囲を選択 (例: 0800 から 0100 および 1300 から 1700)
  • ページが読み込まれる時間をプログラムで設定します (そのため、既に強調表示されています)。
  • ユーザーが選択した時間をウィジェットに問い合わせる
  • 毎日表示される時間数を制限します。たとえば、午前 6 時から午後 11 時までを表示します。
  • カスタマイズ可能な CSS / ルック アンド フィール
  • ユーザーは、必要な時間を選択する以外に何もする必要はありません (したがって、このようなものは役に立ちません) 。
  • 無料で使用できます

(私はそれをグーグルで調べましたが、私の要件を正確に満たすものは何も見えませんでした)

0 投票する
2 に答える
3553 参照

php - PHPを使用して時刻表を作成する

時刻表として機能するPHPを使用して小さなアプリを作成します。午前9時から午後5時まで、月曜日から金曜日まで開催します。

私はまだ時刻表をどのように機能させるかを決めていますが、この考えはありますが、ユーザーが時刻表のセクションにマウスを合わせると、ユーザーがそのポイントをクリックすると、新しいイベント予約ウィンドウが開き、ユーザーはイベントの種類とイベントを選択します期間してから保存します。

ここで、1440ピクセル幅のテーブルを作成し、1時間ごとに180ピクセルを作成し、その時間の1分ごとに3ピクセルを使用するようにしました。そのようなことをどのように実装しますか?つまり、ユーザーが時刻表の特定の部分をクリックしたときに何時かがわかるように、アプリをどのように作成しますか?

コードなどを求めているのではなく、この問題について考えた方法は他にもいくつかあるので、経験豊富な開発者がこのようなタイムテーブルを作成する方法を考えていますが、他の人のアイデアを聞くのはいつでもいいことです彼らが問題を解決する方法について。

どんなアイデアでも歓迎します、ありがとう。

0 投票する
3 に答える
4333 参照

sql - SQLを使用してバスの時刻表を設計しています。各バス路線には複数の停留所がありますが、路線ごとに異なるテーブルが必要ですか?

可能な限り最も効率的なデータベースを考え出そうとしています。私のバス路線はすべて約 10 か所の停留所があります。バスは 1 番から始まり、10 番目の停留所に到着すると、再び戻ってきます。このサイクルは 1 日 3 回発生します。

バスの時間を効率的に生成する方法と、停留所をどこに格納する必要があるかについて、私は本当に行き詰まっています。すべてのストップを 1 つのフィールドに入れ、時刻を別のフィールドに入れると、データベースはあまり動的になりません。

すべてのストップを 1 列に 1 つずつ保存し、次に時間を別の列に保存すると、1 つのストップが複数回あるため、さらに下に多くの繰り返しが発生します。

SQL の学習を始めたばかりで、これが設定されたタスクです。

前もって感謝します。

0 投票する
2 に答える
83 参照

mysql - 2つのタイムスタンプで並べ替えて、同じ行を2回表示することができます

タイムテーブルソリューションの作成を検討しています。次のようなタスクシートがあります

エリア1アイテム
1startTimeendTimeエリア1アイテム1startTimeendTime

endTimeまたはstartTimeのいずれかで、次に何が起こっているかを表示できるディスプレイを作成したいと思います。

すなわち

ニューカッスルリール16:4518:45ニューカッスルリール
217:4519:45

出力します

ニューカッスルリール16:45
ニューカッスルリール17:45
ニューカッスルリール18:45
ニューカッスルリール19:45

さらに、時刻がstartTimeであるかendTimeであるかを検出したいのですが、アクティビティごとに2つの行(time、area、item、start | end)を入力する必要があります。2つの行を作成するためのインターフェイスを作成できます。もっと良い解決策があるのだろうかと思いました。

0 投票する
3 に答える
7914 参照

sql - バス時刻表データベースの設計

300の異なるバス路線の時刻表を保存するデータベースを設計しようとしています。各路線には、月曜日から金曜日、土曜日、日曜日の停車地の数と時刻が異なります。各ルートのバスの出発時刻を次のように表しています。テーブルにnull値を含める必要があるかどうかわかりませんが、これは問題ないように見えますか?

0 投票する
3 に答える
2218 参照

sql - 従業員のSQLタイムテーブル

従業員シフトデータベースを作成する必要があります。これまでに、employee、employee_shift、shiftの3つのテーブルがあります。

従業員が月末に行ったシフトの数を計算するとします。私の質問は、月には30日があるため、28日と31日がある場合もあるということです。

これは、シフトテーブルに31の異なるバリエーションを作成する必要があることを意味しますか?月の各日に1つ?どの従業員が最も働いたかを計算するために?

私のビジネス関係では、従業員は1日に1または2シフトしていると書かれているので、60の異なる行のバリエーションが必要ですか?私は正しいですか、それを解決する簡単な方法はありますか

0 投票する
3 に答える
452 参照

sql - リトル(従業員-シフト)SQLデータベースヘルプ

従業員、emp_shift、shift、テーブルを含む小さなデータベースを作成しているので、月末に従業員が最も多くのシフトを行ったテーブルを計算できるようになりました。

私はSQLの作成、テーブルの挿入ステートメント、および私が達成しようとしていることを説明する小さな図を作成しました。これは初心者であり、これは過去4日間にやろうとしていた宿題です。

図: http: //latinunit.net/emp_shift.jpg SQL: http: //latinunit.net/emp_shift.txt

よろしくお願いします。締め切りは2日で、これはデータベース全体の一部にすぎません。