public void start() { System.out.println(); openga.util.timeClock timeClock1 = new openga.util.timeClock(); timeClock1.start(); GaMain.startGA(); timeClock1.end(); // System.out.println("\nThe final result"); int bestInd = getBestSolnIndex(GaMain.getArchieve()); System.out.println(GaMain.getArchieve().getSingleChromosome(bestInd).toString1()); String implementationResult = ""; implementationResult += fileName + "\t" + numberOfJob + "\t" + DEFAULT_crossoverRate + "\t" + DEFAULT_mutationRate + "\t" + DEFAULT_PopSize + "\t" + GaMain.getArchieve().getSingleChromosome(bestInd).getObjValue()[0] + "\t" + timeClock1.getExecutionTime() / 1000.0 + "\n"; // implementationResult += fileName + "\t" + evaporationMethod + "\t" + // GaMain.getArchieve().getSingleChromosome(bestInd).getObjValue()[0] + "\t" + // timeClock1.getExecutionTime() / 1000.0 + "\n"; // implementationResult += fileName+"\t"+numberOfJob+"\t"+startingGeneration+"\t"+interval+"\t"+ // GaMain.getArchieve().getSingleChromosome(bestInd).getObjValue()[0]+"\t"+timeClock1.getExecutionTime()/1000.0+"\n"; writeFile("SingleMachine_PREDA1002", implementationResult); System.out.println(implementationResult); }
/** * For single objective problem * * @param arch1 * @return */ public int getBestSolnIndex(populationI arch1) { int index = 0; double bestobj = Double.MAX_VALUE; for (int k = 0; k < GaMain.getArchieve().getPopulationSize(); k++) { if (bestobj > GaMain.getArchieve().getObjectiveValues(k)[0]) { bestobj = GaMain.getArchieve().getObjectiveValues(k)[0]; index = k; } } return index; }
public void initiateVars() { GaMain = new singleThreadGAwithProbabilityMatrixPREDA(); Population = new population(); Selection = new binaryTournament(); Crossover = new twoPointCrossover2(); // Crossover2 = new PMX(); Mutation = new swapMutation(); // Mutation = new swapMutationWithMining2();//swapMutationWithMining2 shiftMutationWithMining2 Mutation2 = new inverseMutation(); ObjectiveFunction = new ObjectiveFunctionScheduleI[numberOfObjs]; ObjectiveFunction[0] = new ObjectiveEarlinessTardinessPenalty(); // the first objective, tardiness, // ObjectiveTardiness // ObjectiveEarlinessTardinessPenalty Fitness = new singleObjectiveFitness(); objectiveMinimization = new boolean[numberOfObjs]; objectiveMinimization[0] = true; // objectiveMinimization[1] = true; encodeType = true; clone1 = new solutionVectorCloneWithMutation(); // swap mutation // set schedule data to the objectives ObjectiveFunction[0].setScheduleData(dueDay, processingTime, numberOfMachines); // set the data to the GA main program. GaMain.setLearningRate(lamda, beta); // Interaction Learning rate GaMain.setWeight(w1, w2); // model=uni*w1 + bi*w2 GaMain.setProbabilityMatrixData(startingGeneration, interval); GaMain.setSequenceStrategy(strategy); totalSolnsToExamine = 125000; DEFAULT_PopSize = 100; // System.out.println(DEFAULT_PopSize); // System.exit(0); DEFAULT_generations = totalSolnsToExamine / (DEFAULT_PopSize); GaMain.setEvaporationMethod(applyEvaporation, evaporationMethod); GaMain.setData( Population, Selection, Crossover, Mutation, ObjectiveFunction, Fitness, DEFAULT_generations, DEFAULT_PopSize, DEFAULT_PopSize, numberOfJob, DEFAULT_crossoverRate, DEFAULT_mutationRate, objectiveMinimization, numberOfObjs, encodeType, elitism); GaMain.setSecondaryCrossoverOperator(Crossover2, false); GaMain.setSecondaryMutationOperator(Mutation2, false); }