def test_should_hypervolume_return_the_correct_value_when_applied_to_the_ZDT1_reference_front( self): problem = ZDT1() problem.reference_front = read_solutions( filename='resources/reference_front/ZDT1.pf') reference_point = [1, 1] hv = HyperVolume(reference_point) value = hv.compute(problem.reference_front) self.assertAlmostEqual(0.666, value, delta=0.001)
from jmetal.algorithm.multiobjective.mocell import MOCell from jmetal.lab.visualization import Plot from jmetal.operator import SBXCrossover, PolynomialMutation from jmetal.problem import ZDT1 from jmetal.util.archive import CrowdingDistanceArchive from jmetal.util.neighborhood import C9 from jmetal.util.observer import ProgressBarObserver from jmetal.util.solutions import read_solutions from jmetal.util.termination_criterion import StoppingByEvaluations if __name__ == '__main__': problem = ZDT1() problem.reference_front = read_solutions(filename='resources/reference_front/ZDT4.pf') max_evaluations = 25000 algorithm = MOCell( problem=problem, population_size=100, neighborhood=C9(10, 10), archive=CrowdingDistanceArchive(100), mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20), crossover=SBXCrossover(probability=1.0, distribution_index=20), termination_criterion=StoppingByEvaluations(max=max_evaluations) ) algorithm.observable.register(observer=ProgressBarObserver(max=max_evaluations)) algorithm.run() front = algorithm.get_result() # Plot front
Created on Mon Sep 30 10:33:43 2019 @author: Alejandro De la Cruz """ from jmetal.algorithm.multiobjective.nsgaii import NSGAII from jmetal.lab.visualization import Plot, InteractivePlot from jmetal.operator import SBXCrossover, PolynomialMutation from jmetal.problem import ZDT1, ZDT3, ZDT4, ZDT6 from jmetal.util.observer import ProgressBarObserver, VisualizerObserver from jmetal.util.solutions import read_solutions, print_function_values_to_screen from jmetal.util.termination_criterion import StoppingByEvaluations if __name__ == '__main__': problem = ZDT3() problem.reference_from = read_solutions(filename='mysolucionbonita.pf') max_evaluations = 25000 algorithm = NSGAII( problem=problem, population_size=100, offspring_population_size=100, mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20), crossover=SBXCrossover(probability=1.0, distribution_index=20), termination_criterion=StoppingByEvaluations(max=max_evaluations)) algorithm.observable.register(observer=ProgressBarObserver( max=max_evaluations)) algorithm.observable.register(observer=VisualizerObserver( reference_front=problem.reference_front))
from jmetal.algorithm.multiobjective.nsgaii import NSGAII from jmetal.lab.visualization import Plot, InteractivePlot from jmetal.operator import SBXCrossover, PolynomialMutation from jmetal.problem import Srinivas from jmetal.util.observer import ProgressBarObserver, VisualizerObserver from jmetal.util.solutions import read_solutions, print_function_values_to_file, print_variables_to_file from jmetal.util.solutions.comparator import DominanceComparator from jmetal.util.termination_criterion import StoppingByEvaluations if __name__ == '__main__': problem = Srinivas() problem.reference_front = read_solutions( filename='resources/reference_front/Srinivas.pf') max_evaluations = 25000 algorithm = NSGAII( problem=problem, population_size=100, offspring_population_size=100, mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20), crossover=SBXCrossover(probability=1.0, distribution_index=20), termination_criterion=StoppingByEvaluations(max=max_evaluations), dominance_comparator=DominanceComparator()) algorithm.observable.register(observer=ProgressBarObserver( max=max_evaluations)) algorithm.observable.register(observer=VisualizerObserver( reference_front=problem.reference_front))
from jmetal.algorithm.multiobjective.gde3 import GDE3 from jmetal.lab.visualization import InteractivePlot, Plot from jmetal.problem import ZDT2 from jmetal.util.observer import VisualizerObserver from jmetal.util.solutions import ( print_function_values_to_file, print_variables_to_file, read_solutions, ) from jmetal.util.solutions.comparator import GDominanceComparator from jmetal.util.termination_criterion import StoppingByEvaluations if __name__ == "__main__": problem = ZDT2() problem.reference_front = read_solutions( filename="resources/reference_front/{}.pf".format(problem.get_name())) max_evaluations = 25000 reference_point = [0.2, 0.5] algorithm = GDE3( problem=problem, population_size=100, cr=0.5, f=0.5, termination_criterion=StoppingByEvaluations( max_evaluations=max_evaluations), dominance_comparator=GDominanceComparator(reference_point), ) algorithm.observable.register(
from jmetal.algorithm.multiobjective.moead import MOEAD from jmetal.lab.visualization import Plot, InteractivePlot from jmetal.operator import PolynomialMutation, DifferentialEvolutionCrossover from jmetal.problem import LZ09_F2 from jmetal.util.aggregative_function import Tschebycheff from jmetal.util.observer import ProgressBarObserver, VisualizerObserver from jmetal.util.solutions import read_solutions, print_function_values_to_file, print_variables_to_file from jmetal.util.termination_criterion import StoppingByEvaluations if __name__ == '__main__': problem = LZ09_F2() problem.reference_front = read_solutions(filename='../../resources/reference_front/LZ09_F2.pf') max_evaluations = 150000 algorithm = MOEAD( problem=problem, population_size=300, crossover=DifferentialEvolutionCrossover(CR=1.0, F=0.5, K=0.5), mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20), aggregative_function=Tschebycheff(dimension=problem.number_of_objectives), neighbor_size=20, neighbourhood_selection_probability=0.9, max_number_of_replaced_solutions=2, weight_files_path='../../resources/MOEAD_weights', termination_criterion=StoppingByEvaluations(max=max_evaluations) ) algorithm.observable.register(observer=ProgressBarObserver(max=max_evaluations)) algorithm.observable.register( observer=VisualizerObserver(reference_front=problem.reference_front, display_frequency=1000))
from jmetal.algorithm.multiobjective.spea2 import SPEA2 from jmetal.lab.visualization import Plot, InteractivePlot from jmetal.operator import SBXCrossover, PolynomialMutation from jmetal.problem import DTLZ2 from jmetal.util.observer import ProgressBarObserver, VisualizerObserver from jmetal.util.solutions import read_solutions, print_function_values_to_file, print_variables_to_file from jmetal.util.termination_criterion import StoppingByEvaluations if __name__ == '__main__': problem = DTLZ2() problem.reference_front = read_solutions(filename='../../resources/reference_front/DTLZ2.3D.pf') max_evaluations = 20000 algorithm = SPEA2( problem=problem, population_size=20, offspring_population_size=20, mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20), crossover=SBXCrossover(probability=1.0, distribution_index=20), termination_criterion=StoppingByEvaluations(max=max_evaluations) ) algorithm.observable.register(observer=ProgressBarObserver(max=max_evaluations)) algorithm.observable.register(observer=VisualizerObserver(reference_front=problem.reference_front)) algorithm.run() front = algorithm.get_result() # Plot front plot_front = Plot(plot_title='Pareto front approximation', reference_front=problem.reference_front, axis_labels=problem.obj_labels) plot_front.plot(front, label=algorithm.label, filename=algorithm.get_name())
def generate_summary_from_experiment(input_dir: str, quality_indicators: List[QualityIndicator], reference_fronts: str = ''): """ Compute a list of quality indicators. The input data directory *must* met the following structure (this is generated automatically by the Experiment class): * <base_dir> * algorithm_a * problem_a * FUN.0.tsv * FUN.1.tsv * VAR.0.tsv * VAR.1.tsv * ... :param input_dir: Directory where all the input data is found (function values and variables). :param reference_fronts: Directory where reference fronts are found. :param quality_indicators: List of quality indicators to compute. :return: None. """ if not quality_indicators: quality_indicators = [] with open('QualityIndicatorSummary.csv', 'w+') as of: of.write('Algorithm,Problem,ExecutionId,IndicatorName,IndicatorValue\n') for dirname, _, filenames in os.walk(input_dir): for filename in filenames: try: # Linux filesystem algorithm, problem = dirname.split('/')[-2:] except ValueError: # Windows filesystem algorithm, problem = dirname.split('\\')[-2:] if 'TIME' in filename: run_tag = [s for s in filename.split('.') if s.isdigit()].pop() with open(os.path.join(dirname, filename), 'r') as content_file: content = content_file.read() with open('QualityIndicatorSummary.csv', 'a+') as of: of.write(','.join([algorithm, problem, run_tag, 'Time', str(content)])) of.write('\n') if 'FUN' in filename: solutions = read_solutions(os.path.join(dirname, filename)) run_tag = [s for s in filename.split('.') if s.isdigit()].pop() for indicator in quality_indicators: reference_front_file = os.path.join(reference_fronts, problem + '.pf') # Add reference front if any if hasattr(indicator, 'reference_front'): if Path(reference_front_file).is_file(): indicator.reference_front = read_solutions(reference_front_file) else: LOGGER.warning('Reference front not found at', reference_front_file) result = indicator.compute(solutions) # Save quality indicator value to file with open('QualityIndicatorSummary.csv', 'a+') as of: of.write(','.join([algorithm, problem, run_tag, indicator.get_name(), str(result)])) of.write('\n')
from jmetal.algorithm.multiobjective.moead import MOEADIEpsilon from jmetal.lab.visualization import Plot, InteractivePlot from jmetal.operator import PolynomialMutation, DifferentialEvolutionCrossover from jmetal.problem.multiobjective.lircmop import LIRCMOP2 from jmetal.util.aggregative_function import Tschebycheff from jmetal.util.observer import ProgressBarObserver, VisualizerObserver from jmetal.util.solutions import read_solutions, print_function_values_to_file, print_variables_to_file from jmetal.util.termination_criterion import StoppingByEvaluations if __name__ == '__main__': problem = LIRCMOP2() problem.reference_front = read_solutions( filename='resources/reference_front/LIRCMOP2.pf') max_evaluations = 300000 algorithm = MOEADIEpsilon( problem=problem, population_size=300, crossover=DifferentialEvolutionCrossover(CR=1.0, F=0.5, K=0.5), mutation=PolynomialMutation(probability=1.0 / problem.number_of_variables, distribution_index=20), aggregative_function=Tschebycheff( dimension=problem.number_of_objectives), neighbor_size=20, neighbourhood_selection_probability=0.9, max_number_of_replaced_solutions=2, weight_files_path='resources/MOEAD_weights', termination_criterion=StoppingByEvaluations(max=max_evaluations))