4

私は問題に直面しており、それを解決するためのアプローチを決定/把握するのに問題があります。問題は次のとおりです。

N 回の電話をかける場合、最大数の電話をかけるようにスケジュールします。

知っている情報:

  • 保留中の通話数
  • Number callers (電話で話す人)
  • 電話の種類(リマインダー、請求、交渉など)
  • 電話タイプの推定時間 (リマインダー: 1 分、請求: 3 分、交渉: 15 分など)
  • 保留中の通話数
  • 特定の通話の理想的な日付
  • 特定の呼び出しの「最小」日付 (前に発生することはできません...)
  • 特定の呼び出しの「最大」日付 (後に発生することはできません...)
  • 1日は8時間しかない
  • ルール:

  • 「最小」日以前または「最大」日以降は、電話をかけることはできません。
  • リマインダー コールをすると 1 ポイント、リマインダー コールを逃した場合は -2 ポイント
  • 請求コールが行われた場合は 6 ポイント、請求コールが行われなかった場合は -9 ポイント
  • 交渉コールが与えられた賞 20 ポイント、交渉コールが失敗した -25 ポイント
  • ジョンへの電話は、ジョンに最初に電話をかけた人からかけなければなりません。する必要はありませんが、そうすると、その呼び出しは追加のポイントを獲得します...
  • 私は AI について少し知っており、これがクラスに適した問題であることは認識できますが、どのアプローチを取るべきかわかりません... ニューラル ネットワークを使用する必要がありますか? グラフ検索?

    PS: これは学術的な質問ではありません。これは、私が直面している現実世界の問題です。
    PS2: ポインティング システムはまだ作成中です... ここでサンプリングされたポイントは実際のものではありません.
    PS3: 結果のアルゴリズムは数回実行することができます (バッチ ジョブ スタイル) または、パフォーマンスに応じてオンラインで解決できます.. .
    PS4 : 私の契約では、(発信した通話の量) + (比率 * 通話時間) に基づいてクライアントに請求すると記載されていますが、サービスの質に関する条項があり、リマインダーの通話のみを行うのは良くありません。私にとっては、思い出したとしても、人々はまだ予定に出席するのを忘れているからです...それは私が提供するサービスの「質」を低下させます...正確な数はまだわかりません

    4

    2 に答える 2

    4

    これは AI にとって問題ではないようです。

    私だったら、優先度順に並べた一連のルールを作成します。次に、発信者のスケジュールの入力を開始します。

    ルールの 1 つは、最初に最短時間の通話タイプを割り当てることです (「発信される通話の最大数」の基準を満たすため)。

    これは、重量と価格を通話時間と通話ポイントに置き換えるナップザック問題のように聞こえます。

    于 2012-12-28T16:24:28.660 に答える
    0

    これは非常に基本的な答えにすぎませんが、最適な解決策を「力ずくで」試すことができます。

    • Combinatoricsライブラリ (NuGet にもあります) を使用して、特定の人が特定の期間に行う呼び出しのすべての順列を生成します (たとえば、1 週間先の未来を調べます)。
    • 順列ごとに、コールを推定所要時間ごとに 8 時間のチャンクにグループ化し、日付を割り当てます。
    • チャンクを反復処理します。呼び出しに早く到達した場合は、その順列を破棄します。それ以外の場合は、通話が終了日より前に行われたかどうかに基づいてポイントを加算または減算します。その順列のスコアとして合計スコアを保存します。
    • スコアが最も高い順列を選択します。
    于 2012-12-28T18:22:54.943 に答える