最优化方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


VC++






运行环境为VC++6.0
/*/
#include <math.h>
#include <stdio.h>
double alpha(double*x)
{
return((x[0]+x[1]-1)*(x[0]+x[1]-1));
}
doublefunc( double *x ,intmr)
{
return
0.5*x[0]*x[0]+0.166667*x[1]*x[1]+mr*alpha(x);
}
voidvgrand( double*p ,double *x,intmr)
{
p[0]=-1*x[0]-2*mr*(x[0]+x[1]-1);
p[1]=-0.3333333*x[1]-2*mr*(x[0]+x[1]-1);
printf("\n\n");
return 0;
}
while(1)
{
vgrand(p,x,mr);
if ( norm( p ) <= e )
break;
else
{
t=gold(-5,5,1.18,p,x,e,mr);
for (inti=0;i!=2; ++i)
x[i]=x[i]+t*p[i];
}
}
mr=mr*2;
printf("最优解为: x1=%lf , x2=%lf \n",x[0],x[1]);
printf("----------------------------------------------\n");
printf(“由次得出
:min f(x)=%lf",0.5*x[0]*x[0]+0.166667*x[1]*x[1]);
实验报告
题目:
班级:数学系09级5班
组成员:
程序设计者:
算法设计者:
实验报告设计者:
优化问题实验报告:
1题目
运用序列二次规划法求优化问题
2问题叙述
用序列二次规划法来求解优化问题
Min f(x)=x2
s.t–x2≤0;
x-1≤0;
3方法介绍
序列二次规划法的步骤:
一、搜索方向d的确定
二、步长的确定
4


xtmp[i]=x[i]+p[i]*t;
returnfunc(xtmp,mr);
}
double gold (double begin ,double end, double t2, double *p, double *x ,doublee,intmr)
{
while (1)
{
double t1=0.382*(end-begin)+begin;
}
}
6.




由数学知识可知上述问题的最优解为0。
if(fabs(t1-t2)<e)
{
return (t1+t2)/2;
}
else if(goldf(t1,p,x,mr)<goldf(t2,p,x,mr))
{
end=t2;
t2=t1;
}
else
{
begin=t1;
t2=0.618*(end-begin)+begin;
}
}
}
intmain()
{
double x[2],e=0.000001, p[2], t ;
intmr=10;
intcount=0;
x[0]=0.1,x[1]=0.1;
printf
while(1)
{
printf("循环迭代: x1=%lf , x2=%lf \n",x[0],x[1]);
if(mr*alpha(x)<=e)
{
printf("----------------------------------------------\n");
}
double norm ( double *x )
{
return
sqrt( 0.5*x[0]*x[0]+0.166667*x[1]*x[1] );
}
doublegoldf(double t, double*p, double *x,intmr)
{
doublextmp[2];
for (inti=0;i!=2; ++i)
相关文档
最新文档