Bonjour,

Voila j'essaye d'apprendre à utiliser CHOCO et j'ai un petit soucis que je n'arrive pas a solutionner. Je m'explique :
Je cherche à résoudre un probleme de planning.
J'ai une série de 7 taches.
Chaque tache nécessite des ressources et des ouvriers.
Chaque tache ne doit être réaliser qu'une seule fois.
10 ressources et 10 ouvriers sont attribué chaque jour.

J'ai donc déclarer un tableau de variables qui donne pour chaque tâche le jour d'exécution.

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
ressourceTache[0] = 5;
		ouvrierTache[0] = 3;
 
		ressourceTache[1] = 8;
		ouvrierTache[1] = 2;
 
		ressourceTache[2] = 4;
		ouvrierTache[2] = 1;
 
		ressourceTache[3] = 3;
		ouvrierTache[3] = 2;
 
		ressourceTache[4] = 4;
		ouvrierTache[4] = 4;
 
		ressourceTache[5] = 3;
		ouvrierTache[5] = 1;
 
		ressourceTache[6] = 4;
		ouvrierTache[6] = 4;
 
		Model m = new CPModel();
 
		IntegerVariable[] jourTache = makeIntVarArray("jourTache", 6, 0, 6, "cp:enom");
La 1ere contrainte je n'ai pas de problème : Chaque valeur du tableau est différente.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
for(int i = 0; i < 7; i++)
			m.addConstraint(allDifferent(jourTache[i]));

La ou ca se corse c'est quand je dois ajouter la contrainte des 10 ressources/ouvrier par jour.
Pour cela, je dois parcourir le tableau pour trouver toutes les tache exécuter le même jour, puis multiplié chacune des taches par les ressources requises et enfin additionner le tout. Je pensais donc faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
//Contraintes 2 : Pas plus de 10 ressources par jour
		for(int i = 0; i < 7; i++)
		{
			int ressource = 0;
			for(int j = 0; j < 7; j++)
				if(jourTache[j].equals(i))
					ressource += ressourceTache[j];
			m.addConstraint(leq(ressource, 10));
 
		}
Seulement ca ne marche pas puisque ressource n'est pas définit comme étant une variable du problème.

En revanche si je déclare ressource comme variable, je ne comprend pas comment établir la relation entre ressource et jourTache[].

Si quelqu'un pouvait m'apporter son aide...

Merci d'avance.

Galaxed.