私はVB.NETを使用していますが、私はいくつかのアルゴリズムやいくつかの擬似コード、または次のことを可能にするいくつかのVB.NETコードを考え出しています(うまくいけば、 :時間のナップザックアルゴリズム
私は2つのコレクションオブジェクトCob1とCob2を持っています。これらのコレクションオブジェクトには、ICobというインターフェイスを実装するオブジェクトが格納されます。 ICobには3つのプロパティがあります。 boolean IsSelectedプロパティ、Lengthというプロパティ、TimeSpanを返すプロパティ、およびShortプロパティであるRatingプロパティ。
これで、Cob1には約100個のオブジェクトがコレクションに格納され、Cob2は空のコレクションになりました。私がしたいことは、Cob1からオブジェクトを選択し、Cob2にコピーすることです。でも、私は、オブジェクトを選択する際に従う次のルールをしたい:
私は時間枠を指定できるようにしたいと私は十分なオブジェクトが、私は(Lengthプロパティに基づいて)指定したタイムスパンに適合するように選択することにしたいです。例えば、私が10分の時間を関数に渡すと、10分のウィンドウ全体を満たす十分なオブジェクトを選択するか、できるだけそれを埋めるようになるはずです。
オブジェクトを2回選択する必要はありません。
より高いレーティング(レーティングプロパティを介して)を持つオブジェクトは、他のオブジェクトを選択するより良い機会を持つべきです。
評価に関係なく、最後の30分以内に選択されたオブジェクトは、再度選択しないでください(各オブジェクトは最終的に少なくとも1回選択されます)。
誰でも私にこれを達成するためのヒントを教えてもらえますか?ヒントは、メンタルプロセス、VB.NETのサンプルコード、擬似コード、または私を助けるかもしれない他の何かのフォームにすることができます。
おかげ
編集:私は、私は現実の生活の中で何をしようとしている明らかにした場合
たぶんそれはすべての人に役立つだろう。
私はラジオ局用のソフトウェアを作成しています。このラジオ局は、コンピュータ化されたプログラムマネージャーのように、再生する音楽と広告を自動的に選択します。
長さはサウンドバイト(曲または広告のいずれか)の長さを表し、評価はそれだけです。歌が普及すれば、それはより多くの放送時間を得る。広告主がより多くのお金を払うと、より多くの報酬を得ることができます。
私のプログラムでは20分ほどの曲を選んで、約5分ほど再生する広告を選んでください。
これはほんの少し役に立ちます。
皆様からのご意見ありがとうございます!
アラン