src/DataStructure/Utility.java
public static void createInitialSolutionUniform() {
		initialSolution.clear();

		File file = new File("initSolution.txt");
		if (file.exists()) {
			restoreInitSolutionFromFile("initSolution.txt");
		}

		else {

			interventiNonAssegnati = new ArrayList<Intervento>(interventi);

			int dist = interventi.size() / squadre.size(); // numero di
															// interveti minimo
															// di ogni squadra
			boolean flag = true; // flag per segnalare che tutte le squadre
									// hanno un numero minimo di interventi

			for (int i = 0; i < interventi.size(); i++) {
				int indiceSquadra = sRandom.nextInt(squadre.size());
				Intervento intASS = interventi.get(i); // intervento da
														// assegnare
				// Ciclo per assegnare almeno un numero pari a m/n interve a
				// tutte le squadre
				if (flag) {
					// Seleziono una nuova squadra casualmente se la squadra
					// scelta non ha le competenze oppure
					// ha gia il numero massimo uniforme
					int size = initialSolution.getListaIntIntervento(
							indiceSquadra).size();
					while ((!checkIntSquad(i, indiceSquadra)) || (size >= dist)) {
						indiceSquadra = sRandom.nextInt(squadre.size());
						size = initialSolution.getListaIntIntervento(
								indiceSquadra).size();
					}
					int idInt = i + 1;
					initialSolution.addIntervento(idInt, indiceSquadra);
					interventiNonAssegnati.remove(intASS);// riumuovo
															// l'intervneto
															// dalla lista degli
															// nitnerventi non
															// asegnati
					// Verifico che sia rimasta almeno una squadra che abbia
					// meno interventi di m/n
					flag = false;
					for (int j = 0; j < squadre.size(); j++) {
						if (initialSolution.getListaIntIntervento(j).size() < dist) {
							flag = true;
						}
					}
				} else {// (!flag){
						// Seleziono una nuova squadra casualmente se la squadra
						// scelta non ha le competenze oppure
						// ha gia il numero massimo uniforme
					while (!checkIntSquad(i, indiceSquadra)) {
						indiceSquadra = sRandom.nextInt(squadre.size());
					}
					int idInt = i + 1;
					initialSolution.addIntervento(idInt, indiceSquadra);
					interventiNonAssegnati.remove(intASS);// riumuovo
															// l'intervneto
															// dalla lista degli
															// nitnerventi non
															// asegnati
					// Verifico che sia rimasta almeno una squadra che abbia
					// meno interventi di m/n
				}

			}
			openFile("initSolution.txt");
			printToFile(initialSolution.toString() + "\n");
			closefile();
		}
		valuateSolution = new SolutionInOrder(initialSolution);

	}
/**
	 * Metodo per la generazione di una soluzione iniziale uniforme
	 */
Metodo per la generazione di una soluzione iniziale uniforme
Metodo per la generazione di una soluzione iniziale uniforme
public static void createInitialSolutionUniform() {
		initialSolution.clear();
		File file = new File("initSolution.txt");
		if (file.exists()) {
			restoreInitSolutionFromFile("initSolution.txt");
		}
		else {
			interventiNonAssegnati = new ArrayList<Intervento>(interventi);
			int dist = interventi.size() / squadre.size(); 
			boolean flag = true; 
			for (int i = 0; i < interventi.size(); i++) {
				int indiceSquadra = sRandom.nextInt(squadre.size());
				Intervento intASS = interventi.get(i); 
				if (flag) {
					int size = initialSolution.getListaIntIntervento(
							indiceSquadra).size();
					while ((!checkIntSquad(i, indiceSquadra)) || (size >= dist)) {
						indiceSquadra = sRandom.nextInt(squadre.size());
						size = initialSolution.getListaIntIntervento(
								indiceSquadra).size();
					}
					int idInt = i + 1;
					initialSolution.addIntervento(idInt, indiceSquadra);
					interventiNonAssegnati.remove(intASS);
					flag = false;
					for (int j = 0; j < squadre.size(); j++) {
						if (initialSolution.getListaIntIntervento(j).size() < dist) {
							flag = true;
						}
					}
				} else {
					while (!checkIntSquad(i, indiceSquadra)) {
						indiceSquadra = sRandom.nextInt(squadre.size());
					}
					int idInt = i + 1;
					initialSolution.addIntervento(idInt, indiceSquadra);
					interventiNonAssegnati.remove(intASS);
				}
			}
			openFile("initSolution.txt");
			printToFile(initialSolution.toString() + "\n");
			closefile();
		}
		valuateSolution = new SolutionInOrder(initialSolution);
	}
public static void createInitialSolutionUniform ( ) { initialSolution . clear ( ) ; File file = new File ( "initSolution.txt" ) ; if ( file . exists ( ) ) { restoreInitSolutionFromFile ( "initSolution.txt" ) ; } else { interventiNonAssegnati = new ArrayList < Intervento > ( interventi ) ; int dist = interventi . size ( ) / squadre . size ( ) ; boolean flag = true ; for ( int i = 0 ; i < interventi . size ( ) ; i ++ ) { int indiceSquadra = sRandom . nextInt ( squadre . size ( ) ) ; Intervento intASS = interventi . get ( i ) ; if ( flag ) { int size = initialSolution . getListaIntIntervento ( indiceSquadra ) . size ( ) ; while ( ( ! checkIntSquad ( i , indiceSquadra ) ) || ( size >= dist ) ) { indiceSquadra = sRandom . nextInt ( squadre . size ( ) ) ; size = initialSolution . getListaIntIntervento ( indiceSquadra ) . size ( ) ; } int idInt = i + 1 ; initialSolution . addIntervento ( idInt , indiceSquadra ) ; interventiNonAssegnati . remove ( intASS ) ; flag = false ; for ( int j = 0 ; j < squadre . size ( ) ; j ++ ) { if ( initialSolution . getListaIntIntervento ( j ) . size ( ) < dist ) { flag = true ; } } } else { while ( ! checkIntSquad ( i , indiceSquadra ) ) { indiceSquadra = sRandom . nextInt ( squadre . size ( ) ) ; } int idInt = i + 1 ; initialSolution . addIntervento ( idInt , indiceSquadra ) ; interventiNonAssegnati . remove ( intASS ) ; } } openFile ( "initSolution.txt" ) ; printToFile ( initialSolution . toString ( ) + "\n" ) ; closefile ( ) ; } valuateSolution = new SolutionInOrder ( initialSolution ) ; }
Metodo per la generazione di una soluzione iniziale uniforme
Metodo per la generazione di una soluzione iniziale uniforme
// numero di // interveti minimo // di ogni squadra // flag per segnalare che tutte le squadre // hanno un numero minimo di interventi // intervento da // assegnare // Ciclo per assegnare almeno un numero pari a m/n interve a // tutte le squadre // Seleziono una nuova squadra casualmente se la squadra // scelta non ha le competenze oppure // ha gia il numero massimo uniforme // riumuovo // l'intervneto // dalla lista degli // nitnerventi non // asegnati // Verifico che sia rimasta almeno una squadra che abbia // meno interventi di m/n // (!flag){ // Seleziono una nuova squadra casualmente se la squadra // scelta non ha le competenze oppure // ha gia il numero massimo uniforme // riumuovo // l'intervneto // dalla lista degli // nitnerventi non // asegnati // Verifico che sia rimasta almeno una squadra che abbia // meno interventi di m/n