使用“fmincon”目标函数问题

2视图(30天)
Teva点
Teva点 2020年4月23日
评论道: Teva点2020年4月23日
亲爱的社区,
我工作在机翼的升力系数的优化。我的目标是与遗传算法知道怎么做,但我更喜欢用简单的东西开始。
这是我的主要代码:
[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

接受的答案

约翰D 'Errico
约翰D 'Errico 2020年4月23日
每当你有一个优化问题,第一步是验证,如果你通过两个略有不同的参数设置为你的目标,你会得到一个不同的结果。我们不能测试,因为我们没有完整的代码。所以,软件生成结果,不会改变稍微不同的输入?
1评论
Teva点
Teva点 2020年4月23日
我尝试了两种不同的翼型(NACA0012和NACA4412),然后我试图修改飞行条件(攻角,雷诺兹,马赫)。结果是不同的,所以“错误”不给我相同的结果。但它使一个无限的循环没有任何优化,在每个循环我有相同的“YN”和“错误”。也许你会我给你发送整个代码?

登录置评。

更多的答案(0)

类别

找到更多的在机翼的工具帮助中心文件交换

标签

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!