真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python遺傳算法中適值函數(shù)的標(biāo)定方法是什么-創(chuàng)新互聯(lián)

這篇“Python遺傳算法中適值函數(shù)的標(biāo)定方法是什么”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Python遺傳算法中適值函數(shù)的標(biāo)定方法是什么”文章吧。

我們一直強(qiáng)調(diào)網(wǎng)站制作、成都網(wǎng)站制作對(duì)于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對(duì)待,選擇一個(gè)安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過(guò)程中的有力推手。專業(yè)網(wǎng)站建設(shè)公司不一定是大公司,創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。

適值函數(shù)的標(biāo)定

適值函數(shù)的標(biāo)定

一般情況下,直接拿目標(biāo)函數(shù)作為適值函數(shù)十分的方便,但是很多情況下卻不能這么做,例如對(duì)于求最小值問(wèn)題,我們必須將目標(biāo)函數(shù)取反才能作為適值函數(shù)(這是最簡(jiǎn)單的情況)。

當(dāng)我們遺傳算法中不同個(gè)體適值函數(shù)的值相對(duì)差別很小的時(shí)候,我們根據(jù)適應(yīng)度值的大小進(jìn)行個(gè)體選擇的選擇壓力(Selective pressure)就會(huì)變小,選優(yōu)的能力弱化,這個(gè)時(shí)候我們需要對(duì)原始的適值函數(shù)進(jìn)行標(biāo)定(Scaling)是的他們相對(duì)差別增大,進(jìn)而增大選擇壓力,增強(qiáng)算法的選優(yōu)能力。

幾種不同的適值函數(shù)標(biāo)定方法

對(duì)目標(biāo)函數(shù)的標(biāo)定方法一般有:線性標(biāo)定、動(dòng)態(tài)線性標(biāo)定、冪律標(biāo)定、對(duì)數(shù)標(biāo)定等

求大值

對(duì)于求目標(biāo)函數(shù)的大值的時(shí)候, 即 arg max f(x)

我們?nèi)=1,b=?fmin+ξ, 其中ξ是一個(gè)較小的數(shù),目的是使得種群中最差個(gè)體也有被選中的機(jī)會(huì),不然自身減掉f?fmin=0, ξ的存在可以增加種群的多樣性。

GAFT中添加對(duì)于目標(biāo)函數(shù)的標(biāo)定

由于適值函數(shù)標(biāo)定并不針對(duì)某個(gè)目標(biāo)函數(shù),我便想通過(guò)裝飾器的方式來(lái)方便給任何自定義的fitness函數(shù)進(jìn)行標(biāo)定。對(duì)于基本的線性標(biāo)定,我在GAEngine中添加了個(gè)帶參數(shù)的裝飾器:

Python

def linear_scaling(self, target='max', ksi=0.5):

    '''

    A decorator constructor for fitness function linear scaling.

    :param target: The optimization target, maximization or minimization.

    :type target: str, 'max' or 'min'

    :param ksi: Selective pressure adjustment value.

    :type ksi: float

    Linear Scaling:

        1. arg max f(x), then f' = f - min{f(x)} + ksi;

        2. arg min f(x), then f' = max{f(x)} - f(x) + ksi;

    '''

    def _linear_scaling(fn):

        # For original fitness calculation.

        self.ori_fitness = fn

        @wraps(fn)

        def _fn_with_linear_scaling(indv):

            # Original fitness value.

            f = fn(indv)

            # Determine the value of a and b.

            if target == 'max':

                f_prime = f - self.ori_fmin + ksi

            elif target == 'min':

                f_prime = self.ori_fmax - f + ksi

            else:

                raise ValueError('Invalid target type({})'.format(target))

            return f_prime

        return _fn_with_linear_scaling

    return _linear_scaling

這個(gè)時(shí)候如果我們?cè)诙x了一個(gè)自己的目標(biāo)函數(shù)以后,想對(duì)其進(jìn)行線性標(biāo)定便可以使用engine的這個(gè)裝飾器對(duì)函數(shù)進(jìn)行修飾即可, 像下面這樣:

Python

# Create a GA engine...

# 先標(biāo)定,后注冊(cè)到引擎中

@engine.fitness_register

@engine.linear_scaling(target='min', ksi=0.5)

def fitness(indv):

    x, = indv.variants

    return x + 10*sin(5*x) + 7*cos(4*x)

其中裝飾器中的參數(shù)分別為:

  • target: 優(yōu)化目標(biāo)函數(shù)到最小值還是大值,值可以是:'max'或者'min'

  • ksi: 即公式中ξξ

關(guān)于ξk

動(dòng)態(tài)線性標(biāo)定中的ξk作用同線性標(biāo)定中的ξ為選擇壓力調(diào)節(jié)值, 它的存在使得種群中最壞的個(gè)體仍有被選中的機(jī)會(huì),但是動(dòng)態(tài)標(biāo)定中的ξkξk的值會(huì)隨著kk增大而減小。

ξkξk的取值: ξ0=M,ξk=ξk?1?r,r∈[0.9,0.999], 我們通過(guò)調(diào)節(jié)M和r來(lái)調(diào)節(jié)ξk

通過(guò)可以動(dòng)態(tài)變化的ξk,我們可以使廣域搜索范圍寬保持種群的多樣性,局部搜索保持收斂性,即,開始時(shí)希望選擇小,迭代到后面希望選擇壓力逐漸變大.

6       

其他標(biāo)定方法

對(duì)數(shù)標(biāo)定
  • 函數(shù)表達(dá)式: f′=aLnf+b

  • 作用: 縮小目標(biāo)函數(shù)之間的差別

窗口技術(shù)
  • 函數(shù)表達(dá)式: f′=af?fw

  • fw為前W代中的目標(biāo)函數(shù)最小值,他考慮了各代fmin的波動(dòng),這樣fw具有記憶性

如何判斷種群個(gè)體的集中程度

通常采取比較種群中所有個(gè)體的適應(yīng)度值的平均值favg與大值fmax的接近程度來(lái)判斷,如果大值與平均值越接近說(shuō)明個(gè)體就越集中。

大變異操作的兩個(gè)參數(shù)

  1. 密集因子α: 決定大變異操作在整個(gè)過(guò)程中所占的比重,其數(shù)值約接近0.5,大變異操作越頻繁

  2. 大變異概率: 概率越大,大變異算法的穩(wěn)定性就越好,但是收斂速度可能會(huì)降低,當(dāng)大變異概率的數(shù)值為0.5的時(shí)候,大變異操作就近似退化為隨機(jī)搜索

以上就是關(guān)于“Python遺傳算法中適值函數(shù)的標(biāo)定方法是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。


分享題目:Python遺傳算法中適值函數(shù)的標(biāo)定方法是什么-創(chuàng)新互聯(lián)
文章起源:http://weahome.cn/article/djicjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部