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

API standards et tierces Java Discussion :

[Choco] makeIntVarArray


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut [Choco] makeIntVarArray
    Bonjour

    J'utilise l'API Choco pour un problème de satisfaction de contraintes. Je suis débutante.

    J'utilise makeIntVarArray dans mon code pour choisir des éléments à partir d'un autre tableau.
    J'aimerais savoir comment retourner l'indice de l’élément retourné, par exemple à partir d'un tableau qui contient 30, 16, 32 et 28, le solveur me retourne 16 et 28, comment puis-je avoir leurs indices dans le tableau, c'est-à-dire 1 et 3 ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrays.asList(new Integer[] {30 , 16 , 32 , 28}).indexOf(16);
    A+.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Merci pour l'aide mais ce n'est pas ce que je cherche, en fait j'ai un tableau et le solveur devrait me retourner les trois cases du tableau qui ont une somme égale à X.
    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
     int somme = 13;
            int[] tab = new int[] {5, 8, 13, 2, 3, 9, 4};
     
     
                Model m = new CPModel();
                Solver s = new CPSolver();
     
                IntegerVariable[] res = Choco.makeIntVarArray("res", 3, tab);
                //m.addConstraint(Choco.allDifferent(res));
                m.addConstraint(Choco.eq(somme, Choco.sum(res)));
     
     
                s.read(m);
                s.solve();
                if (s.isFeasible())
                {
                    int cpt =1;
                    do
                    {
                        System.out.print((cpt++)+ " - "+ somme+" = " + s.getVar(res[0]).getVal());
                        for (int i = 1; i < res.length; i++)
                        {
                            System.out.print(" + " + s.getVar(res[i]).getVal());
                        }
                        System.out.println();
                    }
                    while (s.nextSolution()!=false);
                } else
                    System.err.println("Pas de solutions");
    Je veux modifier alldifferent par un truc qui désigne l'indice de l’élément retourné dans le tableau tab.

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Citation Envoyé par sophie12 Voir le message
    Je veux modifier alldifferent par un truc qui designe l'indice de l'element retourné ds le tableau tab
    Pourquoi tu veux modifier AllDifferent ??? Tu comptes te servir des index comme contraite en plus ?

    La solution d'andry.Aime me semblait bien de prime a bord...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    parceque dans le cas ou j'ai un entiers qui se repete, exp 3,5,13,5 9, le 5 se répéte, avec alldifferent il sera pris une seule fois, or en réalité il doit être considerer deux fois,

    Pour cela j'avais l'idée d'appliquer une contraintes sur l'indice de l’élément ds le tableau tab

    En plus, les index peuvent me servir a assurer l'ordre des éléments sélectionnés et donc je pourrais m'en passer de alldifferent

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Mon problème est plus compliqué que celui la, mais si je resoud ce truc des indices je pourrais avancer
    en fait je veux que le choix des élément soit dans l'ordre de leurs apparence dans le tableau tab
    et le solveur tiendra comptes des redondances de valeur dans tab

    je suppose que la récupération des indices sera une bonne piste

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    M'envoyez un message privé ne t'aidera pas... si j'avais put te donner réponse je l'aurais déja fait sur ce même forum.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CHOCO Résolution d'un problème via contraintes
    Par Galaxed dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 03/04/2010, 21h03
  2. Programmation par contrainte JAVA CHOCO
    Par geek21 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 04/03/2009, 14h13
  3. Réponses: 4
    Dernier message: 13/06/2008, 14h24
  4. Choco, JaCoP --> Gestion d'horaire en Java
    Par boudincweole10 dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2007, 15h22

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