欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

fmin函數(shù)python,fmin怎么求

Python怎么做最優(yōu)化

一、概觀

專(zhuān)業(yè)從事網(wǎng)站制作、網(wǎng)站設(shè)計(jì),高端網(wǎng)站制作設(shè)計(jì),微信小程序開(kāi)發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠(chéng)服務(wù),采用H5技術(shù)+CSS3前端渲染技術(shù),響應(yīng)式網(wǎng)站設(shè)計(jì),讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過(guò)程建立專(zhuān)項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。

scipy中的optimize子包中提供了常用的最優(yōu)化算法函數(shù)實(shí)現(xiàn)。我們可以直接調(diào)用這些函數(shù)完成我們的優(yōu)化問(wèn)題。optimize中函數(shù)最典型的特點(diǎn)就是能夠從函數(shù)名稱(chēng)上看出是使用了什么算法。下面optimize包中函數(shù)的概覽:

1.非線性最優(yōu)化

fmin -- 簡(jiǎn)單Nelder-Mead算法

fmin_powell -- 改進(jìn)型Powell法

fmin_bfgs -- 擬Newton法

fmin_cg -- 非線性共軛梯度法

fmin_ncg -- 線性搜索Newton共軛梯度法

leastsq -- 最小二乘

2.有約束的多元函數(shù)問(wèn)題

fmin_l_bfgs_b ---使用L-BFGS-B算法

fmin_tnc ---梯度信息

fmin_cobyla ---線性逼近

fmin_slsqp ---序列最小二乘法

nnls ---解|| Ax - b ||_2 for x=0

3.全局優(yōu)化

anneal ---模擬退火算法

brute --強(qiáng)力法

4.標(biāo)量函數(shù)

fminbound

brent

golden

bracket

5.擬合

curve_fit-- 使用非線性最小二乘法擬合

6.標(biāo)量函數(shù)求根

brentq ---classic Brent (1973)

brenth ---A variation on the classic Brent(1980)ridder ---Ridder是提出這個(gè)算法的人名

bisect ---二分法

newton ---牛頓法

fixed_point

7.多維函數(shù)求根

fsolve ---通用

broyden1 ---Broyden’s first Jacobian approximation.

broyden2 ---Broyden’s second Jacobian approximationnewton_krylov ---Krylov approximation for inverse Jacobiananderson ---extended Anderson mixing

excitingmixing ---tuned diagonal Jacobian approximationlinearmixing ---scalar Jacobian approximationdiagbroyden ---diagonal Broyden Jacobian approximation8.實(shí)用函數(shù)

line_search ---找到滿足強(qiáng)Wolfe的alpha值

check_grad ---通過(guò)和前向有限差分逼近比較檢查梯度函數(shù)的正確性二、實(shí)戰(zhàn)非線性最優(yōu)化

fmin完整的調(diào)用形式是:

fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None)不過(guò)我們最常使用的就是前兩個(gè)參數(shù)。一個(gè)描述優(yōu)化問(wèn)題的函數(shù)以及初值。后面的那些參數(shù)我們也很容易理解。如果您能用到,請(qǐng)自己研究。下面研究一個(gè)最簡(jiǎn)單的問(wèn)題,來(lái)感受這個(gè)函數(shù)的使用方法:f(x)=x**2-4*x+8,我們知道,這個(gè)函數(shù)的最小值是4,在x=2的時(shí)候取到。

from scipy.optimize import fmin #引入優(yōu)化包def myfunc(x):

return x**2-4*x+8 #定義函數(shù)

x0 = [1.3] #猜一個(gè)初值

xopt = fmin(myfunc, x0) #求解

print xopt #打印結(jié)果

運(yùn)行之后,給出的結(jié)果是:

Optimization terminated successfully.

Current function value: 4.000000

Iterations: 16

Function evaluations: 32

[ 2.00001953]

程序準(zhǔn)確的計(jì)算得出了最小值,不過(guò)最小值點(diǎn)并不是嚴(yán)格的2,這應(yīng)該是由二進(jìn)制機(jī)器編碼誤差造成的。

除了fmin_ncg必須提供梯度信息外,其他幾個(gè)函數(shù)的調(diào)用大同小異,完全類(lèi)似。我們不妨做一個(gè)對(duì)比:

from scipy.optimize import fmin,fmin_powell,fmin_bfgs,fmin_cgdef myfunc(x):

return x**2-4*x+8

x0 = [1.3]

xopt1 = fmin(myfunc, x0)

print xopt1

print

xopt2 = fmin_powell(myfunc, x0)

print xopt2

print

xopt3 = fmin_bfgs(myfunc, x0)

print xopt3

print

xopt4 = fmin_cg(myfunc,x0)

print xopt4

給出的結(jié)果是:

Optimization terminated successfully.

Current function value: 4.000000

Iterations: 16

Function evaluations: 32

[ 2.00001953]

Optimization terminated successfully.

Current function value: 4.000000

Iterations: 2

Function evaluations: 53

1.99999999997

Optimization terminated successfully.

Current function value: 4.000000

Iterations: 2

Function evaluations: 12

Gradient evaluations: 4

[ 2.00000001]

Optimization terminated successfully.

Current function value: 4.000000

Iterations: 2

Function evaluations: 15

Gradient evaluations: 5

[ 2.]

我們可以根據(jù)給出的消息直觀的判斷算法的執(zhí)行情況。每一種算法數(shù)學(xué)上的問(wèn)題,請(qǐng)自己看書(shū)學(xué)習(xí)。個(gè)人感覺(jué),如果不是純研究數(shù)學(xué)的工作,沒(méi)必要搞清楚那些推導(dǎo)以及定理云云。不過(guò),必須了解每一種算法的優(yōu)劣以及能力所及。在使用的時(shí)候,不妨多種算法都使用一下,看看效果分別如何,同時(shí),還可以互相印證算法失效的問(wèn)題。

在from scipy.optimize import fmin之后,就可以使用help(fmin)來(lái)查看fmin的幫助信息了。幫助信息中沒(méi)有例子,但是給出了每一個(gè)參數(shù)的含義說(shuō)明,這是調(diào)用函數(shù)時(shí)候的最有價(jià)值參考。

有源碼研究癖好的,或者當(dāng)你需要改進(jìn)這些已經(jīng)實(shí)現(xiàn)的算法的時(shí)候,可能需要查看optimize中的每種算法的源代碼。在這里:https:/ / github. com/scipy/scipy/blob/master/scipy/optimize/optimize.py聰明的你肯定發(fā)現(xiàn)了,順著這個(gè)鏈接往上一級(jí)、再往上一級(jí),你會(huì)找到scipy的幾乎所有源碼!

python中scipy包中的optimize里面的函數(shù)具體怎么用

from scipy.optimize import fmin

def myfunc(x):

return x**2-4*x+8

print fmin(myfunc, 0)

def myfunc(p):

x, y = p

return x**2+y**2+8

print fmin(myfunc, (1, 1))

復(fù)制代碼

fmin的第一個(gè)參數(shù)是一個(gè)函數(shù),這個(gè)函數(shù)的參數(shù)是一個(gè)數(shù)組,數(shù)組中每個(gè)元素是一個(gè)變量,因此對(duì)于多元函數(shù),需要在myfunc內(nèi)部將數(shù)組的內(nèi)容展開(kāi)。

學(xué)習(xí)多目標(biāo)優(yōu)化需要掌握哪些python知識(shí)

多目標(biāo)優(yōu)化

目標(biāo)優(yōu)化問(wèn)題一般地就是指通過(guò)一定的優(yōu)化算法獲得目標(biāo)函數(shù)的最優(yōu)化解。當(dāng)優(yōu)化的目標(biāo)函數(shù)為一個(gè)時(shí)稱(chēng)之為單目標(biāo)優(yōu)化(Single-

objective Optimization Problem,

SOP)。當(dāng)優(yōu)化的目標(biāo)函數(shù)有兩個(gè)或兩個(gè)以上時(shí)稱(chēng)為多目標(biāo)優(yōu)化(Multi-objective Optimization Problem,

MOP)。不同于單目標(biāo)優(yōu)化的解為有限解,多目標(biāo)優(yōu)化的解通常是一組均衡解。

多目標(biāo)優(yōu)化算法歸結(jié)起來(lái)有傳統(tǒng)優(yōu)化算法和智能優(yōu)化算法兩大類(lèi)。

1. 傳統(tǒng)優(yōu)化算法包括加權(quán)法、約束法和線性規(guī)劃法等,實(shí)質(zhì)上就是將多目標(biāo)函數(shù)轉(zhuǎn)化為單目標(biāo)函數(shù),通過(guò)采用單目標(biāo)優(yōu)化的方法達(dá)到對(duì)多目標(biāo)函數(shù)的求解。

2. 智能優(yōu)化算法包括進(jìn)化算法(Evolutionary Algorithm, 簡(jiǎn)稱(chēng)EA)、粒子群算法(Particle Swarm Optimization, PSO)等。

Pareto最優(yōu)解:

若x*∈C*,且在C中不存在比x更優(yōu)越的解x,則稱(chēng)x*是多目標(biāo)最優(yōu)化模型式的Pareto最優(yōu)解,又稱(chēng)為有效解。

一般來(lái)說(shuō),多目標(biāo)優(yōu)化問(wèn)題并不存在一個(gè)最優(yōu)解,所有可能的解都稱(chēng)為非劣解,也稱(chēng)為Pareto解。傳統(tǒng)優(yōu)化技術(shù)一般每次能得到Pareo解集中的一個(gè),而

用智能算法來(lái)求解,可以得到更多的Pareto解,這些解構(gòu)成了一個(gè)最優(yōu)解集,稱(chēng)為Pareto最優(yōu)解。它是由那些任一個(gè)目標(biāo)函數(shù)值的提高都必須以犧牲其

他目標(biāo)函數(shù)值為代價(jià)的解組成的集合,稱(chēng)為Pareto最優(yōu)域,簡(jiǎn)稱(chēng)Pareto集。

Pareto有效(最優(yōu))解非劣解集是指由這樣一些解組成的集合:與集合之外的任何解相比它們至少有一個(gè)目標(biāo)函數(shù)比集合之外的解好。

求解多目標(biāo)優(yōu)化問(wèn)題最有名的就是NSGA-II了,是多目標(biāo)遺傳算法,但其對(duì)解的選擇過(guò)程可以用在其他優(yōu)化算法上,例如粒子群,蜂群等等。這里簡(jiǎn)單介紹一下NSGA-II的選擇算法。主要包含三個(gè)部分:

1. 快速非支配排序

要先講一下支配的概念,對(duì)于解X1和X2,如果X1對(duì)應(yīng)的所有目標(biāo)函數(shù)都不比X2大(最小問(wèn)題),且存在一個(gè)目標(biāo)值比X2小,則X2被X1支配。

快速非支配排序是一個(gè)循環(huán)分級(jí)過(guò)程:首先找出群體中的非支配解集,記為第一非支配層,irank=1(irank是個(gè)體i的非支配值),將其從群體中除去,繼續(xù)尋找群體中的非支配解集,然后irank=2。

2. 個(gè)體擁擠距離

為了使計(jì)算結(jié)果在目標(biāo)空間比較均勻的分布,維持種群多樣性,對(duì)每個(gè)個(gè)體計(jì)算擁擠距離,選擇擁擠距離大的個(gè)體,擁擠距離的定義為:

L[i]d=L[i]d+(L[i+1]m?L[i?1]m)/(fmaxm?fminm)

L[i+1]m是第i+1個(gè)個(gè)體的第m目標(biāo)函數(shù)值,fmaxm 和 fminm是集合中第m個(gè)目標(biāo)函數(shù)的最大和最小值。

3. 精英策略選擇

精英策略就是保留父代中的優(yōu)良個(gè)體直接進(jìn)入子代,防止獲得的Pareto最優(yōu)解丟失。將第t次產(chǎn)生的子代種群和父代種群合并,然后對(duì)合并后的新種群進(jìn)行非支配排序,然后按照非支配順序添加到規(guī)模為N的種群中作為新的父代。

分享文章:fmin函數(shù)python,fmin怎么求
網(wǎng)站地址:http://chinadenli.net/article49/dsecdhh.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google外貿(mào)網(wǎng)站建設(shè)品牌網(wǎng)站制作全網(wǎng)營(yíng)銷(xiāo)推廣關(guān)鍵詞優(yōu)化品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)