diff --git a/src/main/java/Evaluators/EvaluatorNESW.java b/src/main/java/Evaluators/EvaluatorNESW.java index e3dd4145698aca10f51b664badff8615816ea8fe..cab1dd5127e65126c01e86c826c9777ea76a6d51 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 a6321784c53e8b5af6193c12de551f2c48b17109..dadc66645ac56f53ffc01f204243223edeca6eac 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 ee55b92d5f44b95dfaddd0df0194188aba78d0b8..a2d7519f3a3370e705eb215a27dcf918b7408013 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 00d1830228e3b680c50d028363e56fc3d6b9e859..1481b874b611fd36212303bb76ec4e031fe878f9 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 9ee07807d0911126f4c0fbbed15567df7bdf5456..8fa9fb297e30d38d59ddd4ce6dd13ef76495e0f3 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 47131d6fee8031aebfedb9b647f459f30f2ba3b2..a12eae253f7314b001b5ce517884bd4b7c5dc312 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,