Bonsoir à tous,

Je souhaiterai créer une instance via un générateur.

Les paramètres sont : le nombre de classes, le nombre de périodes et le nombre de ressources.
Le code que j'ai fait :

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
32
33
34
35
36
	ofstream op ("../../../presence/code_new_prb/exec/instance/week/configgen2.txt"); // Ouverture en mode ecriture
	op<<"nbressource "<< nbressource << endl;
	op<<"nbperiode "<< nbperiode << endl;
	op<<"nbclasse "<< NombreClasses<< endl;
 
	for(i=0; i<NombreClasses; ++i)
	{
		NbrInfClasse[i] = 0;
		if (NombreClasses==1) // s'il y a une seule classe
		{
			NbrInfClasse[i] = nbressource ;
			op<<"classe " << i << " nbressource " << NbrInfClasse[i] <<" : " ;
			for (int t=0;t<NbrInfClasse[i];t++){
				op <<""<< t <<"\t";
			}
			op << "\n";
			int nombre_maximale_P = 8;
			int nombre_minimale_P = 3;
			NombrPerdiodeClasse[i]=rand()%(nombre_maximale_P - nombre_minimale_P) + nombre_minimale_P;
			op<<"classe " << i << " nbperiode " << NombrPerdiodeClasse[i] <<" : " ;
			for (int t=0;t<NombrPerdiodeClasse[i];t++){ // taille de chaque classe
				op <<""<< t <<"\t";
			}
			op << "\n";
		}
	}
	for(i=0; i<NombreClasses; ++i)
	{
		NbrInfClasse[i] = 0;
		NombrPerdiodeClasse[i] = 0;
		if (NombreClasses > 1) // s'il y a plus d'une classe
		{
			op<<"classe " << i << " nbressource " << NbrInfClasse[i] <<" : " ;
 
		}
	}
Le code actuel marche uniquement pour une seule classe. En effet, je veux aller plus loin et faire cela pour plus de classes.
Je cherche à partager le nombre de ressources (15) sur l'ensemble des classes disponibles (4). De telle sorte que chaque classe doit contenir au minimum 1 ressource mais la somme ne doit pas dépasser le nombre 15. Pour les périodes, pour chaque classe, le nombre de périodes de présence du personnel vaut de 1 jusqu'à 10 (nbperiode ).
Le fichier de sortie souhaité (exemple) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
nbressource 15
nbperiode 10
nbclasse 4
classe 0 nbressource 6 : 0 1 2 3 4 9
classe 1 nbressource 4 : 5 6 7 8
classe 2 nbressource 2 : 10 12
classe 3 nbressource 3 : 11 13 14
classe 0 nbperiode 6 : 0 1 2 6 7 8
classe 1 nbperiode 3 : 0 1 2
classe 2 nbperiode 4 : 5 2 7 8
classe 3 nbperiode 7 : 1 4 7 8 9 5 3
Merci pour vos réponses.