文档详情

优化课程实验

壹****1
实名认证
店铺
DOCX
40.10KB
约20页
文档ID:522525328
优化课程实验_第1页
1/20

实验一 一维搜索方法实验实验学时:2h实验类型:常规实验要求:必修一、 实验目的:1. 掌握确定搜索区间的进退法,一维搜索的黄金分割法、牛顿法(切线法)、二次插值法的基本思想及迭代过程2. 掌握上述常用一维搜索方法的优缺点及程序编制的方法3. 掌握采用一维优化方法求优时如何提高搜索效率,减少盲目性二、 实验内容1、 任选实验以下内容之一,自编程序;1) 用0.618法求函数f (x)=x(x+2)在区间[-3, 5]中的极小点,要求精度为£=0.012) .用 0.618法求函数f (x)=x2+x+2的近似极小点及近似极小值,以致[a,b]=[-1, 3],缩短的相对精度为£ =0.083) 用牛顿法求函数f (x)=x4-5x3-4x2-6x+60的极小点及极小值,已知[a,b]=[3, 4] ,要求精度为£ =0.014) 用二次插值法求f (x)=x2+e-x的极小点及极小值,已知[a,b]=[0,1],要求精度为£ =0.0015) 用二次插值法求f (x)=3x4-16x3+30x2-24x+8的极小点及极小值,已知[a,b]=[0, 3] ,要求精度为£ =0.0012、 改变初始搜索区间或精度要求,观察程序运行结果及迭代次数的变化情况。

三、 实验原理、方法和手段一维搜索方法的内容包括搜索区间的确定和区间缩小两个内容,首先给定 初始点,应用外推法确定一个高—低—高的单谷区间,在采用黄金分割法或插值 法进行区间缩小,当区间缩小到收敛精度四、 实验组织运行要求本实验为上机实验,采用单人单机,集中授课形式五、实验条件人均计算机一台,安装有 C 语言软件六、实验步骤1. 实验课前,明确实验目的和要求,预习相关内容,应用选择的算法语言 编写程序;2. 在 C 语言环境下输入和调试程序;3. 运行程序,分析结果的正确性;4. 改变搜索区间,运行程序,观察结果和迭代次数的变化;5. 改变收敛精度,观察结果和迭代次数的变化七、思考题对黄金分割法和二次插值法的特点进行总结,具体使用时应如何选择?八、实验报告1、写清上机实验的名称及要求2、所选优化方法的基本原理简述3、绘制程序框图4、程序中变量及参数说明5、运行结果分析要求输出迭代过程中搜索区间上下限、迭代次数、极小 点和极小值)#include #include double obfunc(double x) /*目标函数*/{double ff;ff=pow(x,2)+9*x;return(ff);}void jts(double x0,double h0,double s[],int n,double a[],double b[]) /*进退法*/int i;double x[3],h,f1,f2,f3;h=h0;for(i=0;i=f1){h=-h0;for(i=0;if2){for(i=0;ieps); for(i=0;i

2. 掌握最速下降法、共轭梯度法、牛顿法、变尺度法、Powell法、单形替换法等的优 缺点及程序编制方法3. 掌握如何合理选择无约束优化方法,保证迭代效率及解题效果4. 掌握如何保证所得结果为目标函数的全局最优解的一般方法二、实验内容1. 求函数f (x)=2Xi2+3x22-8Xi+10的近似无约束最小点X*及最小值f (X*)已知初 始点 X(o)=[1, 2卩,s =0.0012. 求函数f (x)=1.5X]2+0.5x22 - x1 x2 -2x1的近似最小点X*及最小值f (X*)已知初 始点 X(0)=[-2, 4]T, s =0.023. 求函数 f (x)=X]4-2 X]2 x2-2x22-2 x1 x2+4.5 x1-4 x2+4 的近似最小点 X*及最小值 f (X*)已知初始点 X(0)=[-0.2, 0.2卩,s =0.014. 求f (x)= x12+2 x22 -l x1- 2 x1 x2的近似最小点X*及最小值f (X*)已知初始点 X(0)=[1, 1]T, s =0.015. 求 f (x)=4(x1-5)2+( x2-6)2 的最优解已知初始点 X(0)=[8, 9卩,s =0.01。

三、 实验要求:1. 任选实验内容中之一,自选实验目标 2 中的一种方法,自编程序;2. 改变初始初始点及精度要求,观察最优解及迭代次数的变化情况四、 实验报告:1. 写清上机实验的名称及要求2. 所选优化方法的基本原理简述3. 绘制程序框图4. 程序中变量及参数说明5. 运行结果分析6. 对所采用的方法的搜索效率及搜索结果进行评价,并提出改进意见及建议附:Powell法的参考程序:#include "math.h"#include "stdio.h"#include "malloc.h"double obfunc(double x[]){ double ff; ff=x[0]*x[0]+2*x[1]*x[1]-4*x[0]-2*x[0]*x[1];return(ff); }void jts(double x0[],double h0,double s[],int n,double a[],double b[]) { int i;double *x[3],h,f1,f2,f3;for(i=0;i<3;i++)h=h0;for(i=0;i=f1){ h=-h0;for(i=0;if2){ for(i=0;i

下载提示
相似文档
正为您匹配相似的精品文档