我正在使用VB.NET,我試圖想出一些算法或一些僞代碼,或者一些VB.NET代碼,這些代碼會讓我做下面的事情(希望我能解釋得很清楚) :時間的揹包算法
我有2個集合對象,Cob1和Cob2。這些集合對象存儲實現了稱爲ICob的接口的對象。 ICob有3個屬性。一個布爾型的IsSelected屬性,一個名爲Length的屬性,它返回一個TimeSpan以及一個Rating屬性,它是一個短整數。
好吧,現在Cob1有大約100個對象存儲在集合中,而Cob2是一個空集合。我想要做的是從Cob1中選擇對象並將它們複製到Cob2。我想雖然在選擇對象時,以下規則遵守:
我希望能夠指定一個時間跨度,我想選擇足夠的對象以適應我指定的時間跨度(基於長度屬性) 。例如,如果我將一個10分鐘的時間跨度傳遞給我的函數,它應該選取足夠的對象來填充整個10分鐘的窗口,或者儘可能接近地填充它。
不應該選擇兩個對象。
具有較高評分的對象(通過評分屬性)應該有更好的機會被挑選,然後其他對象。
不管評級如何,應該再次選擇在過去30分鐘內未被選擇的對象(以便每個對象最終將被選擇至少一次)。
任何人都可以給我一些提示如何實現這一目標?這些提示可以是心理過程,VB.NET示例代碼,僞代碼或其他任何可能幫助我的內容。
感謝
編輯:
也許,如果我發現我想要在現實生活中做這將有助於給大家。
我正在爲廣播電臺編寫軟件,它會自動選擇要播放的音樂和廣告,有點像電腦程序管理器。
長度代表聲音字節(歌曲或廣告)的長度,評分就是這樣。如果這首歌很流行,它會得到更多的播出時間。如果廣告商支付更多的錢,那麼它也會獲得更多的通話時間。
所以我的程序應該選擇播放20分鐘左右的歌曲,然後選擇一些廣告播放大約5分鐘左右。
希望這會有所幫助。
感謝大家的意見!
艾倫