二维值函数迭代:Matlab中的矢量化

二维值函数迭代:Matlab中的矢量化,matlab,optimization,vectorization,Matlab,Optimization,Vectorization,我想解一个二维动态规划问题。我在TxT上的一些对称网格上使用值函数迭代。知道吗,我在TxT中循环遍历每个状态(ti,tj),并找到最佳控制(I,I\j)。然而,这个过程相当耗时。我想去掉for循环。是否可以在TxT网格上定义目标,提供初始矩阵I0,并在一步内找到所有(I_I,I_j) [...] % vfi loop while(iterate < max_iter & error > error_tol) w_fit = fit([t1, t2], w, 'pol

我想解一个二维动态规划问题。我在
TxT
上的一些对称网格上使用值函数迭代。知道吗,我在
TxT
中循环遍历每个状态
(ti,tj)
,并找到最佳控制
(I,I\j)
。然而,这个过程相当耗时。我想去掉for循环。是否可以在
TxT
网格上定义
目标
,提供初始矩阵
I0
,并在一步内找到所有
(I_I,I_j)

[...]

% vfi loop
while(iterate < max_iter & error > error_tol)
    w_fit = fit([t1, t2], w, 'poly23');
    % maximizing objective function for every possible state
    for i = 1:length(w)
        objective = @(I) -(h*1/6*((t1(i) + t2(i))/(2*c)...
            - (a*(t1(i).^2 + t2(i).^2) + b*(I(1).^2 + I(2).^2)))...
            +(1-r*h)*w_fit(t1(i) + h*(I(1) - d*t1(i)), t2(i) + h*(I(2) - d*t2(i))));
        I_star =fminsearch(objective,[I1_0(i), I2_0(i)]);
        pi_1(i) = I_star(1);
        pi_2(i) = I_star(2);
        Tw(i) = -objective(I_star);
    end
    iterate = iterate + 1
    error = max(abs(Tw - w))
    w = Tw;
    I1_0 = pi_1;
    I2_0 = pi_2;
end
[…]
%vfi环路
而(迭代error\u tol)
w_fit=配合([t1,t2],w,'poly23');
%最大化每个可能状态的目标函数
对于i=1:长度(w)
目标=@(I)-(h*1/6*((t1(I)+t2(I))/(2*c)。。。
-(a*(t1(i)。^2+t2(i)。^2)+b*(i(1)。^2+i(2)。^2))。。。
+(1-r*h)*w_拟合(t1(i)+h*(i(1)-d*t1(i)),t2(i)+h*(i(2)-d*t2(i));
I_star=fminsearch(目标[I1_0(I),I2_0(I)];
pi_1(i)=i_星(1);
pi_2(i)=i_星(2);
Tw(i)=-目标(i_星);
结束
迭代=迭代+1
误差=最大值(绝对值(Tw-w))
w=Tw;
I1_0=π_1;
I2_0=π_2;
结束
我不相信循环的“矢量化”会给您带来多少好处(我也不知道您会如何实现这种矢量化)。计算最密集的部分将是
fminsearch
,它将多次调用存储在
objective
中的匿名函数。因此,目标是优化该函数的执行。最好的技巧是:只计算一次不依赖于匿名函数输入的项和因子(在函数定义之外),并在anon函数定义内使用预计算的值

其他优化可通过调整
fminsearch
本身来完成:放宽公差,减少配置的迭代次数或功能评估,抑制诊断消息和绘图。请参阅此处的帮助:

我不相信循环的“矢量化”会给您带来多少好处(我也不知道您会如何进行这种矢量化)。计算最密集的部分将是
fminsearch
,它将多次调用存储在
objective
中的匿名函数。因此,目标是优化该函数的执行。最好的技巧是:只计算一次不依赖于匿名函数输入的项和因子(在函数定义之外),并在anon函数定义内使用预计算的值


其他优化可通过调整
fminsearch
本身来完成:放宽公差,减少配置的迭代次数或功能评估,抑制诊断消息和绘图。请参阅此处的帮助:

是的,我的想法是放弃使用
fminsearch
。在这些注释中,描述了一个具体示例。但是,我无法为手头的问题翻译它。是的,我的想法是放弃使用
fminsearch
。在这些注释中,描述了一个具体示例。然而,我无法翻译我手头的问题。