CPLEX "out of memory"
Résolu/Fermé
lotchello
-
24 sept. 2007 à 00:09
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 5 juin 2011 à 12:35
mamiemando Messages postés 33372 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 novembre 2024 - 5 juin 2011 à 12:35
A voir également:
- Cmdlcache out of memory
- Windows memory cleaner - Télécharger - Optimisation
- Out of memory ✓ - Forum Windows
- Out of memory - Forum Windows 10
- Out of range - Forum Ecran
- Problème écran "out of range" au démarrage - Forum Windows
2 réponses
mamiemando
Messages postés
33372
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 802
24 sept. 2007 à 09:46
24 sept. 2007 à 09:46
Les objets Ilo... se désallouent en leur appliquant la méthode end(). En général tu fais ça dans le destructeur de ton solveur. A priori CPLEX tourne en RAM, si le système doit swapper (écrire temporairement sur le disque dur) c'est le système qui gère (fichier d'échange sous windows, swap sous linux).
Si ton problème CPLEX ne tient pas en mémoire c'est sans doute qu'il est mal construit ou mal modélisé. Typiquement si tu résous un problème dans un graphe avec des contraintes portant sur des chemins, le nombre de chemin explose avec la taille du graphe et il n'est souvent pas possible de générer toutes les contraintes portant sur les chemins.
En fait on s'aperçoit que souvent pour résoudre un problème il n'est pas nécessaire de générer toutes les contraintes, car on n'optimise que dans une seule direction. Il suffit donc de générer dynamiquement les facettes de ton polytope dynamiquement (cf décomposition de Benders). Tu as également possiblité d'utiliser la vision duale (génération de colonnes).
Si aucune de ces 2 méthodes ne tient en mémoire ou est trop longue à résoudre, il faut passer par des méta heuristiques et une résolution approchée.
Bonne chance
Si ton problème CPLEX ne tient pas en mémoire c'est sans doute qu'il est mal construit ou mal modélisé. Typiquement si tu résous un problème dans un graphe avec des contraintes portant sur des chemins, le nombre de chemin explose avec la taille du graphe et il n'est souvent pas possible de générer toutes les contraintes portant sur les chemins.
En fait on s'aperçoit que souvent pour résoudre un problème il n'est pas nécessaire de générer toutes les contraintes, car on n'optimise que dans une seule direction. Il suffit donc de générer dynamiquement les facettes de ton polytope dynamiquement (cf décomposition de Benders). Tu as également possiblité d'utiliser la vision duale (génération de colonnes).
Si aucune de ces 2 méthodes ne tient en mémoire ou est trop longue à résoudre, il faut passer par des méta heuristiques et une résolution approchée.
Bonne chance
4 juin 2011 à 19:26
pouvez-vous expliquer un peu plus sur la manière de dire à CPLEX de rajouter telle ou telle contrainte (hyperplan d'appui) dans notre programme de manière dynamique SVP?
Merci d'avance!
Modifié par mamiemando le 5/06/2011 à 12:37
Le gros piège c'est qu'il faut veiller à ce que la partie constante soit à droite du signe de comparaison (<=, =>,...) dans les inégalités que tu ajoutes, sinon ça ne marche pas...
Voici un extrait de ce que j'avais codé à l'époque :
Toutefois, merci d'ouvrir un nouveau fil de discussion car ta question est hors sujet par rapport au problème initial (qui est résolu qui plus est !). Je précise tout de suite, ce code en l'état ne fonctionnera pas car il manque des choses spécifiques à ton problème (initialisation de vars, des contraintes de domaine etc...) c'est juste pour te donner une idée.
Bonne chance