Trouver une combinaison
parousky
Messages postés
325
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, dans un problème de mécanique automobile, je dois équilibrer des pièces métalliques en ajoutant quatre poids. La position de ces quatre poids est imposée par la géométrie de la pièce. Pour que le centre de gravité soit proche du centre de la pièce, il existe plusieurs combinaisons de poids possibles. J'aimerais créer un programme java qui permette d'obtenir une combinaison parmi tant d'autres, mais je ne sais pas du tout comment faire ...
Si je n'ai pas été trop vague, est-ce que quelqu'un peut m'aider ?
Si je n'ai pas été trop vague, est-ce que quelqu'un peut m'aider ?
A voir également:
- Trouver une combinaison
- Trouver adresse mac - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Ou trouver l'adresse ip - Guide
- Trouver une adresse - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
3 réponses
Bonjour parousky,
Je pense que le plus gros travail qui est à faire sur ce sujet se situe au niveau mathématique.
D'après ce que tu dis j'ai l'impression qu'il te faudrait avoir un équation paramétrée qui te permette de modifier les 4 valeurs et de voir le résultat en temps réel.
Est-ce que tu peux modéliser ça sur un fichier Excel ?
Si oui, penses-tu que le programme en java apportera une valeur ajoutée ?
A+
Je pense que le plus gros travail qui est à faire sur ce sujet se situe au niveau mathématique.
D'après ce que tu dis j'ai l'impression qu'il te faudrait avoir un équation paramétrée qui te permette de modifier les 4 valeurs et de voir le résultat en temps réel.
Est-ce que tu peux modéliser ça sur un fichier Excel ?
Si oui, penses-tu que le programme en java apportera une valeur ajoutée ?
A+
Bonjour,
Il y a pas mal de données utiles qui nous manquent pour comprendre le problème.
Déjà je ne vois pas le lien avec la mécanique automobile, est-ce important ici ?
Ensuite quelles sont tes contraintes physiques ? Est-ce que tu es en 2D (toutes les pièces sont posées au sol) ou en 3D (les pièces peuvent être les unes sur les autres) ? Tu as un espace discret ou continu (un nombre fini ou infini de position) ?
Après on s'oriente soit vers de la recherche opérationnelle (mathématiques) soit vers de l'intelligence artificielle (combinatoire), sauf si vraiment le problème se simplifie bien et dans ce cas on boucle en force brute...
Il y a pas mal de données utiles qui nous manquent pour comprendre le problème.
Déjà je ne vois pas le lien avec la mécanique automobile, est-ce important ici ?
Ensuite quelles sont tes contraintes physiques ? Est-ce que tu es en 2D (toutes les pièces sont posées au sol) ou en 3D (les pièces peuvent être les unes sur les autres) ? Tu as un espace discret ou continu (un nombre fini ou infini de position) ?
Après on s'oriente soit vers de la recherche opérationnelle (mathématiques) soit vers de l'intelligence artificielle (combinatoire), sauf si vraiment le problème se simplifie bien et dans ce cas on boucle en force brute...
Bonjour, c'est vrai que cela manque pas mal de précision ! Alors en étudiant un peu plus mon problème, je sais que chaque poids doit être supérieur à 0.25. Ensuite, c'est à moi de préciser la limite supérieure. Etant donné que je peux contrôler la précision de la masse de chaque pièce au centième près, je voudrais tester toutes les combinaisons de quatre double compris entre 0.25 et ma limite/4. Alors j'ai écris ce code là :
for(int i=0;i<Max+1;i++)
{
S4 = 0.25 + 0.01*i;
for(int j=0;j<Max+1;j++)
{
S3 = 0.25+0.01*j;
for(int k=0;k<Max+1;k++)
{
S2 = 0.25 + 0.01*k;
for(int l=0; l<Max+1;l++)
{
S1 = 0.25 + 0.01*l;
//Ensuite je teste si le centre de gravité est bien dans la pièce, ce qui se traduit par :
if(G[0]>=0 && G[1]>=0 && G[2]>=0 && G[3]>=0)
{
System.out.println(""+S1+" sur 1, "+S2+" sur 2, "+S3+" sur 3, "+S4+" sur 4");
}
}
}
}
}
Seulement ça ne teste pas toutes mes combinaisons... Ais-je mal codé une partie ?
Merci d'avance pour vos réponses !
for(int i=0;i<Max+1;i++)
{
S4 = 0.25 + 0.01*i;
for(int j=0;j<Max+1;j++)
{
S3 = 0.25+0.01*j;
for(int k=0;k<Max+1;k++)
{
S2 = 0.25 + 0.01*k;
for(int l=0; l<Max+1;l++)
{
S1 = 0.25 + 0.01*l;
//Ensuite je teste si le centre de gravité est bien dans la pièce, ce qui se traduit par :
if(G[0]>=0 && G[1]>=0 && G[2]>=0 && G[3]>=0)
{
System.out.println(""+S1+" sur 1, "+S2+" sur 2, "+S3+" sur 3, "+S4+" sur 4");
}
}
}
}
}
Seulement ça ne teste pas toutes mes combinaisons... Ais-je mal codé une partie ?
Merci d'avance pour vos réponses !
Tu peux regarder ce code Énumérer un ensemble comme si on avait des boucles imbriquées
Cela reviendra finalement au même que tes 4 boucles mais en un peu plus simple.
Je compte en centièmes pour ne manipuler que des entiers :
Cela reviendra finalement au même que tes 4 boucles mais en un peu plus simple.
Je compte en centièmes pour ne manipuler que des entiers :
for (long[] s : new Enumeration(4, 25, MAX, 1, false)) System.out.printf("%d sur 1, %d sur 2, %d sur 3, %d sur 4\n", s[0], s[1], s[2], s[3]);