首页 > 其他分享 >5.5

5.5

时间:2024-06-19 18:37:03浏览次数:9  
标签:FR 5.5 迭代 梯度 iter 计算 rsold

题目:

上机实验四:共轭梯度法程序设计

1、基本要求

掌握共轭梯度法的基本思想及其迭代步骤;学会运用MATLAB编程实现常用优化算法;能够正确处理实验数据和分析实验结果及调试程序。

2、主要内容

(1)求解无约束优化问题:

(2)终止准则取;

(3)完成FR共轭梯度法的MATLAB编程、调试;

(4)选取几个与实验二实验三中相同的初始点,并给出相关实验结果的对比及分析(从最优解、最优值、收敛速度(迭代次数)等方面进行比较);

(5)按照模板撰写实验报告,要求规范整洁。

3、操作要点

(1)通过编程实现FR共轭梯度法;

(2)使用MTALAB调试程序,并将实验结果保存到文件中;

(3)撰写实验报告。

4、主要仪器设备

微机及Matlab软件

 

代码:

1. 算法步骤

初始化

定义目标函数 func,它是一个字符串表达式,描述了优化问题的目标。

初始化起始点 x0,它是一个向量,表示在搜索空间中的起始位置。

设置容忍度 tol,用于确定何时停止迭代(当梯度的范数小于此值时)。

设置最大迭代次数 max_iter,以防止无限循环。

定义变量和函数

使用 length(x0) 确定变量的数量 n。

使用符号变量 vars 定义符号表达式中的变量。

将目标函数字符串 func 转换为符号表达式 funf_sym。

计算目标函数的梯度 gradf_sym 和海森矩阵 hessf_sym(尽管FR方法通常不需要海森矩阵,但这里被计算了)。

将符号表达式转换为MATLAB函数句柄 funf、gradf 和 hessf,以便在数值计算中使用。

迭代过程

初始化当前点 x 为起始点 x0。

计算当前点的梯度 g。

初始化搜索方向 d 为负梯度方向 -g。

初始化迭代计数器 k 为0。

主循环

当梯度的范数大于 tol 且迭代次数小于 max_iter 时,进行以下迭代:

计算搜索方向 d 与海森矩阵 Hd 的乘积(尽管FR方法不使用这个值来计算步长,但这里计算了)。

使用FR公式计算步长 alpha:alpha = -(g' * d) / (d' * Hd)(注意:这里通常使用线搜索来找到最佳步长,而不是直接用这个公式)。

更新当前点 x:x = x + alpha * d。

计算新点的梯度 g_new。

使用FR公式更新搜索方向 d:d = -g_new + beta * d,其中 beta = (g_new' * g_new) / (g' * g)。

更新梯度 g 为 g_new。

递增迭代计数器 k。

输出

迭代完成后,输出最优解 x 和迭代次数 k

2. 代码

function [x_min, f_min] = lab04(f, grad_f, x_initial, tol)

% 定义目标函数和梯度函数

% 注意:这里的f和grad_f应该是作为输入参数传递进来的函数句柄

% 但为了演示,我直接定义了函数内容。在实际应用中,应由调用者提供这些函数句柄。

 

f = @(x) (x(1)+10*x(2))^2 + 5*(x(3)-x(4))^2 + (x(2)-2*x(3))^4 + 10*(x(1)-x(4))^4;

grad_f = @(x) [2*(x(1)+10*x(2)) + 40*(-x(1)+x(4)); ...

              20*(x(1)+10*x(2)) + 4*(x(2)-2*x(3))^3 - 8*(x(2)-2*x(3)); ...

              10*(x(3)-x(4)) - 8*(x(2)-2*x(3))^3; ...

              -10*(x(3)-x(4)) - 40*(-x(1)+x(4))];

 

% 初始化参数

x = x_initial;

r = -grad_f(x);

p = r;

rsold = r'*r;

 

tolerance = tol; % 设置容差

maxIter = 1000; % 最大迭代次数

iter = 0;

 

while (rsold > tolerance) && (iter < maxIter)

    iter = iter + 1;

   

    Ap = grad_f(x + p); % 计算Ap

    alpha = rsold / (p'*Ap); % 计算步长

   

    x = x + alpha * p; % 更新x

    r = r - alpha * Ap; % 更新残差

   

    rsnew = r'*r; % 计算新的rs

    if sqrt(rsnew) < tolerance

        break;

    end

   

    beta = rsnew / rsold; % Fletcher-Reeves公式计算beta

    p = r + beta * p; % 更新搜索方向

   

    rsold = rsnew; % 更新rsold

end

 

% 循环结束后,直接使用最终的x和f(x)作为结果

x_min = x;

f_min = f(x);

end

标签:FR,5.5,迭代,梯度,iter,计算,rsold
From: https://www.cnblogs.com/szm123/p/18257006

相关文章

  • Linux 35.5 + JetPack v5.1.3@ ego-planner编译安装
    Linux35.5+JetPackv5.1.3@ego-planner编译安装1.源由2.编译&安装Step1:依赖库安装Step2:建立工程Step3:编译工程Step4:安装工程3.问题汇总3.1planner/plan_env-OpenCV3.2uav_simulator/local_sensing-CUDA优化4.总结1.源由Fast-PlannerFUELRACEReg......
  • 囚徒5.5_将给数字特征转化为数字特征
    代码片段是TensorFlow中特征列(featurecolumns)的创建过程,用于处理分类和数值数据。这在构建机器学习模型时非常有用,特别是在使用TensorFlow的高级API如TFEstimator时。这里是代码片段的解释和稍微修改后的版本:importnumpyasnpimportpandasaspdimportmatplotlib.pyplot......
  • 万兴全能格式转换器v15.5.10.97绿色版
    软件介绍万兴全能格式转换器,又叫万兴优转,国产全能音视频格式转换解决方案。具有音视频格式转换、合并视频、压缩视频、录制视频、下载视频、DVD刻录等功能。以超快的转换速度及强大的功能在国外名声大噪,转换速度是市面同类产品的30倍,操作简便,支持158种视频格式无损转换,批量转......
  • SD8002D单声道功率放大器输入1KHZ5V电压驱动功率SOP8封装2.0V-5.5V
    SD8002D是一款AB类,单声道带关断模式,桥式音频功率放大器。在输入1KHz,5V工作电压时,最大驱动功率为:3W,(4Ω负载,总谐波失真<10%),2W,(4Ω负载,总谐波失真<1%);音频范围内总谐波失真噪音小于1%(20赫兹·20KHz);SD8002D应用电路简单,只需要极少数外围器件,就能提供高品质的输出功率。......
  • 遥感SCI期刊,中科院2区,IF=5.5,收稿范围广泛!
    一、期刊名称RemoteSensinginEcologyandConservation二、期刊简介概况期刊类型:SCI学科领域:遥感影响因子:5.5中科院分区:2区三、期刊征稿范围《生态与保护中的遥感》提供了一个论坛,供在遥感科学与生态和保护之间界面上快速、同行评审的新型多学科研究发表。该杂......
  • Cisco Secure Email Virtual Gateway 15.5.1 GD - 电子邮件安全
    CiscoSecureEmailVirtualGateway15.5.1GD-电子邮件安全AsyncOSforESA15GeneralDeployment(GD)请访问原文链接:CiscoSecureEmailVirtualGateway15.5.1GD-电子邮件安全,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoSecureEmail提供高级......
  • Cisco Secure Email and Web Manager Virtual 15.5.1 GD - 集中管理思科安全设备
    CiscoSecureEmailandWebManagerVirtual15.5.1GD-集中管理思科安全设备AsyncOSforSMA15GeneralDeployment(GD)请访问原文链接:CiscoSecureEmailandWebManagerVirtual15.5.1GD-集中管理思科安全设备,查看最新版。原创作品,转载请保留出处。作者主页:sysin.......
  • VMware Workstation Pro各版本下载(2024.5.5之后)
    最近有人反映说之前的VMwareWorkstation链接无法下载VMware,索性直接分享几个常用安装包,大家可以点击链接下载。整理不易,点赞关注一下吧1.系统要求VM17:硬件要求较高,Windows10或更高版64位。VM16:硬件要求较高,Windows10或更高版64位。VM12:硬件要求低,Windows7或更高版64位......
  • 2024.5.5 模拟赛
    seq对于\(n\leq15\),枚举每个子序列然后排序计算即可。时间复杂度\(\mathcalO(2^nn\logn)\)。对于\(A_i\)互不相同,可以枚举每个元素的贡献。即若\(A_i\)满足在某一子序列中排名第\(A_i\),则有\(1\)的贡献。也就是当\(1\simA_i\)都被选择时才能有贡献。而大于\(A......
  • 5.5文件上传-WAF绕过
    一、WAF绕过(明确有文件上传)1、上传参数中,可修改参数Content-Dispositin:一般可改name:表单参数,不可更改filename:文件名,可更改Content-Type:文件mime,视情况可改2、常用方法数据溢出-防匹配(xxx...上传大量垃圾数据名写入数据包)符合变异-防匹配(''';)"qq.php",'qq.php......