2009-04-29 3 views
0

VB.NET을 사용 중이고 일부 알고리즘 또는 일부 유사 코드 또는 다음을 수행 할 수있는 일부 VB.NET 코드가 필요합니다. (잘 설명해 드리겠습니다.) :시간대 배낭 알고리즘

나는 2 개의 수집 객체 인 Cob1과 Cob2를 가지고있다. 이러한 콜렉션 객체는 ICob이라는 인터페이스를 구현하는 객체를 저장합니다. ICob에는 3 개의 속성이 있습니다. 부울 IsSelected 속성, Length라는 속성, TimeSpan을 반환하는 속성 및 짧은 정수인 Rating 속성

이제 Cob1에는 컬렉션에 저장된 약 100 개의 개체가 있고 Cob2는 빈 컬렉션입니다. 내가하고 싶은 것은 Cob1에서 오브젝트를 선택하고 Cob2로 복사하는 것입니다. 그래도 난 개체를 선택할 때 다음과 같은 규칙이 순종하려는 :

  1. 가 나는 시간 범위를 지정할 수 있기를 원하고 내가 원하는만큼 객체가 사용자가 지정한 시간 범위에 맞게 선택할 수 (Length 속성 기준) . 예를 들어, 필자가 10 분의 시간 간격을 내 함수에 전달하면, 10 분 동안의 전체 윈도우를 채우는 객체를 선택하거나 가능한 한 그 객체를 채우기에 가깝게해야합니다.

  2. 개체를 두 번 선택해야합니다.

  3. 등급 속성이 높은 (등급 속성을 통해) 객체는 다른 객체를 선택하는 것이 좋습니다.

  4. 등급에 관계없이 최근 30 분간 선택한 개체가 다시 선택되어서 각 개체가 결국 한 번 이상 선택됩니다.

아무에게도이 작업을 수행하는 방법에 대한 팁을 줄 수 있습니까? 팁은 정신 프로세스, VB.NET 예제 코드, 의사 코드 또는 나를 도울 수있는 다른 모든 것의 형태 일 수 있습니다.

감사

편집 : 내가 실제 생활에서 할 노력하고있어 공개하면

어쩌면 그것은 모든 사람에게 도움이 될 것이다.

나는 음악과 광고를 자동으로 선택하는 라디오 방송국 용 소프트웨어를 만들고 있는데, 컴퓨터 화 된 프로그램 관리자와 비슷합니다.

길이는 사운드 바이트 (노래 또는 광고)의 길이를 나타내며 등급은 바로 그 것입니다. 노래가 인기가 있다면 더 많은 방송 시간을 갖습니다. 광고주가 더 많은 돈을 지불하면 더 많은 방송 시간을 얻습니다.

그래서 내 프로그램에서 20 분 정도 재생되는 노래를 선택하고 약 5 분 정도 재생할 광고를 선택해야합니다.

이 정보가 도움이되기를 바랍니다.

모두에게 감사드립니다.

앨런

답변

4

참고 :

대한 제한 1 2

제한 3 다소 모호 제한 요청에 따라, 설정 동작에 고전 knapsack problem에서이다. 더 높은 가치 또는 더 높은 수명을 갖는 것이 더 낫습니다. maximaze에 목적 함수를 지정하지 않은 경우 (또는 정확히 말하면 수명과 속도라는 두 가지가 있음) 파레토 최적 솔루션이 있습니다.

제한 사항 4는 블랙리스트 형태로 맵 오브젝트 -> 지난 번 선택.을 구현함으로써 구현 가능합니다.

짧은 이야기 : 처음에는 제한 4로 개체를 블랙리스트에 추가하여 세트를 필터링 한 다음 배낭 알고리즘을 적용합니다.

0

4.를 구현하기 위해, 나는 암 나무 열매가 마지막으로 선택한 때 날짜/시간을 절약해야합니다 생각합니다.그런 다음 다음 단계를 거쳐야합니다.

  1. 지난 30 분 이내에 선택되지 않은 필터를 필터링합니다.

  2. 등급순으로 정렬하고 목록의 첫 번째 항목에 "커서"를 설정하십시오.

  3. 항목의 시간 경과를 확인하십시오. 지정된 시간에 맞을 정도로 짧으면 선택하십시오. 그렇지 않은 경우 3로 이동하여 다음 항목으로 진행하십시오.

  4. 시간대가 채워 졌는지 확인하십시오. 그렇다면 완료되었습니다. 그렇지 않은 경우 3로 이동하여 다음 항목으로 진행하십시오.