From 4236043d00075dfa1e2bf89714279c29fc51c1c3 Mon Sep 17 00:00:00 2001 From: istkabra <kyrill.abrams@stud.h-da.de> Date: Tue, 2 Jun 2020 16:51:10 +0200 Subject: [PATCH] * Fixed overlaps not being printed (instead number of bonds were used twice) * Added isStretched flag in Vertex because visualizer was getting 0 for bonds and overlaps --- src/main/java/Evaluators/EvaluatorNESW.java | 2 -- src/main/java/Interfaces/Visualizer.java | 3 ++- src/main/java/MainClasses/Vertex.java | 15 +++++++++++---- src/main/java/Visualizers/BestFoldingToImage.java | 12 ++++-------- .../Visualizers/GenerationOverviewToConsole.java | 5 +---- .../java/Visualizers/GenerationProgressToLog.java | 3 ++- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/java/Evaluators/EvaluatorNESW.java b/src/main/java/Evaluators/EvaluatorNESW.java index e3dd414..cab1dd5 100644 --- a/src/main/java/Evaluators/EvaluatorNESW.java +++ b/src/main/java/Evaluators/EvaluatorNESW.java @@ -2,7 +2,6 @@ package Evaluators; import Interfaces.Evaluator; import MainClasses.Candidate; -import MainClasses.Config; import MainClasses.Vertex; public class EvaluatorNESW implements Evaluator { @@ -66,7 +65,6 @@ public class EvaluatorNESW implements Evaluator { } } overlaps /= 2; - overlaps = overlaps; return overlaps; } diff --git a/src/main/java/Interfaces/Visualizer.java b/src/main/java/Interfaces/Visualizer.java index a632178..dadc666 100644 --- a/src/main/java/Interfaces/Visualizer.java +++ b/src/main/java/Interfaces/Visualizer.java @@ -2,9 +2,9 @@ package Interfaces; import Enums.State; import MainClasses.Candidate; +import MainClasses.Cell; import MainClasses.GeneticAlgorithm; import MainClasses.Vertex; -import MainClasses.Cell; import java.util.ArrayList; import java.util.List; @@ -52,6 +52,7 @@ public interface Visualizer { vertex.x *= 2; vertex.y += Math.abs(minY); vertex.y *= 2; + vertex.isStretched = true; } // Add vertexes and connections to 2d array diff --git a/src/main/java/MainClasses/Vertex.java b/src/main/java/MainClasses/Vertex.java index ee55b92..a2d7519 100644 --- a/src/main/java/MainClasses/Vertex.java +++ b/src/main/java/MainClasses/Vertex.java @@ -5,11 +5,13 @@ public class Vertex { public int x; public int y; public int outgoingDirection; + public boolean isStretched; // Meaning it has room for connections public Vertex(int x, int y, int outgoingDirection) { this.x = x; this.y = y; this.outgoingDirection = outgoingDirection; + this.isStretched = false; } public boolean equalsPosition(Vertex vertex) { @@ -17,16 +19,21 @@ public class Vertex { } public boolean neighbouringPosition(Vertex vertex) { - if (x == vertex.x && y == vertex.y + 1) { + int neighbourDistance = 1; + if (isStretched) { + neighbourDistance *= 2; + } + + if (x == vertex.x && y == vertex.y + neighbourDistance) { return true; // South } - else if (x == vertex.x && y == vertex.y -1) { + else if (x == vertex.x && y == vertex.y -neighbourDistance) { return true; // North } - else if (x == vertex.x + 1 && y == vertex.y) { + else if (x == vertex.x + neighbourDistance && y == vertex.y) { return true; // West } - else if (x == vertex.x - 1 && y == vertex.y) { + else if (x == vertex.x - neighbourDistance && y == vertex.y) { return true; // East } else { diff --git a/src/main/java/Visualizers/BestFoldingToImage.java b/src/main/java/Visualizers/BestFoldingToImage.java index 00d1830..1481b87 100644 --- a/src/main/java/Visualizers/BestFoldingToImage.java +++ b/src/main/java/Visualizers/BestFoldingToImage.java @@ -3,19 +3,15 @@ package Visualizers; import Enums.State; import Evaluators.EvaluatorNESW; import Interfaces.Visualizer; -import MainClasses.Candidate; -import MainClasses.Config; -import MainClasses.GeneticAlgorithm; -import MainClasses.Vertex; -import MainClasses.Cell; +import MainClasses.*; -import java.nio.file.Files; -import java.nio.file.Paths; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; public class BestFoldingToImage implements Visualizer { @@ -145,7 +141,7 @@ public class BestFoldingToImage implements Visualizer { //TODO Get the labels from the new Generation class? EvaluatorNESW evaluator = new EvaluatorNESW(1,isHydrophobic); int bonds = evaluator.evaluateBonds(bestCandidateOfGeneration); - int overlaps = evaluator.evaluateBonds(bestCandidateOfGeneration); + int overlaps = evaluator.evaluateOverlaps(bestCandidateOfGeneration); String label = "Gen: " + geneticAlgorithm.generation + " Fitness: " + String.format("%.4f", bestCandidateOfGeneration.getFitness()) + " H/H Bonds: " + bonds diff --git a/src/main/java/Visualizers/GenerationOverviewToConsole.java b/src/main/java/Visualizers/GenerationOverviewToConsole.java index 9ee0780..8fa9fb2 100644 --- a/src/main/java/Visualizers/GenerationOverviewToConsole.java +++ b/src/main/java/Visualizers/GenerationOverviewToConsole.java @@ -5,9 +5,6 @@ import Interfaces.Visualizer; import MainClasses.Candidate; import MainClasses.Config; import MainClasses.GeneticAlgorithm; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; public class GenerationOverviewToConsole implements Visualizer { @@ -33,7 +30,7 @@ public class GenerationOverviewToConsole implements Visualizer { } int bonds = bondsOverlapsEvaluator.evaluateBonds(bestCandidateOfGeneration); - int overlaps = bondsOverlapsEvaluator.evaluateBonds(bestCandidateOfGeneration); + int overlaps = bondsOverlapsEvaluator.evaluateOverlaps(bestCandidateOfGeneration); System.out.println("Generation " + geneticAlgorithm.generation + "/" + config.getTotalGenerations() + ":"); System.out.println("Population size: " + generation.length); diff --git a/src/main/java/Visualizers/GenerationProgressToLog.java b/src/main/java/Visualizers/GenerationProgressToLog.java index 47131d6..a12eae2 100644 --- a/src/main/java/Visualizers/GenerationProgressToLog.java +++ b/src/main/java/Visualizers/GenerationProgressToLog.java @@ -5,6 +5,7 @@ import Interfaces.Visualizer; import MainClasses.Candidate; import MainClasses.Config; import MainClasses.GeneticAlgorithm; + import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -52,7 +53,7 @@ public class GenerationProgressToLog implements Visualizer { } int bonds = bondsOverlapsEvaluator.evaluateBonds(bestCandidateOfGeneration); - int overlaps = bondsOverlapsEvaluator.evaluateBonds(bestCandidateOfGeneration); + int overlaps = bondsOverlapsEvaluator.evaluateOverlaps(bestCandidateOfGeneration); String log = String.format("%d\t%.4f\t%.4f\t%.4f\t %d\t%d\n", geneticAlgorithm.generation, -- GitLab