优化上机指导1B(优化编程)(c版)6h.doc_第1页
优化上机指导1B(优化编程)(c版)6h.doc_第2页
优化上机指导1B(优化编程)(c版)6h.doc_第3页
优化上机指导1B(优化编程)(c版)6h.doc_第4页
优化上机指导1B(优化编程)(c版)6h.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

优化设计上机指导书v2012优化编程实验(1B)上机指导书(C版)适用专业: 机械工程 课程代码: 6015589 编写单位: 机械工程与自动化学院 编 写 人: 张晓洪 审 核 人: 审 批 人: 目 录 实验1.1 优化设计基础例程编制 2实验1.2 一维搜索方法编程 5实验1.3 Powell法无约束优化编程 7注释 8主要参考文献 8实验1.1 优化设计基础例程编制一、上机目的1、了解、掌握优化设计编程中常用的基础例程(C函数);2、调试指定的过程。二、原理和方法通过一给定目标函数,编制实现的代码,并调试通过。代码的编写应提前写好,上机时录入调试。三、上机内容1、数据定义为便于编程的有序进行及代码的高效利用,推荐采用如下的数据结构(仅供参考):(1)typedef enum STOP_DOTNEAR, STOP_ABSDESC, STOP_RELDESC, STOP_GRADZERO WHENSTOP; WHENSTOP用于定义终止准则,即点距准则,函数值绝对下降准则,函数值相对下降准则及零梯度准则.(2)typedef struct int n; /*dim number */ float *dir; /*direction */ float *start; float *end; float alfa; /*iterate step */ int counter; /*number of iterate */ WHENSTOP stop; /*terminating style */ float precision; char s1dmeth; /*g:goldcut r:grid i:interp */ float targetvalue; S1DPARA; S1DPARA用于定义线搜索的参数。上述定义可存放在一个h文件中。2、应编写的基础C函数包括: 1)int initzone1d(float (*tf)(), S1DPARA *apara); 用于确定一维搜索的初始区间, 返回的端点值存放在start及end中. 2)void movefblk(float *d, float *s, int n); 用于n维坐标点数据的拷贝或转移,s和d分别表示源数据和目的数据. 3)void newdot1d(float *d, float *s, int n, float *dir, float alfa); 用于在点s按方向dir及步长alfa获取新点,存入点d. 4)void dotinzone(float *d, float *a, float *b, int n, float pos); 用于获取a,b连线上的某点,该点距a的位置为pos(相对),a指向b为正向. 5)float distsqu(float *a, float *b, int n); 两点间距离的平方值 . 6)int stopsearch(float *x0, float *x1, float (*f)(), WHENSTOP stop, float prec, int n); 搜索终止条件测试,若返回非零,则终止. 7)float zxhgrad(float (*f)(), float *dot, float *g, int n); 梯度函数,梯度向量存入g,函数返回值为梯度向量的模.上述代码要求提前编写,可存放在一个C文件中。3、编写调用程序以调试上述子过程或函数。四、调试用例约束优化问题:min f(x) = 60-10x1-4x2+x12+x22-x1x2s.t. g1(x) = -x10 g2(x) = -x20 g3(x) = x1-60 g4(x) = x2-80 g5(x)=x1+x2-110五、上机步骤1、打开VC6.0,产生一个控制台程序;2、在其中编写main函数代码;3、编写目标函数的代码。4、调试程序,用以下检验数据检查程序的正确与否。检验数据如下:(1) f(x)在点1 2T处的值为45;在4 6T处的值为24;(2) f(x)在点0 1T处的梯度为-11 -2T;(3) g3(x)在任意位置处的梯度为1 0T。实验1.2 一维搜索方法编程一、上机目的1、掌握优化设计中一维搜索方法编程;2、调试指定的过程。二、原理和方法通过一给定目标函数,编制实现的代码,并调试通过。代码的编写应提前写好,上机时录入调试。三、上机内容1、编写的C函数包括: 1)int search1d(float (*tfunc)(), S1DPARA *apara); 一维搜索函数,tfunc为目标函数指针,alfa存初始步长,apara-start用于存放起点,调用后alfa为最优步长,end为最优点,targetvalue可用,counter存放迭代次数,start被破坏.2)int goldcut(float (*tf)(), S1DPARA *apara) ; 一维搜索用的黄金分割法,结果在end中. 3)int gridchoice(float (*tf)(), S1DPARA *apara); 格点法一维搜索函数,选做。 4)int intervalue(float (*tf)(), S1DPARA *apara); 二次插值法一维搜索.上述代码要求提前编写。2、编写调用程序以调试上述子过程或函数。四、调试用例无约束优化问题:min f(x) = 60-10x1-4x2+x12+x22-x1x2五、上机步骤略。调试用例的检验数据如下:(1) 以(6 3)为起点,(1 -1)为方向,初始步长为1,则一维搜索的初始区间为a=7 2T和b=5 4T;(2) 同上,一维搜索最优点为5.5 3.5T。实验1.3 Powell法无约束优化编程一、上机目的1、掌握优化设计中Powell法无约束优化方法和编程;2、调试指定的过程。二、原理和方法通过一给定目标函数,编制实现的代码,并调试通过。代码的编写应提前写好,上机时录入调试。三、上机内容1、数据结构typedef struct int n; float *start,*end,alfa; int turn,loop; WHENSTOP stop; float precision; char s1dmeth; WHENSTOP stop1d; float prec1d; float targetvalue; POWELLPARA;2、编写函数包括:int powell(float (*f)(),POWELLPARA *ap);四、调试用例无约束优化问题:min f(x) = 60-10x1-4x2+x12+x22-x1x2五、上机步骤略。调试用例的检验数据如下:全局最优点为8 6T。注释1、 为简化编程,优化模型的表达采用规定名称的函数过程来实现,如objfunc、gg、hh等;无论哪个优化问题,均需新建一个vb工程,再装入存放优化模型的模块OptModel.bas和存放通用过程的模块OptFuncs.bas,然后在其它模块(标准模块或窗体模块)中编写调用代码。2、 为便于求梯度的操作,将优化模型中各个函数的调用交给一个统一的过程funcval(放在OptModel 模块中)来实现,而objfunc、gg、hh等过程则设置成私有过程。3、 涉及一维搜索的各个过程,需要能够解决多元问题条件下的一维搜索,而不是一元搜索。4、 上机指导中要求编写的各过程是通用的,在后面的实验中还要用到,故最好按要求的名称编写,当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论