第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對對象列表進行排序并按屬性(適應度)值重新索引

對對象列表進行排序并按屬性(適應度)值重新索引

繁星淼淼 2023-10-26 10:29:11
indis在遺傳算法中,我有一個由 類型的對象表示的候選解決方案列表(總體) indi。為了使選擇更加簡單,我想根據(jù)適應度值對這些個體進行排序。一旦排序,他們應該有一個代表他們適合度的新索引。indi.getFitness()  # Returns the fitness.indi.setId(index)  # sets the index我最初的方法是不夠的,因為它不包括排序:idx=0for indi in self.indis:     indi.setId(idx)    idx += 1問題是:如何按適應度排序并重新索引以使最佳解決方案索引為0?
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

不,不要使用副作用理解。

但是,您可以使用以下命令使其更干凈enumerate

for?idx,?indi?in?enumerate(self.indis):
????indi.setId(idx)


查看完整回答
反對 回復 2023-10-26
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

由于列表帶有內置排序方法,因此可以使用 lambda 函數(shù)調用fitness 方法getFitness()。在這種情況下,使用該reverse=True選項很重要,因為最高的適應度意味著最低的成本。


def sortByFitness(self):? ? ? ? # sorted population for single generation

? ? # highest fitness has lowest cost

? ? self.indis.sort(key=lambda x: x.getFitness(), reverse=True)

? ? for idx, indi in enumerate(self.indis):

? ? ? ? indi.setId(idx)


查看完整回答
反對 回復 2023-10-26
  • 2 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號