Wolfram Language

Algèbre et théorie des nombres

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.

In[1]:=
Click for copyable input
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.

In[2]:=
Click for copyable input
counts = KnapsackSolve[fruits, Quantity[25, "Euros"]]
Out[2]=

Voici la contribution calorique de chacun des types de fruits et le coût total.

In[3]:=
Click for copyable input
fruits[[All, 1]] counts
Out[3]=
In[4]:=
Click for copyable input
fruits[[All, 1]] counts; Total[%]
Out[4]=

Voici le coût pour chaque type de fruit et le coût total.

In[5]:=
Click for copyable input
fruits[[All, 2]] counts
Out[5]=
In[6]:=
Click for copyable input
fruits[[All, 2]] counts; Total[%]
Out[6]=

Exemples connexes

de en es ja ko pt-br ru zh