本文整理汇总了Python中pyevolve.Util.randomFlipCoin方法的典型用法代码示例。如果您正苦于以下问题:Python Util.randomFlipCoin方法的具体用法?Python Util.randomFlipCoin怎么用?Python Util.randomFlipCoin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyevolve.Util
的用法示例。
在下文中一共展示了Util.randomFlipCoin方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GTreeGPMutatorOperation
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def GTreeGPMutatorOperation(genome, **args):
""" The mutator of GTreeGP, Operation Mutator
.. versionadded:: 0.6
The *GTreeGPMutatorOperation* function
"""
if args["pmut"] <= 0.0:
return 0
elements = len(genome)
mutations = args["pmut"] * elements
ga_engine = args["ga_engine"]
gp_terminals = ga_engine.getParam("gp_terminals")
assert gp_terminals is not None
gp_function_set = ga_engine.getParam("gp_function_set")
assert gp_function_set is not None
if mutations < 1.0:
mutations = 0
for i in xrange(len(genome)):
if Util.randomFlipCoin(args["pmut"]):
mutations += 1
rand_node = genome.getRandomNode()
assert rand_node is not None
if rand_node.getType() == Consts.nodeType["TERMINAL"]:
term_operator = rand_choice(gp_terminals)
else:
op_len = gp_function_set[rand_node.getData()]
fun_candidates = []
for o, l in gp_function_set.items():
if l == op_len:
fun_candidates.append(o)
if len(fun_candidates) <= 0:
continue
term_operator = rand_choice(fun_candidates)
rand_node.setData(term_operator)
else:
for it in xrange(int(round(mutations))):
rand_node = genome.getRandomNode()
assert rand_node is not None
if rand_node.getType() == Consts.nodeType["TERMINAL"]:
term_operator = rand_choice(gp_terminals)
else:
op_len = gp_function_set[rand_node.getData()]
fun_candidates = []
for o, l in gp_function_set.items():
if l == op_len:
fun_candidates.append(o)
if len(fun_candidates) <= 0:
continue
term_operator = rand_choice(fun_candidates)
rand_node.setData(term_operator)
return int(mutations)
示例2: GTreeMutatorSwap
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def GTreeMutatorSwap(genome, **args):
""" The mutator of GTree, Swap Mutator
.. versionadded:: 0.6
The *GTreeMutatorSwap* function
"""
if args["pmut"] <= 0.0:
return 0
elements = len(genome)
mutations = args["pmut"] * elements
if mutations < 1.0:
mutations = 0
for i in xrange(len(genome)):
if Util.randomFlipCoin(args["pmut"]):
mutations += 1
nodeOne = genome.getRandomNode()
nodeTwo = genome.getRandomNode()
nodeOne.swapNodeData(nodeTwo)
else:
for it in xrange(int(round(mutations))):
nodeOne = genome.getRandomNode()
nodeTwo = genome.getRandomNode()
nodeOne.swapNodeData(nodeTwo)
return int(mutations)
示例3: GTreeGPInitializator
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def GTreeGPInitializator(genome, **args):
"""This initializator accepts the follow parameters:
*max_depth*
The max depth of the tree
*method*
The method, accepts "grow", "full" or "ramped"
.. versionadded:: 0.6
The *GTreeGPInitializator* function.
"""
max_depth = genome.getParam("max_depth", 5)
method = genome.getParam("method", "grow")
ga_engine = args["ga_engine"]
if method == "grow":
root = GTree.buildGTreeGPGrow(ga_engine, 0, max_depth)
elif method == "full":
root = GTree.buildGTreeGPFull(ga_engine, 0, max_depth)
elif method == "ramped":
if Util.randomFlipCoin(0.5):
root = GTree.buildGTreeGPFull(ga_engine, 0, max_depth)
else:
root = GTree.buildGTreeGPGrow(ga_engine, 0, max_depth)
else:
Util.raiseException("Unknown tree initialization method [%s] !" % method)
genome.setRoot(root)
genome.processNodes()
assert genome.getHeight() <= max_depth
示例4: GTreeMutatorRealRange
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def GTreeMutatorRealRange(genome, **args):
""" The mutator of GTree, Real Range Mutator
Accepts the *rangemin* and *rangemax* genome parameters, both optional.
.. versionadded:: 0.6
The *GTreeMutatorRealRange* function
"""
if args["pmut"] <= 0.0:
return 0
elements = len(genome)
mutations = args["pmut"] * elements
range_min = genome.getParam("rangemin", Consts.CDefRangeMin)
range_max = genome.getParam("rangemax", Consts.CDefRangeMax)
if mutations < 1.0:
mutations = 0
for i in xrange(len(genome)):
if Util.randomFlipCoin(args["pmut"]):
mutations += 1
rand_node = genome.getRandomNode()
random_real = rand_uniform(range_min, range_max)
rand_node.setData(random_real)
else:
for it in xrange(int(round(mutations))):
rand_node = genome.getRandomNode()
random_real = rand_uniform(range_min, range_max)
rand_node.setData(random_real)
return int(mutations)
示例5: G2DBinaryStringXUniform
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G2DBinaryStringXUniform(genome, **args):
""" The G2DBinaryString Uniform Crossover
.. versionadded:: 0.6
The *G2DBinaryStringXUniform* function
"""
sister = None
brother = None
gMom = args["mom"]
gDad = args["dad"]
sister = gMom.clone()
brother = gDad.clone()
sister.resetStats()
brother.resetStats()
h, w = gMom.getSize()
for i in xrange(h):
for j in xrange(w):
if Util.randomFlipCoin(Consts.CDefG2DBinaryStringUniformProb):
temp = sister.getItem(i, j)
sister.setItem(i, j, brother.getItem(i, j))
brother.setItem(i, j, temp)
return (sister, brother)
示例6: G1DBinaryStringMutatorFlip
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G1DBinaryStringMutatorFlip(genome, **args):
""" The classical flip mutator for binary strings """
if args["pmut"] <= 0.0:
return 0
stringLength = len(genome)
mutations = args["pmut"] * (stringLength)
if mutations < 1.0:
mutations = 0
for it in xrange(stringLength):
if Util.randomFlipCoin(args["pmut"]):
if genome[it] == 0:
genome[it] = 1
else:
genome[it] = 0
mutations += 1
else:
for it in xrange(int(round(mutations))):
which = rand_randint(0, stringLength - 1)
if genome[which] == 0:
genome[which] = 1
else:
genome[which] = 0
return int(mutations)
示例7: G2DListMutatorSwap
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G2DListMutatorSwap(genome, **args):
""" The mutator of G1DList, Swap Mutator
.. note:: this mutator is :term:`Data Type Independent`
"""
if args["pmut"] <= 0.0:
return 0
height, width = genome.getSize()
elements = height * width
mutations = args["pmut"] * elements
if mutations < 1.0:
mutations = 0
for i in xrange(height):
for j in xrange(width):
if Util.randomFlipCoin(args["pmut"]):
index_b = (rand_randint(0, height - 1), rand_randint(0, width - 1))
Util.list2DSwapElement(genome.genomeList, (i, j), index_b)
mutations += 1
else:
for it in xrange(int(round(mutations))):
index_a = (rand_randint(0, height - 1), rand_randint(0, width - 1))
index_b = (rand_randint(0, height - 1), rand_randint(0, width - 1))
Util.list2DSwapElement(genome.genomeList, index_a, index_b)
return int(mutations)
示例8: G2DListMutatorIntegerRange
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G2DListMutatorIntegerRange(genome, **args):
""" Simple integer range mutator for G2DList
Accepts the *rangemin* and *rangemax* genome parameters, both optional.
"""
if args["pmut"] <= 0.0:
return 0
height, width = genome.getSize()
elements = height * width
mutations = args["pmut"] * elements
range_min = genome.getParam("rangemin", Consts.CDefRangeMin)
range_max = genome.getParam("rangemax", Consts.CDefRangeMax)
if mutations < 1.0:
mutations = 0
for i in xrange(genome.getHeight()):
for j in xrange(genome.getWidth()):
if Util.randomFlipCoin(args["pmut"]):
random_int = rand_randint(range_min, range_max)
genome.setItem(i, j, random_int)
mutations += 1
else:
for it in xrange(int(round(mutations))):
which_x = rand_randint(0, genome.getWidth() - 1)
which_y = rand_randint(0, genome.getHeight() - 1)
random_int = rand_randint(range_min, range_max)
genome.setItem(which_y, which_x, random_int)
return int(mutations)
示例9: G1DListMutatorAllele
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G1DListMutatorAllele(genome, **args):
""" The mutator of G1DList, Allele Mutator
To use this mutator, you must specify the *allele* genome parameter with the
:class:`GAllele.GAlleles` instance.
"""
if args["pmut"] <= 0.0:
return 0
listSize = len(genome)
mutations = args["pmut"] * listSize
allele = genome.getParam("allele", None)
if allele is None:
Util.raiseException("to use the G1DListMutatorAllele, you must specify the 'allele' parameter", TypeError)
if mutations < 1.0:
mutations = 0
for it in xrange(listSize):
if Util.randomFlipCoin(args["pmut"]):
new_val = allele[it].getRandomAllele()
genome[it] = new_val
mutations += 1
else:
for it in xrange(int(round(mutations))):
which_gene = rand_randint(0, listSize - 1)
new_val = allele[which_gene].getRandomAllele()
genome[which_gene] = new_val
return int(mutations)
示例10: G1DListMutatorSIM
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G1DListMutatorSIM(genome, **args):
""" The mutator of G1DList, Simple Inversion Mutation
.. note:: this mutator is :term:`Data Type Independent`
"""
mutations = 0
if args["pmut"] <= 0.0:
return 0
cuts = [rand_randint(0, len(genome)), rand_randint(0, len(genome))]
if cuts[0] > cuts[1]:
Util.listSwapElement(cuts, 0, 1)
if (cuts[1] - cuts[0]) <= 0:
cuts[1] = rand_randint(cuts[0], len(genome))
if Util.randomFlipCoin(args["pmut"]):
part = genome[cuts[0]:cuts[1]]
if len(part) == 0:
return 0
part.reverse()
genome[cuts[0]:cuts[1]] = part
mutations += 1
return mutations
示例11: GTreeMutatorRealGaussian
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def GTreeMutatorRealGaussian(genome, **args):
""" A gaussian mutator for GTree of Real numbers
Accepts the *rangemin* and *rangemax* genome parameters, both optional. Also
accepts the parameter *gauss_mu* and the *gauss_sigma* which respectively
represents the mean and the std. dev. of the random distribution.
"""
if args["pmut"] <= 0.0:
return 0
elements = len(genome)
mutations = args["pmut"] * elements
mu = genome.getParam("gauss_mu", Consts.CDefG1DListMutRealMU)
sigma = genome.getParam("gauss_sigma", Consts.CDefG1DListMutRealSIGMA)
if mutations < 1.0:
mutations = 0
for i in xrange(len(genome)):
if Util.randomFlipCoin(args["pmut"]):
mutations += 1
rand_node = genome.getRandomNode()
final_value = rand_node.getData() + rand_gauss(mu, sigma)
final_value = min(final_value, genome.getParam("rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam("rangemin", Consts.CDefRangeMin))
rand_node.setData(final_value)
else:
for it in xrange(int(round(mutations))):
rand_node = genome.getRandomNode()
final_value = rand_node.getData() + rand_gauss(mu, sigma)
final_value = min(final_value, genome.getParam("rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam("rangemin", Consts.CDefRangeMin))
rand_node.setData(final_value)
return int(mutations)
示例12: Reshuffle
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def Reshuffle(genome, **args):
"""Reshuffle the order of the shapes"""
if Util.randomFlipCoin(args['pmut']):
shuffle(genome.shapes)
return 1
else:
return 0
示例13: G1DListMutatorRealRange
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G1DListMutatorRealRange(genome, **args):
""" Simple real range mutator for G1DList
Accepts the *rangemin* and *rangemax* genome parameters, both optional.
"""
if args["pmut"] <= 0.0:
return 0
listSize = len(genome)
mutations = args["pmut"] * (listSize)
if mutations < 1.0:
mutations = 0
for it in xrange(listSize):
if Util.randomFlipCoin(args["pmut"]):
genome[it] = rand_uniform(genome.getParam("rangemin", Consts.CDefRangeMin),
genome.getParam("rangemax", Consts.CDefRangeMax))
mutations += 1
else:
for it in xrange(int(round(mutations))):
which_gene = rand_randint(0, listSize - 1)
genome[which_gene] = rand_uniform(genome.getParam("rangemin", Consts.CDefRangeMin),
genome.getParam("rangemax", Consts.CDefRangeMax))
return int(mutations)
示例14: G1DListMutatorIntegerBinary
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G1DListMutatorIntegerBinary(genome, **args):
""" The mutator of G1DList, the binary mutator
This mutator will random change the 0 and 1 elements of the 1D List.
"""
if args["pmut"] <= 0.0:
return 0
listSize = len(genome)
mutations = args["pmut"] * (listSize)
if mutations < 1.0:
mutations = 0
for it in xrange(listSize):
if Util.randomFlipCoin(args["pmut"]):
if genome[it] == 0:
genome[it] = 1
elif genome[it] == 1:
genome[it] = 0
mutations += 1
else:
for it in xrange(int(round(mutations))):
which_gene = rand_randint(0, listSize - 1)
if genome[which_gene] == 0:
genome[which_gene] = 1
elif genome[which_gene] == 1:
genome[which_gene] = 0
return int(mutations)
示例15: G2DBinaryStringMutatorSwap
# 需要导入模块: from pyevolve import Util [as 别名]
# 或者: from pyevolve.Util import randomFlipCoin [as 别名]
def G2DBinaryStringMutatorSwap(genome, **args):
""" The mutator of G2DBinaryString, Swap Mutator
.. versionadded:: 0.6
The *G2DBinaryStringMutatorSwap* function
"""
if args["pmut"] <= 0.0:
return 0
height, width = genome.getSize()
elements = height * width
mutations = args["pmut"] * elements
if mutations < 1.0:
mutations = 0
for i in xrange(height):
for j in xrange(width):
if Util.randomFlipCoin(args["pmut"]):
index_b = (rand_randint(0, height - 1), rand_randint(0, width - 1))
Util.list2DSwapElement(genome.genomeString, (i, j), index_b)
mutations += 1
else:
for it in xrange(int(round(mutations))):
index_a = (rand_randint(0, height - 1), rand_randint(0, width - 1))
index_b = (rand_randint(0, height - 1), rand_randint(0, width - 1))
Util.list2DSwapElement(genome.genomeString, index_a, index_b)
return int(mutations)