数学与计算科学学院
实验报告
实验项目名称所属课程名称实验类型实验日期
班学姓成
级号名绩
1n +1
v 0=∑v i
i =1, i ≠h
2)反射。
按如下公式通过v 0反射v h :v r =v 0+α(v 0-v h ) α>0为反射系数,常取α=1, v r
称为v h 的反射点。因v h 是坏点,则一般有f(v r )
3)延伸。
经过反射,若不仅有f(v r )1是延伸系数,常取r=2,也可用直线搜索技术确定r. 此时若有f(v e )
4)收缩。(如在R 中,由图a 知以v e 、v i 、v l 为顶点的新单纯形已向极小点靠近了一步。)否则,以反射点替换构成单纯形,转6步(如R 中,由图19.1.1b 可知以v r 、v i 、v l 为顶点的新单纯形向极小点靠近了一步)
图19.1.1a 图19.1.1b
若f(v r )
4.2
若对i=1,2,3--n+1(但i ≠h ) 均有f(v r )>=f(v i ), 则要进行收缩。
收缩分以下两种情况
4.2.1若f(v r ) >=f(v h ), 即反射点比原来单纯形的坏点还坏,则舍弃v r ,对方向
v h -v0进行收缩。如图d
计算公式为v c =v 0+β(v h -v 0) ;其中v c 是v h β=
1若f(v c )>f(v h ) ,即收缩点比原单纯形最坏点还坏,因此放弃v c 点,转5步进行
棱长减半工作。否则以v c 替换v h 构成新单纯形,转6。
4.2.2若f(v r )
v c =v o +β(v r -v o )
若f(v c )>f(v h ), 即收缩点v c 比反射点v r 还坏,则放弃收缩点v c ,
转5进行棱长减半工作,否则以v c 替换v h 构成新单纯形,转6。
图19.1.1c 图19.1.1b 图19.1.1e
5)减小棱长。将原单纯形的最好点保持不动,各棱长减半,计算公式为1
v i =v i +v l , i ≠1, 2, 3 n +1
2
2n +1
1n +11n +! *
6)终止原则。计算=f i , v =v i ,若∑f i -
小点,终止;否则,转1
()
()
【实验结论】(结果)
取初始点。为计算方便不取等边三角形为初始单纯形,而取直角三角形为初始单纯形,其顶点为:
δ0=(8, 9)T , δ1=(10, 11)T , δ2=(8, 11)T
相应函数值f 0=45, f 1=125,f 2=65
max (f 0f 1f 2)=125=f 2, δh =δ1
故
min (f 0f 1f 2)=45=f 0, δl =δo 其中心
1⎛2⎫
δ= ∑δi -δh ⎪=(8, 10)T
2⎝i =0⎭
先做反射运算(为方便,取α=1)δ3=δ+αδ-δh =(6, 9), f (δ3)=13因
f (z 3)
T
)
δ4=+r δ3-=(4, 8)T , f (δ4)=8
因f (δ4)
T T T
δ0=(8, 9). δ1=(4, 8). δ2=(8, 11)
T
()
f 0=45, f 1=8, f 2=65下面开始第二次迭代
max{f 0, f 1, f 2}=65=f 2, δl =δmin{f 0, f 1, f 2}=8=f 1, δl =δ1
1
(δ0+δ1)=(6, 8. 5)T 2
T
反射δ3=δ+αδ-δh =(4, 6), f (δ3)=4
中心δ=
)
延伸δ4=+r δ3-=(2, 3. 5), f (δ4)>f l =8
T
故以δ3=(4,6)代替δ2。f(δ3)=4代替。转入下一次迭代。如此迭代下去最后可得极小点(5, 6)。
T
【实验小结】(收获体会)
通过本次试验,是我更深的了解了无约束最优化问题的直接解决方法。一般来说,直接方法与使用导数的方法相比,但是其迭代比较简单,同一个问题从不同的思考角度出发就会发现更多的解决方案。三、指导教师评语及成绩:
评语等级
评
语
优良
中
及格
不及格
1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强2.实验方案设计合理
3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确.
成绩:
指导教师签名:批阅日期:
附录1:源程序
#include#includeint const n=2;
static double Mk=1;
double fun_original(doublex[n]);//既是主函数,也是F(X,Mk)之一double g_fun(doublex[n]);//约束函数double h_fun(doublex[n]);;//等式函数double a_e_f(doublex[n]);
double fun(doublex[n]);//让单纯形法求解此函数最小值
void compare(doublex[n+1][n],doubleLGH[3][n],doubleLGH_tap[3]);//在调用之前LGH 先给x[n+1]赋值
void zx(doublex[n+1][n],doubleLGH[3][n],doubleLGH_tap[3],doublexn_1[n],doublexn_2[n]);double H(doublex[n+1][n],doubleLGH[3][n],doublec);//判别准
则void danchun(doubleoriginal_point[n]);void main(){int k=1;int i;
double r=10;
double c=0.000001;
double x[n]={0,0.5};//给定的初始点在某个增广目标函数的求解域之中do {danchun(x);
//ln(x2)>=0时F(X,Mk)=-X1+X2;无极小点,不用管这个增广目标函数if(Mk*a_e_f(x)
cout=0"
cout
xn_1[j]+=x[i][j];}}
for(i=0;i
xn_2[i]=2*xn_1[i]-LGH[2][i];}
double H(doublex[n+1][n],doubleLGH[3][n],doublec)//判别准则{int i;
double s=0;
for(i=0;i
s+=pow(fun(x[i])-fun(LGH[0]),2);//s+=pow(fun(x[i][n])-fun(LGH[0][n]),2);//////////////}if(s
void danchun(doubleoriginal_point[n]){double x[n+1][n]={0};double c=0.000001;double a=2;double b=0.5;double LGH[3][n]={0};double LGH_tap[3]={0};double xn_1[n]={0};double xn_2[n]={0};double xn_3[n]={0};double xn_4[n]={0};int i,j,tap=0;for(i=0;i
for(i=1;i
x[i][j]=x[0][j]+1;else x[i][j]=x[0][j];}}
compare(x,LGH,LGH_tap);//返回Xl,Xh,Xg 及它们在x[n+1][n]中的下
标zx(x,LGH,LGH_tap,xn_1,xn_2);//返回中心X(n+1)和反射点X(n+2)while(H(x,LGH,c)==0){
if(fun(xn_2)
xn_3[i]=xn_1[i]+a*(xn_2[i]-xn_1[i]);//扩张}if(fun(xn_3)
{
for(i=0;i
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_3[i];{
for(i=0;i
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_2[i];}
else {
if(fun(xn_2)
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_2[i];}//gotostep 2; }else {
if(fun(xn_2)
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_2[i];}else//means(fun(xn_2)>=fun(LGH[2][n])){for(i=0;i
xn_4[i]=xn_1[i]+b*(xn_2[i]-xn_1[i]);//压缩}if(fun(xn_4)
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_4[i];//gotostep 2; }else for(i=0;i
for(j=0;j
x[i][j]=(LGH[0][j]+x[i][j])/2;}
}//gotostep 2
}
}
}
{
else
}
{}
}{
}
}}}//That'sit!!!
compare(x,LGH,LGH_tap);//返回Xl,Xh,Xg 及它们在x[n+1][n]中的下标zx(x,LGH,LGH_tap,xn_1,xn_2);//返回中心X(n+1)和反射点X(n+2)tap++;}
for(i=0;i
original_point[i]=LGH[0][i];//把在某个Mk 值下增广目标函数的最优值返回}
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致。
2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。3.实验原理:简要说明本实验项目所涉及的理论知识。4.实验环境:实验用的软、硬件环境。
5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。概括整个实验过程。对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。对于创新性实验,还应注明其创新点、特色。
6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。
7.实验结论(结果):根据实验过程中得到的结果,做出结论。8.实验小结:本次实验心得体会、思考和建议。
9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。
数学与计算科学学院
实验报告
实验项目名称所属课程名称实验类型实验日期
班学姓成
级号名绩
1n +1
v 0=∑v i
i =1, i ≠h
2)反射。
按如下公式通过v 0反射v h :v r =v 0+α(v 0-v h ) α>0为反射系数,常取α=1, v r
称为v h 的反射点。因v h 是坏点,则一般有f(v r )
3)延伸。
经过反射,若不仅有f(v r )1是延伸系数,常取r=2,也可用直线搜索技术确定r. 此时若有f(v e )
4)收缩。(如在R 中,由图a 知以v e 、v i 、v l 为顶点的新单纯形已向极小点靠近了一步。)否则,以反射点替换构成单纯形,转6步(如R 中,由图19.1.1b 可知以v r 、v i 、v l 为顶点的新单纯形向极小点靠近了一步)
图19.1.1a 图19.1.1b
若f(v r )
4.2
若对i=1,2,3--n+1(但i ≠h ) 均有f(v r )>=f(v i ), 则要进行收缩。
收缩分以下两种情况
4.2.1若f(v r ) >=f(v h ), 即反射点比原来单纯形的坏点还坏,则舍弃v r ,对方向
v h -v0进行收缩。如图d
计算公式为v c =v 0+β(v h -v 0) ;其中v c 是v h β=
1若f(v c )>f(v h ) ,即收缩点比原单纯形最坏点还坏,因此放弃v c 点,转5步进行
棱长减半工作。否则以v c 替换v h 构成新单纯形,转6。
4.2.2若f(v r )
v c =v o +β(v r -v o )
若f(v c )>f(v h ), 即收缩点v c 比反射点v r 还坏,则放弃收缩点v c ,
转5进行棱长减半工作,否则以v c 替换v h 构成新单纯形,转6。
图19.1.1c 图19.1.1b 图19.1.1e
5)减小棱长。将原单纯形的最好点保持不动,各棱长减半,计算公式为1
v i =v i +v l , i ≠1, 2, 3 n +1
2
2n +1
1n +11n +! *
6)终止原则。计算=f i , v =v i ,若∑f i -
小点,终止;否则,转1
()
()
【实验结论】(结果)
取初始点。为计算方便不取等边三角形为初始单纯形,而取直角三角形为初始单纯形,其顶点为:
δ0=(8, 9)T , δ1=(10, 11)T , δ2=(8, 11)T
相应函数值f 0=45, f 1=125,f 2=65
max (f 0f 1f 2)=125=f 2, δh =δ1
故
min (f 0f 1f 2)=45=f 0, δl =δo 其中心
1⎛2⎫
δ= ∑δi -δh ⎪=(8, 10)T
2⎝i =0⎭
先做反射运算(为方便,取α=1)δ3=δ+αδ-δh =(6, 9), f (δ3)=13因
f (z 3)
T
)
δ4=+r δ3-=(4, 8)T , f (δ4)=8
因f (δ4)
T T T
δ0=(8, 9). δ1=(4, 8). δ2=(8, 11)
T
()
f 0=45, f 1=8, f 2=65下面开始第二次迭代
max{f 0, f 1, f 2}=65=f 2, δl =δmin{f 0, f 1, f 2}=8=f 1, δl =δ1
1
(δ0+δ1)=(6, 8. 5)T 2
T
反射δ3=δ+αδ-δh =(4, 6), f (δ3)=4
中心δ=
)
延伸δ4=+r δ3-=(2, 3. 5), f (δ4)>f l =8
T
故以δ3=(4,6)代替δ2。f(δ3)=4代替。转入下一次迭代。如此迭代下去最后可得极小点(5, 6)。
T
【实验小结】(收获体会)
通过本次试验,是我更深的了解了无约束最优化问题的直接解决方法。一般来说,直接方法与使用导数的方法相比,但是其迭代比较简单,同一个问题从不同的思考角度出发就会发现更多的解决方案。三、指导教师评语及成绩:
评语等级
评
语
优良
中
及格
不及格
1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强2.实验方案设计合理
3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确.
成绩:
指导教师签名:批阅日期:
附录1:源程序
#include#includeint const n=2;
static double Mk=1;
double fun_original(doublex[n]);//既是主函数,也是F(X,Mk)之一double g_fun(doublex[n]);//约束函数double h_fun(doublex[n]);;//等式函数double a_e_f(doublex[n]);
double fun(doublex[n]);//让单纯形法求解此函数最小值
void compare(doublex[n+1][n],doubleLGH[3][n],doubleLGH_tap[3]);//在调用之前LGH 先给x[n+1]赋值
void zx(doublex[n+1][n],doubleLGH[3][n],doubleLGH_tap[3],doublexn_1[n],doublexn_2[n]);double H(doublex[n+1][n],doubleLGH[3][n],doublec);//判别准
则void danchun(doubleoriginal_point[n]);void main(){int k=1;int i;
double r=10;
double c=0.000001;
double x[n]={0,0.5};//给定的初始点在某个增广目标函数的求解域之中do {danchun(x);
//ln(x2)>=0时F(X,Mk)=-X1+X2;无极小点,不用管这个增广目标函数if(Mk*a_e_f(x)
cout=0"
cout
xn_1[j]+=x[i][j];}}
for(i=0;i
xn_2[i]=2*xn_1[i]-LGH[2][i];}
double H(doublex[n+1][n],doubleLGH[3][n],doublec)//判别准则{int i;
double s=0;
for(i=0;i
s+=pow(fun(x[i])-fun(LGH[0]),2);//s+=pow(fun(x[i][n])-fun(LGH[0][n]),2);//////////////}if(s
void danchun(doubleoriginal_point[n]){double x[n+1][n]={0};double c=0.000001;double a=2;double b=0.5;double LGH[3][n]={0};double LGH_tap[3]={0};double xn_1[n]={0};double xn_2[n]={0};double xn_3[n]={0};double xn_4[n]={0};int i,j,tap=0;for(i=0;i
for(i=1;i
x[i][j]=x[0][j]+1;else x[i][j]=x[0][j];}}
compare(x,LGH,LGH_tap);//返回Xl,Xh,Xg 及它们在x[n+1][n]中的下
标zx(x,LGH,LGH_tap,xn_1,xn_2);//返回中心X(n+1)和反射点X(n+2)while(H(x,LGH,c)==0){
if(fun(xn_2)
xn_3[i]=xn_1[i]+a*(xn_2[i]-xn_1[i]);//扩张}if(fun(xn_3)
{
for(i=0;i
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_3[i];{
for(i=0;i
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_2[i];}
else {
if(fun(xn_2)
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_2[i];}//gotostep 2; }else {
if(fun(xn_2)
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_2[i];}else//means(fun(xn_2)>=fun(LGH[2][n])){for(i=0;i
xn_4[i]=xn_1[i]+b*(xn_2[i]-xn_1[i]);//压缩}if(fun(xn_4)
x[int(LGH_tap[2])][i]=LGH[2][i]=xn_4[i];//gotostep 2; }else for(i=0;i
for(j=0;j
x[i][j]=(LGH[0][j]+x[i][j])/2;}
}//gotostep 2
}
}
}
{
else
}
{}
}{
}
}}}//That'sit!!!
compare(x,LGH,LGH_tap);//返回Xl,Xh,Xg 及它们在x[n+1][n]中的下标zx(x,LGH,LGH_tap,xn_1,xn_2);//返回中心X(n+1)和反射点X(n+2)tap++;}
for(i=0;i
original_point[i]=LGH[0][i];//把在某个Mk 值下增广目标函数的最优值返回}
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致。
2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。3.实验原理:简要说明本实验项目所涉及的理论知识。4.实验环境:实验用的软、硬件环境。
5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。概括整个实验过程。对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。对于创新性实验,还应注明其创新点、特色。
6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。
7.实验结论(结果):根据实验过程中得到的结果,做出结论。8.实验小结:本次实验心得体会、思考和建议。
9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。