IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Calcul de toutes les combinaisons possibles


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut Calcul de toutes les combinaisons possibles
    Bonjour à tous,
    Après avoir chercher sur le forum je n'ai pas trouvé de réponse à mon problème.
    Je souhaiterais faire un algorithme, qui calcul toutes les combinaison possibles de résistances.
    Exemple:

    voici mes résistances avec leurs valeurs:
    R1 1
    R2 2
    R3 4

    Je voudrais calculer les combinaisons possibles sachant que les résistances sont en parallèle :

    R1
    R2
    R3
    R1//R2
    R1//R3
    R2//R3
    R1//R2//R3

    J'ai en réalité plus d'une vingtaine de résistance et calculer toutes ces combinaisons à la main serait trop fastidieux (20!).
    Mon but est de créer un petit script Excel qui implémentera cet algorithme, mais c'est l'algorithme que je ne trouve pas.

    Merci d'avance

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 289
    Par défaut
    Bonjour,

    d'abord, je ne sais pas d'où viens ton 20!. Il s'agit de 2^20 (et généralement 2^n). Car à chaque résistance que tu ajoutes, tu multiplies par 2 les combinaisons possibles.

    Cela ne fait jamais que 1048576 valeurs de résistance possible. Reste à savoir le but réel. Excel n'est pas adapté à ton problème. Je ferais plutôt cela en c++.

    As-tu réellement besoin de ce million de valeurs ?

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut
    En fait le 20! correspond à 20 factoriel soit 20*19*18*...*1 tout simplement car tu as des calculs qui sont redondant. Ex: R1//R2 =R2//R1 donc tu ne fais qu'un calcul.

    Je n'ai pas dis le but réel pour éviter de rentrer dans un sujet complexe mais vu que tu demandes.
    Pour faire simple:
    Ces résistances servent à créer un courant dans un circuit avec la simple formule I=U/R.
    On veut fixer un certain I et nous avons des résistances prédéfinies.
    Mon but sera de définir quel résistances il faut brancher pour s'approcher le plus près du courant désiré.
    Donc oui j'ai besoin de toutes ces valeurs.

    Je suis prêt à le faire en C ou C++ mais je pense qu'on peut arriver à la même chose avec Visual Basic.
    Encore un fois, ce qui me pose problème ce n'est pas la programmation mais bien l'algorithme.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 289
    Par défaut
    Le problème d'Excel est que le calcul va prendre 4h ou + alors qu'il prendra une demi-seconde en C++ (si tu fais tous les cas).

    Ensuite, tu as une résistance idéale pour obtenir ton intensité. Je l'appelle Ri. Il faut donc viser 1/Ri et non Ri. A partir de tes 20 Rk, tu détermines les 1/Rk correspondants et tu retombes sur le célébrissime problème du sac-à-dos.

    Chaque résistance n'est en fait qu'un type de résistance? Donc réutilisable?

    Pas d'algorithme. Juste de la force brutale.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut
    Ok pour excel, je prends note.
    Par contre je ne comprends pas pourquoi tu veux viser 1/Ri et je ne connais pas le problème du sac à dos
    Voici une partie de mes résistances:
    Pièce jointe 165989

    Mon but est de faire une IHM où l'utilisateur rentre le courant souhaité pour un essais.
    Ensuite mon programme (Labview) calculera ma valeur de résistance idéale.
    Il cherchera ensuite la valeur la plus proche dans un tableau (rangé par ordre croissant) et viendra fermé les contactes de ces résultats.

    Exemple:
    Mon pogramme défini la valeur idéal Ri=3.1kOhm
    il vient donc scruter ce tableau

    Valeur état résistance(R0,R1,R2,R3)
    2.563kOhm 0,1,1,0
    3.256kOhm 1,0,0,1
    5kOhm 0,0,0,1

    il trouve la valeur 3.256 la plus proche et ferme donc le contacte de R0 et R3 et ouvre R1 et R2.

    Mon tableau sera donc calculé qu'une seule fois. C'est pour cette raison que je m'enfiche un peu que mon programme prendra 4h. Mais je le ferais quand même en C.


    Je sais pas si j'ai été assez claire mais dites-moi si vous ne comprenez pas quelque chose.
    Images attachées Images attachées  

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 289
    Par défaut
    Tout est plus clair. On a bien 2^14=16384 possibilités. C'est très faisable.

    En ce qui concerne l'algorithme, je ferais une boucle sur un indice courant de 0 à 16384. Son écriture binaire donne la position des interrupteurs: 0 ouvert, 1 fermé. On calcule alors la résistance équivalente. En sortie, on écrit, sur une ligne, l'indice et la résistance équivalente séparés par un point-virgule. Puis on passe au suivant.

    Le calcul de la résistance équivalente peut même se faire par une fonction entièrement numérique à partir de l'indice.

    Bonne chance.

Discussions similaires

  1. Algo pour toutes les combinaisons possibles
    Par rantanplan08 dans le forum Général Java
    Réponses: 6
    Dernier message: 03/01/2008, 09h45
  2. Réponses: 5
    Dernier message: 18/06/2007, 20h52
  3. Réponses: 22
    Dernier message: 27/10/2006, 02h26
  4. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  5. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo