哪位大神可以提供一个求解信赖域子问题单折线法的matlab程序啊

哪位大神可以提供一个求解信赖域子问题单折线法的matlab程序啊,第1张

format long g

x0=[-1.21]

delte=1eita=0.05abtol=1e-6max2=100

x1=x0

syms x y

f(x,y)

df=jacobian(f(x,y))

ddf=jacobian(df)

for k=1:max2

x1

g=subs(df,[x,y],[x1(1),x1(2)])

g=g'

B=subs(ddf,[x,y],[x1(1),x1(2)])

f_g=norm(g)

if f_g<abtol

disp('单折线法----已经找到最优解,迭代次数k及极小点如下')

kx1

break

else

beta=(g'*g)/(g'*inv(B)*g)

d_cp=-beta*g

d_np=-inv(B)*g

f_d_cp=norm(d_cp)

f_d_np=norm(d_np)

if f_d_np<=delte

dk=d_np

else

if f_d_cp<delte

a=(norm(d_np-d_cp))^2

b=d_cp'*(d_np-d_cp)

c=d_cp'*d_cp-delte^2

t=(-b+sqrt(b^2-a*c))/a

dk=d_cp+t*(d_np-d_cp)

else

dk=delte*d_cp/f_d_cp

end

end

qk=f(x1(1),x1(2))+g'*dk+1/2*dk'*B*dk

x2=x1+dk

fk=f(x1(1),x1(2))-f(x2(1),x2(2))

fqk=f(x1(1),x1(2))-qk

rk=fk/fqk

if rk<=eita

x1=x1

end

if rk>3/4

delte=2*delte

elseif (rk>eita)&(rk<1/4)

delte=1/2*delte

elseif (rk>1/4)&(rk<=3/4)

delte=delte

end

x1=x1+dk

end

end

minf=f(x1(1),x1(2))

x1

[k,minf]%--------相应的迭代次数及最小值

根据策略梯度方法,参数更新方程式为:

在策略梯度方法中,合适的步长 对于参数更新至关重要,当步长不合适时,更新的参数所对应的策略是一个更不好的策略,当利用这个更不好的策略进行采样学习时,再次更新的参数会更差,因此很容易导致越学越差,最后崩溃。

TRPO要解决的问题就是解决这个问题,找到新的策略使得新的回报函数的值单调增,或单调不减。

是一个随机策略, 是初始状态 的分布。 代表折扣奖赏的期望,定义如下:

TRPO的目的是找到新的策略,使得回报函数单调不减。那么如果将新的策略所对应的回报函数可以用旧的策略所对应的回报函数与其他项之和(公式3)代替并保证新的策略所对应的其他项大于等于零,那么新的策略就能保证回报函数单调不减。

其中,

证明如下( 为新策略, 为旧策略):

我们定义:

为了出现策略项,我们可以利用公式(5)将公式(3)改写为

由于 严重的依赖于新的策略 ,使得公式(6)很难去优化。因此,我们忽略因策略改变而产生的状态分布的改变,即令 ,近似后的公式为

对比公式(6)与公式(7),我们发现 在策略 处一阶近似,即:

TRPO在“自然策略梯度”的基础上提出了如下的算法,

该不等式带给我们重要的启示,那就是给出了 的下界,我们定义这个下界为

利用这个下界我们可以证明策略的单调性:

如果新的策略 能使得 最大,那么有不等式 ,则 ,那么我们的目标将转化为寻找使得 最大的新的策略。可形式化为

然而在实际中,使用惩罚系数 C 会使得更新步伐非常小,因此,提出如下的形式

但是,这个问题强加了一个约束,即KL散度在状态空间的每个点都有界限, 尽管理论上可行,但由于存在大量约束,这个问题难以解决。因此我们可以使用考虑平均KL散度来近似

另外,我们同样也可以引入“重要性采样”,并作形式上的演化,最终的不等式化为

论文中提出,可以将 用 代替。

论文的部分技巧总结

下载地址:

http://www.mathworks.cn/products/optimization/description3.html

Optimization Toolbox 3.1.1

产品说明

简介

定义、求解和评估优化问题

非线性优化

非线性最小二乘、数据拟合及非线性方程

二次规划和线性规划

二进制整数规划

非线性优化

无约束非线性优化

优化工具箱使用三种方法求解无约束非线性最小化问题:拟牛顿法、Nelder-Mead 法和信赖域法。

拟牛顿法使用二次和三次线搜索法与 BFGS 公式的结合更新海赛矩阵的近似值。

Nelder-Mead 法是只使用函数值(不要求导数)的直接搜索方法,用于处理非平滑目标函数。

信赖域法用于可以提取稀疏性或结构的大规模问题。信赖域法基于内部映射牛顿法,可以在函数内计算海赛乘向量的乘积而无需另行排列海赛矩阵。此外还可调整牛顿迭代中使用的预条件子的带宽。

约束非线性优化

约束非线性优化问题由非线性目标函数构成并可能受到线性和非线性约束。优化工具箱使用两种方法求解这些问题:信赖域法和动态序列逐次二次规划。

信赖域法仅用于受限约束问题或线性等式。

动态序列逐次二次规划则用于一般的非线性优化。

多目标优化

多目标优化涉及受一组约束的多个目标函数的最小化。优化工具箱提供的函数可求解以下两种多目标优化问题的公式:目标达到和极小极大。

目标达到问题求解减小线性或非线性向量函数的值,以达到 goal 向量中规定的目标值。目标的相对重要性则使用 weight 向量说明。目标达到问题也可能受到线性和非线性约束。

最小最大问题求解最小化一组多元函数的最差情况值,可能受到线性和非线性约束。

优化工具箱将两种多目标问题都转换为标准的约束优化问题,然后使用逐次二次规划对其求解


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11111968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存