当前位置:网站首页>【optimtool.unconstrain】无约束优化工具箱
【optimtool.unconstrain】无约束优化工具箱
2022-07-04 20:02:00 【DeeGLMath】
【optimtool.unconstrain】无约束优化工具箱
# import packages
%matplotlib inline
import sympy as sp
import matplotlib.pyplot as plt
import optimtool as oo
def train(funcs, args, x_0):
f_list = []
title = ["gradient_descent_barzilar_borwein", "newton_CG", "newton_quasi_L_BFGS", "trust_region_steihaug_CG"]
colorlist = ["maroon", "teal", "slateblue", "orange"]
_, _, f = oo.unconstrain.gradient_descent.barzilar_borwein(funcs, args, x_0, False, True)
f_list.append(f)
_, _, f = oo.unconstrain.newton.CG(funcs, args, x_0, False, True)
f_list.append(f)
_, _, f = oo.unconstrain.newton_quasi.L_BFGS(funcs, args, x_0, False, True)
f_list.append(f)
_, _, f = oo.unconstrain.trust_region.steihaug_CG(funcs, args, x_0, False, True)
f_list.append(f)
return colorlist, f_list, title
# 可视化函数:传参接口(颜色列表,函数值列表,标题列表)
def test(colorlist, f_list, title):
handle = []
for j, z in zip(colorlist, f_list):
ln, = plt.plot([i for i in range(len(z))], z, c=j, marker='o', linestyle='dashed')
handle.append(ln)
plt.xlabel("$Iteration \ times \ (k)$")
plt.ylabel("$Objective \ function \ value: \ f(x_k)$")
plt.legend(handle, title)
plt.title("Performance Comparison")
return None
Extended Freudenstein & Roth function
f ( x ) = ∑ i = 1 n / 2 ( − 13 + x 2 i − 1 + ( ( 5 − x 2 i ) x 2 i − 2 ) x 2 i ) 2 + ( − 29 + x 2 i − 1 + ( ( x 2 i + 1 ) x 2 i − 14 ) x 2 i ) 2 , x 0 = [ 0.5 , − 2 , 0.5 , − 2 , . . . , 0.5 , − 2 ] . f(x)=\sum_{i=1}^{n/2}(-13+x_{2i-1}+((5-x_{2i})x_{2i}-2)x_{2i})^2+(-29+x_{2i-1}+((x_{2i}+1)x_{2i}-14)x_{2i})^2, x_0=[0.5, -2, 0.5, -2, ..., 0.5, -2]. f(x)=i=1∑n/2(−13+x2i−1+((5−x2i)x2i−2)x2i)2+(−29+x2i−1+((x2i+1)x2i−14)x2i)2,x0=[0.5,−2,0.5,−2,...,0.5,−2].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = (-13 + x[0] + ((5 - x[1])*x[1] - 2)*x[1])**2 + \
(-29 + x[0] + ((x[1] + 1)*x[1] - 14)*x[1])**2 + \
(-13 + x[2] + ((5 - x[3])*x[3] - 2)*x[3])**2 + \
(-29 + x[2] + ((x[3] + 1)*x[3] - 14)*x[3])**2
x_0 = (1, -1, 1, -1) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Extended Trigonometric function:
f ( x ) = ∑ i = 1 n ( ( n − ∑ j = 1 n cos x j ) + i ( 1 − cos x i ) − sin x i ) 2 , x 0 = [ 0.2 , 0.2 , . . . , 0.2 ] f(x)=\sum_{i=1}^{n}((n-\sum_{j=1}^{n}\cos x_j)+i(1-\cos x_i)-\sin x_i)^2, x_0=[0.2, 0.2, ...,0.2] f(x)=i=1∑n((n−j=1∑ncosxj)+i(1−cosxi)−sinxi)2,x0=[0.2,0.2,...,0.2]
# make data(2 dimension)
x = sp.symbols("x1:3")
f = (2 - (sp.cos(x[0]) + sp.cos(x[1])) + (1 - sp.cos(x[0])) - sp.sin(x[0]))**2 + \
(2 - (sp.cos(x[0]) + sp.cos(x[1])) + 2 * (1 - sp.cos(x[1])) - sp.sin(x[1]))**2
x_0 = (0.1, 0.1) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Extended Rosenbrock function
f ( x ) = ∑ i = 1 n / 2 c ( x 2 i − x 2 i − 1 2 ) 2 + ( 1 − x 2 i − 1 ) 2 , x 0 = [ − 1.2 , 1 , . . . , − 1.2 , 1 ] . c = 100 f(x)=\sum_{i=1}^{n/2}c(x_{2i}-x_{2i-1}^2)^2+(1-x_{2i-1})^2, x_0=[-1.2, 1, ...,-1.2, 1]. c=100 f(x)=i=1∑n/2c(x2i−x2i−12)2+(1−x2i−1)2,x0=[−1.2,1,...,−1.2,1].c=100
# make data(4 dimension)
x = sp.symbols("x1:5")
f = 100 * (x[1] - x[0]**2)**2 + \
(1 - x[0])**2 + \
100 * (x[3] - x[2]**2)**2 + \
(1 - x[2])**2
x_0 = (-2, 2, -2, 2) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Generalized Rosenbrock function
f ( x ) = ∑ i = 1 n − 1 c ( x i + 1 − x i 2 ) 2 + ( 1 − x i ) 2 , x 0 = [ − 1.2 , 1 , . . . , − 1.2 , 1 ] , c = 100. f(x)=\sum_{i=1}^{n-1}c(x_{i+1}-x_i^2)^2+(1-x_i)^2, x_0=[-1.2, 1, ...,-1.2, 1], c=100. f(x)=i=1∑n−1c(xi+1−xi2)2+(1−xi)2,x0=[−1.2,1,...,−1.2,1],c=100.
# make data(2 dimension)
x = sp.symbols("x1:3")
f = 100 * (x[1] - x[0]**2)**2 + (1 - x[0])**2
x_0 = (-1, 0.5) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Extended White & Holst function
f ( x ) = ∑ i = 1 n / 2 c ( x 2 i − x 2 i − 1 3 ) 2 + ( 1 − x 2 i − 1 ) 2 , x 0 = [ − 1.2 , 1 , . . . , − 1.2 , 1 ] . c = 100 f(x)=\sum_{i=1}^{n/2}c(x_{2i}-x_{2i-1}^3)^2+(1-x_{2i-1})^2, x_0=[-1.2, 1, ...,-1.2, 1]. c=100 f(x)=i=1∑n/2c(x2i−x2i−13)2+(1−x2i−1)2,x0=[−1.2,1,...,−1.2,1].c=100
# make data(4 dimension)
x = sp.symbols("x1:5")
f = 100 * (x[1] - x[0]**3)**2 + \
(1 - x[0])**2 + \
100 * (x[3] - x[2]**3)**2 + \
(1 - x[2])**2
x_0 = (-1, 0.5, -1, 0.5) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Extended Penalty function
f ( x ) = ∑ i = 1 n − 1 ( x i − 1 ) 2 + ( ∑ j = 1 n x j 2 − 0.25 ) 2 , x 0 = [ 1 , 2 , . . . , n ] . f(x)=\sum_{i=1}^{n-1} (x_i-1)^2+(\sum_{j=1}^{n}x_j^2-0.25)^2, x_0=[1,2,...,n]. f(x)=i=1∑n−1(xi−1)2+(j=1∑nxj2−0.25)2,x0=[1,2,...,n].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = (x[0] - 1)**2 + (x[1] - 1)**2 + (x[2] - 1)**2 + \
((x[0]**2 + x[1]**2 + x[2]**2 + x[3]**2) - 0.25)**2
x_0 = (5, 5, 5, 5) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Perturbed Quadratic function
f ( x ) = ∑ i = 1 n i x i 2 + 1 100 ( ∑ i = 1 n x i ) 2 , x 0 = [ 0.5 , 0.5 , . . . , 0.5 ] . f(x)=\sum_{i=1}^{n}ix_i^2+\frac{1}{100}(\sum_{i=1}^{n}x_i)^2, x_0=[0.5,0.5,...,0.5]. f(x)=i=1∑nixi2+1001(i=1∑nxi)2,x0=[0.5,0.5,...,0.5].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = x[0]**2 + 2*x[1]**2 + 3*x[2]**2 + 4*x[3]**2 + \
0.01 * (x[0] + x[1] + x[2] + x[3])**2
x_0 = (1, 1, 1, 1) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Raydan 1 function
f ( x ) = ∑ i = 1 n i 10 ( exp x i − x i ) , x 0 = [ 1 , 1 , . . . , 1 ] . f(x)=\sum_{i=1}^{n}\frac{i}{10}(\exp{x_i}-x_i), x_0=[1,1,...,1]. f(x)=i=1∑n10i(expxi−xi),x0=[1,1,...,1].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = 0.1 * (sp.exp(x[0]) - x[0]) + \
0.2 * (sp.exp(x[1]) - x[1]) + \
0.3 * (sp.exp(x[2]) - x[2]) + \
0.4 * (sp.exp(x[3]) - x[3])
x_0 = (0.5, 0.5, 0.5, 0.5) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Raydan 2 function
f ( x ) = ∑ i = 1 n ( exp x i − x i ) , x 0 = [ 1 , 1 , . . . , 1 ] . f(x)=\sum_{i=1}^{n}(\exp{x_i}-x_i), x_0=[1,1,...,1]. f(x)=i=1∑n(expxi−xi),x0=[1,1,...,1].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = (sp.exp(x[0]) - x[0]) + \
(sp.exp(x[1]) - x[1]) + \
(sp.exp(x[2]) - x[2]) + \
(sp.exp(x[3]) - x[3])
x_0 = (2, 2, 2, 2) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Diagonal 1 function
f ( x ) = ∑ i = 1 n ( exp x i − i x i ) , x 0 = [ 1 / n , 1 / n , . . . , 1 / n ] . f(x)=\sum_{i=1}^{n}(\exp{x_i}-ix_i), x_0=[1/n,1/n,...,1/n]. f(x)=i=1∑n(expxi−ixi),x0=[1/n,1/n,...,1/n].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = (sp.exp(x[0]) - x[0]) + \
(sp.exp(x[1]) - 2 * x[1]) + \
(sp.exp(x[2]) - 3 * x[2]) + \
(sp.exp(x[3]) - 4 * x[3])
x_0 = (0.5, 0.5, 0.5, 0.5) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Diagonal 2 function
f ( x ) = ∑ i = 1 n ( exp x i − x i i ) , x 0 = [ 1 / 1 , 1 / 2 , . . . , 1 / n ] . f(x)=\sum_{i=1}^{n}(\exp{x_i}-\frac{x_i}{i}), x_0=[1/1,1/2,...,1/n]. f(x)=i=1∑n(expxi−ixi),x0=[1/1,1/2,...,1/n].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = (sp.exp(x[0]) - x[0]) + \
(sp.exp(x[1]) - x[1] / 2) + \
(sp.exp(x[2]) - x[2] / 3) + \
(sp.exp(x[3]) - x[3] / 4)
x_0 = (0.9, 0.6, 0.4, 0.3) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Diagonal 3 function
f ( x ) = ∑ i = 1 n ( exp x i − i sin ( x i ) ) , x 0 = [ 1 , 1 , . . . , 1 ] . f(x)=\sum_{i=1}^{n}(\exp{x_i}-i\sin(x_i)), x_0=[1,1,...,1]. f(x)=i=1∑n(expxi−isin(xi)),x0=[1,1,...,1].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = (sp.exp(x[0]) - sp.sin(x[0])) + \
(sp.exp(x[1]) - 2 * sp.sin(x[1])) + \
(sp.exp(x[2]) - 3 * sp.sin(x[2])) + \
(sp.exp(x[3]) - 4 * sp.sin(x[3]))
x_0 = (0.5, 0.5, 0.5, 0.5) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Hager function
f ( x ) = ∑ i = 1 n ( exp x i − i x i ) , x 0 = [ 1 , 1 , . . . , 1 ] . f(x)=\sum_{i=1}^{n}(\exp{x_i}-\sqrt{i}x_i), x_0=[1,1,...,1]. f(x)=i=1∑n(expxi−ixi),x0=[1,1,...,1].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = (sp.exp(x[0]) - x[0]) + \
(sp.exp(x[1]) - sp.sqrt(2) * x[1]) + \
(sp.exp(x[2]) - sp.sqrt(3) * x[2]) + \
(sp.exp(x[3]) - sp.sqrt(4) * x[3])
x_0 = (0.5, 0.5, 0.5, 0.5) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Generalized Tridiagonal 1 function
f ( x ) = ∑ i = 1 n − 1 ( x i + x i + 1 − 3 ) 2 + ( x i − x i + 1 + 1 ) 4 , x 0 = [ 2 , 2 , . . . , 2 ] . f(x)=\sum_{i=1}^{n-1}(x_i+x_{i+1}-3)^2+(x_i-x_{i+1}+1)^4, x_0=[2,2,...,2]. f(x)=i=1∑n−1(xi+xi+1−3)2+(xi−xi+1+1)4,x0=[2,2,...,2].
# make data(3 dimension)
x = sp.symbols("x1:4")
f = (x[0] + x[1] - 3)**2 + (x[0] - x[1] + 1)**4 + \
(x[1] + x[2] - 3)**2 + (x[1] - x[2] + 1)**4
x_0 = (1, 1, 1) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Extended Tridiagonal 1 function:
f ( x ) = ∑ i = 1 n / 2 ( x 2 i − 1 + x 2 i − 3 ) 2 + ( x 2 i − 1 − x 2 i + 1 ) 4 , x 0 = [ 2 , 2 , . . . , 2 ] . f(x)=\sum_{i=1}^{n/2}(x_{2i-1}+x_{2i}-3)^2+(x_{2i-1}-x_{2i}+1)^4, x_0=[2,2,...,2]. f(x)=i=1∑n/2(x2i−1+x2i−3)2+(x2i−1−x2i+1)4,x0=[2,2,...,2].
# make data(2 dimension)
x = sp.symbols("x1:3")
f = (x[0] + x[1] - 3)**2 + (x[0] - x[1] + 1)**4
x_0 = (1, 1) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

Extended TET function : (Three exponential terms)
f ( x ) = ∑ i = 1 n / 2 ( ( exp x 2 i − 1 + 3 x 2 i − 0.1 ) + exp ( x 2 i − 1 − 3 x 2 i − 0.1 ) + exp ( − x 2 i − 1 − 0.1 ) ) , x 0 = [ 0.1 , 0.1 , . . . , 0.1 ] . f(x)=\sum_{i=1}^{n/2}((\exp x_{2i-1} + 3x_{2i} - 0.1) + \exp (x_{2i-1} - 3x_{2i} - 0.1) + \exp (-x_{2i-1}-0.1)), x_0=[0.1,0.1,...,0.1]. f(x)=i=1∑n/2((expx2i−1+3x2i−0.1)+exp(x2i−1−3x2i−0.1)+exp(−x2i−1−0.1)),x0=[0.1,0.1,...,0.1].
# make data(4 dimension)
x = sp.symbols("x1:5")
f = sp.exp(x[0] + 3*x[1] - 0.1) + sp.exp(x[0] - 3*x[1] - 0.1) + sp.exp(-x[0] - 0.1) + \
sp.exp(x[2] + 3*x[3] - 0.1) + sp.exp(x[2] - 3*x[3] - 0.1) + sp.exp(-x[2] - 0.1)
x_0 = (0.2, 0.2, 0.2, 0.2) # Random given
# train
color, values, title = train(funcs=f, args=x, x_0=x_0)
# test
test(color, values, title)

边栏推荐
- vim异步问题
- Après l'insertion de l'image dans le mot, il y a une ligne vide au - dessus de l'image, et la disposition est désordonnée après la suppression
- 【服务器数据恢复】某品牌服务器存储raid5数据恢复案例
- GVM use
- What if the WiFi of win11 system always drops? Solution of WiFi total drop in win11 system
- Implementation of redis distributed lock
- Redis分布式锁的实现
- How does wincc7.5 SP1 find variables and their positions through cross indexing?
- 网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??
- 看腾讯大老如何做接口自动化测试
猜你喜欢

Jmeter 之压测入门

D3.js+Three.js数据可视化3d地球js特效

网件r7000梅林系统虚拟内存创建失败,提示USB磁盘读写速度不满足要求解决办法,有需要创建虚拟内存吗??

PS vertical English and digital text how to change direction (vertical display)

《动手学深度学习》(三) -- 卷积神经网络 CNN

五子棋 上班摸鱼工具 可局域网/人机

MySQL --- 数据库查询 - 聚合函数的使用、聚合查询、分组查询

Ten years' experience of byte test engineer directly hits the pain point of UI automation test

【1200. 最小绝对差】

Foxit pdf editor v10.1.8 green version
随机推荐
看腾讯大老如何做接口自动化测试
分析伦敦银走势图的技巧
阿里测试师用UI自动化测试实现元素定位
浏览器渲染页面过程
Go notes (1) go language introduction and characteristics
What if the brightness of win11 is locked? Solution to win11 brightness locking
NetWare r7000 Merlin system virtual memory creation failed, prompting that the USB disk reading and writing speed does not meet the requirements. Solution, is it necessary to create virtual memory??
See how Tencent does interface automation testing
Four traversal methods of binary tree, as well as the creation of binary tree from middle order to post order, pre order to middle order, pre order to post order, and sequence [specially created for t
Play the music of youth
剑指 Offer II 80-100(持续更新)
WinCC7.5 SP1如何通过交叉索引来寻找变量及其位置?
Go language notes (2) some simple applications of go
仿ps样式js网页涂鸦板插件
What if win11u disk refuses access? An effective solution to win11u disk access denial
[1200. Différence absolue minimale]
PermissionError: [Errno 13] Permission denied: ‘data.csv‘
PS vertical English and digital text how to change direction (vertical display)
How to solve the problem that win11 cannot write the value to the registry key?
E-week finance | Q1 the number of active people in the insurance industry was 86.8867 million, and the licenses of 19 Payment institutions were cancelled