复合形法作业

合集下载

现代设计黄金分割法、复合形法实验报告

现代设计黄金分割法、复合形法实验报告

《现代设计理论与方法》实验报告一、实验目的机械优化设计是一门实践性较强的课程,学生通过实际上机计算可以达到以下目的:1.加深对机械优化设计方法的基本理论和算法步骤的理解;2.培养学生独立编制或调试计算机程序的能力;3.掌握常用优化方法程序的使用方法;4.培养学生灵活运用优化设计方法解决工程实际问题的能力。

二、实验项目、学时分配及对每个实验项目的要求序号实验项目学时实验要求1 黄金分割法2 1.明确黄金分割法基本原理、计算步骤及程序框图;2.编制或调试黄金分割法应用程序;3.用测试题对所编程序进行测试;4.撰写实验报告。

2 复合形法41.明确复合形法基本原理、计算步骤及程序框图等;2.编制或调试复合形法应用程序;3.用测试题对所编程序进行测试;4.撰写实验报告。

三、测试题1.黄金分割法程序测试题1) ,取,,程序如下:#include<stdio.h>#include<conio.h>#include<math.h>#define e 0.00001#define tt 0.01float function(float x){float y=pow(x,2)-10*x+36;//求解的一维函数 return(y);}void finding(float a[3],float f[3]){float t=tt,a1,f1,ia;int i;a[0]=0;//初始区间的下界值f[0]=function(a[0]);for(i=0;;i++){a[1]=a[0]+t;f[1]=function(a[1]);if(f[1]<f[0]) break;if(fabs(f[1]-f[0])>=e){t=-t;a[0]=a[1];f[0]=f[1];}else{if(ia==1) return;t=t/2;ia=1;}}for(i=0;;i++){a[2]=a[1]+t;f[2]=function(a[2]);if(f[2]>f[1]) break;t=2*t;a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];}if(a[0]>a[2]){a1=a[0];f1=f[0];a[0]=a[2];f[0]=f[2];a[2]=a1;f[2]=f1;}return;}float gold(float *ff){float a1[3],f1[3],a[4],f[4];float aa;int i;finding(a1,f1);a[0]=a1[0];f[0]=f1[0];a[3]=a1[2];f[3]=f1[2];a[1]=a[0]+0.382*(a[3]-a[0]);a[2]=a[0]+0.618*(a[3]-a[0]);f[1]=function(a[1]);f[2]=function(a[2]);for(i=0;;i++){if(f[1]>=f[2]){a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];a[2]=a[0]+0.618*(a[3]-a[0]);f[2]=function(a[2]);}else{a[3]=a[2];f[3]=f[2];a[2]=a[1];f[2]=f[1];a[1]=a[0]+0.382*(a[3]-a[0]);f[1]=function(a[1]);}if((a[3]-a[0])<e){aa=(a[1]+a[2])/2;*ff=function(aa);break;}}return(aa);}void main(){float xx, ff;xx=gold(&ff);printf("\n The Optimal Design Result Is:\n"); printf("\n\tx*=%f\n\tf*=%f", xx, ff);getch();}运行结果:2) ,取,,程序如下:#include<stdio.h>#include<conio.h>#include<math.h>#define e 0.00001#define tt 0.01float function(float x){float y=pow(x,4)-5*pow(x,3)+4*pow(x,2)-6*x+60;//求解的一维函数 return(y);}void finding(float a[3],float f[3]){float t=tt,a1,f1,ia;int i;a[0]=0;//初始区间的下界值f[0]=function(a[0]);for(i=0;;i++){a[1]=a[0]+t;f[1]=function(a[1]);if(f[1]<f[0]) break;if(fabs(f[1]-f[0])>=e){t=-t;a[0]=a[1];f[0]=f[1];}else{if(ia==1) return;t=t/2;ia=1;}}for(i=0;;i++){a[2]=a[1]+t;f[2]=function(a[2]); if(f[2]>f[1]) break;t=2*t;a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];}if(a[0]>a[2]){a1=a[0];f1=f[0];a[0]=a[2];f[0]=f[2];a[2]=a1;f[2]=f1;}return;}float gold(float *ff){float a1[3],f1[3],a[4],f[4];float aa;int i;finding(a1,f1);a[0]=a1[0];f[0]=f1[0];a[3]=a1[2];f[3]=f1[2];a[1]=a[0]+0.382*(a[3]-a[0]);a[2]=a[0]+0.618*(a[3]-a[0]);f[1]=function(a[1]);f[2]=function(a[2]);for(i=0;;i++){if(f[1]>=f[2]){a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];a[2]=a[0]+0.618*(a[3]-a[0]);f[2]=function(a[2]);}else{a[3]=a[2];f[3]=f[2];a[2]=a[1];f[2]=f[1];a[1]=a[0]+0.382*(a[3]-a[0]);f[1]=function(a[1]);}if((a[3]-a[0])<e){aa=(a[1]+a[2])/2;*ff=function(aa);break;}}return(aa);}void main(){float xx, ff;xx=gold(&ff);printf("\n The Optimal Design Result Is:\n");printf("\n\tx*=%f\n\tf*=%f", xx, ff);getch();}运行结果如下:3) ,其中,取,,程序如下:#include<stdio.h>#include<conio.h>#include<math.h>#define e 0.00001#define tt 0.01float function(float x){float y=(x+1)*pow((x-2),2);//求解的一维函数return(y);}void finding(float a[3],float f[3]){float t=tt,a1,f1,ia;int i;a[0]=0;//初始区间的下界值f[0]=function(a[0]);for(i=0;;i++){a[1]=a[0]+t;f[1]=function(a[1]); if(f[1]<f[0]) break;if(fabs(f[1]-f[0])>=e){t=-t;a[0]=a[1];f[0]=f[1];}else{if(ia==1) return;t=t/2;ia=1;}}for(i=0;;i++){a[2]=a[1]+t;f[2]=function(a[2]); if(f[2]>f[1]) break;t=2*t;a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];}if(a[0]>a[2]){a1=a[0];f1=f[0];a[0]=a[2];f[0]=f[2];a[2]=a1;f[2]=f1;}return;}float gold(float *ff){float a1[3],f1[3],a[4],f[4];float aa;int i;finding(a1,f1);a[0]=a1[0];f[0]=f1[0];a[3]=a1[2];f[3]=f1[2];a[1]=a[0]+0.382*(a[3]-a[0]);a[2]=a[0]+0.618*(a[3]-a[0]);f[1]=function(a[1]);f[2]=function(a[2]);for(i=0;;i++){if(f[1]>=f[2]){a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];a[2]=a[0]+0.618*(a[3]-a[0]);f[2]=function(a[2]);}else{a[3]=a[2];f[3]=f[2];a[2]=a[1];f[2]=f[1];a[1]=a[0]+0.382*(a[3]-a[0]);f[1]=function(a[1]);}if((a[3]-a[0])<e){aa=(a[1]+a[2])/2;*ff=function(aa);break;}}return(aa);}void main(){float xx, ff;xx=gold(&ff);printf("\n The Optimal Design Result Is:\n"); printf("\n\tx*=%f\n\tf*=%f", xx, ff);getch();}运行结果如下:2.复合形法程序测试题1)取:程序如下:#include "math.h"#include "stdio.h"#include "stdlib.h"#define E1 0.001#define ep 0.00001#define n 2#define k 4double af;int i,j;double X0[n],XX[n],X[k][n],FF[k];double a[n],b[n];double rm=2657863.0;double F(double C[n]){double F;F=pow(C[0]-2,2)+pow(C[1]-1,2);return F;}int cons(double D[n]){if((D[1]-pow(D[0],2)>=0)&&((2-D[0]-D[1])>=0)) return 1;elsereturn 0;}void bou(){a[0]=-5,b[0]=6;a[1]=-5,b[1]=8;}double r(){double r1,r2,r3,rr;r1=pow(2,35);r2=pow(2,36);r3=pow(2,37);rm=5*rm; if(rm>=r3){rm=rm-r3;}if(rm>=r2){rm=rm-r2;}if(rm>=r1){rm=rm-r1;}rr=rm/r1;return rr;}void produce(double A[n],double B[n]){int jj;double S;s1: for(i=0;i<n;i++){S=r();XX[i]=A[i]+S*(B[i]-A[i]);}if(cons(XX)==0){goto s1;}for(i=0;i<n;i++){X[0][i]=XX[i];}for(j=1;j<k;j++){for(i=0;i<n;i++){S=r();X[j][i]=A[i]+S*(B[i]-A[i]);}}for(j=1;j<k;j++){for(i=0;i<n;i++){X0[i]=0;for(jj=1;jj<j+1;jj++){X0[i]+=X[jj][i];}X0[i]=(1/j)*(X0[i]);}if(cons(X0)==0){goto s1;}for(i=0;i<n;i++){XX[i]=X[j][i];}while(cons(XX)==0){for(i=0;i<n;i++){X[j][i]=X0[i]+0.5*(X[j][i]-X0[i]); XX[i]=X[j][i];}}}}main(){double EE,Xc[n],Xh[n],Xg[n],Xl[n],Xr[n],Xs[n],w; int l,lp,lp1;bou();s111:produce(a,b);s222:for(j=0;j<k;j++){for(i=0;i<n;i++){XX[i]=X[j][i];}FF[j]=F(XX);}for(l=0;l<k-1;l++){for(lp=0;lp<k-1;lp++){lp1=lp+1;if(FF[lp]<FF[lp1]){w=FF[lp];FF[lp]=FF[lp1];FF[lp1]=w;for(i=0;i<n;i++){XX[i]=X[lp][i];X[lp][i]=X[lp1][i];X[lp1][i]=XX[i]; }}}}for(i=0;i<n;i++){Xh[i]=X[0][i];Xg[i]=X[l][i];Xl[i]=X[k-1][i];}for(i=0;i<n;i++){Xs[i]=0;for(j=0;j<k;j++){Xs[i]+=X[j][i];}Xs[i]=1/(k+0.0)*Xs[i];}EE=0;for(j=0;j<k;j++){EE+=pow((FF[j]-F(Xs)),2); }EE=pow((1/(k+0.0)*EE),0.5); if(EE<=E1){goto s333;}for(i=0;i<n;i++){Xc[i]=0;for(j=1;j<k;j++){Xc[i]+=X[j][i];}Xc[i]=1/(k-1.0)*Xc[i]; }if(cons(Xc)==1){af=1.3;ss:for(i=0;i<n;i++){Xr[i]=Xc[i]+af*(Xc[i]-Xh[i]); }if(cons(Xr)==1){if(F(Xr)>=F(Xh)){if(af<=ep){for(i=0;i<n;i++){Xh[i]=Xg[i];}af=1.3;goto ss;}else{af=1/2.0*af;goto ss;}}else{for(i=0;i<n;i++){X[0][i]=Xr[i];}goto s222;}}else{af=1/2.0*af;goto ss;}}else{for(i=0;i<n;i++){if(Xl[i]<Xc[i]){a[i]=Xl[i];b[i]=Xc[i];}else{a[i]=Xc[i];b[i]=Xl[i];}}goto s111;}s333:printf("F(Xmin)=%f\n",F(Xl));for(i=0;i<n;i++){printf("\n The X%d is %f.",i,Xl[i]); }}运行结果如下:2)取:程序如下:#include "math.h"#include "stdio.h"#include "stdlib.h"#define E1 0.001#define ep 0.00001#define n 4#define k 6double af;int i,j;double X0[n],XX[n],X[k][n],FF[k];double a[n],b[n];double rm=2657863.0;double F(double C[n]){double F;F=100*pow(C[1]-C[0],2)+pow(1-C[0],2)+90*pow(C[3]-(pow(C[2],2)),2)+pow(1-C[2],2)+10*(pow(C[0]-1,2)+pow(C[3]-1,2))+19.8*(C[1]-1)*(C[3]-1);return F;}int cons(double D[n]){if((D[0]>=-10)&&(D[1]>=-10)&&(D[2]>=-10)&&(D[3]>=-10)&&(D[0]<=10)&&(D[1]<=10)&&(D[2]<=10)&&(D[3]<=10))return 1;elsereturn 0;}void bou(){a[0]=-10,b[0]=10;a[1]=-10,b[1]=10;a[2]=-10,b[2]=10;a[3]=-10,b[3]=10;}double r(){double r1,r2,r3,rr;r1=pow(2,35);r2=pow(2,36);r3=pow(2,37);rm=5*rm;if(rm>=r3){rm=rm-r3;}if(rm>=r2){rm=rm-r2;}if(rm>=r1){rm=rm-r1;}rr=rm/r1;return rr;}void produce(double A[n],double B[n]){int jj;double S;s1: for(i=0;i<n;i++){S=r();XX[i]=A[i]+S*(B[i]-A[i]);}if(cons(XX)==0){goto s1;}for(i=0;i<n;i++){X[0][i]=XX[i];}for(j=1;j<k;j++){for(i=0;i<n;i++){S=r();X[j][i]=A[i]+S*(B[i]-A[i]); }}for(j=1;j<k;j++){for(i=0;i<n;i++){X0[i]=0;for(jj=1;jj<j+1;jj++){X0[i]+=X[jj][i];}X0[i]=(1/j)*(X0[i]);}if(cons(X0)==0){goto s1;}for(i=0;i<n;i++){XX[i]=X[j][i];}while(cons(XX)==0){for(i=0;i<n;i++){X[j][i]=X0[i]+0.5*(X[j][i]-X0[i]);XX[i]=X[j][i];}}}}main(){double EE,Xc[n],Xh[n],Xg[n],Xl[n],Xr[n],Xs[n],w; int l,lp,lp1;bou();s111:produce(a,b);s222:for(j=0;j<k;j++){for(i=0;i<n;i++){XX[i]=X[j][i];}FF[j]=F(XX);}for(l=0;l<k-1;l++){for(lp=0;lp<k-1;lp++){lp1=lp+1;if(FF[lp]<FF[lp1]){w=FF[lp];FF[lp]=FF[lp1];FF[lp1]=w;for(i=0;i<n;i++){XX[i]=X[lp][i];X[lp][i]=X[lp1][i];X[lp1][i]=XX[i]; }}}}for(i=0;i<n;i++){Xh[i]=X[0][i];Xg[i]=X[l][i];Xl[i]=X[k-1][i];}for(i=0;i<n;i++){Xs[i]=0;for(j=0;j<k;j++){Xs[i]+=X[j][i];}Xs[i]=1/(k+0.0)*Xs[i];}EE=0;for(j=0;j<k;j++){EE+=pow((FF[j]-F(Xs)),2);}EE=pow((1/(k+0.0)*EE),0.5);if(EE<=E1){goto s333;}for(i=0;i<n;i++){Xc[i]=0;for(j=1;j<k;j++){Xc[i]+=X[j][i];}Xc[i]=1/(k-1.0)*Xc[i];}if(cons(Xc)==1){af=1.3;ss:for(i=0;i<n;i++){Xr[i]=Xc[i]+af*(Xc[i]-Xh[i]); }if(cons(Xr)==1){if(F(Xr)>=F(Xh)){if(af<=ep){for(i=0;i<n;i++){Xh[i]=Xg[i];}af=1.3;goto ss;}else{af=1/2.0*af;goto ss;}}else{for(i=0;i<n;i++){X[0][i]=Xr[i];}goto s222;}}else{af=1/2.0*af;goto ss;}}else{for(i=0;i<n;i++){if(Xl[i]<Xc[i]){a[i]=Xl[i];b[i]=Xc[i];}else{a[i]=Xc[i];b[i]=Xl[i];}}goto s111;}s333:printf("F(Xmin)=%f\n",F(Xl));for(i=0;i<n;i++){printf("\n The X%d is %f.",i,Xl[i]); }}运行结果下:3)取:程序如下:#include "math.h"#include "stdio.h"#include "stdlib.h"#define E1 0.001#define ep 0.00001#define n 2#define k 4double af;int i,j;double X0[n],XX[n],X[k][n],FF[k];double a[n],b[n];double rm=2657863.0;double F(double C[n]){double F;F=pow(C[0],2)+pow(C[1],2)-C[0]*C[1]-10*C[0]-4*C[1]+60; return F;}int cons(double D[n]){if((D[0]>=0)&&(D[1]>=0)&&(6-D[0]>=0)&&(8-D[1]>=0)) return 1;elsereturn 0;}void bou(){a[0]=0,b[0]=6;a[1]=0,b[1]=8;}double r(){double r1,r2,r3,rr;r1=pow(2,35);r2=pow(2,36);r3=pow(2,37);rm=5*rm;if(rm>=r3){rm=rm-r3;}if(rm>=r2){rm=rm-r2;}if(rm>=r1){rm=rm-r1;}rr=rm/r1;return rr;void produce(double A[n],double B[n]) {int jj;double S;s1: for(i=0;i<n;i++){S=r();XX[i]=A[i]+S*(B[i]-A[i]);}if(cons(XX)==0){goto s1;}for(i=0;i<n;i++){X[0][i]=XX[i];}for(j=1;j<k;j++){for(i=0;i<n;i++){S=r();X[j][i]=A[i]+S*(B[i]-A[i]);}}for(j=1;j<k;j++){for(i=0;i<n;i++){X0[i]=0;for(jj=1;jj<j+1;jj++){X0[i]+=X[jj][i];X0[i]=(1/j)*(X0[i]);}if(cons(X0)==0){goto s1;}for(i=0;i<n;i++){XX[i]=X[j][i];}while(cons(XX)==0){for(i=0;i<n;i++){X[j][i]=X0[i]+0.5*(X[j][i]-X0[i]);XX[i]=X[j][i];}}}}main(){double EE,Xc[n],Xh[n],Xg[n],Xl[n],Xr[n],Xs[n],w; int l,lp,lp1;bou();s111:produce(a,b);s222:for(j=0;j<k;j++){for(i=0;i<n;i++){XX[i]=X[j][i];FF[j]=F(XX);}for(l=0;l<k-1;l++){for(lp=0;lp<k-1;lp++){lp1=lp+1;if(FF[lp]<FF[lp1]){w=FF[lp];FF[lp]=FF[lp1];FF[lp1]=w;for(i=0;i<n;i++){XX[i]=X[lp][i];X[lp][i]=X[lp1][i];X[lp1][i]=XX[i]; }}}}for(i=0;i<n;i++){Xh[i]=X[0][i];Xg[i]=X[l][i];Xl[i]=X[k-1][i];}for(i=0;i<n;i++){Xs[i]=0;for(j=0;j<k;j++){Xs[i]+=X[j][i];}Xs[i]=1/(k+0.0)*Xs[i];}EE=0;for(j=0;j<k;j++){EE+=pow((FF[j]-F(Xs)),2);}EE=pow((1/(k+0.0)*EE),0.5);if(EE<=E1){goto s333;}for(i=0;i<n;i++){Xc[i]=0;for(j=1;j<k;j++){Xc[i]+=X[j][i];}Xc[i]=1/(k-1.0)*Xc[i];}if(cons(Xc)==1){af=1.3;ss:for(i=0;i<n;i++){Xr[i]=Xc[i]+af*(Xc[i]-Xh[i]); }if(cons(Xr)==1){if(F(Xr)>=F(Xh)){if(af<=ep){for(i=0;i<n;i++){Xh[i]=Xg[i];}af=1.3;goto ss;}else{af=1/2.0*af;goto ss;}}else{for(i=0;i<n;i++){X[0][i]=Xr[i];}goto s222;}}else{af=1/2.0*af;goto ss;}}else{for(i=0;i<n;i++){if(Xl[i]<Xc[i]){a[i]=Xl[i];b[i]=Xc[i];} else{a[i]=Xc[i];b[i]=Xl[i];}}goto s111;}s333:printf("F(Xmin)=%f\n",F(Xl));for(i=0;i<n;i++){printf("\n The X%d is %f.",i,Xl[i]);}}运行结果如下:四、实验心得与体会1.通过本次实验熟悉了黄金分割法与复合形法上机步骤。

复合形法求解大型河网的糙率参数

复合形法求解大型河网的糙率参数

复合形法求解大型河网的糙率参数大型河网是由许多支流和支流之间的汇流组成的复杂河流系统。

在对大型河网进行流量计算和水力分析时,糙率参数是非常重要的。

糙率参数是用来描述河流水面和河床之间的摩擦阻力的,对于准确计算流量和水力特征具有重要影响。

复合形法是一种常用的求解大型河网糙率参数的方法,该方法通过河道截面形状的特征来估计糙率参数。

下面我们将详细介绍复合形法的原理和步骤。

复合形法的原理基于复合形数的概念。

复合形数是通过测量河道截面的几何特征计算得到的一个标量,可以用来估计糙率参数。

复合形数可以表示河道横截面形状的复杂程度,通常情况下与糙率参数呈线性关系。

复合形数的计算可以通过以下几个步骤来完成:1.测量河床几何特征:首先,需要在大型河网的不同截面位置进行测量,测量的参数包括河床宽度、河床深度和河床边坡等几何特征。

2.计算截面面积和湿周:根据测量得到的河道几何特征,可以计算每个截面的截面面积和湿周。

截面的面积是河道横截面与水面之间的部分的面积,湿周是截面与水面之间的边界线的长度。

3.计算复合形数:根据截面的面积和湿周,可以计算每个截面的复合形数。

复合形数可以使用以下公式来计算:C=宽度^4/(面积*湿周^2)4.建立复合形数与糙率参数的关系:针对大型河网的多个截面位置,可以计算得到不同复合形数的值。

然后,根据复合形数和已知的实测糙率参数的数据,可以建立复合形数与糙率参数之间的关系,可以使用回归分析等方法来拟合这个关系。

5.估计未知糙率参数:根据已建立的复合形数和糙率参数的关系模型,可以通过测量得到的复合形数的值来估计未知的糙率参数。

需要注意的是,在使用复合形法进行糙率参数估计时,需要保证测量的数据准确和可靠。

此外,复合形法的精度也取决于所建立的复合形数与糙率参数关系模型的准确性。

综上所述,复合形法是一种常用的求解大型河网糙率参数的方法。

通过测量河道截面的几何特征,计算复合形数,并建立复合形数与糙率参数的关系模型,可以估计大型河网的糙率参数。

英语语法 什么是动词的复合形式

英语语法 什么是动词的复合形式

英语语法什么是动词的复合形式在英语语法中,动词的复合形式(compound forms)是由一个助动词(auxiliary verb)和一个主要动词(main verb)组成的动词结构。

这种结构的形式可以是时态、语态、情态动词和完成时等。

下面将详细介绍动词的不同复合形式。

1. 时态复合形式:a. 现在进行时:由助动词"be"和主要动词的现在分词形式构成,表示现在正在进行的动作。

- She is studying for her exam.(她正在为考试而学习。

)- They are playing soccer in the park.(他们正在公园里踢足球。

)b. 过去进行时:由助动词"be"的过去式和主要动词的现在分词形式构成,表示过去某个时间点正在进行的动作。

- He was reading a book when I called him.(当我给他打电话时,他正在看书。

)- We were watching a movie last night.(昨晚我们正在看电影。

)c. 现在完成时:由助动词"have"和主要动词的过去分词形式构成,表示过去发生的动作对现在的影响或结果。

- I have finished my homework.(我已经完成了我的作业。

)- They have traveled to many countries.(他们已经去过很多国家。

)2. 语态复合形式:a. 被动语态:由助动词"be"的不同时态形式和主要动词的过去分词形式构成,表示动作的接受者或受事者。

- The letter was written by John.(这封信是约翰写的。

)- The book will be published next month.(这本书将在下个月出版。

)3. 情态动词复合形式:a. 情态动词+动词原形:由情态动词和动词的原形构成,表示能力、许可、可能性等。

16-复合形法

16-复合形法

所以,坏点
,好点 。 X (H ) X (2)
X (L) X (1)
3、去掉坏点的其余各顶点的几何中心
X (C)
K
X ( j)
j 1
K 1
2 1
Байду номын сангаас
3 3
31
2.5 2.0
( j 2)
取映射系数 1.3 ,计算映射点
X
(R)
X
(C)
(X
(C)
X
(H) )
2.5 2.0
1.3
2.5 2.0
如果映射点的函数值小于坏点的函数值,以 映射点取代坏点,构成新的复合形。如此反 复迭代计算,当满足迭代精度时,输出最后 复合形的好点作为最优点 X * X (L) 。
复合形法迭代方法
复合形法的特点
复合形法对目标函数和约束函数的形态没有特 殊要求,迭代过程简单易懂,使用方便,处理 小型问题比较有效。但是随着设计变量和约束 条件的增加,复合形法的收敛速度显著变慢。
5.2 复合形法
在 n 维设计空间可行域内,选择 K 个设计点
构成初始复合形的顶点,比较复合形各个顶 点的函数值,其中函数值最大的点为坏点 X (H) , 函数值最小的点为好点 X (L) 。以去掉坏点后的 复合形其余各顶点几何中心为映射中心 X (C) , 计算坏点的映射点
X (R) X (C) (X (C) X (H ) )
X (1) , X (2) , X (3) , X (Q) 的点集中心 Q X ( j) X (D) i1 Q
再将非可行顶点 X (Q1) 向点集中心 X (D) 方向推 进,产生新点
X (Q1) X (D) 0.5( X (Q1) X (D) )

福师《现代汉语(一)》在线作业二【标准答案】

福师《现代汉语(一)》在线作业二【标准答案】

福师《现代汉语(一)》在线作业二-0010
试卷总分:100 得分:100
一、单选题 (共 10 道试题,共 20 分)
1.一般说来,区别同义词应注意____方面的差别。

A.意义方面的差别
B.色彩方面的差别
C.语法功能方面的差别
D.语法结构方面的差别
答案:D
2.____是语音结构的基本单位,也是自然感到的最小的语音片段。

A.音素
B.音节
C.声母
D.韵母
答案:B
3.狭义现代汉语指():
A.现代汉民族的各种方言
B.普通话
C.普通话和现代汉民族的各种方言
D.音义结合的符号系统
答案:B
4.下列词语中属于补充型的合成词是()
A.月亮
B.摧毁
C.放牧
D.面熟
答案:B
5.以下不属于译音词的是____
A.雷达
B.戈壁
C.扑克
D.啤酒
答案:D
6.前一词根表示被陈述的对象,后一词根表示陈述的情况。

这类合成词的构造方式称为()。

A.偏正型
B.动宾型
C.动补型
D.主谓型。

复合形法matlab程序及例题

复合形法matlab程序及例题

复合形法matlab程序及例题一、复合形法简介复合形法是一种求解非线性规划问题的方法,该方法由李连达在20世纪60年代发明,曾被广泛应用于实际生产中的工程问题。

该方法是通过构造不同大小和形状的简单多面体来搜索解决方案空间。

根据目标函数的变化趋势,复合形方法可以根据前一个顶点的坐标来确定新顶点,从而得到更好的解。

二、复合形法MATLAB程序1. 复合形法MATLAB基本编写格式:function [x,fval,exitflag,output] =fminsearch(fun,x0,options)Example:fun = @bivarfcn;[x,fval] = fminsearch(fun,[0,0])2. 复合形函数matlab代码展示:function[xmin,fval]=simplex(func,x)[n,m] = size(x);if n ~= m, error('x must be square!'); endx=[x eye(n)];y = feval(func,x(:,1));xlim = y;for j=2:n+1y = feval(func,x(:,j));if y < xlim, xlim = y; imin = j-1; endendxmax = y;for j=2:n+1y = feval(func,x(:,j));if y > xmax, xmax = y; kmax = j-1; endendfor i=1:10000xc = (sum(x(:,1:n),2)-x(:,n+1))/n;xr = 2*xc-x(:,n+1);yr = feval(func,xr);if yr < xlimxe = 3*xc-2*x(:,n+1);ye = feval(func,xe);if ye < yr, x(:,kmax+1) = xe; else x(:,kmax+1) = xr; endelseif yr < xmax x(:,kmax+1) = xr;xnew = (x(:,imin+1)+xc)/2; ynew = feval(func,xnew);if ynew < x(:,n+1) x(:,kmax+1) = xnew;else for j=1:n+1, if j ~= imin+1, x(:,j) = (x(:,j)-x(:,imin+1))/2+x(:,imin+1); end; end; endy = feval(func,x(:,1)); xlim = y; imin = 0;for j=2:n+1, y = feval(func,x(:,j)); if y < xlim, xlim = y; imin = j-1;end; end; xmax = y; for j=2:n+1, y = feval(func,x(:,j)); if y > xmax, xmax =y; kmax = j-1; end; end;endxmin = x(:,imin+1); fval = feval(func,xmina)3. 复合形法MATLAB例题:已知一个函数f(x1,x2)=-(1.4-x1^2)*(2.1-x2^2),求解f(x1,x2)的最小值以及使f(x1,x2)最小的点。

机械优化设计-复合型法

机械优化设计-复合型法
double a[]={0,0},b[]={10,20},f,x[2],xcom[2][100];
comple(2,3,3,0.00001,x,a,b,xcom,&f);
printf(" \n\n\n输出最优解及目标函数值:\n");
printf("\n x1=%.5f x2=%.5f f(x1,x2)=%.5f\n\n ",x[0],x[1],f);
(一)题目:用复合形法求约束优化问题
; ; 的最优解。
基本思路:在可行域中构造一个具有K个顶点的初始复合形。对该复合形各顶点的目标函数值进行比较,找到目标函数值最大的顶点(即最坏点),然后按一定的法则求出目标函数值有所下降的可行的新点,并用此点代替最坏点,构成新的复合形,复合形的形状每改变一次,就向最优点移动一步,直至逼近最优点。
{
xs=0;
for(l=0;l<ll;l++)
{
if(l!=lΒιβλιοθήκη )xs=xs+xcom[i][l];
}
if(lh>-1)
x0[i]=xs/(ll-1);
else
x0[i]=xs/ll;
}
}
void fxse(int n,int k,double x[],double xcom[][100],double fxk[])
iw=gau(x,g,kg);
if(iw==0)
goto s5;
for(i=0;i<n;i++)
xcom[i][0]=x[i];
for(l=1;l<k;l++)
for(i=0;i<n;i++)

复合形法

复合形法

!* 说明: 1.本程序为复合形法*!**!* 2.程序功能是求解约束最优化问题*!* max F(x1,x2,…,xn)*!* s.t. Gi≤xi≤Hi*!* 其中x1,x2,…,xn为独立自变量,*!* xn+1~xm为隐式变量,是x1,x2,…,xn的函数,Gi,Hi为下界和上界,它们可以是常数(显式约束),*!* 也可以是自变量的函数(隐式约束)*!* 主程序中提供自变量的初始值,输入已知参数及打印最后结果*!**!* 3.输入变量说明*!* N--显式自变量数*!* M--约束组数*!* K--构成复合形的顶点数,常用N+1,可多取*!* ITMAX--允许最多迭代次数*!* IPRINT--打印控制参数,IPRINT=1,打印中间结果,IPRINT=0,不打印中间结果*!* ALPHA--反射因子,常用1.3*!* BETA--收敛参数,例如函数的幅值乘1E-4*!* GAMMA--收敛参数,整数,常用值为5*!* DELTA--显式约束违反校正,小正数,如X向量幅值乘1E-4*!* X(1,J)--自变量初始可行点,=1,N*!**!* 4.输出变量说明*!* F--目标函数最大值勤*!* X(I)--自变量最优值,I=1,N*!**!* 5.使用方法*!* 1)用户按照待解问题修改主程序PARAMETER的N,M,K值*!* 2)在子程序FUNC中给定目标函数*!* 3)在子程序CONST中给定Hi和Gi,显式约束必须放在隐式约束前面*!* 4)编写一个数据文件COMPDAT,文件中的数据依次为下列变量的值,每个数之间用逗号分开*!* ITMAX,IPRINT,ALPHA,BETA,GAMMA,DELTA,X(1,1),X(1,2),…,X(1,N)*!* 6.程序内容*!* 1)本程序由一个主程序和六个子程序组成,主程序首先给定N,M,K值,然后定义数组维数*!* PARAMETER(N=,M=,K=)*!* DIMENSION X(K,M),R(K,N),F(K),G(M),H(M),XC(N)*!* 主程序中提供自变量的初始值,输入已知参数及打印最后结果面*!* 2)各子程序的作用分别为了*!* CONSX—这是一个主要子程序,调用其它于程序及输出中间结果*!* CHECK—检查所有的点是否满足约束条件,对违背约束的点进行校正*!* CENTR—计算中心点*!* FUNC —目标函数,由用户提供*!* CONST—规定显式和隐式约束*!* RANDU—产生随机数*!**************************************************************************************************** ******PROGRAM COMPLEXPARAMETER(N=3,M=4,K=6)DIMENSION X(K,M),R(K,N),F(K),G(M),H(M),XC(N)INTEGER GAMMAOPEN(4,FILE='COMPDATA')READ(4,*)ITMAX,IPRINT,ALPHA,BETA,GAMMA,DELTAREAD(4,*)(X(1,J),J=1,N)IX=2097151YFL=0.DO 100 II=2,KDO 100 JJ=1,NCALL RANDU(IX,YFL)R(II,JJ)=YFL100 CONTINUEOPEN(2,FILE='COMPDAT.OUT',STATUS='UNKNOWN')WRITE(2,10)10 FORMAT(//,10X,'COMPLEX PROGRAM OF BOX')WRITE(2,11)N,M,K,ITMAX,IPRINT,ALPHA,BETA,GAMMA,DELTA11 FORMAT(//,2X,'N=',I2,3X,'M=',I2,3X,'K=',I2,3X,'ITMAX=',I4,&/,2X,'IPRINT=',I2,2X,'ALPHA=',F10.4,5X,'BETA=',F10.5,&/,2X,'GAMMA=',I2,2X,'DELTA=',F10.5)IF(IPRINT)40,50,4040 WRITE(2,12)12 FORMAT(//,2X,'RANDOM NUMBERS')DO 200 J=2,KWRITE(2,13)(J,I,R(J,I),I=1,N)13 FORMAT(/,3(2X,'R(',I2,',',I2,')=',F6.4,2X))200 CONTINUE50 CALLCONSX(N,M,K,ITMAX,ALPHA,BETA,GAMMA,DELTA,X,R,F,IT,IEV2,G,H,XC,IPRINT)IF(IT-ITMAX)20,20,3020 WRITE(2,14)F(IEV2)14 FORMAT(/,2X,'FINAL VALUE OF THE FUNCTION=',E16.8)WRITE(2,15)15 FORMAT(/,2X,'FINAL X VALUES')DO 300 J=1,NWRITE(2,16)J,X(IEV2,J)16 FORMAT(/,2X,'X(',I2,')=',E20.8)300 CONTINUEGOTO 99930 WRITE(2,17)ITMAX17 FORMAT(/,2X,'THE NUMBER OF ITERATIONS HASEXCEEDED',I4,10X,'PROGRAM TERMINATED')999 STOPEND!*********************************************************************************************!* 这是一个主要子程序,调用其它于程序及输出中间结果*!********************************************************************************************* SUBROUTINECONSX(N,M,K,ITMAX,ALPHA,BETA,GAMMA,DELTA,X,R,F,IT,IEV2,G,H,XC,IPRINT) DIMENSION X(K,M),R(K,N),F(K),G(M),H(M),XC(N)INTEGER GAMMAIT=1KODE=0IF(M-N)20,20,1010 KODE=120 CONTINUEDO 40 II=2,KDO 30 J=1,N30 X(II,J)=0.040 CONTINUEDO 65 II=2,KDO 50 J=1,NI=IICALL CONST(N,M,K,X,G,H,I)X(II,J)=G(J)+R(II,J)*(H(J)-G(J))50 CONTINUEK1=IICALL CHECK(N,M,K,X,G,H,I,KODE,XC,DELTA,K1)IF(II-2)51,51,5551 IF(IPRINT)52,65,5252 WRITE(2,18)18 FORMAT(/,2X,'COORDINATES OF INITIAL COMPLEX')I0=1WRITE(2,19)(I0,J,X(I0,J),J=1,N)19 FORMAT(/,3(2X,'X(',I2,',',I2,')=',1PE13.6))55 IF(IPRINT)56,65,5656 WRITE(2,19)(II,J,X(II,J),J=1,N)65 CONTINUEK1=KDO 70 I=1,KCALL FUNC(N,M,K,X,F,I)70 CONTINUEKOUNT=1IA=0IF(IPRINT)72,80,7272 WRITE(2,21)21 FORMAT(/,2X,'VALUES OF THE FUNCTION')WRITE(2,22)(J,F(J),J=1,K)22 FORMAT(/,3(2X,'F(',I2,')=',E13.6))80 IEV1=1DO 100 ICM=2,KIF(F(IEV1)-F(ICM))100,100,9090 IEV1=ICM100 CONTINUEIEV2=1DO 120 ICM=2,KIF(F(IEV2)-F(ICM))110,110,120110 IEV2=ICM120 CONTINUEIF(F(IEV2)-(F(IEV1)+BETA))140,130,130130 KOUNT=1GOTO 150140 KOUNT=KOUNT+1IF(KOUNT-GAMMA)150,240,240! REPLACEMENT POINT WITH LOWEST FUNCTION VALUE150 CALL CENTR(N,M,K,IEV1,I,XC,X,K1)DO 160 JJ=1,N160 X(IEV1,JJ)=(1.+ALPHA)*(XC(JJ))-ALPHA*(X(IEV1,JJ))I=IEV1CALL CHECK(N,M,K,X,G,H,I,KODE,XC,DELTA,K1)CALL FUNC(N,M,K,X,F,I)! REPLACEMENT NEW POINT IF IT REPEATS AS LOWEST FUNCTION VALUE170 IEV2=1DO 190 ICM=2,KIF(F(IEV2)-F(ICM))190,190,180180 IEV2=ICM190 CONTINUEIF(IEV2-IEV1)220,200,220200 DO 210 JJ=1,NX(IEV1,JJ)=(X(IEV1,JJ)+XC(JJ))/2.210 CONTINUEI=IEV1CALL CHECK(N,M,K,X,G,H,I,KODE,XC,DELTA,K1)CALL FUNC(N,M,K,X,F,I)GOTO 170220 CONTINUEIF(IPRINT)230,228,230230 WRITE(2,23)IT23 FORMAT(//,2X,'ITERATION NUMBER',I5)WRITE(2,24)24 FORMAT(/,2X,'COORDINATES OF CORRECTED POINT')WRITE(2,19)(IEV1,JC,X(IEV1,JC),JC=1,N)WRITE(2,21)WRITE(2,22)(I,F(I),I=1,K)WRITE(2,25)25 FORMAT(/,2X,'COORDINATES OF CCENTROID')WRITE(2,26)(JC,XC(JC),JC=1,N)26 FORMAT(/,3(2X,'X(',I2,',C)=',E14.6,4X))228 IT=IT+1IF(IT-ITMAX)80,80,240240 RETURNEND!***********************************************************************************!* 检查所有的点是否满足约束条件,对违背约束的点进行校正。

机械优化设计-复合型法

机械优化设计-复合型法

机械优化设计实验报告(一) 题目:用复合形法求约束优化问题()()()2221645min -+-=x x x f ;06422211≤--=x x g ;01013≤-=x g 的最优解.基本思路:在可行域中构造一个具有K 个顶点的初始复合形.对该复合形各顶点的目标函数值进行比较,找到目标函数值最大的顶点(即最坏点),然后按一定的法则求出目标函数值有所下降的可行的新点,并用此点代替最坏点,构成新的复合形,复合形的形状每改变一次,就向最优点移动一步,直至逼近最优点。

(二) 复合形法的计算步骤 1)选择复合形的顶点数k ,一般取n k n 21≤≤+,在可行域内构成具有k 个顶点的初始复合形。

2)计算复合形个顶点的目标函数值,比较其大小,找出最好点x L 、最坏点x H 、及此坏点x G 。

. 3)计算除去最坏点x H 以外的(k-1)个顶点的中心x C .判别x C 是否可行,若x C 为可行点,则转步骤4);若x C 为非可行点,则重新确定设计变量的下限和上限值,即令C L x b x a ==,,然后转步骤1),重新构造初始复合形。

4)按式()H C C R x x x x -+=α计算反射点x R,必要时改变反射系数α的值,直至反射成功,即满足式()()()()H R R j x f x f m j x g <⋯⋯=≤;,2,1,0,。

然后x R以取代x H,构成新的复合形。

5)若收敛条件()()[]ε≤⎪⎭⎪⎬⎫⎩⎨⎧--∑=211211k j Lj x f x f k 得到满足,计算终止。

约束最优解为:()()L L x f x f x x ==*,*。

(三) 复合形法程序框图见下图:(四)源程序如下:#include〈math。

h〉double objfx(double x[]){double ff;ff=(x[0]—5)*(x[0]-5)+4*(x[1]-6)*(x[1]-6);return ff;}#include<stdio.h〉void main(){void comple(int n,int k,int kg,double ep,double x[],double bl[],double bu[],double xcom[][100],double *f);double a[]={0,0},b[]={10,20},f,x[2],xcom[2][100];comple(2,3,3,0。

五年级数学复合应用题试题答案及解析

五年级数学复合应用题试题答案及解析

五年级数学复合应用题试题答案及解析1.空调机厂原计划20天生产760台空调机,实际平均每天生产的台数是原来的1.25倍,______?可以提出的问题是()A、这批空调一共有多少台?B、生产这批空调实际用了多少天?C、实际每天生产多少台?【答案】BC【解析】略2.苹果园里共收苹果5.2吨,装入150千克的筐中,能装满( )只筐子;如果用一辆载重1.2吨的汽车来运,需( )次才能全部运走。

如果每千克苹果卖5.2元,那么买3.5千克需要付( )元。

【答案】34 5 18.2【解析】略3.张爷爷的果园今年收获了3600千克苹果,其中一半达到一级质量标准,另一半达到二级质量标准。

如果分等级出售,一级苹果每千克为5.6元,二级苹果为3.6元;如果不分等级出售,每千克为4.2元,你认为怎样出售比较划算?为什么?【答案】分等级出售:3600÷2×5.6+3600÷2×3.6=16560(元) 不分等级出售:3600×4.2=15120(元) 16560>15120 答:分等级出售比较划算,因为16560>15120。

【解析】略4.玩具店以每只13元的价格购进一批玩具,售价为14.8元。

卖到还剩20只时,除去购进这批玩具的全部开销外,还获利270元。

购进的这批玩具共有多少只?【答案】14.8-13=1.8(元) 270÷1.8=150(只) 150+20=170(只) 答:购进的这批玩具共有170只。

【解析】略5.小红、小燕和小月三人称体重,小红和小燕合称共重98.8千克,小月和小燕合称共重88.5千克。

小红比小月重( )千克。

【答案】10.3【解析】略6.阳阳的奶奶买了一瓶色拉油,连瓶共重5.12千克,用去一半油后连瓶共重2.62千克,原来这瓶油重多少千克?瓶重多少千克?【答案】5.12-2.62=2.5(千克) 2.5+2.5=5(千克)5.12-5=0.12(千克)答:原来这瓶油重5千克,瓶重0.12千克。

复合形法

复合形法

太原理工大学机械学院机测系课程上机实验报告课程名称:机械优化设计班级日期成绩评定姓名实验室老师签名实验名称用复合形法程序解题所用软件C++ DEV实验目的及内容实验目的:1.掌握并能够建立最优化基本类型问题的数学模型。

2.掌握最优化方法的基本概念、基本理论和基本方法,奠定最优化的理论基础。

3.能够熟练编制和调试最优化方法的程序,奠定解决实际中的优化问题的基础实验内容:理解复合形法并编写相关程序求其最优解。

1)2221)1()2()(min-+-=xxXF)(..2121≥-=xxXgt s2)(212≥--=xxXg取:321104]85[]65[-==-∈-∈εkxx实验原理:实验原理步骤、实验步骤:1,画流程图,编写程序;2,将目标函数代入;3,编译运行,将结果保存实验结果及分析**********复合形法计算结果**********本次优化的上下限为:a=[ -5.000, 6.000]b=[ -5.000, 8.000]初始复合形各顶点坐标及函数值:x( 0)=[ -5.0000000, 6.8509781], f( 0)= 83.2339449x( 1)=[ -5.0000000, 6.9139073], f( 1)= 83.9742994x( 2)=[ -5.0000000, 6.9560839], f( 2)= 84.4749350x( 3)=[ -5.0000000, 6.9535330], f( 3)= 84.4445555最低和最高顶点号:L= 0, H= 2复合形顶点值均方差:0.942570812迭代轮数k= 1x( 0)=[ -5.0000000, 6.8509781], f( 0)= 83.2339449x( 1)=[ -5.0000000, 6.9139073], f( 1)= 83.9742994x( 2)=[ -5.0000000, 6.8412118], f( 2)= 83.1197550x( 3)=[ -5.0000000, 6.9535330], f( 3)= 84.4445555最低和最高顶点号:L= 2, H= 3复合形顶点值均方差:0.790313540迭代轮数k= 2x( 0)=[ -5.0000000, 6.8509781], f( 0)= 83.2339449x( 1)=[ -5.0000000, 6.9139073], f( 1)= 83.9742994x( 2)=[ -5.0000000, 6.8412118], f( 2)= 83.1197550x( 3)=[ -5.0000000, 6.7584149], f( 3)= 82.1593422最低和最高顶点号:L= 3, H= 1复合形顶点值均方差: 1.158796098迭代轮数k= 3x( 0)=[ -5.0000000, 6.8509781], f( 0)= 83.2339449x( 1)=[ -5.0000000, 6.6907175],f( 1)= 81.3842661x( 2)=[ -5.0000000, 6.8412118], f( 2)= 83.1197550x( 3)=[ -5.0000000, 6.7584149], f( 3)= 82.1593422最低和最高顶点号:L= 1, H= 0复合形顶点值均方差: 1.326082257迭代轮数k= 4x( 0)=[ -5.0000000, 6.6496590], f( 0)= 80.9186469x( 1)=[ -5.0000000, 6.6907175], f( 1)= 81.3842661x( 2)=[ -5.0000000, 6.8412118], f( 2)= 83.1197550x( 3)=[ -5.0000000, 6.7584149], f( 3)= 82.1593422最低和最高顶点号:L= 0, H= 2复合形顶点值均方差: 1.284620848迭代轮数k= 5x( 0)=[ -5.0000000, 6.6496590], f( 0)= 80.9186469x( 1)=[ -5.0000000, 6.6907175], f( 1)= 81.3842661x( 2)=[ -5.0000000, 6.5154981], f( 2)= 79.4207197x( 3)=[ -5.0000000, 6.7584149], f( 3)= 82.1593422最低和最高顶点号:L= 2, H= 3复合形顶点值均方差: 1.843865066迭代轮数k= 6x( 0)=[ -5.0000000, 6.6496590], f( 0)= 80.9186469x( 1)=[ -5.0000000, 6.6907175], f( 1)= 81.3842661x( 2)=[ -5.0000000, 6.5154981], f( 2)= 79.4207197x( 3)=[ -5.0000000, 6.4368979], f( 3)= 78.5598586最低和最高顶点号:L= 3, H= 1复合形顶点值均方差: 1.889592676迭代轮数k= 7x( 0)=[ -5.0000000, 6.6496590], f( 0)= 80.9186469x( 1)=[ -5.0000000, 6.3303094], f( 1)= 77.4121981x( 2)=[ -5.0000000, 6.5154981], f( 2)= 79.4207197x( 3)=[ -5.0000000, 6.4368979], f( 3)= 78.5598586最低和最高顶点号:L= 1, H= 0复合形顶点值均方差: 2.100384836迭代轮数k= 8x( 0)=[ -5.0000000, 6.1388508], f( 0)= 75.4077872x( 1)=[ -5.0000000, 6.3303094], f( 1)= 77.4121981x( 2)=[ -5.0000000, 6.5154981], f( 2)= 79.4207197x( 3)=[ -5.0000000, 6.4368979], f( 3)= 78.5598586最低和最高顶点号:L= 0, H= 2复合形顶点值均方差: 2.741206122迭代轮数k= 9x( 0)=[ -5.0000000, 6.1388508], f( 0)= 75.4077872x( 1)=[ -5.0000000, 6.3303094], f( 1)= 77.4121981x( 2)=[ -5.0000000, 6.0244969], f( 2)= 74.2455693x( 3)=[ -5.0000000, 6.4368979], f( 3)= 78.5598586最低和最高顶点号:L= 2, H= 3复合形顶点值均方差: 2.738219360迭代轮数k= 10x( 0)=[ -5.0000000, 6.1388508], f( 0)= 75.4077872x( 1)=[ -5.0000000, 6.3303094], f( 1)= 77.4121981x( 2)=[ -5.0000000, 6.0244969], f( 2)= 74.2455693x( 3)=[ -5.0000000, 5.8105032], f( 3)= 72.1409408最低和最高顶点号:L= 3, H= 1复合形顶点值均方差: 3.274442715迭代轮数k= 11x( 0)=[ -5.0000000, 6.1388508], f( 0)= 75.4077872x( 1)=[ -5.0000000, 5.5505501], f( 1)= 69.7075064x( 2)=[ -5.0000000, 6.0244969], f( 2)= 74.2455693x( 3)=[ -5.0000000, 5.8105032], f( 3)= 72.1409408最低和最高顶点号:L= 1, H= 0复合形顶点值均方差: 3.840859862迭代轮数k= 12x( 0)=[ -5.0000000, 5.3484158], f( 0)= 67.9087203x( 1)=[ -5.0000000, 5.5505501], f( 1)= 69.7075064x( 2)=[ -5.0000000, 6.0244969], f( 2)= 74.2455693x( 3)=[ -5.0000000, 5.8105032], f( 3)= 72.1409408最低和最高顶点号:L= 0, H= 2复合形顶点值均方差: 3.914810890迭代轮数k= 13x( 0)=[ -5.0000000, 5.3484158], f( 0)= 67.9087203x( 1)=[ -5.0000000, 5.5505501], f( 1)= 69.7075064x( 2)=[ -5.0000000, 4.9787470], f( 2)= 64.8304278x( 3)=[ -5.0000000, 5.8105032], f( 3)= 72.1409408最低和最高顶点号:L= 2, H= 3复合形顶点值均方差: 4.655786221迭代轮数k= 14x( 0)=[ -5.0000000, 5.3484158], f( 0)= 67.9087203x( 1)=[ -5.0000000, 5.5505501], f( 1)= 69.7075064x( 2)=[ -5.0000000, 4.9787470], f( 2)= 64.8304278x( 3)=[ -5.0000000, 4.6192591], f( 3)= 62.0990368最低和最高顶点号:L= 3, H= 1复合形顶点值均方差: 4.977492567迭代轮数k= 15x( 0)=[ -5.0000000, 5.3484158], f( 0)= 67.9087203x( 1)=[ -5.0000000, 4.2432084], f( 1)= 59.5184005x( 2)=[ -5.0000000, 4.9787470], f( 2)= 64.8304278x( 3)=[ -5.0000000, 4.6192591], f( 3)= 62.0990368最低和最高顶点号:L= 1, H= 0复合形顶点值均方差: 5.130175009迭代轮数k= 16x( 0)=[ -5.0000000, 3.6586572], f( 0)= 56.0684582x( 1)=[ -5.0000000, 4.2432084], f( 1)= 59.5184005x( 2)=[ -5.0000000, 4.9787470], f( 2)= 64.8304278x( 3)=[ -5.0000000, 4.6192591], f( 3)= 62.0990368最低和最高顶点号:L= 0, H= 2复合形顶点值均方差: 5.591111034迭代轮数k= 17x( 0)=[ -5.0000000, 3.6586572], f( 0)= 56.0684582x( 1)=[ -5.0000000, 4.2432084], f( 1)= 59.5184005x( 2)=[ -5.0000000, 3.1271579], f( 2)= 53.5248005x( 3)=[ -5.0000000, 4.6192591], f( 3)= 62.0990368最低和最高顶点号:L= 2, H= 3复合形顶点值均方差: 5.383097686迭代轮数k= 18x( 0)=[ -5.0000000, 3.6586572], f( 0)= 56.0684582x( 1)=[ -5.0000000, 4.2432084],f( 1)= 59.5184005x( 2)=[ -5.0000000, 3.1271579], f( 2)= 53.5248005x( 3)=[ -5.0000000, 2.4505477], f( 3)= 51.1040888最低和最高顶点号:L= 3, H= 1复合形顶点值均方差: 5.032530479迭代轮数k= 19x( 0)=[ -5.0000000, 3.6586572], f( 0)= 56.0684582x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, 3.1271579], f( 2)= 53.5248005x( 3)=[ -5.0000000, 2.4505477], f( 3)= 51.1040888最低和最高顶点号:L= 1, H= 0复合形顶点值均方差: 4.075033247迭代轮数k= 20x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, 3.1271579], f( 2)= 53.5248005x( 3)=[ -5.0000000, 2.4505477], f( 3)= 51.1040888最低和最高顶点号:L= 0, H= 2复合形顶点值均方差: 2.445955398迭代轮数k= 21x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, -0.4348017], f( 2)= 51.0586558x( 3)=[ -5.0000000, 2.4505477], f( 3)= 51.1040888最低和最高顶点号:L= 0, H= 3复合形顶点值均方差: 1.421455082迭代轮数k= 22x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, -0.4348017], f( 2)= 51.0586558x( 3)=[ -5.0000000, 0.0206951], f( 3)= 49.9590382最低和最高顶点号:L= 0, H= 2复合形顶点值均方差: 1.090233677迭代轮数k= 23x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, 2.3328587], f( 2)= 50.7765122x( 3)=[ -5.0000000, 0.0206951], f( 3)= 49.9590382最低和最高顶点号:L= 0, H= 2复合形顶点值均方差:0.963931643迭代轮数k= 24x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, -0.2482854], f( 2)= 50.5582165x( 3)=[ -5.0000000, 0.0206951], f( 3)= 49.9590382最低和最高顶点号:L= 0, H= 2复合形顶点值均方差:0.869333822迭代轮数k= 25x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, 2.0903875], f( 2)= 50.1889450x( 3)=[ -5.0000000, 0.0206951], f( 3)= 49.9590382最低和最高顶点号:L= 0, H= 2复合形顶点值均方差:0.718762840迭代轮数k= 26x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, 0.3389249], f( 2)= 49.4370204x( 3)=[ -5.0000000, 0.0206951], f( 3)= 49.9590382最低和最高顶点号:L= 0, H= 3复合形顶点值均方差:0.490383508迭代轮数k= 27x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, 0.3389249], f( 2)= 49.4370204x( 3)=[ -5.0000000, 1.4296473], f( 3)= 49.1845968最低和最高顶点号:L= 0, H= 2复合形顶点值均方差:0.222366457迭代轮数k= 28x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 1.5650406], f( 1)= 49.3192709x( 2)=[ -5.0000000, 1.5304375], f( 2)= 49.2813639x( 3)=[ -5.0000000, 1.4296473], f( 3)= 49.1845968最低和最高顶点号:L= 0, H= 1复合形顶点值均方差:0.166131819迭代轮数k= 29x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 0.7867313], f( 1)= 49.0454835x( 2)=[ -5.0000000, 1.5304375], f( 2)= 49.2813639x( 3)=[ -5.0000000, 1.4296473], f( 3)= 49.1845968最低和最高顶点号:L= 1, H= 2复合形顶点值均方差:0.137913956迭代轮数k= 30x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 0.7867313], f( 1)= 49.0454835x( 2)=[ -5.0000000, 0.6201420], f( 2)= 49.1442921x( 3)=[ -5.0000000, 1.4296473], f( 3)= 49.1845968最低和最高顶点号:L= 1, H= 3复合形顶点值均方差:0.086897399迭代轮数k= 31x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 0.7867313], f( 1)= 49.0454835x( 2)=[ -5.0000000, 0.6201420], f( 2)= 49.1442921x( 3)=[ -5.0000000, 0.5917880], f( 3)= 49.1666371最低和最高顶点号:L= 1, H= 3复合形顶点值均方差:0.079891031迭代轮数k= 32x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 0.7867313], f( 1)= 49.0454835x( 2)=[ -5.0000000, 0.6201420], f( 2)= 49.1442921x( 3)=[ -5.0000000, 0.8611643], f( 3)= 49.0192754最低和最高顶点号:L= 3, H= 2复合形顶点值均方差:0.070394704迭代轮数k= 33x( 0)=[ -5.0000000, 0.7198510], f( 0)= 49.0784834x( 1)=[ -5.0000000, 0.7867313],f( 1)= 49.0454835x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.8611643], f( 3)= 49.0192754最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.046304162迭代轮数k= 34x( 0)=[ -5.0000000, 1.1012143], f( 0)= 49.0102443x( 1)=[ -5.0000000, 0.7867313], f( 1)= 49.0454835x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.8611643], f( 3)= 49.0192754最低和最高顶点号:L= 2, H= 1复合形顶点值均方差:0.025163811迭代轮数k= 35x( 0)=[ -5.0000000, 1.1012143], f( 0)= 49.0102443x( 1)=[ -5.0000000, 1.1229312], f( 1)= 49.0151121x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.8611643], f( 3)= 49.0192754最低和最高顶点号:L= 2, H= 3复合形顶点值均方差:0.013205196迭代轮数k= 36x( 0)=[ -5.0000000, 1.1012143], f( 0)= 49.0102443x( 1)=[ -5.0000000, 1.1229312], f( 1)= 49.0151121x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 1.1129387], f( 3)= 49.0127552最低和最高顶点号:L= 2, H= 1复合形顶点值均方差:0.011065035迭代轮数k= 37x( 0)=[ -5.0000000, 1.1012143], f( 0)= 49.0102443x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 1.1129387], f( 3)= 49.0127552最低和最高顶点号:L= 2, H= 3复合形顶点值均方差:0.008121836迭代轮数k= 38x( 0)=[ -5.0000000, 1.1012143], f( 0)= 49.0102443x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.005268438迭代轮数k= 39x( 0)=[ -5.0000000, 0.9159881], f( 0)= 49.0070580x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.003755703迭代轮数k= 40x( 0)=[ -5.0000000, 1.0838142], f( 0)= 49.0070248x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.003740303迭代轮数k= 41x( 0)=[ -5.0000000, 0.9272981], f( 0)= 49.0052856x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.002951093迭代轮数k= 42x( 0)=[ -5.0000000, 1.0691112], f( 0)= 49.0047764x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.002729299迭代轮数k= 43x( 0)=[ -5.0000000, 0.9368551], f( 0)= 49.0039873x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.002398513迭代轮数k= 44x( 0)=[ -5.0000000, 1.0566871], f( 0)= 49.0032134x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.002095651迭代轮数k= 45x( 0)=[ -5.0000000, 0.9449307], f( 0)= 49.0030326x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.002029012迭代轮数k= 46x( 0)=[ -5.0000000, 1.0461888], f( 0)= 49.0021334x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9464393], f( 3)= 49.0028688最低和最高顶点号:L= 2, H= 3复合形顶点值均方差:0.001729933迭代轮数k= 47x( 0)=[ -5.0000000, 1.0461888], f( 0)= 49.0021334x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 1.0468300], f( 3)= 49.0021930最低和最高顶点号:L= 2, H= 3复合形顶点值均方差:0.001471563迭代轮数k= 48x( 0)=[ -5.0000000, 1.0461888], f( 0)= 49.0021334x( 1)=[ -5.0000000, 1.0113408],f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9901944], f( 3)= 49.0000961最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.001025689迭代轮数k= 49x( 0)=[ -5.0000000, 0.9758200], f( 0)= 49.0005847x( 1)=[ -5.0000000, 1.0113408], f( 1)= 49.0001286x( 2)=[ -5.0000000, 1.0090879], f( 2)= 49.0000826x( 3)=[ -5.0000000, 0.9901944], f( 3)= 49.0000961最低和最高顶点号:L= 2, H= 0复合形顶点值均方差:0.000252186*********************复合形法优化最优点及目标函数值为:x( *)=[ -5.0000000, 1.0090879], f( *)= 49.0000826迭代精度:0.000252186本次优化最终迭代次数为:49算法程序实现//*复合形法求仅有不等式的非线性最优化问题**/#include <math.h>#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 2 /*给出优化问题的维数N*/#define K 4 /*给出复合形法顶点数K*/#define N1 5 /*给出约束方程个数K*/#define E 0.0000001 /*复合形法迭代精度*/#define NM 500 /*寻找初始复合形的最大次数*/FILE *fp;char outname[50]="复合形法计算结果.txt"; /*输出文件名*/int H=0,L=0; /*H,L--复合形顶点最大和最小值顶点号*/ double f[K]; /*本程序顶点值从f[0]开始*/struct{double x1[N]; /* double x2; 改为数组方式*/}Tpoint[K],xc,xr; /*Tpoint存放K个点的坐标,xc,xr分别为中心点和影射点坐标*//*目标函数子程序*/double function(double x[]){double zhi;zhi=(x[0]-2)(x[0]-2)+(x[1]-1)*(x[1]-1);return(zhi);}/*约束条件子程序*/int strain(double x[]){int i,fin=1;double g[N1];g[0]=x[1]-x[0]*x[0];g[1]=2-x[0]-x[1];for(i=0;i<N1;i++)if(g[i]≥0.){fin=0;break;}return(fin);}/*初始可行点产生区间*/void startab(double a[],double b[]){a[0]=-5.0;b[0]=6.0;a[1]=-5.0;b[1]=8.0;return;}/***********以上为修改部分***********//*输出当前迭代点坐标及目标函数值*/double xfout(double x[],int m){int j;double f;f=function(x);fprintf(fp," x(%3d)=[",m);for(j=0;j<N-1;j++)fprintf(fp,"%15.7lf,",x[j]);fprintf(fp,"%15.7lf], f(%3d)=%15.7lf\n",x[N-1],m,f);return f;}/**初始复合形****/int startfhx(double a[],double b[],int num){int i,i1,iw,kk=0;int j,j1,m,fh1=1;double sum2[N],sum3,delt1=0.01;double alf,r;srand( (unsigned)time( NULL ) ); /*种子函数*/do /*自动产生第一个可行点*/{for(i=0;i<N;i++){r=rand()/32767.; /*直接调用函数产生随机数*/Tpoint[0].x1[i]=a[i]+r*(b[i]-a[i]);}iw=strain(Tpoint[0].x1);kk=kk+1;if(kk>num){printf("找不到初始可行点,可能初始区间不合适!\n");fh1=2;return(fh1);}}while(iw==0);for(j=1;j<K;j++) /*产生其余个可行点*/{do{sum3=1.;for(i=0;i<N;i++){r=rand()/32767.; /*直接调用函数产生随机数*/Tpoint[j].x1[i]=a[i]+r*(b[i]-a[i]);}iw=strain(Tpoint[j].x1);if(iw==0){m=j;for(i1=0;i1<N;i1++)sum2[i1]=0.;for(i1=0;i1<N;i1++) /*求前j-1个顶点中心*/for(j1=0;j1<m;j1++)sum2[i1]+=Tpoint[j1].x1[i1];for(j1=0;j1<N;j1++)xc.x1[j1]=sum2[j1]/m;alf=0.5;do /*求中心的映射点*/{for(i=0;i<N;i++)Tpoint[m].x1[i]=xc.x1[i]+alf*(Tpoint[m].x1[i]-xc.x1[i]);sum3=0.;for(i1=0;i1<N;i1++)sum3+=(Tpoint[m].x1[i1]-xc.x1[i1])*(Tpoint[m].x1[i1]-xc.x1[i1]);sum3=sqrt(sum3);iw=strain(Tpoint[m].x1);}while(iw==0&&sum3>delt1);}}while(sum3<delt1);}return(fh1);}void suan() /*计算值并找出最好点和最差点*/{double max,min;int i;for(i=0;i<K;i++)f[i]=function(Tpoint[i].x1);max=f[0];min=f[0];H=0;L=0;for(i=1;i<K;i++){if(f[i]>max){max=f[i];H=i;}elseif(f[i]<min){min=f[i];L=i;}}return;}void suan1() /*找出次坏点*/{double min;int i,ih;min=f[L];ih=0;for(i=0;i<K;i++){if(i==H) continue;if(f[i]>min){min=f[i];ih=i;}}H=ih;return;}double panbie() /*检验迭代终止条件*/{double sum=0.0,temp;int i;for(i=0;i<K;i++)sum+=(f[i]-f[L])*(f[i]-f[L]);temp=sqrt(sum/K);return(temp);}int newfhx(double a[],double b[]){int i,j,fh1=1,chd=0;double sum1[N];double alfa; /**映射系数**/do{alfa=1.3;for(j=0;j<N;j++)sum1[j]=0.0;for(i=0;i<K;i++){if(i==H)continue;else{for(j=0;j<N;j++)sum1[j]+=Tpoint[i].x1[j];}}for(j=0;j<N;j++)xc.x1[j]=sum1[j]/(K-1);if(!(strain(xc.x1))){printf("xc is wrong非凸集\n");fh1=3;for(i=0;i<N;i++){a[i]=Tpoint[L].x1[i];b[i]=xc.x1[i];}return(fh1);}for(j=0;j<N;j++)xr.x1[j]=xc.x1[j]+alfa*(xc.x1[j]-Tpoint[H].x1[j]);while(!(strain(xr.x1))||(function(xr.x1)>=function(Tpoint[H].x1))){alfa=alfa*0.5;for(j=0;j<N;j++)xr.x1[j]=xc.x1[j]+alfa*(xc.x1[j]-Tpoint[H].x1[j]);if(alfa<E){if(chd==0){suan1(); /*寻找次坏点*/alfa=1.3;chd=1;break;}elsereturn(4);}}}while(chd==1);for(j=0;j<N;j++)Tpoint[H].x1[j]=xr.x1[j]; /**/return(fh1);}void main(){int i,val1,val2,dds,nmax;double a[N],b[N],fv;nmax=NM;fp=fopen(outname,"w");fprintf(fp,"**********复合形法计算结果**********\n\n");startab(a,b);fprintf(fp,"本次优化的上下限为:\n");fprintf(fp," a=[");for(i=0;i<N-1;i++)fprintf(fp,"%8.3f,",a[i]);fprintf(fp,"%8.3f]\n",a[N-1]);fprintf(fp," b=[");for(i=0;i<N-1;i++)fprintf(fp,"%8.3f,",b[i]);fprintf(fp,"%8.3f]\n",b[N-1]);do{val2=1;dds=1;val1=startfhx(a,b,nmax);if(val1==2)fprintf(fp,"找不到初始可行点,可能初始区间不合适!\n");else{fprintf(fp,"初始复合形各顶点坐标及函数值:\n");for(i=0;i<K;i++)fv=xfout(Tpoint[i].x1,i);suan();fprintf(fp," 最低和最高顶点号:L=%2d, H=%2d\n",L,H);fprintf(fp,"复合形顶点值均方差:%15.9lf\n\n",panbie());while(panbie()>E){val2=newfhx(a,b);if(val2==3){fprintf(fp,"该优化问题可行域为非凸集,");fprintf(fp,"重新给出优化的上下限为:\n");fprintf(fp,"a=[");for(i=0;i<N-1;i++)fprintf(fp,"%8.3f,",a[i]);fprintf(fp,"%8.3f]\n",a[N-1]);fprintf(fp,"b=[");for(i=0;i<N-1;i++)fprintf(fp,"%8.3f,",b[i]);fprintf(fp,"%8.3f]\n",b[N-1]);break;}suan();fprintf(fp,"迭代轮数k=%3d \n",dds);for(i=0;i<K;i++)fv=xfout(Tpoint[i].x1,i);fprintf(fp," 最低和最高顶点号:L=%2d, H=%2d\n",L,H);fprintf(fp,"复合形顶点值均方差:%15.9lf\n\n",panbie());dds++;}}}while(val2==3&&val1!=2);if(val2==4){fprintf(fp,"对次坏点的影射仍然无法找到下一个");fprintf(fp,"复合形顶点,计算终止。

复合形法在切削参数优化中的应用

复合形法在切削参数优化中的应用
l 訇 似
复合形法在 切削参数优化 中的应 用
A ppl i ca t i on of com pl e x m et hod i nt o opt i mi z at i on of cut t i ng par am et er s
袁美霞 ,高振莉 ,唐伯雁’ ’ ,窦蕴平’ 。
了优化切削参数的约束条件。基于复合形法,详细的对车削中单工序切削参数优化展开讨论, 给 出了切削参数优化实例。 关键词 :切 削参 数 ;优化技术 ;复合形法 中图分 类号 :T H 1 2 2 文献标识码 :B 文章编号 :1 0 0 9 —0 1 3 4 ( 2 0 1 3 ) O l ( - F ) - 0 0 4 1 -0 3
多 峰 值 目标 函数 优 化 时 的 低效 以及 容 易收 敛 于 局 部最 优解 的缺 陷 。
朝着预定的 目标在一些约束条件下选择最佳 的切 削 参 数 。 可 以 作 为 优 化 切 削 参 数 的 目标 的 有 : 最 大生产率、最高利润 率和最低成本 。而以最大 生 产 率 、最 低 成本 和最 高 利 润 率 作 为 目标 函 数 的
第3 5 卷 第1 期 2 0 1 3 — 0 1 ( 下) 【 4 1 】
1 甸 似
后 ,换 一 次 刀所 消 耗 的时 间 ( 包括卸刀、备刀、
装 刀 对 刀 等时 间 );劝 刀 具 耐 用度 ;f 。 , 为 除 换 刀
1 . 2 优化切削参数的约束条件 约 束 条件 : 优化 时 应考 虑 工艺 系统 性 能 和零
YU A N Me i . x i a ’ , . 一 ,GA 0 Z h e n . ¨ 1 1 ,T AN G B o . y a n ’ . - ,D 0U Y u n . p i n g ’ ,

复形法

复形法

2013-2014(2)专业课程实践论文题目:复形法一、算法理论复合形法概述复合形法是单纯形法的扩展,是适用于不等式约束的一种直接算法。

它的基本思路是在设计空间的可行域内,构造具有k 个顶点的多面体,按顶点函数值大小排队,找出函数值最小的最好点和函数值最大的最坏点,并计算出最坏点的反射点,一般反射点都优于最坏点,故以反射点代替最坏点,构成新的复形,这样不断调整多面体的顶点,使多面体不断向最优点靠拢,最后搜索到最优点。

其算法步骤是: 1.确定初始可行点可以人为给定输入一个可行点;也可由计算机随机选点。

随机选点按公式:(1)()1,i i i i i x a r b a i n =+-=式中i a ,i b 为第i 个设计变量的下界、上界;i r 为随机数。

得到的各顶点,应是可行点,即(1)()01,u g X u m ≤=2.随机产生其它顶点顶点个数k 可按1~2k n n =+范围来确定。

其它顶点也是随机取。

3.构成复形要求所有点都是可行点,要对除(1)X 点外的1k -个顶点检验。

如有p 个点满足约束,而1p + 等k p -个顶点未满足约束时,此时先求p 个顶点的中点,即()11p c pj j XX p ==∑ 然后使1p +等顶点向c p X 点靠拢,即(1)(1)0.5()p c p p c p X X X X ++=+-再检验(1)p X +点是否满足约束条件,如仍不满足,再继续缩小,直至满足为止。

一次对(2)p X +等个顶点进行收缩,直到全部满足约束,即完成了第一轮的复形构造。

4.排队找出最好点g X 、最坏点b X 和次坏点s X ,即 最好点g X :()()min{(),1,}g j F X F X j k ==最坏点b X :()()max{(),1,}b j F X F X j k == 次坏点s X :()()min{(),1,,}s j F X F X j k j b ==≠ 5.计算中点c X 按公式()11[()]1kcj b j X X X k ==--∑判断:c X D ∈满足,转6求反射点r X ;不满足,以g X 为第一个顶点,重新设定上下界,转2:min{,}max{,}g c i i i g c i iia x xb x x ==6.求反射点r X()1.3r c c b X X a X X a =+-=判断:r X D ∈满足,转7;不满足,转9 7.比较()()r s F X F X <满足,判断()()r g F X F X <满足,转8;不满足,b r X X =转4 不满足,判断()()r b F X F X <满足,b r X X =转4;不满足,转9 8.求延伸点e X()2e c r c X X X X ββ=+-=判断:e X D ∈满足,判断()()e r F X F X <满足,r e X X =继续求8;不满足,b r X X =转4 不满足,b r X X =转49.缩小,改变搜索方向。

复合形法_cyf

复合形法_cyf
3)从统计的观点来看,一般情况下,最坏点XH和中心点XC 的连线方向为目标函数的下降方向。
三、复合形法的搜索方法
4)判别反射点XR的位置 a.若XR 为可行点,则比较XR 和XH 两点的目标函数值, 如果f(XR) <f(XH),则用XR取代XH ,构成新的复合形,完成 一次迭代; 如果f(XR) >=f(XH),则将α缩小0.7倍,重新计算新的反射点, 若仍丌行,继续缩小α,直至f(XR) <f(XH)为止。 b.若为非可行点,则将α缩小0.7倍,直至可行为止。然后再重 复可行点的步骤。
xH : f xH max f x j j 1, 2,..., k xG : f xG
j
max f x j 1, 2,..., k , j H


三、复合形法的搜索方法
2)计算除去最坏点XH 外的(k-1)个顶点的中心XC
1 L xc xj k 1 j 1
j 1
K
( j)
) F(X
( L)
)
如果丌满足终止迭代条件,则返回步骤(3)继续迚行
下一次迭代;否则,可将最后复合形的好点X(L)及其函数
值F(X(L))作为最优解输出。
五、复合形法的特点总结
方法特点
(1)复合形法是求解约束非线性最优化问题的一种 直接方法,仅通过选取各顶点幵比较各点处函数值 的大小,就可寻找下一步的探索方向。但复合形各 顶点的选择和替换,丌仅要满足目标函数值下降的 要求,还应当满足所有的约束条件。
1 { K
[F ( X
j 1
K
( j)
) F(X
( L)
)] }
2
1
2

复合形法matlab程序及例题

复合形法matlab程序及例题

复合形法matlab程序及例题复合形法是一种数值分析方法,用于求解多元函数的最小值。

本文将介绍复合形法的基本原理及其在MATLAB中的实现,同时给出一个具体的例题进行演示。

一、复合形法基本原理复合形法(Nelder-Mead算法)是一种无导数优化方法,它的基本思想是在函数域内随机选择一些点,通过对这些点进行逐步变换、调整,最终找到极小值点。

其算法流程如下:1. 选定n+1个点作为初始点,其中n为被优化函数的自变量个数。

这些点可以随机生成,也可以通过一定的规则生成。

2. 对这些点进行排序,确定最小值点、最大值点和次大值点。

3. 通过一系列变换操作,将最大值点向中间靠拢,同时保持其他点的位置不变。

4. 根据变换后的结果,重新排序,判断是否满足终止条件。

若不满足,继续进行变换操作,直到满足终止条件为止。

终止条件可以是迭代次数、函数值的变化量或某些停止准则的满足等。

二、复合形法MATLAB程序实现复合形法的MATLAB程序可以通过fminsearch函数实现,其语法格式如下:[x,fval,exitflag,output] = fminsearch(fun,x0,options) 其中,fun为被优化的函数,x0为初始点,options为优化选项。

程序返回变量x为最小值点,fval为最小值,exitflag为程序停止状态,output为程序运行信息。

下面是一个简单的例子,用来演示如何使用MATLAB实现复合形法:1. 定义被优化的函数:f(x,y) = (x-2)^2+(y+1)^2+2function z = myfun(x)z = (x(1)-2)^2 + (x(2)+1)^2 + 2;2. 定义初始点和优化选项:x0 = [-1,1];opts = optimset('Display','iter');3. 运行fminsearch函数:[x,fval,exitflag,output] = fminsearch(@myfun,x0,opts);4. 输出结果:x = 1.9999 -0.9999fval = 2.0000exitflag = 1output =iterations: 30funcCount: 58algorithm: 'Nelder-Mead simplex direct search'message: 'Optimization terminated: relative function value decreasing below OPTIONS.TolFun.'最终输出结果表明,通过30次迭代,算法找到了函数的最小值点为x=1.9999,y=-0.9999,函数值为2.0000。

复合形法C语言程序

复合形法C语言程序

现代设计理论与方法实验一、实验名称:复合形法参考程序上机实验二、实验目的:1:掌握复合形法优化问题的寻优策略 2:能读懂程序并应用程序计算一些目标函数的最优解三、实验流程:1、题目:求如下约束优化问题的最优解F X =2221)4()3(-+-x x.已知:N=2,[][],8,0,6,021∈∈x x 取k=4,310E1-=; 2、编写黄金分割法的C 语言程序代码;3、利用visualc 程序运行C 程序代码;include""include""include""definen2definek4doubleaf;inti,j;doubleX0n,XXn,Xkn,FFk;doublean,bn;doublerm=;doubleFdoubleCn{doubleF;F=powC0-3,2+powC1-4,2;returnF;}intconsdoubleDn{ifD0>=0&&D1>=0&&D0<=6&&D1<=8&&0+D1>=0&&5-D0-D1>=0 return1;elsereturn0;}voidbou{a0=0;b0=6;a1=0;b1=8;}doubler{doubler1,r2,r3,rr;r1=pow2,35;r2=pow2,36;r3=pow2,37;rm=5rm;ifrm>=r3{rm=rm-r3;}ifrm>=r2{rm=rm-r2;}ifrm>=r1{rm=rm-r1;}rr=rm/r1;returnrr;}voidproducedoubleAn,doubleBn{intjj;doubleS;sl:fori=0;i<n;i++{S=r;XXi=Ai+SBi-Ai;}ifconsXX==0{gotosl;}fori=0;i<n;i++{X0i=XXi;}forj=1;j<k;j++{fori=0;i<n;i++{S=r;Xji=Ai+SBi-Ai;}}forj=1;j<k;j++{fori=0;i<n;i++{X0i=0;forjj=1;jj<j+1;jj++{X0i+=Xjji;}X0i=1/jX0i;}ifconsX0==0{gotosl;}fori=0;i<n;i++{XXi=Xji;}whileconsXX==0{fori=0;i<n;i++{Xji=X0i+Xji-X0i;XXi=Xji;}}}}main{doubleEE,Xcn,Xhn,Xgn,X1n,Xrn,Xsn,w;intl,lp,lp1;bou;s111:producea,b;s222:forj=0;j<k;j++{fori=0;i<n;i++{XXi=Xji;}FFj=FXX;}forl=0;l<k-1;l++{forlp=0;lp<k-1;lp++{lp1=lp+1;ifFFlp<FFlp1{w=FFlp;FFlp=FFlp1;FFlp1=w;fori=0;i<n;i++{XXi=Xlpi;Xlpi=Xlp1i;Xlp1i=XXi;}}}}fori=0;i<n;i++{Xhi=X0i;Xgi=X1i;X1i=Xk-1i;}fori=0;i<n;i++{Xsi=0;forj=0;j<k;j++{Xsi+=Xji;}Xsi=1/k+Xsi;}EE=0;forj=0;j<k;j++{EE+=powFFj-FXs,2; }EE=pow1/k+EE,;ifEE<=E1{gotos333;}fori=0;i<n;i++{Xci=0;forj=1;j<k;j++{Xci+=Xji;}Xci=1/Xci;}ifconsXc==1{af=;ss:fori=0;i<n;i++{Xri=Xci+afXci-Xhi; }ifconsXr==1{ifFXr>=FXh{ifaf<=ep{fori=0;i<n;i++{Xhi=Xgi;}af=;gotoss;}else{af=1/af;gotoss;} }else{fori=0;i<n;i++{X0i=Xri;}gotos222;}}else{af=1/af;gotoss;}}else{fori=0;i<n;i++{ifX1i<Xci{ai=X1i;bi=Xci;}else{ai=Xci;bi=X1i;}}gotos111;}s333:printf"FXmin=%f\n",FX1;fori=0;i<n;i++{printf"\nTheX%dis%f.",i,X1i;}printf"\n姓名:丁文浩学号:}四、实验结果:五、应用举例:复合形法程序测试题1、minF(X)=(x1−2)2+(x2−1)2g(X)=x2−x12≥0 g(X)=2−x2−x1≥0取:x1∈【−5 6】x2∈【−5 8】k=4=10−3实验结果:2、minF (X )=100(x 2−x 1)2+(1−x 1)2+90(x 4−x 32)2+ (1−x 3)2+10[(x 1−1)2+(x 4−1)2]+19.8(x 2−1)(x 4−1)实验结果:3、60410)(min 21212221+---+=x x x x x x X F 实验结果:。

第12讲 单纯形法和复形法

第12讲 单纯形法和复形法
取参数 α = 1.2, θ = 0.5, γ = 2, β = 0.3
解:在Matlab命令窗口 中输入
>>f=x1^2+2x2^2-4*x1-8*x2+15; >> g=[9-x1^2-x2^2;x1;x2]; >> x=[1 2 1.2;2 1.5 2.5]; >> [x,mf]=minSimpSearch(f,x,1.2,0.5,2,0.3,[x1 x2])
单纯形法的思路: 单纯形法的思路: 单纯形法(simplex method),最直接法中最基本的 方法。通过构造单纯形来逼近极小点,每构造一个单纯形, 确定其最高点和最低点,然后通过扩展或压缩、反射构造 新的单纯形,目的是使极小点能够包含于单纯形中。 对于二维变量问题,单纯形为下图所示的由 X k , X k +1 , X k + 2 及 f ( X k ), f ( X k +1 ), f ( X k + 2 ) 六个点构成的多面体。
检查 X n+ 2 是否在可行域内, (4)计算 X n+ 2 = X n+1 + α( X n+1 − X n ), ) g ( X n +若不在可行域,将反射系数减小, )≥0 即 是否满足 2 X n+ 2 f ( X n+2 ) f ( X n+ 2 ) < f ( X 0 ) 直到 在可行域内。计算 ,若 转(5),否则当 f ( X n+ 2 ) < f ( X n−1 ) 时转(6),当 f ( X n+ 2 ) ≥ f ( X n−1 ) 转(7); (5)计算 X n+3 = X n+1 + γ ( X n+ 2 − X n+1 ),检验 X n+3是否在可行域内, ) 若不在将扩展系数减小,直到 在可行域内。若 X n +3

复合形法在法兰支承液压缸优化设计中的应用

复合形法在法兰支承液压缸优化设计中的应用
; ta eoer ai l,n eot l e et a ovos h nbf r e v y a dt i fc W b iu. l e t h p ma f s
Ke y wor : m p e t d; ofwa e; ds Co l x me ho S t r Hudr ul y i de Optmalde i n a i c ln r; c i sg
断以 目标 函数值低 的新点代替 目标 函数值最大 的坏点从而构成
定性等方面的分析与计算 ,必要时再配合以模型或样机试验 , 获 得分析计算结果或有关试验数据资料后 , 认可或修改原始的设计
使复合形不断向最优点移动和收缩 , 直至收缩到复合 方案 , 再做分析计算或试验等 , 直到选定满意的设计。 这种设计程 新 复合形 , 形的各顶点与其形心非常接近 、 满足迭代精度要求时为止 。最后 序过程繁琐 、 效率低下 , 初始设计方案在很 大程度上会影 响最后 输 出复合形各顶点中的目标 函数值最小 的顶点作为近似最优点 。 的选定方案的合理性_ l 】 。因为无论是对结构 的分析计算或通过模

关键词 : 复合形法; 软件; 液压缸 ; 优化设计

; 【b rc Amn e hrg ot ov tn a tmn gh pi i r eri A sat i at oa e n noawy erin e rc ap a tsn; t 】 i g th s tefh c e i l de i t np a m e l isutad i f ici e, sg nh cml e o st e utaot adsn ! tc r eg Ol d yn r an e op xmt d。ow s c r il eg r u sn u ld b i o t l f e h f a o t u pm i r f r l
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

优化理论与最优控制作业——复合形法小组成员于童 1122227010杜娟 1122227005健华 1122227150王楠 1122227034海珍 1122227039复合形法流程图一.复合形法的基本原理复合形法的基本思路是在n维空间的可行域中选取K个设计点(通常取n+1<k<2n)作为初始复合形(多面体)的顶点。

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

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

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

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

补充:关于复合形法定点数目的选取数目多少的选取,要视具体情况而定,一般说来,为了防止迭代过程中产生降维,顶点数目取多一些较好。

因为只要在k个顶点中有n+1个顶点所构成的n个矢量线性无关,搜索就不会在降维的空间里进行。

所以k值大些,降维的可能性就小些。

但是从另一方面看,顶点数目多,显然会降低计算速度。

为此,对于优化问题维数n<6时通常取k=2n;对于n>5的优化问题,一般应适当减少顶点数目,而取k=(1.25——1.5)n(取整)。

当然,顶点的最少数目不得低于n+1. 二.复合形法的优缺点复合形法不需要计算目标函数的导数,也不进行一维搜索,因此对目标函数和约束函数都没有特殊的要求,适用围较广。

复合形法的收敛速度较慢,特别当目标函数的维数较高和约束条件的数目增多时,这一缺点尤为突出。

另外,复合形法不能用于求解具有等式约束的优化问题。

三.问题求解下面分别用复合形法和matlab工具箱分别进行求解并比较计算结果22221112min f ()100()(1)2.048 2.048. 2.048 2.048X x x x x subject to x =-+--≤≤⎧⎨-≤≤⎩1-1函数的三维立体图1-2.复合形法求解寻优趋势图1-3.求解结果对照表方法 复合形法 Matlab 工具箱x1 1.0004 1 x2 1.0002 1 f 1.8048e-07-200-150-100-505022121212min f ()10cos(2)10cos(2)205.12 5.12. 5.12 5.12X x x x x x subject to x ππ=+--+-≤≤⎧⎨-≤≤⎩2-1函数的三维立体图2-2.复合形法求解寻优趋势图2-3.求解结果对照表方法 复合形法 Matlab 工具箱 x1 0.9950 -0.1431* e-05 x2 0 -0.1431* e-05 f0.99508.1197e-10-40-35-30-25-20-15-10-501212max f ()0.5(10.001())44.44X x x x subject to x =-++-≤≤⎧⎨-≤≤⎩2-1函数的三维立体图3-2.复合形法求解寻优趋势图3-3.求解结果对照表方法 复合形法 Matlab 工具箱x1 -2.9561 1.5345 x2 1.0558 1.5345 f0.99031.98600.40.50.60.70.80.91四.结果分析对于求解此类问题,做出目标函数的大致图形(当然只限于三维以)有利于我们判断函数的极值点位置以及估计函数值,同时也可以用来检验计算结果的正确性。

对于问题一,两种求解方法的计算结果基本相同,但对于问题二和问题三的求解结果为何不同,我们猜想应该是matlab工具箱的求解方法对求解函数有着特殊的要求所导致的,例如,要求函数可导或者连续等。

附录:程序(只给出问题三的求解程序,其他问题的求解类似)一.复合形法求解程序如下:syms s tf=-((sin(sqrt(s^2+t^2)))^2-0.5)/(1+0.001*(s^2+t^2))^2+0.5;g=[s+4 4-s t+4 4-t];r=rand(1,6);m=-4+(4-(-4))*r;X=reshape(m,2,3)[x,maxf,trace_value,trace_meanvalue]=Fuhexing(f,g,X,1.3,0.7,1,0.7,[s t]);xmaxf[tvx,tvy]=size(trace_value);fxx=[1:tvy-1];fyy=ones(1,tvy-1);fyy=maxf*fyy;plot(fxx,trace_value(1,2:tvy),'green',fxx,trace_meanvalue(1,2:tvy),'blue',fxx,fyy,'red')legend('最大值','平均值','终值')gridfunction [x,maxf,trace_value,trace_meanvalue]=Fuhexing(f,g,X,alpha,sita,gama,beta,var,eps)%f 目标函数%g 约束函数%X 初始复合形%alpha 反射系数%sita 压缩系数%gama 扩展系数%beta 收缩系数%var 自变量向量%eps 精度%x 目标函数取最小值时的自变量%minf 目标函数的最小值trace_value=[0];%用于记录最大值的轨迹trace_meanvalue=[0];%用于记录平均值的轨迹N=size(X);n=N(2);%n 为复合形的顶点个数FX=zeros(1,n);%用于存放复合形的函数值if nargin==8eps=1.0e-6;endN=size(X);n=N(2);Fx=zeros(1,n);while 1%一直执行,知道找到满足收敛条件后用break 跳出循环for i=1:nFX(i)=subs(f,var,X(:,i));%求出复合形的函数值end[XS,IX]=sort(FX);%对FX 从大到小排序Xsorted=X(:,IX);%Xsorted 为排好序的Xpx=(sum(Xsorted,2)-Xsorted(:,1))/(n-1);%求的除最小值以为的平均值trace_meanvalue=[trace_meanvalue,sum(FX)/n];Fpx=subs(f,var,px);%求的平均值的函数值aaa=subs(f,var,Xsorted(:,n));trace_value=[trace_value,aaa];SumF=sqrt(sum((FX-Fpx).^2)/(n-1));%计算收敛值if SumF<=epsx=Xsorted(:,n);break;%如果收敛,则退出循环elsebcon_1=1;cof_alpha=alpha;%反射while bcon_1x2=px+cof_alpha*(px-Xsorted(:,1));%x2 为反射点坐标gx2=subs(g,var,x2);%计算约束值if min(gx2)>=0%在约束条件bcon_1=0;elsecof_alpha=0.5*cof_alpha;%如不在约束条件,则循环,直到到达约束条件endendfx2=subs(f,var,x2);%反射点函数值反射部分结束if fx2>XS(n)%如果反射部分优于最优值则进行扩操作cof_gama=gama;x3=x2+cof_gama*(x2-px);%扩gx3=subs(g,var,x3);fx3=subs(f,var,x3);if min(gx3)>=0%如果符合边界,if fx3>XS(n)count=1;%优于最优值elsecount=2;%比最优值差endelsecount=3;%不符合边界end%扩结束if count==1Xsorted(:,1)=x3;%用扩点代替最差点X=Xsorted;continueelseXsorted(:,1)=x2;%用反色点代替最差点X=Xsorted;continueendelse%如果反射部分比最优值差if fx2>XS(2)%如果反射部分大于次坏值,即反射部分优于次坏值则反射点代替Xsorted(:,1)=x2;X=Xsorted;continueelseif fx2>XS(1)%如果反射点比最差点好,比次差点差这用反射点代替最差点Xsorted(:,1)=x2;cof_beta=beta;bcon_3=1;while bcon_3<4x4=Xsorted(:,1)+cof_beta*(px-Xsorted(:,1));gx4=subs(g,var,x4);if min(gx4)>=0%符合边界值bcon_3=5;%退出收缩elsecof_beta=0.5*cof_beta;bcon_3=bcon_3+1;%最多收缩系数调整4 次endendif min(gx4)>=0%符合边界值fx4=subs(f,var,x4);FNnew=subs(f,var,Xsorted(:,1));%计算最差点函数值if fx4>FNnew%如果收缩值优于最差值Xsorted(:,1)=x4;%收缩值代替最差值X=Xsorted;continueelse%收缩值比最差值差,则对所有点进行压缩x0=Xsorted(:,n);for i=1:nXsorted(:,i)=x0+sita*(Xsorted(:,i)-x0);endendelse%如果收缩后的值不符合边界x0=Xsorted(:,n);for i=1:nXsorted(:,i)=x0+sita*(Xsorted(:,i)-x0);X=Xsorted;%用压缩值代替原复合形continueendendelse%如果反射值比最差点还要差x0=Xsorted(:,n);for i=1:nXsorted(:,i)=x0+sita*(Xsorted(:,i)-x0);X=Xsorted;%用压缩值代替原复合形continueendendendendendX=Xsorted;endmaxf=subs(f,var,x);二.matlab工具箱求解命令如下:x0=[1;1];VLB=[-4;-4];VUB=[4;4];[x,fval]=fmincon('fun',x0,[],[],[],[],VLB,VUB)[X Y]=meshgrid(-4:0.01:4,-4:0.01:4);Z=0.5-((sin((X.^2+Y.^2).^0.5)).^2-0.5)./(1+0.001.*(X.^2+Y.^2)).^2;mesh(X,Y,Z);shading interp;function f=fun(x)f=-0.5+((sin(x(1)^2+x(2)^2).^(1/2)).^2-0.5)/(1+0.001*(x(1)^2+x(2)^2))^2;。

相关文档
最新文档