matlab7.1用遗传算法ga函数解决约束最优化问题出错!!

myfun9.m是目标函数文件,如下:function y=myfun9(x)fai0=asin(x(4)*sin(x(6))/x(3));fai1=asin(x(4)*sin(x(5)+x(6))/x(3));beta1=asin(x(2)*sin(x(5)));sm=x(1)*(1-cos(x(5))+(1-sqrt(1-x(2)^2*(sin(x(5)))^2))/x(2));sg=x(4)*(sin(fai1+x(5)+x(6))/sin(fai1)-sin(fai0+x(6))/sin(fai0));w=sm/sg;m_min=x(4)*sin(x(5)+x(6)+fai1)*cos(beta1)/(x(1)*sin(x(5)+beta1)*cos(fai1));pm_max=3200;p0_max=pm_max/m_min;y=p0_max-w;(其中x(1)—x(6)为目标变量)mycon9.m是约束函数文件,如下:function [c,ce]=mycon9(x)ce=[];c=[sin(10/180*pi)-x(4)*sin(x(5)+x(6))/x(3);... 0.5-x(2)*sin(x(5));... x(2)*sin(x(5))-sqrt(2)/2;... 0.5*x(1)*(1-cos(x(5))+(1-sqrt(1-x(2)^2*(sin(x(5)))^2))/x(2))-x(1);... sqrt(2*x(1)*x(4)*cos(x(6))-x(1)^2-x(4)^2)-5-5;... sin(80/180*pi)-x(4)*sin(x(6))/x(3);... x(4)*sin(x(6))/x(3)-1;... 500-x(1)*(1-cos(x(5))+(1-sqrt(1-x(2)^2*(sin(x(5)))^2))/x(2));... abs(x(4)*sin(x(5)+x(6))/x(3))-1;... abs(x(4)*sin(x(6))/x(3))-1];(10个约束条件)在matlab7.1命令行输入:>> xm=[250;0.7;300;150;60/180*pi;90/180*pi];>> xM=[300;0.9;400;250;80/180*pi;110/180*pi];>> [x,fval]=ga(@myfun9,6,[],[],[],[],xm,xM,@mycon9)结果出现:??? Error using ==> gads\private\aluformConstraint function must return real value.Error in ==> gads\private\gacon at 103[Iterate,A,L,U,nineqcstr,neqcstr,ncstr,IndIneqcstr,IndEqcstr,msg,EXITFLAG] = ...Error in ==> ga at 251 [x,fval,exitFlag,output,population,scores] = gacon(FUN,GenomeLength,Aineq,Bineq,Aeq,Beq,LB,UB,nonlcon,options);问题出在哪??

第1个回答  2011-10-31
相似回答