7

以下について少し調べてみましたが、うまくいきませんでした。誰かが以前に遭遇した場合に備えて、ここで質問したいと思います。

私は、ボランティアが運営するラジオ局の技術的なニーズを支援しています。出てきた主なものの 1 つは、広告をプログラマティックにスケジュールしたいということです。

広告用のきちんとした複雑なルール エンジンはたくさんありますが、必要なのはかなり単純なものだけです (検討に値する経験も含めて)。

これらのエンティティを処理するために、可能であれば SQL で何かを書きたいと思います。理想的には、誰かが他の広告媒体 (Web など) についてこのようなことを書いていれば、それは本当に役に立ちます。

エンティティ:

  • 広告 (カテゴリ、1 日あたりの再生回数、開始日、終了日、または永続的な再生で構成される)
  • 広告カテゴリ(レストラン、健康、食料品店など)

問題を単純化しすぎると、これは洗練された SQL ステートメントになります。そこに着く... :)

上記の 2 つのエンティティを使用して、1 日あたりのプレイリストを生成できるようにしたいと考えています。

  • 同じカテゴリの 2 つの広告が、互いに x 個の広告の間に再生されることはありません。
  • (あるといい)プロモーション性の高い広告をプッシュできます

現時点では、埋める「広告スロット」はありません。「時刻」に関する考慮事項はありません。

私たちはその日の広告をキューに入れ、曲やショーなどの合間にそれらを調べます。1 時間あたりにどれだけ広告を埋めなければならないかなどを把握しています。

考え/アイデア/リンク/例はありますか? 長い道のりを学ぶのではなく、探し続けて、うまくいけば何かに出くわすつもりです.

4

2 に答える 2

1

SMO さん、非常に興味深い質問です。最適なソリューションを探しているのではなく、指定したすべての制約を満たすソリューションを探しているだけなので、現時点では制約プログラミングの問題のように見えます。質問を締めくくりたい人たちに応えて、制約プログラミングを少し調べる必要があると思います。どんな運用調査サイトよりも、stackoverflow にはるかに近いです。

制約プログラミングとスケジューリングを調べてみてください。似たような問題が甘すぎることに気付くはずです。

進捗状況をお知らせください。

于 2010-06-05T02:39:58.393 に答える
0

T-SQL リクエストは、これを記述するのに最適な言語ではない可能性が高いため、当面無視します ...

このような難しい「レイアウト」の問題に対する私のお気に入りのアプローチの 1 つは、シミュレーテッド アニーリングです。実際の問題をどのように解決するかを考える必要がないため、これは良いアプローチです。定義するのは、現在のレイアウトがどれだけ優れているかの尺度 (場合によってはスコア) であり、その後、増減するランダムな変更を許可します。そのスコア。反復を繰り返すうちに、スコアが悪化する可能性が徐々に減少します。この「シミュレーテッド アニーリング」アプローチにより、極小値に陥る可能性が低くなります。

したがって、あなたの場合、特定のレイアウトのスコアリング関数は、同じカテゴリの次の広告までの距離と、同じシリーズの別の広告までの距離に基づいている可能性があります。後で考慮すべき時間帯がある場合は、それらをスコア関数に簡単に追加できます。

最初に、時間枠内で順番に、均等に、またはランダムに広告を割り当てます (どちらでもかまいません)。ここで、2 つのスロットを選択し、これら 2 つのスロットの内容を切り替えたときにスコアがどうなるかを考えます。いずれかの広告が許容範囲外に移動した場合は、すぐに変更を拒否できます。両方ともまだ範囲内にある場合、全体的なスコアが向上しますか? 最初はランダムに変更を加えますが、時間の経過とともにその可能性が低くなり、最終的にはより良いスコアに向かって単調に移動します.

簡単に実装でき、スコアに影響する新しい「ルール」を簡単に追加でき、実行時間を簡単に調整して「十分な」回答を受け入れることができます...

別のアプローチは、遺伝的アルゴリズムを使用することです。この同様の質問を参照してください: Best Fit Scheduling Algorithmこれはプログラムが難しい可能性がありますが、おそらくより迅速に適切な答えに収束します。

于 2010-06-05T02:59:38.500 に答える