北方民族大学课程设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三 课程设计要求:……………………………………………… (3).
四 源程序代码……………………………………………………(4)
五 测试运行结果…………………………………………………(6)
六 运行结果分析…………………………………………………(6)
七课程设计总结……………………………………………………(6)
八 附录
参考资料: 运筹学(21 世纪教材) 韩伯棠编著 高等教育出版社 2000 年版
-百度文库-
运筹学教程 运筹学
胡运权主编
清华大学出版社
1998 年版
教材编写组编 清华大学出版社 2005 年版
运筹学基础及应用 胡运权主编 哈工大出版社 1994 C 语言程序设计 何钦铭主编 高等教育出版社
-7-
-5-
五 测试运行结果
六 运行结果分析 从以上运算结果可以知道:最后结果为: X[0]=0.000001 X[1]=0.000001
min f ( x) 1 2 3 2 12 x2 10 x 1 2 2
七课程设计总结
通过对共轭梯度法问题的课程设计使我对书本知识得到了进一步的巩 固, 具体化就是加深了我对共轭梯度法求线性规划最优解的深层次理解,使我能 成熟的理解和应用 c 语言编程。 为我们以后毕业参加工作单位的策略策划打下坚 实的基础。 还又我了解并发现了很多调试程序的方法,而且懂得了如何处理错误 的方法。对 C 语言以及 C++的使用得到了进一步的提高。 经历了这次课程设计, 不仅对我的学习提供了帮助,而且在意志力方面也得 到了锻炼。 没有足够的耐力和信心就很难坚持对课程设计每一步的。实践是捡验 真理的唯一标准。通过实践,使我们加强了对理论知道的理解。
八 附录..............................................(6)
-1-
一 课程设计的目的
《最优化方法》 是信息与计算科学专业的一门重要的专业课程,是一门综合 应用课程。主要内容包括:线性规划、整数规划、动态规划、非线性规划、库存 论、排队论、博奕论、图与网络分析的基本概念、方法和模型等,以及有广泛应 用前景的运筹学问题的启发式算法。 《最优化方法》 中的运输问题是一种应用广泛的网络最优化模型,该模型的 主要目的是为物资调运,车辆调度选择最经济的运输路线。 《最优化方法》 运输问题课程设计的目的是为了适应信息管理与信息系统培 养目标的要求, 使我们学习掌握如何应用运筹学中的数量方法与模型来分析通过 计算机来实现研究现代企业生产与技术管理以及经营管理决策问题。 课程设计使 我们能成熟的理解和应用运筹学模型, 使我们认识运筹学在生产与技术管理和经 营管理决策中的作用, 领会其基本思想和分析与解决问题的思路。为我们以后毕 业参加工作单位的策略策划打下坚实的基础。
北方民族大学 最优化方法课程设计
学院: 班级: 姓名: 学号:
信息与计算科学学院 07 级统计(2)班 xxx xxx xxxx
指导老师:
设计日期:20xx.4.10—20xx.4.26
目
录
一课程设计的目的………………………………………………..(2)
二 共轭梯度法实验原理……………………………………………(2).
-4-
double eps,bita,arph,g[4],x[2],p[4]; /*printf("请输入控制误差精度:\n"); scanf("%f",&eps); printf("请输入初始点:\n"); scanf("%d,%d",&x[0],&x[1]);*/ eps=0.001; x[0]=1.0,x[1]=1.0; printf("x[0]=%f\n",x[0]); g[0]=x[0]; g[1]=2*x[1]; printf("以下是迭代过程\n"); while((sqrt(g[0]*g[0]+g[1]*g[1])>eps)&&(k<N)) { if(k==1) { p[0]=-g[0]; p[1]=-g[1]; bita=0; } else { bita=(g[0]*g[0]+g[1]*g[1])/(g[2]*g[2]+g[3]*g[3]); p[0]=-g[0]+bita*p[0]; p[1]=-g[1]+bita*p[1]; } arph=HJFC(x,p); x[0]=x[0]+arph*p[0]; x[1]=x[1]+arph*p[1]; g[2]=g[0]; g[3]=g[1]; g[0]=x[0]; g[1]=2*x[1]; printf("第%d 次迭代:\n",k); printf("步长 arph=%f\t",arph); printf("bita=%f\t",bita); printf("x[0]=%f\tx[1]=%f\n",x[0],x[1]); k++; } printf("最后结果为:\n"); printf("x[0]=%f,x[1]=%f\n",x[0],x[1]); }
x
1
T
2)本实验为验证型实验,要求用梯度法求解以上无约束优化问 题的最优解,并上机验证其正确性。所编写的计算机程序,应在满足 计算要求的前提下,力求简捷、易调、省内存、省时间,并具有良好 的实用性和经济性
-3-
四 源程序
#include <stdio.h> #include <math.h> #define N 100 double F(double x[],double p[],double t) { double f; f=(0.5*(x[0]+t*p[0])*(x[0]+t*p[0])+(x[1]+t*p[1])*(x[1]+t*p[1])); return f; } double HJFC(double x[],double p[]) { double a=-1,b=1,x1,x2,f1,f2,e=0.00001,y; x2=a+0.618*(b-a); f2=F(x,p,x2); x1=a+0.382*(b-a); f1=F(x,p,x1); while(fabs(b-a)>e) while(fabs(b-a)>e) {if(f1<f2) { b=x2;x2=x1;f2=f1; x1=a+0.382*(b-a); f1=F(x,p,x1); } else if(f1==f2) { a=x1;b=x2; x2=a+0.618*(b-a);f2=F(x,p,x2); x1=a+0.382*(b-a);f1=F(x,p,x1); } else { a=x1;x1=x2;f1=f2;x2=a+0.618*(b-a); f2=F(x,p,x2); } } y=0.5*(b+a); return y; } main() { int k=1;
二共轭梯度法实验原理
1)实验原理:构造相互共轭的搜索方向,每个搜索方向的步长按一维搜索方 法求得.在函数是单峰函数时,用黄金分割法求得 .
-2-
2)共轭梯度法流程图
三 课程设计要求: 1)按照梯度法的程序框图,用 C 语言或 C++语言编写其计算机 程序,求解以下无约束优化问题
1 2 2 min f (x) x1 x2 2 的最优解,给定初始点 4,4 ,收敛精度