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

Calcul scientifique Python Discussion :

Programmation par contrainte


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut Programmation par contrainte
    Bonjour,

    J'essaye d'utiliser les fonctions de programmation par contrainte avec la librairie ortools. A la dernière instruction, qui permet d'ajouter une contrainte où tous les éléments de la liste x[i] devraient être différents, j'ai le message d'erreur suivant :
    return _pywrapcp.Solver_AllDifferent(self, *args)
    NotImplementedError: Wrong number or type of arguments for overloaded function 'Solver_AllDifferent'.

    Si quelqu'un a une idée ...
    merci

    Code Python : 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
     
     
    from __future__ import print_function
    import sys
    from ortools.constraint_solver import pywrapcp
    import numpy as np
    solver = pywrapcp.Solver("Test")
     
      n=2 #taille d'une zone --> nombre de colonnes = nombre de lignes = n*n
      l_cotes = n*n
     
      somme_ligne = 0;
      for i in range(1,l_cotes+1):
          somme_ligne +=i;
     
     
     
      x = np.zeros((l_cotes, l_cotes), dtype=int)
      x[1,1] = 3
      for i in range(l_cotes):  # Nombre de lignes qu'on va créérlle
          print(x[i])
     
      for i in range(l_cotes):
          solver.Add(solver.AllDifferent(x[i],True))

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    L'erreur NotImplementedError est une erreur prévue par les concepteurs de cette lib.

    Donc normalement rien de grave.

    Il faut que tu regardes dans la doc de pywrapcp.Solver.AllDifferent quel est le type des arguments attendus.

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064
    Par défaut
    Bonjour,

    Il semble que la méthode AllDifferent prend trop d'arguments, en retirant True, ça donne quoi ?

  4. #4
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2014
    Messages : 12
    Par défaut Programmation par contrainte
    Bonjour

    @VinsS : oui c'est peut-être simple mais ça fait 3 heures que j'essaye différentes combinaisons sans y arriver ...

    @Fred1599 : différents exemples montre que "true" ou "false" sont obligatoires

    J'essaye d'ajouter des variables éléments x[i,j] au solver

    Cette ligne est ok

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      for i in range(n):
        for j in range(n):
            x = solver.IntVar(1, l_cotes, "x[%i,%i]" % (i,j))

    Je veux désormais que chaque ligne de ce tableau a 2 dimensions ait des éléments différents :
    J'ai 2 erreurs
    1)
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      for i in range(l_cotes):
          solver.Add(solver.AllDifferent(x[i],True))

    l'erreur est : solver.Add(solver.AllDifferent(x[i],True))
    TypeError: 'IntVar' object does not support indexing
    ... et pourtant le "true" est obligatoire ...
    2) je souhaiterai rajouter une contrainte sur un cas simple :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    solver.Add((x[1,1] <= 1))
    L'erreur : TypeError: 'IntVar' object is not subscriptable

    Merci pour votre aide ... là je suis bloqué ...

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    Citation Envoyé par jeanpaul123 Voir le message
    Merci pour votre aide ... là je suis bloqué ...
    Un erreur comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'erreur est : solver.Add(solver.AllDifferent(x[i],True))
    TypeError: 'IntVar' object does not support indexing
    dit juste que le premier argument doit être un itérable.
    Ce qui semble raisonnable puisque "Tous Differents" suppose une collection d'objets à comparer...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. programmation par contrainte
    Par ratrout dans le forum Langage
    Réponses: 5
    Dernier message: 09/12/2016, 21h51
  2. [SWI-Prolog][Débutant] Programmation par contrainte
    Par alexglvr dans le forum Prolog
    Réponses: 32
    Dernier message: 01/11/2008, 22h33
  3. Programmation par contrainte en Java
    Par domas_24 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/06/2008, 14h27
  4. Programmation par contrainte
    Par croc14 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 19/03/2007, 11h12

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