par lyceen95 » 20 Aoû 2022, 15:30
Ok... un peu de maths.
On a 3 éléments de base (azote ...) et 3 composés à disposition (Guanor ...)
Je note x la quantité de Guanor qu'on met dans notre solution finale, y pour la quantité d'Italpollina, et z pour la quantité de Biovi
et je note a,b,c les quantités d'azote, de phosphore et de potassium que ça nous donne.
On a donc
a=7x+5y+10z
b=6x+5y+z
c=8x+8y+z
et on veut (a,b,c) aussi proche que possible de (480,160,800).
ici, on a 3 inconnues (x,y,z), et 3 équations. Même nombre d'équations que d'inconnues, sauf cas très particulier, il y a un triplet (x,y,z) qui va donner la composition parfaite.
Il faut résoudre ce système à 3 équations 3 inconnues. ... je n'explique pas ?
On trouve x=-368.7 , y=459.1 et z=76.5
Pas de bol, il faudrait une quantité négative de Guanor.
Du coup, on va couper court, on ne met pas de Guanor.
Donc
a=5y+10z
b=5y+z
c=8y+z
On n'a plus que 2 produits à disposition, et on veut s'approcher au mieux des valeurs (480,160,800)
On veut être au plus proche d'une valeur précise.
Autrement dit, on veut que la distance entre le point idéal (480,160,800) et le point qu'on sait atteindre (5y+10z,5y+z,8y+z) soit la plus petite.
Une distance entre 2 points, classiquement on utilise la distance 'euclidienne'.
Dans notre tableur, on a donc pour l'instant :
3x3=9 cellules : une colonne pour chaque composé (Guanor...) et une ligne pour chaque élément de base. Et donc les valeurs 7,5,10 par exemple sur la première ligne de ce carré.
Je laisse le Guanor, au cas où.
Cellules B2 à D4 pour ce carré. à adapter si on a plus de composés ou plus d'éléments de base.
Et une ligne de plus où on va mettre des valeurs pour x, y, z un peu au hasard.
Cellules B6 à D6
En B6, on va mettre 0, puisque le premier calcul a dit que le guanor nous 'éloignait' de la formule visée.
Mais si on n'a pas fait ce truc, et qu'on met une autre valeur, ce n'est pas grave.
On a aussi en E2 à E4 notre objectif, les valeurs 480, 160 et 800
Et en cellules F2 à F4, on met des formules, celles qui calculent les a,b,c du début
En F2, on met : =SOMMEPROD(B2:D2;B$6:D$6)
Si tu ne connais pas SOMMEPROD , c'est un truc pratique qui permet de simplifier la formule.
Et on copie ça en F3 et F4
En G2, on va mettre la différence entre la quantité obtenue et la quantité visée.
En G2 on met donc : =F2-E2 ou encore =abs(F2-E2)
et on copie en G3 et G4.
Et en G1 par exemple, on va mettre la 'distance euclidienne' : =SOMMEPROD(G2:G4;G2:G4)
Voilà, on a notre tableur prêt.
Et on va mettre des valeurs 'presque au hasard' dans les cellules B6 C6 et D6. Et on va garder la combinaison qui donne le résultat le plus petit possible dans cette cellule G1.
Par exemple, si on met(0,60,20), on doit avoir 116000 dans cette cellule G1.
Et si on met (0,65,12), on obtient 104378. C'est mieux.
Si on trouvait 0, ce serait parfait... mais pour avoir 0, il faudrait mettre les valeurs (-368 , 459, 76) du début.
Si le solveur (menu outils Solveur) marchait correctement, on dirait :
Cellule cible : G1, et on veut avoir la valeur minimum.
Cellules à modifier : B6 à D6
Contraintes B6>=0 et pareil pour les 2 autres.
En principe, le bouton 'résoudre' devrait donner le résultat. Mais il ne marche pas chez moi.
Du coup, en jouant manuellement avec les données, on change petit à petit les contenus de C6 et D6, pour essayer d'avoir la valeur la plus petite possible en G1.
Dans la formule en G1, tu peux facilement adapter, pour dire par exemple que l'objectif en Azote est prioritaire, et que 2 ou 3 grammes d'écart sur l'Azote, c'est aussi important que 30 grammes sur le potassium.