Question: using genetic algorithms find the python code to calculate all the real - valued intersection points of the following three functions: f 1 ( x
using genetic algorithms find the python code to calculate all the realvalued intersection points of the following three functions:
fx x fx x and fx x
Current Code:
# Genetic algorithm
# various problem types
# various chromosome types
import random
import math
# Create a chromosome
def createchromosomelength genetype'real', generangekwargs:
if genetype 'binary':
return randomrandint for in rangelength
elif genetype 'integer':
return randomrandintgenerange generange for in rangelength
elif genetype 'real':
return randomuniformgenerange generange for in rangelength
# Create the initial population
def createpopulationpopsize, chromlength, genetype'real', generange:
return createchromosomechromlength, genetype, generange for in rangepopsize
# Fitness function for max bits problem: maximise the number of s in a binary string
def fitnessmaxbitschromosome:
optimalvalue lenchromosome # The best case is when all bits are
return optimalvalue sumchromosome # Distance from the optimal value, being the best
def fitnessintersectionchromosome:
x chromosome
f x
f x
f x
fitnessvalue absf f absf f absff
return absfitnessvalue
# Selection function choose at random and select the one with fitness closest to
def selectionpopulation fitnessfnfitnessclosesttoone:
selected random.samplepopulation # Randomly select two individuals
return minselected keyfitnessfn # Return the one with the fitness value closest to
# Crossover function
def crossoverparent parent genetype'real', crossoverrate:
if random.random crossoverrate:
if genetype 'binary':
# Singlepoint crossover for binary chromosomes
crossoverpoint random.randint lenparent
return parent:crossoverpoint parentcrossoverpoint:
elif genetype 'integer':
# Singlepoint crossover for integer chromosomes to avoid generating floats
crossoverpoint random.randint lenparent
return parent:crossoverpoint parentcrossoverpoint:
elif genetype 'real':
# Blending for realvalued chromosomes
return p p for p p in zipparent parent
return parent if random.random else parent
# Mutate a chromosome
def mutatechromosome mutationrate genetype'real', generange:
if genetype 'real':
return gene if random.random mutationrate else gene random.uniform for gene in chromosome
if genetype 'binary':
return gene if random.random mutationrate else gene for gene in chromosome
elif genetype 'integer':
return gene if random.random mutationrate else random.randintgenerange generange for gene in chromosome
return chromosome
# Create the next generation
def createnextgenerationpopulation fitnessfn crossoverrate mutationrate genetype'real', generange:
nextgeneration
for in rangelenpopulation:
parent selectionpopulation fitnessfn
parent selectionpopulation fitnessfn
offspring crossoverparent parent genetype, crossoverrate
mutatedoffspring mutateoffspring mutationrate, genetype, generange
nextgeneration.appendmutatedoffspring
return nextgeneration
# Output the initial population
def printinitialpopulationpopulation fitnessfn genetype:
printInitial Population:"
for i individual in enumeratepopulation:
if genetype 'real':
# Print real values with four decimal places
chromosomestr joinfgene:f for gene in individual
elif genetype 'integer':
# Print integer values
chromosomestr joinfgene for gene in individual
elif genetype 'binary':
# Print binary values or
chromosomestr joinstrgene for gene in individual
else:
chromosomestr joinstrgene for gene in individual
printfIndividual i: chromosomestr Fitness fitnessfnindividual:f
print
# Perform the genetic algorithm
# Perform the genetic algorithm
def geneticalgorithmpopsize, chromlength, fitnessfn generations, genetype'real', generange crossoverrate mutationrate:
population createpopulationpopsize, chromlength, genetype, generange
#
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
