Lösen Sie das Rucksackproblem
Die neue Funktion KnapsackSolve ermöglicht die einfache und benutzerfreundliche Lösung kombinatorischer Optimierungsprobleme wie das Rucksackproblem. Rucksackprobleme kommen in einer Vielzahl von Feldern vor, wie beim zweidimensionalen Zuschnittproblem und bei der Investitionsrechnung, und können zum Erstellen von Kryptosystemen verwendet werden.
Dies ist eine Einkaufsliste, auf der jede Frucht gemeinsam mit ihrem Kaloriengehalt, durchschnittlichem Preis und maximaler Stückzahl angegeben ist.
In[1]:=
fruits = <|
Entity["FoodType", "Apple"] -> {Quantity[91, "LargeCalories"],
Quantity[2.36, "Euros"], 3},
Entity["FoodType", "Orange"] -> {Quantity[71, "LargeCalories"],
Quantity[2.12, "Euros"], 3},
Entity["FoodType", "Banana"] -> {Quantity[105, "LargeCalories"],
Quantity[1.89, "Euros"], 5},
Entity["FoodType", "Kiwi"] -> {Quantity[103, "LargeCalories"],
Quantity[3.77, "Euros"], 10},
Entity["FoodType", "Pear"] -> {Quantity[96, "LargeCalories"],
Quantity[2.87, "Euros"], 5}|>;
Bestimmen Sie die Stückzahl pro Frucht, die den maximalen Kaloriengehalt für einen bestimmten Geldbetrag ergibt.
In[2]:=
counts = KnapsackSolve[fruits, Quantity[25, "Euros"]]
Out[2]=
Dies ist der Kaloriengehalt der einzelnen Früchte sowie der Gesamtbetrag.
In[3]:=
fruits[[All, 1]] counts
Out[3]=
In[4]:=
fruits[[All, 1]] counts;
Total[%]
Out[4]=
In[5]:=
$Failed
Dies sind die Kosten pro Frucht sowie die Gesamtkosten.
In[6]:=
fruits[[All, 2]] counts
Out[6]=
In[7]:=
fruits[[All, 2]] counts;
Total[%]
Out[7]=