From 66a80b94369e7743c5937164547fcd4ba3f0fb9f Mon Sep 17 00:00:00 2001 From: ajnebro Date: Mon, 22 Jan 2024 16:13:37 +0100 Subject: [PATCH] Add new problems --- .../NSGAIIAsAnEvolutionaryAlgorithmExample.jl | 11 +- examples/NSGAIIExample.jl | 2 +- ...mpleWithExternalCrowdingDistanceArchive.jl | 4 +- examples/NSGAIISolvingAConstrainedProblem.jl | 2 +- notebooks/NSGA-II notebook.ipynb | 676 +++++++----------- src/comparator.jl | 41 +- src/constrainedProblem.jl | 130 ++++ src/continuousProblem.jl | 103 ++- 8 files changed, 479 insertions(+), 490 deletions(-) diff --git a/examples/NSGAIIAsAnEvolutionaryAlgorithmExample.jl b/examples/NSGAIIAsAnEvolutionaryAlgorithmExample.jl index 3ed65a1..72f49e5 100644 --- a/examples/NSGAIIAsAnEvolutionaryAlgorithmExample.jl +++ b/examples/NSGAIIAsAnEvolutionaryAlgorithmExample.jl @@ -9,14 +9,14 @@ include("../src/utils.jl") using Dates # NSGA-II algorithm configured from the evolutionary algorithm template -problem = zdt1Problem() +problem = zdt4Problem() solver::EvolutionaryAlgorithm = EvolutionaryAlgorithm() solver.name = "NSGA-II" solver.problem = problem solver.populationSize = 100 -solver.offspringPopulationSize = 100 +solver.offspringPopulationSize = 1 solver.solutionsCreation = DefaultSolutionsCreation((problem = solver.problem, numberOfSolutionsToCreate = solver.populationSize)) @@ -28,7 +28,7 @@ mutation = PolynomialMutation((probability=1.0/numberOfVariables(problem), distr """ crossover = BLXAlphaCrossover((probability=1.0, alpha=0.5, bounds=problem.bounds)) """ -crossover = SBXCrossover((probability=1.0, distributionIndex=20.0, bounds=problem.bounds)) +crossover = SBXCrossover((probability=0.9, distributionIndex=20.0, bounds=problem.bounds)) solver.variation = CrossoverAndMutationVariation((offspringPopulationSize = solver.offspringPopulationSize, crossover = crossover, mutation = mutation)) @@ -37,10 +37,11 @@ solver.selection = BinaryTournamentSelection((matingPoolSize = solver.variation. solver.replacement = RankingAndDensityEstimatorReplacement((dominanceComparator = compareForDominance, )) startingTime = Dates.now() -optimize(solver) +#optimize(solver) +foundSolutions = evolutionaryAlgorithm(solver) endTime = Dates.now() -foundSolutions = solver.foundSolutions +#foundSolutions = solver.foundSolutions objectivesFileName = "FUN.csv" variablesFileName = "VAR.csv" diff --git a/examples/NSGAIIExample.jl b/examples/NSGAIIExample.jl index b15ac74..345c990 100644 --- a/examples/NSGAIIExample.jl +++ b/examples/NSGAIIExample.jl @@ -10,7 +10,7 @@ using Dates # NSGA-II algorithm example configured from the NSGA-II template -problem = zdt1Problem() +problem = zdt4Problem() solver::NSGAII = NSGAII() solver.problem = problem diff --git a/examples/NSGAIIExampleWithExternalCrowdingDistanceArchive.jl b/examples/NSGAIIExampleWithExternalCrowdingDistanceArchive.jl index 2753870..9e94e09 100644 --- a/examples/NSGAIIExampleWithExternalCrowdingDistanceArchive.jl +++ b/examples/NSGAIIExampleWithExternalCrowdingDistanceArchive.jl @@ -10,13 +10,13 @@ using Dates # NSGA-II algorithm configured from the evolutionary algorithm template. It incorporates an external archive to store the non-dominated solution found. This archive will be the algorithm output. -problem = zdt2Problem() +problem = zdt4Problem() solver::EvolutionaryAlgorithm = EvolutionaryAlgorithm() solver.name = "NSGA-II" solver.problem = problem solver.populationSize = 100 -solver.offspringPopulationSize = 100 +solver.offspringPopulationSize = 1 solver.solutionsCreation = DefaultSolutionsCreation((problem = solver.problem, numberOfSolutionsToCreate = solver.populationSize)) diff --git a/examples/NSGAIISolvingAConstrainedProblem.jl b/examples/NSGAIISolvingAConstrainedProblem.jl index 796b363..064eac5 100644 --- a/examples/NSGAIISolvingAConstrainedProblem.jl +++ b/examples/NSGAIISolvingAConstrainedProblem.jl @@ -10,7 +10,7 @@ using Dates # NSGA-II algorithm example configured from the NSGA-II template -problem = srinivasProblem() +problem = golinskiProblem() solver::NSGAII = NSGAII() solver.problem = problem diff --git a/notebooks/NSGA-II notebook.ipynb b/notebooks/NSGA-II notebook.ipynb index 69e6e62..3687b75 100644 --- a/notebooks/NSGA-II notebook.ipynb +++ b/notebooks/NSGA-II notebook.ipynb @@ -47,14 +47,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "id": "f45c2dcd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "ContinuousProblem{Float64}(Bounds{Float64}[Bounds{Float64}(-5.0, 5.0), Bounds{Float64}(-5.0, 5.0), Bounds{Float64}(-5.0, 5.0)], Function[var\"#125#127\"{Int64}(3), var\"#126#128\"{Int64}(3)], Function[], \"Kursawe\")" + "ContinuousProblem{Float64}(Bounds{Float64}[Bounds{Float64}(0.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0) … Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0), Bounds{Float64}(-1.0, 1.0)], Function[var\"#171#173\"{Int64}(30), var\"#172#174\"{Int64}(30)], Function[], \"UF1\")" ] }, "metadata": {}, @@ -62,7 +62,7 @@ } ], "source": [ - "problem = kursaweProblem()" + "problem = kursawePUFroblem()" ] }, { @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "id": "bef9eff3", "metadata": {}, "outputs": [ @@ -97,7 +97,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "id": "a9b91d3b", "metadata": {}, "outputs": [ @@ -112,7 +112,7 @@ } ], "source": [ - "solver.termination = TerminationByEvaluations((numberOfEvaluationsToStop = 25000, ))\n", + "solver.termination = TerminationByEvaluations((numberOfEvaluationsToStop = 250000, ))\n", "solver.mutation = PolynomialMutation((probability=1.0/numberOfVariables(problem), distributionIndex=20.0, bounds=problem.bounds))\n", "solver.crossover = SBXCrossover((probability=1.0, distributionIndex=20.0, bounds=problem.bounds))\n", "\n", @@ -132,7 +132,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "id": "d5445a96", "metadata": {}, "outputs": [ @@ -140,7 +140,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Computing time: 881 milliseconds\n" + "Computing time: 7497 milliseconds\n" ] } ], @@ -162,422 +162,298 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "id": "83b0fd8f", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ], "text/html": [ "\n", "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", + " \n", " \n", " \n", "\n", - "\n", + "\n", "\n", - " \n", - " \n", + " \n", + " \n", " \n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] }, "metadata": {}, @@ -600,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "b505e9bb", "metadata": {}, "outputs": [], @@ -616,7 +492,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "c3ad38df", "metadata": {}, "outputs": [ @@ -637,7 +513,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "686a628d", "metadata": {}, "outputs": [ @@ -659,7 +535,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "cff6517a", "metadata": {}, "outputs": [ @@ -681,7 +557,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "6303597b", "metadata": {}, "outputs": [ @@ -703,7 +579,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "46521840", "metadata": {}, "outputs": [ @@ -1175,7 +1051,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "id": "16fba7b4", "metadata": {}, "outputs": [], @@ -1184,15 +1060,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.8.0", + "display_name": "Julia 1.10.0", "language": "julia", - "name": "julia-1.8" + "name": "julia-1.10" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.8.0" + "version": "1.10.0" } }, "nbformat": 4, diff --git a/src/comparator.jl b/src/comparator.jl index 030a25c..cb6eecd 100644 --- a/src/comparator.jl +++ b/src/comparator.jl @@ -32,39 +32,32 @@ Compare two numerics vectors `x` and `y` according to the dominance relationship function compareForDominance(x::Vector{T}, y::Vector{T})::Int where {T<:Number} @assert length(x) == length(y) "The vectors have a different length" - """ - x==y && return 0 + bestIsSolution1 = false + bestIsSolution2 = false - all(t->(t[1]≤t[2]), zip(x, y)) && return -1 - all(t->(t[1]≤t[2]), zip(y, x)) && return 1 - return 0 - - """ - bestIsSolution1 = 0 - bestIsSolution2 = 0 - result = 0 - - for i in 1:length(x) - if x[i] != y[i] + @inbounds for i in 1:length(x) if x[i] < y[i] - y[i] - bestIsSolution1 = 1 + bestIsSolution1 = true + elseif x[i] > y[i] + bestIsSolution2 = true end - if x[i] > y[i] - bestIsSolution2 = 1 + + # Early exit if both flags are true + if bestIsSolution1 && bestIsSolution2 + return 0 end - end end - if bestIsSolution1 > bestIsSolution2 - result = -1 - elseif bestIsSolution1 < bestIsSolution2 - result = 1 + if bestIsSolution1 + return -1 + elseif bestIsSolution2 + return 1 + else + return 0 end - - return result end + function compareForDominance(solution1::Solution, solution2::Solution)::Int return compareForDominance(solution1.objectives, solution2.objectives) end diff --git a/src/constrainedProblem.jl b/src/constrainedProblem.jl index a9a5dcf..80ac27b 100644 --- a/src/constrainedProblem.jl +++ b/src/constrainedProblem.jl @@ -43,3 +43,133 @@ function srinivasProblem() return problem end + +function binh2Problem() + binh2 = ContinuousProblem{Float64}("Binh2") + + # Setting the variable bounds + addVariable(binh2, Bounds{Float64}(0.0, 5.0)) + addVariable(binh2, Bounds{Float64}(0.0, 3.0)) + + # Objective functions + f1 = x -> 4.0 * x[1] * x[1] + 4.0 * x[2] * x[2] + f2 = x -> (x[1] - 5.0) * (x[1] - 5.0) + (x[2] - 5.0) * (x[2] - 5.0) + + addObjective(binh2, f1) + addObjective(binh2, f2) + + # Constraints + c1 = x -> -((x[1] - 5.0) * (x[1] - 5.0) + x[2] * x[2] - 25.0) + c2 = x -> (x[1] - 8.0) * (x[1] - 8.0) + (x[2] + 3.0) * (x[2] + 3.0) - 7.7 + + addConstraint(binh2, c1) + addConstraint(binh2, c2) + + return binh2 +end + +function tanakaProblem() + tanaka = ContinuousProblem{Float64}("Tanaka") + + # Setting the variable bounds + for _ in 1:2 + addVariable(tanaka, Bounds{Float64}(10e-5, π)) + end + + # Objective functions + f1 = x -> x[1] + f2 = x -> x[2] + + addObjective(tanaka, f1) + addObjective(tanaka, f2) + + # Constraints + c1 = x -> x[1] * x[1] + x[2] * x[2] - 1.0 - 0.1 * cos(16.0 * atan(x[1] / x[2])) + c2 = x -> -2.0 * ((x[1] - 0.5) * (x[1] - 0.5) + (x[2] - 0.5) * (x[2] - 0.5) - 0.5) + + addConstraint(tanaka, c1) + addConstraint(tanaka, c2) + + return tanaka +end + +function ozyczka2Problem() + osyczka2 = ContinuousProblem{Float64}("Osyczka2") + + # Setting the variable bounds + bounds = [(0.0, 10.0), (0.0, 10.0), (1.0, 5.0), (0.0, 6.0), (1.0, 5.0), (0.0, 10.0)] + for (lower, upper) in bounds + addVariable(osyczka2, Bounds{Float64}(lower, upper)) + end + + # Objective functions + f1 = x -> -(25.0 * (x[1] - 2.0)^2 + (x[2] - 2.0)^2 + (x[3] - 1.0)^2 + (x[4] - 4.0)^2 + (x[5] - 1.0)^2) + f2 = x -> x[1]^2 + x[2]^2 + x[3]^2 + x[4]^2 + x[5]^2 + x[6]^2 + + addObjective(osyczka2, f1) + addObjective(osyczka2, f2) + + # Constraints + c1 = x -> (x[1] + x[2]) / 2.0 - 1.0 + c2 = x -> (6.0 - x[1] - x[2]) / 6.0 + c3 = x -> (2.0 - x[2] + x[1]) / 2.0 + c4 = x -> (2.0 - x[1] + 3.0 * x[2]) / 2.0 + c5 = x -> (4.0 - (x[3] - 3.0)^2 - x[4]) / 4.0 + c6 = x -> ((x[5] - 3.0)^2 + x[6] - 4.0) / 4.0 + + addConstraint(osyczka2, c1) + addConstraint(osyczka2, c2) + addConstraint(osyczka2, c3) + addConstraint(osyczka2, c4) + addConstraint(osyczka2, c5) + addConstraint(osyczka2, c6) + + return osyczka2 +end + +function golinskiProblem() + golinski = ContinuousProblem{Float64}("Golinski") + + # Setting the variable bounds + bounds = [(2.6, 3.6), (0.7, 0.8), (17.0, 28.0), (7.3, 8.3), (7.3, 8.3), (2.9, 3.9), (5.0, 5.5)] + for (lower, upper) in bounds + addVariable(golinski, Bounds{Float64}(lower, upper)) + end + + # Objective functions + f1 = x -> 0.7854 * x[1] * x[2]^2 * ((10 * x[3]^2) / 3.0 + 14.933 * x[3] - 43.0934) - + 1.508 * x[1] * (x[6]^2 + x[7]^2) + + 7.477 * (x[6]^3 + x[7]^3) + + 0.7854 * (x[4] * x[6]^2 + x[5] * x[7]^2) + + aux = x -> 745.0 * x[4] / (x[2] * x[3]) + f2 = x -> sqrt((aux(x))^2 + 1.69e7) / (0.1 * x[6]^3) + + addObjective(golinski, f1) + addObjective(golinski, f2) + + # Constraints + c = Vector{Function}(undef, 11) + + c[1] = x -> -((1.0 / (x[1] * x[2]^2 * x[3])) - (1.0 / 27.0)) + c[2] = x -> -((1.0 / (x[1] * x[2]^2 * x[3]^2)) - (1.0 / 397.5)) + c[3] = x -> -((x[4]^4) / (x[2] * x[3]^2 * x[6]^6) - (1.0 / 1.93)) + c[4] = x -> -((x[5]^4) / (x[2] * x[3] * x[7]^6) - (1.0 / 1.93)) + c[5] = x -> -(x[2] * x[3] - 40.0) + c[6] = x -> -((x[1] / x[2]) - 12.0) + c[7] = x -> -(5.0 - (x[1] / x[2])) + c[8] = x -> -(1.9 - x[4] + 1.5 * x[6]) + c[9] = x -> -(1.9 - x[5] + 1.1 * x[7]) + c[10] = x -> -(f2(x) - 1300) + c[11] = x -> begin + a = 745.0 * x[5] / (x[2] * x[3]) + b = 1.575e8 + -(sqrt(a * a + b) / (0.1 * x[7]^3) - 1100.0) + end + + for constraint in c + addConstraint(golinski, constraint) + end + + return golinski +end diff --git a/src/continuousProblem.jl b/src/continuousProblem.jl index cc2b3c4..948cbdd 100644 --- a/src/continuousProblem.jl +++ b/src/continuousProblem.jl @@ -272,9 +272,17 @@ function zdt4Problem(numberOfVariables::Int=10) end function evalG(x::Vector{Float64}) - g = 1.0 +10.0 * (length(x) - 1)+ sum([(^(x[i],2.0) -10.0 * cos(4.0*pi*x[i])) for i in range(2,length(x))]) + g = 0.0 - return g + for i in 2:length(x) + g += x[i]^2 - 10.0 * cos(4.0 * π * x[i]) + end + + #g = 1.0 +10.0 * (length(x) - 1)+ sum([(^(x[i],2.0) -10.0 * cos(4.0*pi*x[i])) for i in range(2,length(x))]) + + constant = 1.0 + 10.0 * (length(x) - 1) + + return g + constant end function evalH(v::Real, g::Float64) @@ -446,68 +454,49 @@ function evaluate(solution::ContinuousSolution{Float64}, problem::DTLZ1)::Contin return solution end -struct DTLZ2 <: AbstractContinuousProblem{Float64} - bounds::Vector{Bounds{Float64}} - numberOfObjectives::Int - name::String -end - -function dtlz2Problem(numberOfVariables::Int=12, numberOfObjectives::Int=3) - bounds = [Bounds{Float64}(0.0, 1.0) for _ in range(1, numberOfVariables)] - - return DTLZ1(bounds,numberOfObjectives,"DTLZ2") -end - -function numberOfVariables(problem::DTLZ2) - return length(problem.bounds) -end - -function numberOfObjectives(problem::DTLZ2) - return problem.numberOfObjectives -end - -function numberOfConstraints(problem::DTLZ2) - return 0 -end - -function evaluate(solution::ContinuousSolution{Float64}, problem::DTLZ2)::ContinuousSolution{Float64} - x = solution.variables - @assert length(x) == numberOfVariables(problem) "The number of variables of the solution to be evaluated is not correct" +function UF1Problem(numberOfVariables::Int = 30) + uf1 = ContinuousProblem{Float64}("UF1") - k = numberOfVariables(problem) - numberOfObjectives(problem) + 1 - - g = sum([^(x[i]-0.5,2) for i in range((numberOfVariables(problem)-k+1),numberOfVariables(problem))]) - - f = [(1.0 + g) for _ in 1:numberOfObjectives(problem)] - - #println("G: ", g) - #println("F: ", f) + # Setting the variable bounds + addVariable(uf1, Bounds{Float64}(0.0, 1.0)) # For the first variable + for _ in 2:numberOfVariables + addVariable(uf1, Bounds{Float64}(-1.0, 1.0)) + end - for i in 1:numberOfObjectives(problem) - for j in 1:(numberOfObjectives(problem) - i) - f[i] *= cos(x[j] * 0.5 * pi) - #println("F[",i,"] = ", f[i]) + # Objective functions + f1 = x -> begin + sum1 = 0.0 + count1 = 0 + for j in 2:numberOfVariables + yj = x[j] - sin(6.0 * π * x[1] + j * π / numberOfVariables) + yj *= yj + if j % 2 != 0 + sum1 += yj + count1 += 1 + end end - #println("----") - if i != 1 - aux = numberOfObjectives(problem) - i + 1 - #println("AUX: ", aux) - f[i] *= sin(x[aux]*0.5*pi) - #println("F[",i,"] = ", f[i]) + return x[1] + 2.0 * sum1 / count1 + end + + f2 = x -> begin + sum2 = 0.0 + count2 = 0 + for j in 2:numberOfVariables + yj = x[j] - sin(6.0 * π * x[1] + j * π / numberOfVariables) + yj *= yj + if j % 2 == 0 + sum2 += yj + count2 += 1 + end end + return 1.0 - sqrt(x[1]) + 2.0 * sum2 / count2 end - solution.objectives = f + addObjective(uf1, f1) + addObjective(uf1, f2) - return solution + return uf1 end -""" -problem = dtlz1Problem() -solution = createSolution(problem) -solution.variables = [0.5 for i in 1:numberOfVariables(problem)] -println(solution) -evaluate(solution, problem) -println(solution) -""" \ No newline at end of file +