机械设计制造及其自动化03班。
李抗战。一) 题目:用复合形法求约束优化问题。
;的最优解。
基本思路:在可行域中构造一个具有k个顶点的初始复合形。对该复合形各顶点的目标函数值进行比较,找到目标函数值最大的顶点(即最坏点),然后按一定的法则求出目标函数值有所下降的可行的新点,并用此点代替最坏点,构成新的复合形,复合形的形状每改变一次,就向最优点移动一步,直至逼近最优点。
二) 复合形法的计算步骤。
1) 选择复合形的顶点数k,一般取,在可行域内构成具有k个顶点的初始复合形。
2) 计算复合形个顶点的目标函数值,比较其大小,找出最好点xl、最坏点xh、及此坏点xg..
3) 计算除去最坏点xh以外的(k-1)个顶点的中心xc。判别xc是否可行,若xc为可行点,则转步骤4);若xc为非可行点,则重新确定设计变量的下限和上限值,即令,然后转步骤1),重新构造初始复合形。
4) 按式计算反射点xr,必要时改变反射系数α的值,直至反射成功,即满足式。然后xr以取代xh,构成新的复合形。
5) 若收敛条件得到满足,计算终止。约束最优解为:。
三) 复合形法程序框图见下图:
四) 源程序如下:
*输入值选择n=2,k=3,本程序可以处理n为2或3,k为3或4的情况*/
#include <>
#include <>
#include <>
#include <>
#define e0 1e-5复合形法收敛控制精度*/
double **apply(int,int申请矩阵空间*/
double f(double目标函数*/
double *g(double约束函数*/
bool judge(double可行点的判断*/
int main()
int n,k;
int i,j,k1;
int l;
double temporary;
double restrain收敛条件*/
double reflect反射系数*/
srand((unsigned)time(null));
printf("请输入目标函数的维数n输入已知数据*/
scanf("%d",&n);
printf("请输入复合形的顶点数k:")
scanf("%d",&k);
double **x=apply(k,n存放复合形顶点*/
double *y=(double *)calloc(k,sizeof(double存放目标函数值*/
double *p=(double *)calloc(3,sizeof(double存放约束函数值*/
double *a=(double *)calloc(n,sizeof(double存放设计变量的下限*/
double *b=(double *)calloc(n,sizeof(double存放设计变量的上限*/
double *x_c=(double *)calloc(n,sizeof(double));存放可行点中心*/
double *x_r=(double *)calloc(n,sizeof(double));存放最坏点的反射点*/
printf("本程序中的所有输入,两个数之间用空格隔开,然后按enter键时不要长时间的按,否则,可能会出错");
printf("请输入选定的第一个可行点x1(包含%d个数):"n);
for(i=0;i scanf("%lf",*x+i);
printf("请输入初选变量的下限a(包含%d个数):"n);
for(i=0;i scanf("%lf",a+i);
printf("请输入初选变量的上限b(包含%d个数):"n);
for(i=0;i scanf("%lf",b+i);
printf("输出输入结果为:n=%d,k=%d,x1=("n,k); 输出已知数据*/
for(i=0;i printf("%5lf ",x+i));
printf("%5lf)a=("x+n-1));
for(i=0;i printf("%f ",a+i));
printf("%5lf),b=("a+n-1));
for(i=0;i printf("%f ",b+i));
printf("%5lf)",*b+n-1));
l1: for(i=1;i for(j=0;jx+i)+j)=*a+j)+(double)(rand()%10000)/10000*(*b+j)-*a+j));
l=1;for(i=1;i if(judge(*(x+i)))
for(i=0;i for(j=i+1;jif(f(*(x+i))for(k1=0;k1
temporary=*(x+i)+k1);
x+i)+k1)=*x+j)+k1);
x+j)+k1)=temporary;
for(i=0;ix_c+i)=0;
for(i=0;i for(j=0;jx_c+j)+=x+i)+j);
for(i=0;ix_c+i)/=l;
if(!judge(x_c)) 判断可行点中心是否可行*/
goto l1;
elseelse
double **apply(int row,int col) /申请矩阵空间*/
机械优化大作业 MATLAB复合型法
机床主轴机构优化设计。机床主轴是机床中重要的零件之一,一般多为支撑空心阶梯轴。为了便于使用材料力学进行结构分析,常常将阶梯轴简化成以当量直径表示的等截面轴。如图0.1所示是一个已经简化处理的专用机床双主轴的力学模型。从机床主轴制造成本较低和加工精度较高的要求出发,需要考虑主轴的自重和外身段挠度这样两...
机械优化作业
机械优化设计报告。二次规划法。班级 信息计算111802班。姓名 甘金宝。学号 201118030202 一 绪论。二次规划是非线性规划中的一类特殊数学规划问题,在很多方面都有应用,如投资组合 约束最小二乘问题的求解 序列二次规划在非线性优化问题中应用等。在过去的几十年里,二次规划已经成为运筹学 经...
机械优化设计优化作业习题
1 63 机床主轴是机床中重要零件之一,一般为多支承空心阶梯轴。为了便于使用材料力学公式进行结构分析,常将阶梯轴简化成以当量直径表示的等截面轴。图1所示的为一根简化的机床主轴。要求以主轴的自重为目标,对该主轴进行优化设计。已知条件 主轴材料为45 内径d 30mm,外力f 15000n,许用挠度y0...