小弟做一個matlab遺傳演算法主控程式呼叫ansys計算的課設,用的是matlab自帶工具箱的ga函式,狀態變數通過ansys計算得到,用nonlcon來約束,但是運行之后發現迭代速度很慢,不知道遺傳演算法哪兒編錯了,現在貼出我的代碼請各位大佬指教!!
uj5u.com熱心網友回復:
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=[];
uj5u.com熱心網友回復:
這是小弟我的代碼,請各位大佬賜教!不勝感激!uj5u.com熱心網友回復:
大多數編程的都很少涉及matlab,更不涉及ansys。加油。uj5u.com熱心網友回復:
我也想要MATLAB的演算法來優化ANSYS,我還沒成功。。。。樓主加油呀不過之前算過純遺傳演算法的,遺傳演算法本身尋優要求時長就是很長的,如果BP優化要1MIN,遺傳優化可能要30min,可不可能是因為演算法的問題??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/15766.html
標籤:數據庫及相關技術
上一篇:初學者的疑惑
下一篇:大一c語言試題
