Hoi.
Ik ben van plan een programma te schrijven dat knapzakproblemen kan oplossen. In mijn geval is het uiteindelijke doel van het probleem: het maximaliseren van de opbrengst van een aantal handelingen tegen bepaalde kosten. Deze kosten mogen een voorafgestelde waarde niet overschrijden. De handelingen variëren in efficientie en opbrengst. Over het algemeen kunnen we stellen, hoe hoger de opbrengst, des te inefficienter de handeling is.
Tot zo ver is het niet al te ingewikkeld, en als het dit was kon ik het wel implementeren met behulp van lineair programmeren of wat dan ook.
Echter in mijn specifiek geval doen zich extra randvoorwaarden voor. De drie belangrijkste waar ik mee worstel, zijn
Ik vermoed dat het knapzakprobleem samen met randvoorwaarde 1 in het engels als het ‘collapsing knapsack’ probleem te boek staat. Google vindt alleen links naar artikelen die achter slot en grendel van bepaalde sites staan die de publicaties willen verkopen. Wikipedia heeft ook geen teksten over dit probleem—alleen maar over het gewone knapsack probleem, plus een paar variaties daarop. Bovendien heb ik nergens iets kunnen vinden over handelingen die elkaar kunnen beïnvloeden. Of moet ik een samengestelde handelingen als één handeling zien? Dat zou vervelend zijn omdat er dan heel veel combinaties mogelijk zijn.
Ik ben van plan een programma te schrijven dat knapzakproblemen kan oplossen. In mijn geval is het uiteindelijke doel van het probleem: het maximaliseren van de opbrengst van een aantal handelingen tegen bepaalde kosten. Deze kosten mogen een voorafgestelde waarde niet overschrijden. De handelingen variëren in efficientie en opbrengst. Over het algemeen kunnen we stellen, hoe hoger de opbrengst, des te inefficienter de handeling is.
Tot zo ver is het niet al te ingewikkeld, en als het dit was kon ik het wel implementeren met behulp van lineair programmeren of wat dan ook.
Echter in mijn specifiek geval doen zich extra randvoorwaarden voor. De drie belangrijkste waar ik mee worstel, zijn
- De handelingen waar ik invloed over kan uitoefenen zijn maken deel uit van een groter geheel aan handelingen. Dit houdt in dat mijn maximaal mogelijke bijdrage minder wordt naar mate de tijd vordert! Ik wil natuurlijk mijn handelingen zo kiezen dat ze mijn bijdrage maximaliseren. (Hoewel het mogelijk is dat de tijd zo kort is dat ik zelfs met de meest inefficiente handelingen het budget niet op kan maken moet ik daar niet vanuit gaan. Het spel is natuurlijk om een gulden middenweg te vinden tussen efficientie en opbrengsten.)
- sommige opeenvolgende handelingen kunnen invloed op elkaars opbrengsten of kosten (al dan niet positief) hebben.
- sommige handelingen (hoge opbrengst tegen relatief lage kosten) kunnen niet constant achter elkaar worden verricht.
Ik vermoed dat het knapzakprobleem samen met randvoorwaarde 1 in het engels als het ‘collapsing knapsack’ probleem te boek staat. Google vindt alleen links naar artikelen die achter slot en grendel van bepaalde sites staan die de publicaties willen verkopen. Wikipedia heeft ook geen teksten over dit probleem—alleen maar over het gewone knapsack probleem, plus een paar variaties daarop. Bovendien heb ik nergens iets kunnen vinden over handelingen die elkaar kunnen beïnvloeden. Of moet ik een samengestelde handelingen als één handeling zien? Dat zou vervelend zijn omdat er dan heel veel combinaties mogelijk zijn.