J'utilise VB.NET et j'essaie de trouver un algorithme ou un pseudo-code, ou un code VB.NET qui me permettra de faire ce qui suit (j'espère que je peux bien l'expliquer) :Algorithme Knapsack pour le temps
J'ai 2 objets de collection, Cob1 et Cob2. Ces objets de collection stockent des objets qui implémentent une interface appelée ICob. ICob a 3 propriétés. Une propriété IsSelected booléenne, une propriété appelée Length, qui renvoie un TimeSpan et une propriété Rating, qui est un entier court. OK, maintenant Cob1 a environ 100 objets stockés dans la collection et Cob2 est une collection vide. Ce que je veux faire, c'est sélectionner des objets de Cob1 et les copier sur Cob2. Je veux que les règles suivantes obéirent lors de la sélection des objets si:
Je veux être en mesure de préciser un laps de temps et je veux assez d'objets pour être sélectionnés pour entrer dans la timespan je précise (basée sur la propriété de longueur) . Donc, par exemple, si je passe une période de 10 minutes à ma fonction, il faut choisir suffisamment d'objets qui remplissent toute la fenêtre de 10 minutes, ou se rapprocher autant que possible du remplissage.
Aucun objet ne doit être sélectionné deux fois.
Les objets ayant une note plus élevée (via la propriété Rating) devraient avoir une meilleure chance d'être sélectionnés que les autres objets.
Aucun objet sélectionné dans les 30 dernières minutes ne doit être sélectionné à nouveau (de sorte que chaque objet soit finalement sélectionné au moins une fois), quelle que soit l'évaluation.
Quelqu'un peut-il me donner quelques conseils sur la façon d'y parvenir? Les conseils peuvent être sous la forme de processus mentaux, code exemple VB.NET, Pseudo-code ou à peu près tout ce qui pourrait m'aider.
Merci
EDIT:
Peut-être que cela aiderait à tout le monde si je révélais ce que je suis en train de faire dans la vie réelle.
J'écris un logiciel pour une station de radio qui va sélectionner automatiquement la musique et les publicités à jouer, un peu comme un gestionnaire de programme informatisé.
La longueur représente la longueur de l'octet son (soit une chanson ou une publicité) et la note est juste cela. Si la chanson est populaire, elle obtient plus de temps d'antenne. Si un annonceur paie plus d'argent, il obtient également plus de temps d'antenne. Donc, mon programme devrait choisir des chansons qui jouent pendant environ 20 minutes, puis choisir des publicités à jouer pendant environ 5 minutes environ.
J'espère que cela aide un peu.
Merci pour la contribution de tout le monde!
Alan