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