matlab遗传算法调用ansys问题? 71

浏览:1257 回答:2
matlab遗传算法调用ansys,我的apdl代码和接口均无问题,问题在于matlab遗传算法程序,我用的是自带的ga函数,状态变量用nonclon来约束,但是我发现调用ansys的次数远高于总循环数,导致运行的速度非常慢,现在贴出我的代码,请教一下哪儿出错了
邀请回答 我来回答

全部回答

(1)
默认 最新
张浩宇
function optimization4() A=[];b=[]; Aeq=[];beq=[];LB=[0.1;0.03;0.03;0.1;0.03;0.03];UB=[0.4;0.06;0.06;0.4;0.06;0.06]; nvars=6; options=gaoptimset('TimeLimit',inf,'PlotFcns',{@gaplotbestf},'PopulationSize',10,'Generations',15,'PopInitRange',[0;0.6]); [x,fval,exitflag]=ga(@fitnessfcn4,nvars,A,b,Aeq,beq,LB,UB,@nonlcon3,options) function y=fitnessfcn4(x) y=x(1)*x(2)+0.38*x(3)+x(4)*x(5)+0.2*x(6); function [c ceq]=nonlcon3(x) fid=fopen('nmsl.txt','w+'); fprintf(fid,'%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\n',x'); fclose(fid); !SET KMP_STACKSIZE=2048k & C:\"Program Files"\"ANSYS Inc"\v150\ANSYS\bin\winx64\ansys150 -b -p struct -i C:\Users\Administrator\bett.mac -o C:\Users\Administrator\temp.txt fid=fopen('C:\Users\Administrator\result.txt','r'); tline=fgetl(fid); y=str2num(tline); fclose(fid); c(1)=y(1)-1.41e8; c(2)=abs(y(2))-2e8; c(3)=abs(y(3))-2.7e8; c(4)=1.2e6-y(4); ceq=[];
2019年4月29日
评论 1 点赞

没解决?试试专家一对一服务

换一批