Bonjour à tous,
je cherche depuis maintenant un bon moment comment utiliser GLPK sous eclipse, mais je n'y arrive pas.
Je sais comment faire un modele glpk qui marche et je sais commment le lancer.
Je sais aussi comment importer la bibliothèque glpk sous eclipse.
Je sais aussi comment résoudre un un modéke simple depuis eclipse en utilisant la bibliothèque glpk.
Mais ce que je ne sais pas et c'est vraiment embêtant, c'est comment utiliser la bibliothéque pour résoudre un problème plus complexe, avec des paramétres et tout et tout...
voilà ce qui marche avec glpk,
voilà ce que je fais sous éclipse
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 param N, integer, >=0; /*Nb d'objet*/ set O:=1..N; /*ensemble des objets*/ set B:=1..N; /*ensemble des boites*/ param capacite, integer, >=0; /*capacite des boites*/ param objets{o in O}; /*tableau des taille des objets*/ var remplissage{o in O,b in B}, binary ; /*tableau d'affectation */ var boites{e in B}, integer, >=0; /*tableau indiquant si une boite est utilisée*/ /*fonction objectif*/ minimize nombreDeBoiteNecessaire : sum{i in B}(boites[i]); /*contraintes sur la variable remplissage*/ s.t.boitePasTropRemplie {b in B} : (sum{o in O} (objets[o]*remplissage[o,b])) <= capacite; s.t.unObjetDansUneSeuleBoite_1 {o in O} : (sum{b in B} remplissage[o,b]) <= 1; s.t.unObjetDansUneSeuleBoite_2 {o in O} : (sum{b in B} remplissage[o,b]) >= 1; s.t.tousLesObjetDansUneBoite_1 : (sum{o in O}sum{b in B} remplissage[o,b]) <= N; s.t.tousLesObjetDansUneBoite_2 : (sum{o in O}sum{b in B} remplissage[o,b]) >= N; /*contraintes sur la variable boites*/ s.t. renseignerBoites {b in B} : boites[b] <=(sum{o in O}remplissage[o,b]); s.t. renseignerBoites_2{b in B}: boites[b]*4000 >= (sum{o in O}remplissage[o,b]); s.t. renseignerBoites_3{b in B}: boites[b] <=1; data; param N:=4; param objets:= [1]9 [2]9 [3]1 [4]3; param capacite:= 11; end;
voilà le résultat console
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 GlpkSolver solverMIP = new GlpkSolver(); GlpkSolver.readModel("C:/Users/Tanguy/workspace/PROJET/modele.txt", "data.txt", "resultat.txt"); solverMIP.setProbName("Bin-paking"); System.out.println("Resolution en nombres entiers ...."); solverMIP.simplex(); solverMIP.integer(); solverMIP.mipObjVal();
je commence à désespérer, car sur le net je ne trouve aucun code qui permette de gérer les paramètres....
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
17
18
19 Resolution en nombres entiers .... Reading model section from C:/Users/Tanguy/workspace/PROJET/modele.txt... 26 lines were read Reading data section from data.txt... data.txt:3: warning: unexpected end of file; missing end statement inserted 3 lines were read Generating nombreDeBoiteNecessaire... Generating boitePasTropRemplie... Generating unObjetDansUneSeuleBoite_1... Generating unObjetDansUneSeuleBoite_2... Generating tousLesObjetDansUneBoite_1... Generating tousLesObjetDansUneBoite_2... Generating renseignerBoites... Generating renseignerBoites_2... Generating renseignerBoites_3... Model has been successfully generated spx_simplex: problem has no rows/columns lpx_integer: problem is not of MIP class lpx_mip_obj_val: not a MIP problem
Bref, toute aide sera la bienvenue....
Un grand merci !!!
Partager