使用“fmincon”目标函数问题
2视图(30天)
显示旧的评论
亲爱的社区,
我工作在机翼的升力系数的优化。我的目标是与遗传算法知道怎么做,但我更喜欢用简单的东西开始。
这是我的主要代码:
[Xinit Yinit,徐,YU, XL, YL) = airfoil_coord (“NACA0012”);%负载Xinit = [Xlower, Xupper] Yinit = [Ylower,是的]:NACA0012 (x, y)坐标
有趣= @ (YN) airfoilcoord (YN, CLtarget Xinitα,再保险,M)
CLtarget = 0.6;%我猜这里{CLinit = 0.4610} {CLtarget = 0.6}是一个优化
α= 4;%的飞行条件
Re = 32000000;%的飞行条件
M = 0.1764;%的飞行条件
%磅= '(的(1199)* (-0.08));%我认为不执行较低和上界
%乌兰巴托= '(的(1199)* (0.08));
%代码优化
[Yopti] = fmincon(乐趣、Yinit []、[] [], []);
下面是使用的函数代码:
函数错误= airfoilcoord (YN, CLtarget Xcoord,α,再保险公司)
%
CL = run_xfoil (Xcoord YN,α,再保险,M);%我希望YN向量变化在每一个循环
错误= (CLtarget - CL)
函数(CL) = run_xfoil (xcoord ycoord,α,再保险公司)
为i = 1:长度(ycoord)
ycoordxfoil (i) = ycoord (200 - i);
结束
为i = 1:长度(xcoord)
xcoordxfoil (i) = xcoord (200 - i);
结束
资料=[转置(xcoordxfoil),转置(ycoordxfoil)];
%需要使用XFOIL软件
%功能xfoil目录
(pol,箔)= xfoil(资料,α,再保险,M,“打开/ iter 5000”);
CL = pol.CL;%的CL返回一个双机翼表示为:(xcoord yccord)
这是我的问题:
当我独自评估每个成员,它工作得很好。但是当我运行代码,没有改善,CL和向量在每个循环YN保持不变。我想有一个小的错误在我的代码,但我找不到. .
有人能帮助我吗?感谢您的阅读,你会回答!
Teva
0评论
接受的答案
约翰D 'Errico
2020年4月23日
每当你有一个优化问题,第一步是验证,如果你通过两个略有不同的参数设置为你的目标,你会得到一个不同的结果。我们不能测试,因为我们没有完整的代码。所以,软件生成结果,不会改变稍微不同的输入?