From 3fc4bf4a2ea7c6cff9810b76964dd3c1388c0b3f Mon Sep 17 00:00:00 2001
From: Eduardo Pedroni <ep625@york.ac.uk>
Date: Tue, 11 Feb 2014 08:30:36 +0000
Subject: Updated README, made a few changes to Chromosome's mutation methods,
 will be working on that throughout the day

---
 src/jcgp/population/Chromosome.java | 46 +++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

(limited to 'src/jcgp/population')

diff --git a/src/jcgp/population/Chromosome.java b/src/jcgp/population/Chromosome.java
index 195b95c..0dc3ff9 100644
--- a/src/jcgp/population/Chromosome.java
+++ b/src/jcgp/population/Chromosome.java
@@ -123,5 +123,51 @@ public class Chromosome {
 			return nodes[index / Parameters.getColumns()][index % Parameters.getColumns()];
 		}
 	}
+	
+	/**
+	 * Returns a random allowed connection respecting levels back.
+	 * This method may always pick inputs, as they can be picked
+	 * regardless of the column.
+	 * 
+	 * @param column the column to use as reference
+	 * @return a random connection
+	 */
+	public Connection getRandomConnection(int column) {
+		
+		
+		
+		return null;
+		
+	}
+	
+	/**
+	 * Returns a random allowed connection. 
+	 * 
+	 * This method may always pick inputs, as they can be picked
+	 * regardless of the column.
+	 * 
+	 * TODO optimise for less random generations
+	 * 
+	 * @param column the column to use as reference
+	 * @param levelsBack whether or not to respect levels back
+	 * @return a random connection
+	 */
+	public Connection getRandomConnection(int column, boolean levelsBack) {
+		
+		if (levelsBack) {
+			return getRandomConnection(chromosome, column);
+		} else {
+			// choose input or node
+			int connectionType = Utilities.getRandomInt(inputs.length + (nodes.length * column));
+			if (connectionType < inputs.length) {
+				// input
+				return chromosome.getInput(getRandomInt(Parameters.getInputs()));
+			} else {
+				// node				
+				return chromosome.getNode(getRandomInt(Parameters.getRows()), getRandomInt(column));
+			}
+		}
+		
+	}
 
 }
-- 
cgit v1.2.3