資源簡介
自己使用python實現(xiàn)的部分工程優(yōu)化算法,包括梯度下降,共軛梯度,牛頓迭代,擬牛頓法等多種優(yōu)化算法
代碼片段和文件信息
#!coding:utf8
#Bug?point:
#matlab?index?start?1?;python?index?start?0
#matlab?1:3=123;python?1:3=12?without?3
#python?1/2=0?1.0/2=1.0/2.0=0.5
#注意numpy的array和mat如果生成為整數(shù)類型,則存儲浮點類型會自動取整
from?copy?import?deepcopy
from?numpy?import?*
from?random?import?*
def?gradient(fgfx0thres=0.0001):
????while?True:
????????p=-1*array(gf(fx0))
????????if?linalg.norm(p2)<=thres:
????????????return?x0
????????la=secant(fx0p)
????????x0=x0+la*p
????????#print?f(x0)
#梯度下降z型收斂,接近最優(yōu)點收斂緩慢,改進2次梯度下降xk->xk+1->xk+2使用一次xk+2-xk
#實驗證明改進梯度下降效果非常明顯梯度下降在最優(yōu)點附近收斂非常慢
def?partan(fgfx0thres=0.0001):
????while?True:
????????x=[]
????????for?i?in?range(2):
????????????p=-1*array(gf(fx0))
????????????if?linalg.norm(p2)<=thres:
????????????????return?x0?
????????????if?i==0:
????????????????x.append(x0)
????????????la=secant(fx0p)
????????????x0=x0+la*p
????????????if?i==1:
????????????????x.append(x0)
????????p=x[1]-x[0]
????????la0=random()*randint(02)
????????la1=la0+randint(02)
????????x0=x0+la*p
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?-rw-rw-r--??????2210??2016-09-27?13:03??Optimize\mathtools.pyc
?-rw-rw-r--??????2773??2016-10-08?11:27??Optimize\co.py
?-rw-rw-r--??????3883??2016-10-09?17:04??Optimize\doc
?-rw-rw-r--??????7388??2016-09-26?13:41??Optimize\analysis.py
?-rw-rw-r--??????6677??2016-09-27?12:42??Optimize\ods.py
?-rw-rw-r--??????1528??2016-10-08?11:27??Optimize\mathtools.py
?-rw-rw-r--??????5663??2016-09-27?12:47??Optimize\search.py
?drwxrwxr-x?????????0??2016-10-09?17:04??Optimize
-----------?---------??----------?-----??----
????????????????30122????????????????????8
- 上一篇:水電煤氣管理系統(tǒng)
- 下一篇:SWMM-CAT User’s Guide
評論
共有 條評論