Worked on graphing class
This commit is contained in:
@ -7,20 +7,12 @@ class Matplotlib_Graph:
|
|||||||
|
|
||||||
def __init__(self, database):
|
def __init__(self, database):
|
||||||
self.database = database
|
self.database = database
|
||||||
|
self.type_of_plot = plt.plot
|
||||||
|
self.size = [6,6]
|
||||||
def make_plot(self, type_of_plot, size, X, Y):
|
self.xlabel = None
|
||||||
"""Create the plot"""
|
self.ylabel = None
|
||||||
|
self.title = None
|
||||||
# Set the plot size
|
self.yscale = "linear"
|
||||||
plt.figure(figsize = size)
|
|
||||||
|
|
||||||
if(type_of_plot == "line"):
|
|
||||||
plt.plot(X, Y)
|
|
||||||
elif(type_of_plot == "scatter"):
|
|
||||||
plt.scatter(X, Y)
|
|
||||||
elif(type_of_plot == "bar"):
|
|
||||||
plt.bar(X, Y)
|
|
||||||
|
|
||||||
|
|
||||||
def generation_total_fitness(self, type_of_plot = "line", size = [6,6]):
|
def generation_total_fitness(self, type_of_plot = "line", size = [6,6]):
|
||||||
@ -33,14 +25,26 @@ class Matplotlib_Graph:
|
|||||||
X = list(range(0, generations))
|
X = list(range(0, generations))
|
||||||
|
|
||||||
# Query for Y data
|
# Query for Y data
|
||||||
Y = self.database.get_generation_total_fitness()
|
Y_list = self.database.get_generation_total_fitness()
|
||||||
|
|
||||||
self.make_plot(type_of_plot, size, X, Y)
|
# Set the y scale
|
||||||
|
plt.yscale(self.yscale)
|
||||||
|
|
||||||
|
if(self.yscale == "log"):
|
||||||
|
# If using log then the values have to be positive numbers
|
||||||
|
Y = [abs(ele) for ele in Y_list]
|
||||||
|
|
||||||
|
# Setup data
|
||||||
|
plt.figure(figsize = self.size)
|
||||||
|
self.type_of_plot(X,Y_list)
|
||||||
|
|
||||||
# x and y labels
|
# x and y labels
|
||||||
plt.xlabel('Generation')
|
if(self.xlabel == None):
|
||||||
plt.ylabel('Generation Total Fitness')
|
plt.xlabel('Generation')
|
||||||
plt.title('Relationship Between Generations and Generation Total Fitness')
|
if(self.ylabel == None):
|
||||||
|
plt.ylabel('Generation Total Fitness')
|
||||||
|
if(self.title == None):
|
||||||
|
plt.title('Relationship Between Generations and Generation Total Fitness')
|
||||||
|
|
||||||
# Show the plot
|
# Show the plot
|
||||||
plt.show()
|
plt.show()
|
||||||
@ -56,15 +60,26 @@ class Matplotlib_Graph:
|
|||||||
X = list(range(0, generations))
|
X = list(range(0, generations))
|
||||||
|
|
||||||
# Query for Y data
|
# Query for Y data
|
||||||
Y = self.database.get_highest_chromosome()
|
Y_list = self.database.get_highest_chromosome()
|
||||||
|
|
||||||
self.make_plot(type_of_plot, size, X, Y)
|
# Set the y scale
|
||||||
|
plt.yscale(self.yscale)
|
||||||
|
|
||||||
|
if(self.yscale == "log"):
|
||||||
|
# If using log then the values have to be positive numbers
|
||||||
|
Y = [abs(ele) for ele in Y_list]
|
||||||
|
|
||||||
|
# Setup data
|
||||||
|
plt.figure(figsize = self.size)
|
||||||
|
self.type_of_plot(X,Y_list)
|
||||||
|
|
||||||
# x and y labels
|
# x and y labels
|
||||||
plt.xlabel('Generation')
|
if(self.xlabel == None):
|
||||||
plt.ylabel('Generation Highest Fitness Chromosome')
|
plt.xlabel('Generation')
|
||||||
plt.title('Relationship Between Generations and Highest Value Chromosome')
|
if(self.ylabel == None):
|
||||||
|
plt.ylabel('Generation Total Fitness')
|
||||||
|
if(self.title == None):
|
||||||
|
plt.title('Relationship Between Generations and Generation Total Fitness')
|
||||||
# Show the plot
|
# Show the plot
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
@ -79,14 +94,45 @@ class Matplotlib_Graph:
|
|||||||
X = list(range(0, generations))
|
X = list(range(0, generations))
|
||||||
|
|
||||||
# Query for Y data
|
# Query for Y data
|
||||||
Y = self.database.get_lowest_chromosome()
|
Y_list = self.database.get_lowest_chromosome()
|
||||||
|
|
||||||
self.make_plot(type_of_plot, size, X, Y)
|
# Set the y scale
|
||||||
|
plt.yscale(self.yscale)
|
||||||
|
|
||||||
|
if(self.yscale == "log"):
|
||||||
|
# If using log then the values have to be positive numbers
|
||||||
|
Y = [abs(ele) for ele in Y_list]
|
||||||
|
|
||||||
|
# Setup data
|
||||||
|
plt.figure(figsize = self.size)
|
||||||
|
self.type_of_plot(X,Y_list)
|
||||||
|
|
||||||
# x and y labels
|
# x and y labels
|
||||||
plt.xlabel('Generation')
|
if(self.xlabel == None):
|
||||||
plt.ylabel('Generation Highest Fitness Chromosome')
|
plt.xlabel('Generation')
|
||||||
plt.title('Relationship Between Generations and Lowest Value Chromosome')
|
if(self.ylabel == None):
|
||||||
|
plt.ylabel('Generation Total Fitness')
|
||||||
|
if(self.title == None):
|
||||||
|
plt.title('Relationship Between Generations and Generation Total Fitness')
|
||||||
# Show the plot
|
# Show the plot
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
|
# Getter and setters
|
||||||
|
@property
|
||||||
|
def type_of_plot(self):
|
||||||
|
return self._type_of_plot
|
||||||
|
|
||||||
|
|
||||||
|
@type_of_plot.setter
|
||||||
|
def type_of_plot(self, value_input):
|
||||||
|
|
||||||
|
# Defults type of ploting functions
|
||||||
|
if(value_input == "line"):
|
||||||
|
self._type_of_plot = plt.plot
|
||||||
|
elif(value_input == "scatter"):
|
||||||
|
self._type_of_plot = plt.scatter
|
||||||
|
elif(value_input == "bar"):
|
||||||
|
self._type_of_plot = plt.bar
|
||||||
|
else:
|
||||||
|
# If its none of the defaults then use what the user provided.
|
||||||
|
self._type_of_plot = value_input
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
class Population:
|
class Population:
|
||||||
|
|
||||||
def __init__(self, chromosome_list = None):
|
def __init__(self, chromosome_list = None):
|
||||||
"""Intiialize the population with fitness of value None, and a set of chromosomes dependant on user-passed parameter"""
|
"""Intiialize the population with fitness of value None, and a
|
||||||
|
set of chromosomes dependant on user-passed parameter"""
|
||||||
|
|
||||||
if chromosome_list is None:
|
if chromosome_list is None:
|
||||||
self.chromosome_list = []
|
self.chromosome_list = []
|
||||||
@ -14,6 +15,8 @@ class Population:
|
|||||||
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
|
"""Sets all the population variables to what they should be at
|
||||||
|
the end of the generation """
|
||||||
self.set_chromosome_list(self.next_population)
|
self.set_chromosome_list(self.next_population)
|
||||||
self.reset_mating_pool()
|
self.reset_mating_pool()
|
||||||
self.reset_next_population()
|
self.reset_next_population()
|
||||||
@ -70,7 +73,9 @@ class Population:
|
|||||||
|
|
||||||
|
|
||||||
def add_chromosome(self, chromosome, index = None):
|
def add_chromosome(self, chromosome, index = None):
|
||||||
"""Adds a chromosome to the population at the input index, defaulted to the end of the chromosome set"""
|
"""Adds a chromosome to the population at the input index, defaulted
|
||||||
|
to the end of the chromosome set"""
|
||||||
|
|
||||||
if index is None:
|
if index is None:
|
||||||
index = self.size()
|
index = self.size()
|
||||||
self.chromosome_list.insert(index, chromosome)
|
self.chromosome_list.insert(index, chromosome)
|
||||||
|
|||||||
Reference in New Issue
Block a user