- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 python 创建一个非常简单的“进化”算法。
我最初想要创建一个由大约 100 个人组成的群体,具有四个数字属性 (a1-4),使用函数从这些属性中获取分数,然后删除得分最差的 20 个人。
这就是我目前所拥有的
import random
population = 100
class Individual(object):
def __init__(self, a1, a2, a3, a4):
self.a1 = a1
self.a2 = a2
self.a3 = a3
self.a4 = a4
starting_population = list()
for i in range (population):
a1 = random.randint(1,10)
a2 = random.randint(1,10)
a3 = random.randint(1,10)
a4 = random.randint(1,10)
starting_population.append(Individual(a1,a2,a3,a4))
def fitness(x):
fitness = a1*a2/a3*a4
return fitness
我不知道如何将函数应用于人口列表的成员?
另外,我对 Python 很陌生,我确信我做的一些事情很糟糕,所以非常感谢任何提示!
谢谢
最佳答案
循环有什么问题?
for person in starting_population:
person.fitness = person.a1*person.a2/person.a3*person.a4 #Add fitness to object
另请注意,操作顺序为:
((a1*a2)/a3)*a4)
如果你的意思有所不同。您可以考虑让健身成为一种个人的方法:
class Individual(object):
def __init__(self, a1, a2, a3, a4):
self.a1 = a1
self.a2 = a2
self.a3 = a3
self.a4 = a4
def fitness(self,x):
fitness = self.a1*self.a2/self.a3*self.a4
return fitness
starting_population = list()
for i in range (population):
a1 = random.randint(1,10)
a2 = random.randint(1,10)
a3 = random.randint(1,10)
a4 = random.randint(1,10)
starting_population.append(Individual(a1,a2,a3,a4))
这样您就可以立即调用 starting_population[i].fitness()
,或计算 __init__
中的值并将其设为字段。
另一个解决方案,放弃代码的对象清晰度,转而使用 numpy
数组来提高速度:
import numpy.random as rnd
rnd.seed(78943598743)
starting_population=rnd.randint(1,10,size=100*4).reshape(100,4) #100 rows, 4 columns, each row a person
fitness_vector = starting_population[:,0]*starting_population[:,1]/starting_population[:,2]*starting_population[:,3]
关于python - 在 python 中创建一个非常简单的 'evolutionary' 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074811/
有人可以解释差分进化方法吗?维基百科definition是非常技术性的。 一个简单的解释,后面是一个简单的例子,将不胜感激:) 最佳答案 这是一个简化的描述。 DE是一种优化技术,可以迭代地修改大量候
有人可以帮助我理解与进化算法相关的表型和基因型的定义吗? 我认为基因型代表了解决方案,对吗?而表型就是解决方案本身? 谢谢 最佳答案 总结:对于简单的系统,是的,你是完全正确的。当您进入更复杂的系统时
我已经开始研究进化艺术算法了。我读了很多关于它的文件。不过好像不太好理解。网址http://picbreeder.com是一个很好的例子。但是一开始我不需要这个,因为它太复杂了。 我在哪里可以找到一些
不久前,我记得读过一篇杂志文章(我相信是《连线》),内容是将达尔文进化论应用于程序以创建更好的程序。基本上会产生一个程序的多个突变,并且将选择表现最好的一个进行下一轮突变。 不幸的是,我无法让这个主题
我看过几篇文章和文章,建议使用模拟退火等方法来避免局部最小值/最大值问题。 我不明白为什么如果您从足够大的随机人口开始,这将是必要的。 这只是确保初始人口实际上足够大和随机的另一项检查吗?或者这些技术
我研究了非支配排序算法(NSGA-II)。 我想用这个多目标优化算法。 任何人都可以通过在 java 或 matlab 中解决 NSGA-II 的任何免费实现来帮助我。 提前致谢 最佳答案 MOEA
在移动开发 (Android) 的背景下,“进化开发方法论”是什么意思? 是否也与“面向对象的方法论”有任何相似之处?有人有一段代码示例吗? 最佳答案 Evolutionary Development
我正在尝试用 python 创建一个非常简单的“进化”算法。 我最初想要创建一个由大约 100 个人组成的群体,具有四个数字属性 (a1-4),使用函数从这些属性中获取分数,然后删除得分最差的 20
我是一名优秀的程序员,十分优秀!