私はVB.NETを使用していて、いくつかのアルゴリズムや疑似コード、または次のことを実行できるVB.NETコードを考え出そうとしています(うまくいけば、これをうまく説明できます)。
Cob1とCob2の2つのコレクションオブジェクトがあります。これらのコレクションオブジェクトは、ICobと呼ばれるインターフェイスを実装するオブジェクトを格納します。ICobには3つのプロパティがあります。ブール値のIsSelectedプロパティ、TimeSpanを返すLengthと呼ばれるプロパティ、および短整数であるRatingプロパティ。
これで、Cob1のコレクションには約100個のオブジェクトが保存され、Cob2は空のコレクションになりました。私がやりたいのは、Cob1からオブジェクトを選択し、それらをCob2にコピーすることです。ただし、オブジェクトを選択するときは、次のルールに従う必要があります。
タイムスパンを指定できるようにしたいのですが、(Lengthプロパティに基づいて)指定したタイムスパンに収まるように十分な数のオブジェクトを選択する必要があります。したがって、たとえば、関数に10分のタイムスパンを渡す場合、10分のウィンドウ全体を埋めるのに十分なオブジェクトを選択するか、可能な限りいっぱいに近づける必要があります。
オブジェクトを2回選択しないでください。
(Ratingプロパティを介して)より高い評価を持つオブジェクトは、他のオブジェクトよりも選択される可能性が高くなります。
評価に関係なく、過去30分間に選択されたオブジェクトを再度選択することはできません(各オブジェクトが最終的に少なくとも1回選択されるようにするため)。
誰かがこれを達成する方法についていくつかのヒントを教えてもらえますか?ヒントは、メンタルプロセス、VB.NETサンプルコード、擬似コード、または私に役立つ可能性のあるその他のものの形をとることができます。
ありがとう
編集:
実生活で何をしようとしているのかを明らかにしておけば、みんなに役立つかもしれません。
私はラジオ局用のソフトウェアを書いています。これは、コンピューター化されたプログラムマネージャーのように、再生する音楽と広告を自動的に選択します。
長さはサウンドバイト(曲または広告)の長さを表し、評価はそれだけです。曲が人気のある場合、それはより多くの放送時間を取得します。広告主がより多くのお金を払うならば、それはまたより多くの放送時間を得る。
したがって、私のプログラムでは、20分ほど再生される曲を選択してから、約5分程度再生する広告をいくつか選択する必要があります。
うまくいけば、これは少し役立つでしょう。
皆様からのご意見ありがとうございました!
アラン