本文整理汇总了Python中random.rand_randint函数的典型用法代码示例。如果您正苦于以下问题:Python rand_randint函数的具体用法?Python rand_randint怎么用?Python rand_randint使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rand_randint函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GTreeMutatorIntegerRange
def GTreeMutatorIntegerRange(genome, **args):
""" The mutator of GTree, Integer Range Mutator
Accepts the *rangemin* and *rangemax* genome parameters, both optional.
.. versionadded:: 0.6
The *GTreeMutatorIntegerRange* 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_int = rand_randint(range_min, range_max)
rand_node.setData(random_int)
else:
for it in xrange(int(round(mutations))):
rand_node = genome.getRandomNode()
random_int = rand_randint(range_min, range_max)
rand_node.setData(random_int)
return int(mutations)
示例2: G1DListCrossoverTwoPoint
def G1DListCrossoverTwoPoint(genome, **args):
""" The G1DList crossover, Two Point
.. warning:: You can't use this crossover method for lists with just one or two elements.
"""
sister = None
brother = None
gMom = args["mom"]
gDad = args["dad"]
if len(gMom) < 3:
Util.raiseException("The 1D List has less than 3 elements, can't use the Two Point Crossover method !", TypeError)
cuts = [0, 0]
# Keep generating random cuts until they are in different places
while cuts[0] == cuts[1]:
cuts = [rand_randint(1, len(gMom)-1), rand_randint(1, len(gMom)-1)]
if cuts[0] > cuts[1]:
Util.listSwapElement(cuts, 0, 1)
if args["count"] >= 1:
sister = gMom.clone()
sister.resetStats()
sister[cuts[0]:cuts[1]] = gDad[cuts[0]:cuts[1]]
if args["count"] == 2:
brother = gDad.clone()
brother.resetStats()
brother[cuts[0]:cuts[1]] = gMom[cuts[0]:cuts[1]]
return (sister, brother)
示例3: G1DListMutatorSIM
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
示例4: G2DBinaryStringMutatorFlip
def G2DBinaryStringMutatorFlip(genome, **args):
""" A flip mutator for G2DBinaryString
.. versionadded:: 0.6
The *G2DBinaryStringMutatorFlip* function
"""
if args["pmut"] <= 0.0: return 0
height, width = genome.get_size()
elements = height * width
mutations = args["pmut"] * elements
if mutations < 1.0:
mutations = 0
for i in xrange(genome.get_height()):
for j in xrange(genome.get_width()):
if utils.random_flip_coin(args["pmut"]):
if genome[i][j] == 0: genome.set_item(i, j, 1)
else: genome.set_item(i, j, 0)
mutations += 1
else:
for it in xrange(int(round(mutations))):
which_x = rand_randint(0, genome.get_width()-1)
which_y = rand_randint(0, genome.get_height()-1)
if genome[i][j] == 0: genome.set_item(which_y, which_x, 1)
else: genome.set_item(which_y, which_x, 0)
return int(mutations)
示例5: G1DListCrossoverOX
def G1DListCrossoverOX(genome, **args):
""" The OX Crossover for G1DList (order crossover) """
sister = None
brother = None
gMom = args["mom"]
gDad = args["dad"]
listSize = len(gMom)
c1, c2 = [rand_randint(1, len(gMom)-1), rand_randint(1, len(gMom)-1)]
while c1 == c2:
c2 = rand_randint(1, len(gMom)-1)
if c1 > c2:
h = c1
c1 = c2
c2 = h
if args["count"] >= 1:
sister = gMom.clone()
sister.resetStats()
P1 = [ c for c in gMom[c2:] + gMom[:c2] if c not in gDad[c1:c2] ]
sister.genomeList = P1[listSize - c2:] + gDad[c1:c2] + P1[:listSize-c2]
if args["count"] == 2:
brother = gDad.clone()
brother.resetStats()
P2 = [ c for c in gDad[c2:] + gDad[:c2] if c not in gMom[c1:c2] ]
brother.genomeList = P2[listSize - c2:] + gMom[c1:c2] + P2[:listSize-c2]
assert listSize == len(sister)
assert listSize == len(brother)
return (sister, brother)
示例6: G2DListMutatorIntegerRange
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.get_size()
elements = height * width
mutations = args["pmut"] * elements
range_min = genome.get_param("rangemin", CDefRangeMin)
range_max = genome.get_param("rangemax", CDefRangeMax)
if mutations < 1.0:
mutations = 0
for i in xrange(genome.get_height()):
for j in xrange(genome.get_width()):
if utils.random_flip_coin(args["pmut"]):
random_int = rand_randint(range_min, range_max)
genome.set_item(i, j, random_int)
mutations += 1
else:
for it in xrange(int(round(mutations))):
which_x = rand_randint(0, genome.get_width()-1)
which_y = rand_randint(0, genome.get_height()-1)
random_int = rand_randint(range_min, range_max)
genome.set_item(which_y, which_x, random_int)
return int(mutations)
示例7: G1DListCrossoverTwoPoint
def G1DListCrossoverTwoPoint(genome, **args):
""" The G1DList crossover, Two Point
.. warning:: You can't use this crossover method for lists with just one element.
"""
sister = None
brother = None
gMom = args["mom"]
gDad = args["dad"]
if len(gMom) == 1:
utils.raise_exception("The 1D List have one element, can't use the Two Point Crossover method !", TypeError)
cuts = [rand_randint(1, len(gMom) - 1), rand_randint(1, len(gMom) - 1)]
if cuts[0] > cuts[1]:
utils.list_swap_element(cuts, 0, 1)
if args["count"] >= 1:
sister = gMom.clone()
sister.reset_stats()
sister[cuts[0] : cuts[1]] = gDad[cuts[0] : cuts[1]]
if args["count"] == 2:
brother = gDad.clone()
brother.reset_stats()
brother[cuts[0] : cuts[1]] = gMom[cuts[0] : cuts[1]]
return (sister, brother)
示例8: G1DBinaryStringXTwoPoint
def G1DBinaryStringXTwoPoint(genome, **args):
""" The 1D Binary String crossover, Two Point
.. warning:: You can't use this crossover method for binary strings with length of 1.
"""
sister = None
brother = None
gMom = args["mom"]
gDad = args["dad"]
if len(gMom) == 1:
Util.raiseException("The Binary String have one element, can't use the Two Point Crossover method !", TypeError)
cuts = [rand_randint(1, len(gMom)-1), rand_randint(1, len(gMom)-1)]
if cuts[0] > cuts[1]:
Util.listSwapElement(cuts, 0, 1)
if args["count"] >= 1:
sister = gMom.clone()
sister.resetStats()
sister[cuts[0]:cuts[1]] = gDad[cuts[0]:cuts[1]]
if args["count"] == 2:
brother = gDad.clone()
brother.resetStats()
brother[cuts[0]:cuts[1]] = gMom[cuts[0]:cuts[1]]
return (sister, brother)
示例9: G1DListMutatorIntegerRange
def G1DListMutatorIntegerRange(genome, **args):
""" Simple integer 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_randint(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_randint(genome.getParam("rangemin", Consts.CDefRangeMin),
genome.getParam("rangemax", Consts.CDefRangeMax))
return int(mutations)
示例10: G2DListMutatorRealGaussian
def G2DListMutatorRealGaussian(genome, **args):
""" A gaussian mutator for G2DList of Real
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
height, width = genome.getSize()
elements = height * width
mutations = args["pmut"] * elements
mu = genome.getParam("gauss_mu")
sigma = genome.getParam("gauss_sigma")
if mu is None:
mu = Consts.CDefG2DListMutRealMU
if sigma is None:
sigma = Consts.CDefG2DListMutRealSIGMA
if mutations < 1.0:
mutations = 0
for i in xrange(genome.getHeight()):
for j in xrange(genome.getWidth()):
if Util.randomFlipCoin(args["pmut"]):
final_value = genome[i][j] + rand_gauss(mu, sigma)
final_value = min(final_value, genome.getParam(
"rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam(
"rangemin", Consts.CDefRangeMin))
genome.setItem(i, j, final_value)
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)
final_value = genome[which_y][which_x] + rand_gauss(mu, sigma)
final_value = min(final_value, genome.getParam(
"rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam(
"rangemin", Consts.CDefRangeMin))
genome.setItem(which_y, which_x, final_value)
return int(mutations)
示例11: G2DListMutatorIntegerGaussianGradient
def G2DListMutatorIntegerGaussianGradient(genome, **args):
""" A gaussian mutator for G2DList of Integers
Accepts the *rangemin* and *rangemax* genome parameters, both optional.
This routine generates a gaussian value with mu=1.0 and std=0.0333 and then
the gene is multiplied by this value. This will cause the gene to drift
no matter how large it is.
"""
if args["pmut"] <= 0.0:
return 0
height, width = genome.getSize()
elements = height * width
mutations = args["pmut"] * elements
mu = Consts.CDefGaussianGradientMU
sigma = Consts.CDefGaussianGradientSIGMA
if mutations < 1.0:
mutations = 0
for i in xrange(genome.getHeight()):
for j in xrange(genome.getWidth()):
if Util.randomFlipCoin(args["pmut"]):
final_value = int(
genome[i][j] * abs(rand_gauss(mu, sigma)))
final_value = min(final_value, genome.getParam(
"rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam(
"rangemin", Consts.CDefRangeMin))
genome.setItem(i, j, final_value)
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)
final_value = int(genome[which_y][which_x]
* abs(rand_gauss(mu, sigma)))
final_value = min(final_value, genome.getParam(
"rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam(
"rangemin", Consts.CDefRangeMin))
genome.setItem(which_y, which_x, final_value)
return int(mutations)
示例12: crossover_gabil
def crossover_gabil(genome, **args):
#def crossover_gabil(gDad, gMom):
sister = None
brother = None
gMom = args["mom"]
gDad = args["dad"]
if (len(gMom) < len(gDad)):
gMom , gDad = gDad, gMom
splitMom = [ rand_randint( 1 , len(gMom) + 1) , rand_randint(1, len(gMom) + 1)]
if (splitMom [1] < splitMom[0] ):
splitMom[0],splitMom[1] = splitMom[1],splitMom[0]
s1 = gMom[0:splitMom[0]]
s2 = gMom[splitMom[0]:splitMom[1]]
s3 = gMom[splitMom[1]:len(gMom)]
nRulesD = len(gDad) / RULE_SIZE;
splitDad = [ rand_randint( 1 , nRulesD + 1) , rand_randint(1, nRulesD + 1)]
if (splitDad[0] > splitDad[1] ):
splitDad[0], splitDad[1] = splitDad[1], splitDad[0]
positionDad = splitMom[0] % RULE_SIZE
positionDad1 = splitMom[1] % RULE_SIZE
n1 = splitDad[0] + positionDad
n2 = splitDad[1] + positionDad1
if (n2 < n1):
n1,n2 = n2,n1
d1 = gDad[0:n1]
d2 = gDad[n1:n2]
d3 = gDad[n2:len(gDad)]
sister = gMom.clone()
sister.resetStats()
sister.genomeString = s1 + d2 + s3
sister.stringLength = len(s1 + d2 + s3)
brother = gDad.clone()
brother.resetStats()
brother.genomeString = d1 + s2 + d3
brother.stringLength = len(d1 + s2 + d3)
return (sister, brother)
示例13: G2DListMutatorRealGaussianGradient
def G2DListMutatorRealGaussianGradient(genome, **args):
""" A gaussian gradient mutator for G2DList of Real
Accepts the *rangemin* and *rangemax* genome parameters, both optional.
The difference is that this multiplies the gene by gauss(1.0, 0.0333), allowing
for a smooth gradient drift about the value.
"""
if args["pmut"] <= 0.0:
return 0
height, width = genome.getSize()
elements = height * width
mutations = args["pmut"] * elements
mu = Consts.CDefGaussianGradientMU
sigma = Consts.CDefGaussianGradientSIGMA
if mutations < 1.0:
mutations = 0
for i in xrange(genome.getHeight()):
for j in xrange(genome.getWidth()):
if Util.randomFlipCoin(args["pmut"]):
final_value = genome[i][j] * abs(rand_gauss(mu, sigma))
final_value = min(final_value, genome.getParam(
"rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam(
"rangemin", Consts.CDefRangeMin))
genome.setItem(i, j, final_value)
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)
final_value = genome[which_y][which_x] * abs(rand_gauss(mu, sigma))
final_value = min(final_value, genome.getParam(
"rangemax", Consts.CDefRangeMax))
final_value = max(final_value, genome.getParam(
"rangemin", Consts.CDefRangeMin))
genome.setItem(which_y, which_x, final_value)
return int(mutations)
示例14: G1DBinaryStringMutatorFlip_GABIL
def G1DBinaryStringMutatorFlip_GABIL(genome, **args):
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.genomeString[it] == '0':
genome.genomeString[it] = '1'
else:
genome.genomeString[it] = '0'
mutations += 1.0
else:
for it in xrange(int(round(mutations))):
which = rand_randint(0, stringLength - 1)
if genome.genomeString[which] == '0':
genome.genomeString[which] = '1'
else:
genome.genomeString[which] = '0'
return int(mutations)
示例15: __init__
def __init__(self, host, port, group_name):
super(WANMigration, self).__init__()
self.setMyself(host, port)
self.setGroupName(group_name)
self.topologyGraph = None
self.serverThread = Network.UDPThreadServer(host, port)
self.clientThread = Network.UDPThreadUnicastClient(self.myself[0], rand_randint(30000, 65534))