Petit logiciel de calcul
Discutez d'informatique ici !
-
fredbly
- Messages: 5
- Enregistré le: 29 Nov 2008, 16:27
-
par fredbly » 13 Jan 2009, 20:43
Bonsoir, j'essai de mettre au point un petit logiciel de calcul de choix de masses. pour une masse total "x" je dispose de 5 choix de masses disponibles (3.9g;2.26g;0.87g; 0.32g;0.26g); Le résultat escompté est de définir le nombre de masses possible tout en s'approchant au plus juste du résultat et en privilégiant le nombre le plus petit de masse donc les plus grosses.
Merci de me dire si cela est possible. :marteau:
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 13 Jan 2009, 20:52
Hum il y a plein de façon de le voir... mais si tu veux "la combinaison qui s'approche au plus près" ca sent l'étude empirique ;)
Le plus simple a priori serait de raisonner comme quand tu es face à une balance (une vraie) ^^
-
fredbly
- Messages: 5
- Enregistré le: 29 Nov 2008, 16:27
-
par fredbly » 13 Jan 2009, 21:26
XENSECP a écrit:Hum il y a plein de façon de le voir... mais si tu veux "la combinaison qui s'approche au plus près" ca sent l'étude empirique

Le plus simple a priori serait de raisonner comme quand tu es face à une balance (une vraie) ^^
Merci pour ta réponse, je suis arrivé à un premier résultat assez satisfaisant mais qui exclu de s'affranchir de la première masse alors qu'en utilisant les autres masses le résultat peut être juste.
-
XENSECP
- Habitué(e)
- Messages: 6387
- Enregistré le: 27 Fév 2008, 19:13
-
par XENSECP » 13 Jan 2009, 21:27
Rien compris mais si tu as trouvé alors bon :)
-
fredbly
- Messages: 5
- Enregistré le: 29 Nov 2008, 16:27
-
par fredbly » 13 Jan 2009, 23:07
XENSECP a écrit:Rien compris mais si tu as trouvé alors bon

Désolé pour le "chinois", je ne suis pas satisfait de mon résultat: Je résume plus simplement, avec 5 masses possibles je recherche la combinaison multiple des masses qui s'approche au plus juste du résultat demandé.
Merci et bonne soirée.
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 13 Jan 2009, 23:14
Salut,
ben faut voir si tu privilégies le résultat le plus proche ou le nombre de masses.
J'ai pas les connaissances, mais je pense qu'en jetant un coup d'oeil du coté du problème du sac a dos, ca peut toujours servir.
la vie est une fête

-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 13 Jan 2009, 23:24
Toutefois, si tu cherches juste la combinaison qui s'approche le plus du résultat demandé, on peut (sur des masses pas trop petites) faire une pile assez moche du style :

//des masses de poids différents.

//la valeur de k_i telle que
m_i)
le nombre max de fois qu'on ajoute une même pièce
- Code: Tout sélectionner
Pour i=0..k_1
pour k=0..k_2
...
pour z=0..k_n
Si abs(Somme masse*poids-X)<abs(RES-X)//si on a un resultat plus proche
{RES=abs(Somme masse*poids-X)
Stocker VectSolutionMassPoids
}
fin pour
...
fin pour
fin pour
Bon, c'est plutot moche et léger. Après tout dépend de ce que tu veux faire. Mais inutile de suer a chercher des algo optimisés si c'est juste pour peser 50g avec trois masses
la vie est une fête

-
Patastronch
- Membre Irrationnel
- Messages: 1345
- Enregistré le: 22 Aoû 2005, 23:53
-
par Patastronch » 14 Jan 2009, 01:17
Si tu as que 5 masses au maximum alors une force brute fera parfaitement l'affaire.
Par contre si tu décides que le nombre de masse puisse etre grand tu vas avoir beaucoup de mal car ton probleme est NP-Complet. Dans ce cas la inutile de chercher la combinaison exacte si le nombre de masse est trop grand et il te faudra opter pour des algorithme d'optimisation combinatoire tel qu'un branch and bound ou encore des métaheuristiques.
-
phryte
- Membre Irrationnel
- Messages: 1406
- Enregistré le: 05 Juil 2008, 17:09
-
par phryte » 14 Jan 2009, 09:03
Bonjour.
définir le nombre de masses possible tout en s'approchant au plus juste du résultat
Tu peux faire du Monte carlo. Idem Voyageur de commerce.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité