Résolvez le problème du sac à dos
La nouvelle fonction KnapsackSolve fournit une méthode simple et conviviale pour résoudre les 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 découpage en deux dimensions et la budgétisation des capitaux, et peuvent être utilisés pour construire des systèmes de chiffrement.
Voici une liste d'épicerie dans laquelle chaque fruit est spécifié avec sa teneur en calories, son prix moyen et son 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é d'argent donnée.
counts = KnapsackSolve[fruits, Quantity[25, "Euros"]]
Voici la contribution calorique de chacun des types de fruits et le coût total.
fruits[[All, 1]] counts
fruits[[All, 1]] counts;
Total[%]
Voici le coût pour chaque type de fruit et le coût total.
fruits[[All, 2]] counts
fruits[[All, 2]] counts;
Total[%]