CPLEX Error 1001: Out of memory, sous Java
Résolu/Fermé
raskorasko
Messages postés
1
Date d'inscription
vendredi 13 juillet 2007
Statut
Membre
Dernière intervention
13 juillet 2007
-
13 juil. 2007 à 17:48
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 29 août 2011 à 01:13
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 29 août 2011 à 01:13
A voir également:
- CPLEX Error 1001: Out of memory, sous Java
- Erreur 1001 outlook - Accueil - Bureautique
- Http error 413 zimbra - Forum autres boîtes mail
- Network error ✓ - Forum Réseaux sociaux
- Network error iptv - Forum Réseaux sociaux
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
8 réponses
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
13 juil. 2007 à 22:14
13 juil. 2007 à 22:14
C'est effectivement ça. Le problème de java c'est que les gens se reposent sur le garbage collector et ne prennent pas l'habitude de désallouer la mémoire.
Dans cplex il est primordial de libérer la mémoire dès que possible. Tout objet Ilo* doit systématiquement être désalloué quand il n'est plus utilisé avec la méthode .end() (en C++ en tout cas c'est comme ca que ca marche).
Afin que tu t'y retrouves :
- en général on fait une classe (que je vais appeler solveur) qui a pour attribut de classe un IloEnv, un IloModel, un IloCplex et des range pour les variables et les contraintes.
- tout objet Ilo* crée dans le constructeur de ton solveur (à savoir IloEnv, IloModel, IloCplex, les variables, les contraintes) doivent tous être désalloués dans le destructeur du solveur.
- tout objet Ilo* crée temporairement dans une méthode doit être désalloué dans cette méthode.
Bonne chance
Dans cplex il est primordial de libérer la mémoire dès que possible. Tout objet Ilo* doit systématiquement être désalloué quand il n'est plus utilisé avec la méthode .end() (en C++ en tout cas c'est comme ca que ca marche).
Iloexpr expr = ....; // j'utilise mon expr //... // quand j'ai fini expr.end();
Afin que tu t'y retrouves :
- en général on fait une classe (que je vais appeler solveur) qui a pour attribut de classe un IloEnv, un IloModel, un IloCplex et des range pour les variables et les contraintes.
- tout objet Ilo* crée dans le constructeur de ton solveur (à savoir IloEnv, IloModel, IloCplex, les variables, les contraintes) doivent tous être désalloués dans le destructeur du solveur.
- tout objet Ilo* crée temporairement dans une méthode doit être désalloué dans cette méthode.
Bonne chance
Hello,
J'arrive un peu trop tard mais je voulais faire remarquer qu'il existe des outils (des langages de modélisation) qui permettent d'utiliser cplex plus simplement qu'en utilisant directemement l'api java. Ces outils sont souvent très intuitifs pour les mathématiciens. Ils évitent naturellement les erreurs de programations.
OPL studio est le produit d'ILOG qui ai fait pour cela.
Celui qui veux vraiment utiliser cplex et java, peux regarder du coté d'OptimJ. Je connais depuis peu et il me semble qu'il a des idées à prendre. Dans ton cas, les objets sont crées et detruits automatiquement.
A+
J'arrive un peu trop tard mais je voulais faire remarquer qu'il existe des outils (des langages de modélisation) qui permettent d'utiliser cplex plus simplement qu'en utilisant directemement l'api java. Ces outils sont souvent très intuitifs pour les mathématiciens. Ils évitent naturellement les erreurs de programations.
OPL studio est le produit d'ILOG qui ai fait pour cela.
Celui qui veux vraiment utiliser cplex et java, peux regarder du coté d'OptimJ. Je connais depuis peu et il me semble qu'il a des idées à prendre. Dans ton cas, les objets sont crées et detruits automatiquement.
A+
bonjour j ai un modele lineaire afin d optimiser les affectations des avions dans les postes de stationnements. en gros j'aimerai bien rouve une personne avec qui je pourrais m 'associer pour resoudre le probleme avec OPL, CPLEX, JAVA et ORACLE afin de fournir une version commercialisable à l'echelle international
Veuillez me contactez sur le +21627433718
Veuillez me contactez sur le +21627433718
Owkie, mais je pensais qu'il suffisait que je fasse
cplex.end();
quand j'avais plus besoin de mes variables/contraintes et que alors tout s'effacerait ? N'est-ce pas le cas ?
En tous cas, merci pour ta réponse précédente.
cplex.end();
quand j'avais plus besoin de mes variables/contraintes et que alors tout s'effacerait ? N'est-ce pas le cas ?
En tous cas, merci pour ta réponse précédente.
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
16 juil. 2007 à 10:54
16 juil. 2007 à 10:54
Non ce n'est pas le cas. Il faut vraiment le faire pour tous les objets Ilo.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon, apperement la methode .end(); n'est pas définie pour les objets suivants:
IloNumVar var et IloLinearNumExpr lin.
Mais sinon, j'ai vraiment des choses bizarres qui apparaissent: en effet, selon que j'alloue 1 ou 2 GB a ma machine virtuelle, il ne résoud pas le programme de la mme maniere.
Enfin je pige rien, une fois de temps en temps il me sort la bonne réponse ...
IloNumVar var et IloLinearNumExpr lin.
Mais sinon, j'ai vraiment des choses bizarres qui apparaissent: en effet, selon que j'alloue 1 ou 2 GB a ma machine virtuelle, il ne résoud pas le programme de la mme maniere.
Enfin je pige rien, une fois de temps en temps il me sort la bonne réponse ...
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
16 juil. 2007 à 19:08
16 juil. 2007 à 19:08
Ca sent le bug :) Vérifie déjà que tu passes bien toujours le même problème à cplex. Tu as une méthode qui permet d'éxporter ton objet cplex au format lp
http://www.ieor.berkeley.edu/Labs/ilog_docs/html/refdotnetcplex/html/ILOG.CPLEX.Cplex.ExportModel.html
Attention ton nom de fichier doit se finir par .lp.
Bonne chance
http://www.ieor.berkeley.edu/Labs/ilog_docs/html/refdotnetcplex/html/ILOG.CPLEX.Cplex.ExportModel.html
Attention ton nom de fichier doit se finir par .lp.
Bonne chance
bon ca marche.
Visiblement, j'avais juste pas mis des IoCplex.end(); aux bons endroits dans mes boucles.
Merci pour ton aide :).
Visiblement, j'avais juste pas mis des IoCplex.end(); aux bons endroits dans mes boucles.
Merci pour ton aide :).
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
29 août 2011 à 01:13
29 août 2011 à 01:13
Si tu as mis tes désallocations (end(), ...) aux bons endroits, c'est peut-être que tu as définitivement trop de contraintes et/ou de variables dans ton problèmes.
En général dans ce genre de situation on se tourne vers tout ce qui est décomposition de Benders ou génération de colonnes (voir cours de recherche opérationnelle si ça ne te parle pas).
Bonne chance
En général dans ce genre de situation on se tourne vers tout ce qui est décomposition de Benders ou génération de colonnes (voir cours de recherche opérationnelle si ça ne te parle pas).
Bonne chance
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
16 juil. 2007 à 20:29
16 juil. 2007 à 20:29
Pas de soucis, à une prochaine ;)
28 août 2011 à 19:34
Veuillez me contactez sur le +21627433718