类键入与类运行功能时
我有一个名为个人的课程,并且我有一个基于它的函数。当我跑步时,我会得到
---> 13人口:列表[个人],elite_size = 0.1,new_pop = 0.2
typeError:'type'对象无法订阅,
我该如何工作?
def selection_rank_with_population_replacement_elite(
population: list[Individual], elite_size=0.1, new_pop=0.2
) -> list[Individual]:
sorted_individuals = sorted(population, key=lambda ind: ind.get_sharpe(), reverse=True)
best_n_individuals = int(np.floor(len(sorted_individuals) * elite_size))
new_individuals = int(np.floor(len(sorted_individuals) * new_pop))
rank_distance = 1 / len(population)
ranks = [(1 - i * rank_distance) for i in range(len(population))]
ranks_sum = sum(ranks)
selected = sorted_individuals[:best_n_individuals]
for i in range(len(sorted_individuals) - best_n_individuals - new_individuals):
shave = random.random() * ranks_sum
rank_sum = 0
for i in range(len(sorted_individuals)):
rank_sum += ranks[i]
if rank_sum > shave:
selected.append(sorted_individuals[i])
break
new_individuals = [Individual.create_random() for _ in range(new_individuals)]
selected.extend(new_individuals)
return selected
I have a class named Individual, and I have a function based on it. When I run I get
---> 13 population: list[Individual], elite_size=0.1, new_pop=0.2
TypeError: 'type' object is not subscriptable
How can I get this to work?
def selection_rank_with_population_replacement_elite(
population: list[Individual], elite_size=0.1, new_pop=0.2
) -> list[Individual]:
sorted_individuals = sorted(population, key=lambda ind: ind.get_sharpe(), reverse=True)
best_n_individuals = int(np.floor(len(sorted_individuals) * elite_size))
new_individuals = int(np.floor(len(sorted_individuals) * new_pop))
rank_distance = 1 / len(population)
ranks = [(1 - i * rank_distance) for i in range(len(population))]
ranks_sum = sum(ranks)
selected = sorted_individuals[:best_n_individuals]
for i in range(len(sorted_individuals) - best_n_individuals - new_individuals):
shave = random.random() * ranks_sum
rank_sum = 0
for i in range(len(sorted_individuals)):
rank_sum += ranks[i]
if rank_sum > shave:
selected.append(sorted_individuals[i])
break
new_individuals = [Individual.create_random() for _ in range(new_individuals)]
selected.extend(new_individuals)
return selected
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的代码应与Python 3.9+一起使用,但不能与3.8或更早的情况下使用。
使用3.8,使用
typing.list
而不是:ref: htttps> https: //docs.python.org/3/library/typing.html (搜索
typing.list.list
中)Your code should work with Python 3.9+, but will not work with 3.8 or earlier.
With 3.8, using
typing.List
instead:Ref: https://docs.python.org/3/library/typing.html (search for
typing.List
in there)