南邮运筹与优化实验报告.doc

上传人:scccc 文档编号:11178684 上传时间:2021-07-09 格式:DOC 页数:10 大小:202KB
返回 下载 相关 举报
南邮运筹与优化实验报告.doc_第1页
第1页 / 共10页
南邮运筹与优化实验报告.doc_第2页
第2页 / 共10页
南邮运筹与优化实验报告.doc_第3页
第3页 / 共10页
南邮运筹与优化实验报告.doc_第4页
第4页 / 共10页
南邮运筹与优化实验报告.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《南邮运筹与优化实验报告.doc》由会员分享,可在线阅读,更多相关《南邮运筹与优化实验报告.doc(10页珍藏版)》请在三一文库上搜索。

1、实 验 报 告实验名称 运筹与优化上机实验 课程名称 运筹与优化 班级学号 姓 名 开课时间 2011/2012学年,第二学期实验一:黄金分割法一、 实验目的1.掌握并运用黄金分割法2.能在计算机上完成算法的实现,并解决最优化问题二、 实验题目用黄金分割法求的最小值,初始区间a,b=-1,1,精度三、 实验过程#include math.h #include stdio.h #define f(x) 2*x*x-x-1 double hj(double *a,double *b,double e,int *n) double x1,x2,s; if(fabs(*b-*a)f(x2) *a=x1

2、; else *b=x2; *n=*n+1; s=hj(a,b,e,n); return s; main() double s,a,b,e; int n=0; scanf(%lf %lf %lf,&a,&b,&e); / 输入区间a,b和精度e的值 s=hj(&a,&b,e,&n); /调用hj函数,其中n代表迭代次数 printf(a=%lf,b=%lf,s=%lf,n=%dn,a,b,s,n); 四、 实验结果相应输入a、b、e的值-1、1、0.16,得出结果:区间为【0.167232,0.278651】一共迭代6次实验二:共轭梯度法一、 实验目的1、 掌握并运用共轭梯度法2、 能在计算机

3、上完成算法的实现,并解决最优化问题二、 实验题目用共轭梯度法求解:(1)三、 实验过程function x,g = Untitled1( Q,b,x,c,m)a=0;f=Q*x+b;s=sqrt(f(1)2+f(2)2);while sm,d=-f+a*d;t=-f*d/(d*Q*d);x=x+t*d;f=Q*x+b;a=f*Q*d/(d*Q*d);s=sqrt(f(1)2+f(2)2);endg=0.5*x*Q*x+b*x+c;Q=2,-1;-1,2;b=2;-4;x=0;0;c=0;m=0.001;X,U=getd(Q,b,x,c,m)四、 实验结果利用Matlab作出上述结果,最优解为x

4、=(0,2)T实验三:内外惩罚函数一、实验目的通过内外点法的学习让我们掌握利用罚函数解决线性规划为解决相应问题的一种思路与策略。二、实验题目分别用外点法和内点法求解下列问题:三、实验过程【实验编译程序】1、内点法clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50); syms x1 x2 e; %e为罚因子。m(1)=1;c=10;a(1)=0;b(1)=0; %c为递增系数。赋初值。f=x12+x22+e*(1-x1)2;f0(1)=1;fx1=diff(f,x1);fx2=diff(f,x2);fx1x1=diff(fx1,

5、x1);fx1x2=diff(fx1,x2);fx2x1=diff(fx2,x1);fx2x2=diff(fx2,x2);%求偏导、海森元素。for k=1:100 %外点法e迭代循环。x1=a(k);x2=b(k);e=m(k);for n=1:100 %梯度法求最优值。f1=subs(fx1); %求解梯度值和海森矩阵。f2=subs(fx2);f11=subs(fx1x1);f12=subs(fx1x2);f21=subs(fx2x1);f22=subs(fx2x2);if(double(sqrt(f12+f22)=0.001) %最优值收敛条件。a(k+1)=double(x1);b(

6、k+1)=double(x2);f0(k+1)=double(subs(f);break;elseX=x1 x2-inv(f11 f12;f21 f22)*f1 f2;x1=X(1,1);x2=X(2,1);endendif(double(sqrt(a(k+1)-a(k)2+(b(k+1)-b(k)2)=0.001)&(double(abs(f0(k+1)-f0(k)/f0(k)=0.001) %罚因子迭代收敛条件。a(k+1) %输出最优点坐标,罚因子迭代次数,最优值。b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend2、外点法clcm=zeros(1,

7、50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50); syms d x1 x2 e; m(1)=1;c=10;a(1)=0;b(1)=0; f=x12+x22+e*(1-x1)2; f0(1)=1; fx1=diff(f,x1); fx2=diff(f,x2);for k=1:100 x1=a(k);x2=b(k);e=m(k);for n=1:100 f1=subs(fx1);f2=subs(fx2);if(double(sqrt(f12+f22)=0.002) a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=

8、double(subs(f);break;elseD=(x1-d*f1)2+(x2-d*f2)2+e*(1-(x1-d*f1)2; Dd=diff(D,d); dd=solve(Dd); x1=x1-dd*f1; x2=x2-dd*f2;endendif(double(sqrt(a(k+1)-a(k)2+(b(k+1)-b(k)2)=0.001)&(double(abs(f0(k+1)-f0(k)/f0(k)=0.001) a(k+1)b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend四、实验结果利用Matlab作出上述结果,最优解为 最优值=0.9999【实验小结】这次的实验课,我通过使用Matlab和c语言来完成了黄金分割法、共轭梯度法和内外点法三个运筹与优化的重点内容,不仅对我的学习提供了帮助,更加了解老师所传授的知识,而且在编程方面也得到了一定的锻炼。实践是捡验真理的唯一标准。通过实践,使我们加强了对理论知道的理解。这次的编程,我感觉有很多的不足,比如说黄金分割法的实验中,a/ b和e的值是输进去的,其实可以在程序中加入“double a”等等。这是一开始实验时所没有想到的。当然,其他的几个程序也有很多的不足,也许是太罗嗦,时间太长,也许根本就有错误,望老师加以指导。10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1