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

Prolog Discussion :

Limites de SWI-Prolog ?


Sujet :

Prolog

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Limites de SWI-Prolog ?
    Bonjour à tous,

    J'ai besoin de décrire un graphe avec beaucoup de noeuds et d'arcs.
    En voici un exemple bidon :
    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
    noeud(n1,noeud).
    noeud(n2,noeud).
    noeud(n3,noeud).
    noeud(n4,noeud).
    noeud(n5,noeud).
    noeud(n6,noeud).
    noeud(n7,noeud).
    noeud(n8,noeud).
    noeud(n9,noeud).
    noeud(n10,noeud).
     
    arc(a13,n1,n13,13).
    arc(a14,n1,n14,14).
    arc(a15,n1,n15,15).
    arc(a16,n1,n16,16).
    arc(a17,n1,n17,17).
    Sauf que lorsque j'écris 60 noeuds et 1770 arcs non orientés, l'éditeur de Prolog plante :
    ==> Access violation at address 0000000, read of address 000000.
    ainsi que des messages dans une fenêtre Exception stack :
    [004CDDB9] SynEdit.TCustomSynEdit.ListInserted + $2D
    [004B9BB0] SynEditTextBuffer.TSynEditStringList.Add + $2C
    [004BE6DB] SynUnicode.LoadFromStream + $187
    [004BE312] SynUnicode.LoadFromStream + $1A
    [00555364] UEditor.TFEditor.PruefeAlter + $B0
    [0054C767] USwing.TFSwing.EditorTimerTimer + $4F
    [00422204] Classes.StdWndProc + $14
    [00470FD7] Forms.TApplication.ProcessMessage + $83
    [00556118] SwiplEdit.SwiplEdit + $C4

    [004CA520] SynEdit.TCustomSynEdit.PaintTextLines + $1DC
    [004D9CE5] USynEditEx.TSynEditEx.PaintTextLines + $25
    [004C8161] SynEdit.TCustomSynEdit.Paint + $14D
    [004D9CB1] USynEditEx.TSynEditEx.Paint + $5
    [00455012] Controls.TWinControl.PaintHandler + $4E
    [004554E3] Controls.TWinControl.WMPaint + $3F
    [00458E9C] Controls.TCustomControl.WMPaint + $10
    [00454E7B] Controls.TWinControl.WndProc + $157
    [00422204] Classes.StdWndProc + $14
    [00457195] Controls.TWinControl.Update + $15
    ...... et je vous en passe (trois pages).

    Voici mes questions :

    1) quelles sont les limites en terme de ligne dans un fichier .pl ?

    2) quelles sont les limites en terme de nombre de prédicats (ici j'ai 60+1770+un peu de code) ?

    3) en cas de limite sur le point 2, que me conseillez-vous pour qu'en prolog, je lise un fichier externe, et que je construise dynamiquement mes prédicats ? Je suis nouveau en prolog et je n'ai fait ni l'un ni l'autre.

    Avec tous mes remerciements.

    Emmanuel

    PS : c'est quelque peu pressé !!! je viens d'avoir la surprise !!!!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Points : 184
    Points
    184
    Par défaut
    Salut,

    essaie un peu ça => http://gollem.science.uva.nl/twiki/p.../EnlargeStacks

    Bon courage !

    /Olivier

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Merci pour la réponse ... mais
    Rien n'y fait.

    J'utilise la dernière version du SWI-prolog editor 4.01.

    J'ai paramétré -L32m -G64m mais toujours pareil.

    Je vous joins un fichier à charger dans votre éditeur pour voir s'il fait pareil !!!!

    http://conseil.lee.free.fr/Donnees Meuse.pl

    Merci pour votre aide !!!!!!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    J'ai constaté que je pouvais repousser la limite en changeant le nom des arcs a1234 par 1234.
    Peut-être préfère t-il les chiffres que les noms ?!

    Quoi qu'il en soit, avez vous une idée ?
    Merci aussi si vous pouvez m'aider pour la question n°3 (cf au dessus).

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Sous Windows, Vista, ton fichier s'est bien chargé et compilé, je suppose que tu es sous Linux car le fichier n'a pas de retour ligne correct.

    Pourquoi as-tu toujours noeud(n1,noeud). noeud(n2,noeud).... A quoi sert le deuxième argument du tuple ? Tu pourrais peut-être alléger le code en supprimant le deuxième argument ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Points : 184
    Points
    184
    Par défaut
    En effet, ça allègerait le code (j'avoue que moi aussi, ce 2° argument me laisse perplexe), mais pas tant que ça, vu que le rapport noeud/arc est de 0.034 (à peu près ).

    Je ne pense pas que cela vienne de là, même si je suis pour la suppression du 2° argument (du moins, si nous avons bien compris ce que tu as écrit).

    Après lecture de cette page http://hcs.science.uva.nl/projects/S...al/limits.html, tu peux monter tes paramètres jusqu'à 128M (sur une archi 32 bits). Donc, GO ! Je crois que le problème vient de la global stack, mais je peux me tromper.

    Maintenant, en supposant que ça tourne, ça n'est quand même pas une bonne solution. Mais c'est la seule que je vois pour l'instant.

    Bon courage !

    /Olivier

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/02/2008, 08h49
  2. Le mode debug de swi-prolog
    Par Boubou Balrog dans le forum Prolog
    Réponses: 2
    Dernier message: 18/12/2006, 10h55
  3. Désactiver les warnings en swi-prolog
    Par Cecilka dans le forum Prolog
    Réponses: 2
    Dernier message: 15/12/2006, 11h33
  4. Limitation du langage prolog
    Par guillaume07 dans le forum Prolog
    Réponses: 4
    Dernier message: 28/08/2006, 10h37
  5. Réponses: 3
    Dernier message: 03/05/2006, 15h30

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