matlab遗传算法求函数极小值!f(x,y) =-2.113-0.1326x+10.49y+0.1505x^2-2.924x*y+10.11y^2 ;x(0,0.1);y(18,36);我要matlab代码
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/29 02:54:03
![matlab遗传算法求函数极小值!f(x,y) =-2.113-0.1326x+10.49y+0.1505x^2-2.924x*y+10.11y^2 ;x(0,0.1);y(18,36);我要matlab代码](/uploads/image/z/6077822-14-2.jpg?t=matlab%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95%E6%B1%82%E5%87%BD%E6%95%B0%E6%9E%81%E5%B0%8F%E5%80%BC%21f%28x%2Cy%29+%3D-2.113-0.1326x%2B10.49y%2B0.1505x%5E2-2.924x%2Ay%2B10.11y%5E2+%EF%BC%9Bx%EF%BC%880%2C0.1%EF%BC%89%EF%BC%9By%EF%BC%8818%2C36%EF%BC%89%EF%BC%9B%E6%88%91%E8%A6%81matlab%E4%BB%A3%E7%A0%81)
matlab遗传算法求函数极小值!f(x,y) =-2.113-0.1326x+10.49y+0.1505x^2-2.924x*y+10.11y^2 ;x(0,0.1);y(18,36);我要matlab代码
matlab遗传算法求函数极小值!
f(x,y) =-2.113-0.1326x+10.49y+0.1505x^2-2.924x*y+10.11y^2 ;
x(0,0.1);
y(18,36);
我要matlab代码
matlab遗传算法求函数极小值!f(x,y) =-2.113-0.1326x+10.49y+0.1505x^2-2.924x*y+10.11y^2 ;x(0,0.1);y(18,36);我要matlab代码
如果没有其他约束条件,直接用ga求
>> fi=inline('-2.113-0.1326*x(1)+10.49*x(2)+0.1505*x(1)^2-2.924*x(1)*x(2)+10.11*x(2)^2','x');
>> ga(fi,2,[],[],[],[],[0 18],[0.1 36])
Optimization terminated: average change in the fitness value less than options.TolFun.
ans =
0.1000 18.0000
即最小值在x=0.1、y=18处.
直接画出函数的图像来,可以验证结论的正确性:
ezmesh('-2.113-0.1326*x+10.49*y+0.1505*x^2-2.924*x*y+10.11*y^2',[0 0.1],[18 36])
另外,从图中注意到,x 对f(x,y)的影响不大,但如果我们取y=18,画出f(x,18)的函数图像来:
syms x y
f = -2.113 - 0.1326*x + 10.49*y + 0.1505*x^2 - 2.924*x*y +10.11*y^2;
y=18;
ezplot(subs(f),[0 0.1])
可见,尽管x对f的影响比较小,但函数值还是随着x增大而减小的.综上分析,ga的计算结果是正确的.
至于你之前说到的约束条件
y = 31.1688 * exp(-0.755*x)
如果画去曲线来:
ezplot('31.1688 * exp(-0.755*x)',[0 0.1])
可以看到,y在18-36的范围内,倒是和你给的范围不矛盾(但应该更小一些才对).