import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
import torch
defhimmelblau
(x):
return
(x[0]**
2+ x[1]
-11)**
2+(x[0
]+ x[1]
**2-7
)**2x = np.arange(-6
,6,0.1
)y = np.arange(-6
,6,0.1
)print
('x,y range:'
, x.shape, y.shape)
x,y = np.meshgrid(x,y)
print
('x,y maps:'
,x.shape,y.shape)
z = himmelblau(
[x,y]
)fig = plt.figure(
'himmelblau'
)ax = fig.gca(projection=
'3d'
)ax.plot_su***ce(x,y,z)
ax.view_init(60,
-30)ax.set_xlabel(
'x')
ax.set_ylabel(
'y')
plt.show(
)#分別用[0.,0.],[4.,0.],[-4.,0.]對x進行初始化
x = torch.tensor([0
.,0.
], requires_grad=
true
)optimizer = torch.optim.adam(
[x], lr=1e-
3)for step in
range
(20000):
pred = himmelblau(x)
optimizer.zero_grad(
)#將梯度手動清零,避免梯度累加
pred.backward(
)#反向傳播,計算當前的梯度值
optimizer.step(
)#根據梯度更新網路引數
if step %
2000==0
:print
('strp{}: x = {}, f(x) = {}'
.format
(step,x.tolist(
),pred.item())
)
x,y range: (120,)
(120,)
x,y maps: (120, 120)
(120, 120)
strp0: x =
[0.0009999999310821295, 0.0009999999310821295], f(x)
= 170.0
strp2000: x =
[2.3331806659698486, 1.9540692567825317], f(x)
= 13.730920791625977
strp4000: x =
[2.9820079803466797, 2.0270984172821045], f(x)
= 0.014858869835734367
strp6000: x =
[2.999983549118042, 2.0000221729278564], f(x)
= 1.1074007488787174e-08
strp8000: x =
[2.9999938011169434, 2.0000083446502686], f(x)
= 1.5572823031106964e-09
strp10000: x =
[2.999997854232788, 2.000002861022949], f(x)
= 1.8189894035458565e-10
strp12000: x =
[2.9999992847442627, 2.0000009536743164], f(x)
= 1.6370904631912708e-11
strp14000: x =
[2.999999761581421, 2.000000238418579], f(x)
= 1.8189894035458565e-12
strp16000: x =
[3.0, 2.0], f(x)
= 0.0
strp18000: x =
[3.0, 2.0], f(x)
= 0.0
可以看到初始值為(0,0)時函式的最小值的座標為(3,2)。
而不同的初始值得到的結果也是不同的,所以初始值不能隨意設定。
2D功能函式
一 2d功能函式 1 2d位移 transform translate x,y transform translatex x軸移動的距離 transform translatey y軸移動的距離 2 2d的縮放 transform scale x,y transform scalex transfo...
粒子群優化演算法求函式最小值
1.演算法簡介 粒子群演算法 簡稱pso 是一種有效的全域性尋優演算法,最早由美國的kennedy和eberhart於1995年提出。基於群體智慧型理論的優化演算法,通過個體之間的協作和資訊共享來尋找最優解,具有 自我 學習提高和向 他人 學習的優點,被廣泛應用於函式優化 資料探勘 神經網路訓練等領...
2d專案的記憶體優化
記憶體優化 一 設計優化 1 控制每個場景的資源使用量 2 控制大圖,特別是全屏圖的使用量。3 使用的資源要盡量的少。二 美術優化 1 出圖要按照2冪次方進行。2 盡量往小的出,用小圖拼成大圖的思想。3 資源盡可能的重複使用。4 使用png 不用jpg 三 程式優化 1 資源打包成 pvr.ccz格...