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 :

[GNU-Prolog][Mémoire] Local stack overflow


Sujet :

Prolog

  1. #1
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut [GNU-Prolog][Mémoire] Local stack overflow
    salut,

    je suis en train de faire un super programme en prolog pour résoudre un sudoku, mais disons que pour les sudoku assez difficiles il reste bloqué.

    et du coup, comme de base, nous n'avons que 4 Mo de mémoire, il se bloque et fait planter le programme.

    En gros, je voulais savoir si on peut soit ajuster cette mémoire, et donc l'augmenter. Ou alors est-ce qu'on peut la flusher et donc vider petit à petit la mémoire au lieu de garder des trucs qui servent à rien.

    Apres je me demandais, si on fait des trucs qui ne serve pas et qu'il y a un "no" donc un retour en arrière est-ce que ça bouffe de la mémoire local ??

    Je précise que je n'ai pas besoin de source pour résoudre des sudokus, car on doit n'utiliser que nos propres prédicats.
    Et que si on avait plus de mémoire, ça resolverait le sudoku.

  2. #2
    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
    Avec SWI-Prolog tu peux ajuster la mémoire à tes besoins :
    Fenêtre Help/XPCE(GUI)Manuel lance une fenêtre.
    Dans le menu système faire File/Edit Preference/Prolog Stack Limits
    "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

  3. #3
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    rahh !!!

    j'ai oublié de dire qu'on travail avec GNU Prolog, car nos profs sont assez chauvins quand meme !!

    Donc merci pour cette réponse rapide, mais il me faudrait la meme chose sur gnu prolog !!

  4. #4
    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
    Euh, j'ai GNU Prolog chez moi que je n'utilise jamais (je préfère SWI-Prolog ).
    Mais quand même, je fais Help/manuel et je tape "stack" dans l'aide et la première rubrique sur laquelle je tombe est "Adjusting the size of Prolog stacks"
    C'est pour Unix mais quand même
    "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

  5. #5
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    bah voila
    la on est sous windows et je trouve pas comment le modifier.

    moi aussi je préfere swi, mais tu sais les profs ...

  6. #6
    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
    Critique pas les profs, j'en suis un
    Par contre pour ton pb je ne trouve pas, y'a pas grand chose pour Windows dans l'aide
    "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

  7. #7
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    je critique pas Les profs, je dis que nos profs sont des fois un peu trop buté ...

  8. #8
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Salut tout le monde !

    Mais dites donc, on dirait que c'est devenu une mode d'implémenter une méthode de résolution de sudoku en Prolog. Tous les profs ce sont donnés le mots on dirait! Et bien sûr, en PLC c'est trop facile (d'autant qu'il y a un article là-dessus qui traine sur DVP...), donc il faut utiliser des méthodes "à l'ancienne".

    Je vois que tu viens de Compiègne, tu ne viendrais pas de l'UTC par hasard?


    Pour ton problème de mémoire, c'est pas en l'augmentant que tu vas changer grand chose, surtout si la complexité en terme de taille est en O(n^2) (voire pire...). Il faut donc trouver d'autres solutions.

    Y a-t'il des mutables en GNU Prolog? (c'est à dire des variables dont tu peux réassigner la valeur). Si tel est le cas, cela t'évitera de devoir déclarer de nouvelles variables alors que tu ne te sers plus des anciennes (par contre, on s'éloigne de la philosophie Prolog...).

    Je m'étais penché sur ce problème de mémoire et j'ai élaboré une solution dans laquelle on modifie directement la base de faits au moyen de prédicats dynamiques (avec assert/retract). Dans ce cas, la grille n'est plus mise dans pile mais dans la base de faits (donc on utilise moins de mémoire) et les accès aux éléments sont beaucoup plus rapides. Par contre, le problème fut au niveau du backtracking (à cause des assert/retract). Sur ce point, j'en ai bavé...


    Citation Envoyé par Maxoo
    Apres je me demandais, si on fait des trucs qui ne serve pas et qu'il y a un "no" donc un retour en arrière est-ce que ça bouffe de la mémoire local ??
    En principe, lors d'un retour arrière (quel qu'il soit), les variables qui ne servent plus sont désallouées.

    Les assert sont également défaits (du moins d'après la norme ISO, pas en Prolog traditionnel) mais pas les retract ! (c'est bien la le problème: on ne retrouve plus la base de connaissance exactement dans l'état où on l'a laissée...)
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  9. #9
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    ah !! pcaboche si tu savais comme je suis content de te voir !!

    Donc en fait, ce que je dois faire d'abord, c'est bien utiliser la propriété de :
    - faire des choses
    - mais si ca ne fait rien avancer -> y a un "no"
    - et apres ca revient en arrière
    - du coup tout ce que je viens de faire est vidé de la mémoire.

    Dans ce cas la, ca videra surement la mémoire, et ca devrait aller.

  10. #10
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par Maxoo
    ah !! pcaboche si tu savais comme je suis content de te voir !!
    Désolé de ne pas avoir répondu plus tôt: j'ai eu des trucs à faire.

    Citation Envoyé par Maxoo
    Donc en fait, ce que je dois faire d'abord, c'est bien utiliser la propriété de :
    - faire des choses
    - mais si ca ne fait rien avancer -> y a un "no"
    - et apres ca revient en arrière
    - du coup tout ce que je viens de faire est vidé de la mémoire.
    Oui, c'est ça.

    Par contre, si tout se passe toujours très bien, ça remplit gentiment la pile jusqu'au fatidique "stack overflow". Et pour éviter cela, il faut gruger...
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  11. #11
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut vive les !!!!!!!!!!!!!!!!!!!!!!!!!!!
    Bon, on a réussi.

    en fait pour notre probleme, on voulait "flusher" la mémoire, bah on y pas allé par quatre chemin, on a fait des cuts partout !!
    (un cut c'est ca ! pour ceux qui suivent pas)

    Donc du coup on peut pas forcement revenir en arriere, mais on en avait pas besoin.

    Merci à tous !!
    P.S : euh ... à pas bientot sur ce forum là j'espere !!

  12. #12
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par Maxoo
    bah on y pas allé par quatre chemin, on a fait des cuts partout !!
    La fin justifie les moyens !


    Citation Envoyé par Maxoo
    P.S : euh ... à pas bientot sur ce forum là j'espere !!
    Rooo... ben pourquoi? T'aimes pas le Prolog? A non, c'est parce que ton programme va super bien marcher et donc t'auras plus besoin de notre aide!
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  13. #13
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Citation Envoyé par pcaboche
    Rooo... ben pourquoi? T'aimes pas le Prolog? A non, c'est parce que ton programme va super bien marcher et donc t'auras plus besoin de notre aide!
    euh, oui d'un coté mon programme marche et la soutenance est demain à midi donc de ce coté là c'est fini !!

    Et puisque je ne travaillerais pas avant un bon bout de temps (si ca se trouve pour toujours) avec du prolog, et bien je ne passerai plus sur ce forum.

    Mais toi pcaboche c'est pas pareil !! tu es dans ma liste d'amis !!
    si tu as un probleme en PHP/MySQL !! je suis la !!

  14. #14
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Bon ben bonne chance pour ta soutenance!


    Citation Envoyé par Maxoo
    Et puisque je ne travaillerais pas avant un bon bout de temps (si ca se trouve pour toujours) avec du prolog, et bien je ne passerai plus sur ce forum.
    Comment ça? Tout le monde sait bien que Prolog va dominer le monde et rendre tous les autres langages obsolètes !


    Citation Envoyé par Maxoo
    Mais toi pcaboche c'est pas pareil !! tu es dans ma liste d'amis !!
    Chouette, j'ai un ami, je suis content!


    Citation Envoyé par Maxoo
    si tu as un probleme en PHP/MySQL !! je suis la !!
    Merci, c'est gentil. Mais PHP/MySQL, je connais assez bien...

    A si en fait, il y a quelques jours on me demandait comment on pouvait interfacer du PHP avec du Prolog, t'as une idée?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  15. #15
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Citation Envoyé par pcaboche
    Comment ça? Tout le monde sait bien que Prolog va dominer le monde et rendre tous les autres langages obsolètes !



    Citation Envoyé par pcaboche
    A si en fait, il y a quelques jours on me demandait comment on pouvait interfacer du PHP avec du Prolog, t'as une idée?
    il serait interessant de pourvoir faire des prédicats en prolog et les utiliser en dans un script PHP il est vrai. mais il doit bien y avoir des solutions, mais faut installer des trucs sur les serveurs.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 24
    Points
    24
    Par défaut
    Je re-up le topic si quelqu'un a eu une solution miracle depuis le temps...

    Cette année, on doit faire un jeux de plateau ou l'objectif est de faire aller tout nos pions sur l'ile du milieu avant l'autre joueur (en respectant tout une série de contraintes pour agrémenter le jeu).

    On a terminé l'algo qui fonctionne bien, mais au bout de 35 de tour le programme plante pour mémoire insufisante (13MO max d'autorisé apparement).

    On as essayer de mettre pas mal de cut sans trop de succès, on va essayer en mettant un entre chaque instruction mais bon... C'est crade :/

    Si seulement on pouvait monter la limite de 10 MO....

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

Discussions similaires

  1. Repérer un stack overflow ?
    Par khayyam90 dans le forum C++
    Réponses: 3
    Dernier message: 19/02/2007, 13h23
  2. stack overflow: question insoluble
    Par coyotte507 dans le forum SDL
    Réponses: 3
    Dernier message: 19/12/2006, 17h50
  3. Stack OverFlow
    Par Goundy dans le forum Langage
    Réponses: 2
    Dernier message: 24/12/2005, 21h35
  4. Problème de stack overflow
    Par heider dans le forum Langage
    Réponses: 13
    Dernier message: 22/09/2005, 19h50
  5. Stack overflow
    Par portu dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2003, 15h16

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