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

Macros et VBA Excel Discussion :

Combinaisons possibles en base N


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut Combinaisons possibles en base N
    Bonjour,

    Je suis en train de réaliser une macro qui positionne des flotteurs sur 3 segments. Ces segments disposent de masses placées en leur milieu. Les segments sont positionnés en N avec des angles droits entre eux.
    Le but est de calculer les coordonnées X et Y de chaque flotteurs grâce au solveur de façon à ce qu'ils soient parfaitement équilibrés avec les masses. Je sais que c'est un cas discontinu et que le solveur ne peut normalement pas le résoudre. Cependant, j'ai chinté le solveur pour qu'il trouve quand même. Je teste tous les cas possibles (pour 3 segments et 8 flotteurs: 3 sur le segment 1, 3 sur le 2, 2 sur le 3; etc...) et je fais une résolution pour minimiser la somme des moments et des forces. Normalement la résolution est possible mais il me retourne l'erreur :
    "Solveur: une erreur s'est produite, ou la mémoire disponible est saturée."
    Je me doute que le calcul que je lui demande est difficile avec de nombreuses conditions (facilement une 50aine).
    Comment est-ce que je peux faire pour mener le calcul jusqu'au bout?

    Merci de votre ide.

    Cordialement

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si tu es sûr qu'il y a bien une solution à ce problème précis, donc cela pourrait bien un vrai problème de mémoire vive disponible. Excel est ainsi fait que le classeur au complet doit être en mémoire vive pour travailler. De plus, le calcul matriciel bouffe énormément de mémoire vive. Tu peux toujours essayer de virer le plus possible de "programmes inutiles" de la mémoire vive, comme tous les service de mises à jour automatiques qu'un paquet de compagnies ont décidé d'imposer en permanence à tout le monde, même si leurs programmes sont mis à jour une fois par année; les programmes de loupes et de captures d'écran et de presse-papiers améliorés, sauf besoin impérieux de les utiliser avec Excel; encore que le presse-papiers intégré d'Office peut accumuler une bonne vingtaine d'entrées distinctes et qu'Excel a un zoom...

    Sinon, tu peux essayer de réviser tes contraintes et tes fonctions, au cas où qu'une erreur se serait introduite à l'insu de ton plein gré.

    Et puis, tu peux toujours jeter un œil sur:

    http://www.solver.com

    d'un coup que...

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    J'ai téléchargé open solver for excel. Il parait que c'est comme le solveur d'excel mais avec moins de limitations. J'essaierai ça demain.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 218
    Par défaut
    Bonjour,
    Je reviens vers vous car j'ai abandonné tout espoir avec le solveur (solution trop dépendante de la situation initiale, peu de risque de convergence, etc...).
    Bref, je vais faire moi-même un solveur pour mon cas.
    Pour commencer, je cherche à lister tous les cas possible entre n chiffre dont le maximum est p. Oui oui, j'ai bien dit n donc pas de boucle for dans une boucle for, dans une boucle for...
    J'ai commencé une ébauche de programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Public Sub ListerCombinaisons()
     
    Dim n As Integer
    Dim p As Integer
     
    n = 8
    p = 3
     
    Dim tableau(8 ^ 3, 3) As Integer
     
     
    Dim i As Integer
    Dim j As Integer
     
    For i = 1 To p
    tableau(1, i) = 1
    Worksheets("Feuil1").Range(Chr(64 + i) & 1).Value = tableau(1, i)
    Next
     
    Dim Add As Integer
    Add = 0
     
    For i = 2 To 9
        For j = 1 To p
                If (tableau(i - 1, j) = n) Then
                    tableau(i, j) = 1
                    tableau(i, j - 1) = tableau(i - 1, j - 1) + 1
                Else
                    tableau(i, j) = tableau(i - 1, j)
                End If
                Worksheets("Feuil1").Range(Chr(64 + j) & i).Value = tableau(i, j)
        Next
    Next
     
     
    End Sub
    Je sens que je ne suis pas loin de la solution mais je n'arrive pas à passer l'étape:
    tableau(i-1,j)=n donc tableau(i,j)=1 et il faudrait que je puisse dire tableau(i,j-1)= tableau(i-1,j-1)+1 or ça ne peut pas marcher comme ça.
    Avez-vous une idée de comment faire?

    Merci de votre aide.

    Cordialement

Discussions similaires

  1. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  2. trouver les combinaisons possibles d'un tableau ?
    Par titoumimi dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 20/09/2006, 20h29
  3. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11
  4. Sortir d'un tableau les combinaisons possibles
    Par juelo dans le forum Algorithmes et structures de données
    Réponses: 33
    Dernier message: 26/03/2006, 17h11
  5. [Via Internet] Quel choix possible de base de donnée ?
    Par Skieur38 dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 19/02/2006, 14h12

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