Résolvez le problème du sac à dos
La nouvelle fonction KnapsackSolve fournit une forme facile simple et convivial pour résoudre des problèmes d'optimisation combinatoire tels que le problème du sac à dos. Les problèmes de sac à dos apparaissent dans une grande variété de domaines, tels que les problèmes de coupe bidimensionnels et la budgétisation des immobilisations, et peuvent être utilisés pour construire des systèmes cryptographiques.
Ceci est une liste de courses dans laquelle chaque fruit est spécifié avec sa teneur en calories, le prix moyen et le nombre maximum.

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}|>;
Déterminez le nombre de fruits de chaque type qui maximise la teneur en calories pour une quantité donnée d'argent.

counts = KnapsackSolve[fruits, Quantity[25, "Euros"]]

C'est la contribution calorique de chacun des types de fruits et le coût total.

fruits[[All, 1]] counts


fruits[[All, 1]] counts;
Total[%]

C'est le coût pour chaque type de fruit et le coût total.

fruits[[All, 2]] counts


fruits[[All, 2]] counts;
Total[%]
