机械优化复合形法 程序设计.docx

上传人:b****5 文档编号:7502502 上传时间:2023-05-11 格式:DOCX 页数:7 大小:33.11KB
下载 相关 举报
机械优化复合形法 程序设计.docx_第1页
第1页 / 共7页
机械优化复合形法 程序设计.docx_第2页
第2页 / 共7页
机械优化复合形法 程序设计.docx_第3页
第3页 / 共7页
机械优化复合形法 程序设计.docx_第4页
第4页 / 共7页
机械优化复合形法 程序设计.docx_第5页
第5页 / 共7页
机械优化复合形法 程序设计.docx_第6页
第6页 / 共7页
机械优化复合形法 程序设计.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

机械优化复合形法 程序设计.docx

《机械优化复合形法 程序设计.docx》由会员分享,可在线阅读,更多相关《机械优化复合形法 程序设计.docx(7页珍藏版)》请在冰点文库上搜索。

机械优化复合形法 程序设计.docx

机械优化复合形法程序设计

课程设计(实验)材料(3)

机械优化设计

课程设计(实验)报告

 

专业班级:

设计题目:

复合形程序设计

学生姓名:

学生学号:

任课教师:

 

2013年月日

1、设计要求:

根据已知条件,用复合形法完成一次迭代,只用反射变换复合形即可。

已知条件:

1、目标函数:

f(x)=25/(x1*x2*x2*x2)

2、约束条件:

g(x)30/(x1*x2*x2*x2)-50<=0

G(x)0.0004*x1*x2-0.001<=0

X1>=2x1<=4x2<=1x2>=0.5

3、初始复合形顶点:

X1=[2.2,0.55]X2=[2.4,0.6]X3=[2.6,0.65]X4=[2.8,0,7]

2、方法原理:

复合形法的基本思路是在n维空间的可行域中选取K个设计点(通常取n+1<=K<=2*n)作为初始复合形的顶点。

然后比较复合形各顶点目标函数的大小,其中目标函数值最大的点作为坏点,以坏点之外其余各点的中心为映射中心,寻找坏点的映射点,一般说来此映射点的目标函数值总是小于坏点的,也就是说映射点优于坏点。

这时,以映射点替换坏点与原复合形除坏点之外其余各点构成K个顶点的新的复合形。

如此反复迭代计算,在可行域中不断以目标函数值低的新点代替目标函数值最大的坏点从而构成新复合形,使复合形不断向最优点移动和收缩,直至收缩到复合形的各顶点与其形心非常接近、满足迭代精度要求时为止。

最后输出复合形各顶点中的目标函数值最小的顶点作为近似最优点。

三、程序清单:

#include

#include

#definep1.3

#definek4

floatfr,fh;

floatxr[2][1],xc[2][1];

intxb_h,xb_xh;

floatf(floatx[2][1]);

floatx1[2][1]={{2.2},{0.55}};

floatx2[2][1]={{2.4},{0.63}};

floatx3[2][1]={{2.6},{0.65}};

floatx4[2][1]={{2.8},{0.7}};

floatMax_value,Min_value,Max_h_value;

floatshuzu[4];

voidhanshu_Maxvalue(void);

voidhanshu_Max_h_value(void);

voidzhshuzu(void);

voidhanshu_Minvalue(void);

voidchu_h(void);

intke_xr(void);

intmain(void)

{intkexing_flag=0;

zhshuzu();

hanshu_Minvalue();

hanshu_Maxvalue();

hanshu_Max_h_value();

chu_h();

while(ke_xr())

{kexing_flag=1;

switch(xb_xh)

{case1:

fr=f(xr);

fh=f(x1);

if(fr

{x1[0][0]=xr[0][0];

x1[1][0]=xr[1][0];}

break;

case2:

fr=f(xr);

fh=f(x2);

if(fr

{x2[0][0]=xr[0][0];

x2[1][0]=xr[1][0];}

break;

case3:

fr=f(xr);

fh=f(x3);

if(fr

{x3[0][0]=xr[0][0];x3[1][0]=xr[1][0];}break;

case4:

fr=f(xr);fh=f(x4);if(fr

{x4[0][0]=xr[0][0];x4[1][0]=xr[1][0];}break;}if(kexing_flag==1)break;}

printf("替换后结果为");

printf("x1=");

printf("[%.1f,%.2f]\n",x1[0][0],x1[1][0]);

printf("输出\n");

printf("x2=");

printf("[%.1f,%.2f]\n",x2[0][0],x2[1][0]);

printf("x3=");

printf("[%.1f,%.2f]\n",x3[0][0],x3[1][0]);

printf("x4=");

printf("[%.1f,%.2f]\n",x4[0][0],x4[1][0]);

return0;

}

floatf(floatx[2][1])

{floathanshuvalue;

hanshuvalue=(25*1.0)/(x[0][0]*pow(x[1][0],3));

returnhanshuvalue;}

voidzhshuzu(void)

{shuzu[0]=f(x1);shuzu[1]=f(x2);shuzu[2]=f(x3);shuzu[3]=f(x4);}

voidhanshu_Minvalue(void)

{inti;Min_value=shuzu[0];

for(i=0;i<4;i++)

if(shuzu[i]<=Min_value)

Min_value=shuzu[i];

}

voidhanshu_Max_h_value(void)

{

inti;

Max_h_value=shuzu[0];

for(i=0;i<4;i++)

{

if(xb_h==i)

continue;

else

if(shuzu[i]>=Max_h_value)

Max_h_value=shuzu[i];}

}

voidhanshu_Maxvalue(void)

{

inti;

Max_value=shuzu[0];

for(i=0;i<4;i++)

if(shuzu[i]>=Max_value)

{

Max_value=shuzu[i];

xb_h=i;}}

voidchu_h(void)

{switch(xb_h)

{

case0:

xc[0][0]=1.0*(x2[0][0]+x3[0][0]+x4[0][0])/(k-1);

xc[1][0]=1.0*(x2[1][0]+x3[1][0]+x4[1][0])/(k-1);

xr[0][0]=xc[0][0]+p*(xc[0][0]-x1[0][0]);

xr[1][0]=xc[1][0]+p*(xc[1][0]-x1[1][0]);

xb_xh=1;

break;

case1:

xc[0][0]=1.0*(x1[0][0]+x3[0][0]+x4[0][0])/(k-1);

xc[1][0]=1.0*(x1[1][0]+x3[1][0]+x4[1][0])/(k-1);

xr[0][0]=xc[0][0]+p*(xc[0][0]-x2[0][0]);

xr[1][0]=xc[1][0]+p*(xc[1][0]-x2[1][0]);

xb_xh=2;

break;

case2:

xc[0][0]=1.0*(x1[0][0]+x2[0][0]+x4[0][0])/(k-1);

xc[1][0]=1.0*(x1[1][0]+x2[1][0]+x4[1][0])/(k-1);

xr[0][0]=xc[0][0]+p*(xc[0][0]-x3[0][0]);

xr[1][0]=xc[1][0]+p*(xc[1][0]-x3[1][0]);

xb_xh=3;

break;

case3:

xc[0][0]=1.0*(x1[0][0]+x2[0][0]+x3[0][0])/(k-1);

xc[1][0]=1.0*(x1[1][0]+x2[1][0]+x3[1][0])/(k-1);

xr[0][0]=xc[0][0]+p*(xc[0][0]-x3[0][0]);

xr[1][0]=xc[1][0]+p*(xc[1][0]-x3[1][0]);

xb_xh=4;

break;}}

intke_xr(void)

{if((30*1.0/(xr[0][0]*pow(xr[1][0],3))-50)<=0){

if((0.0004*xr[0][0]*xr[1][0]-0.001)<=0)

if(2<=xr[0][0]&&xr[0][0]<=4)

if(0.5<=xr[1][0]&&xr[1][0]<=1)return1;}

elsereturn0;}

四、实验结果(要求附上程序运行结果截图)

 

五、手算过程

计算初始复合形各顶点的值

f(X1)=68.3f(X2)=48.2

f(X3)=35.0f(X4)=26.0

坏点X(H)=X1好点X(L)=X4

去掉坏点后各点的几何中心X(C)

X(C)=[2.6,0.65]取映射α=1.3

映射X(R)=X(C)+α(X(C)-X(H))=[2.82,0.78]

将映射点代入约束条件验证

0.0004*2.82*0.78-0.001=-0.0001202<0

满足约束条件

X(R)=[2.82,0.78]是新的复合形顶点

最优点为X(R)=[3.12,0.78]

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2