
针对当前热议的matlab遗传算法求最小包容圆话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。
首先定义优化目标函数:
function?r=rmax(p,x)
%p?:已知平面点集。p的每一列就是一点的x?y坐标。
%x?:包络圆的中心坐标。
a=x(1);b=x(2);
r=max(((p(1,:)-a).^2+(p(2,:)-b).^2).^0.5);
易知,当r取值最小时,即为最小包络圆。
下面是matlab求解程序:
p=rand(2,10);%已知平面点列。p的每一列就是一点的x?y坐标。
lb=min(p')';%
ub=max(p')';%限定包络圆的中心范围。
options=gaoptimset('TimeLimit',150);%设定求解时间
[x?fval?exit]=ga(@(x)rmax(p,x),2,[],[],[],[],lb,ub,[],options);%x?就是包络圆中心的横纵坐标。
运行图:
fun1 = @(x) x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-x(1)^2*x(2)^2; %min f1(x1,x2)
fun2 = @(x) x(2)^4-x(1)^2*x(2)^2+x(1)^4+x(1)*x(2); %min f2(x1,x2)
fun1and2 = @(x) [fun1(x) fun2(x)];
lb = [-5 -5]; ub = [5 5];
options = gaoptimset('PopInitRange',[lb;ub]);
[x,fval,exitflag] = gamultiobj(fun1and2,2,[],[],[],[],lb,ub,options);
[x(:,1) fval(:,1) x(:,2) fval(:,2)]
运行上述程序,我们可以得到,x1、x2、f1、f2的值
x1、 x2、 f1、 f2
-0.70497 -5.2198 0.70581 -0.24999
-2.672 -38.333 1.9765 33.06
-2.672 -38.333 1.9765 33.06
-2.4917 -37.682 1.8677 24.405
-2.3171 -35.48 1.9263 18.207
-2.6 -38.206 1.9629 29.391
-0.70497 -5.2198 0.70581 -0.24999
-1.7604 -24.862 0.90859 6.1268
-2.3679 -36.543 1.8192 19.526
-2.1375 -33.048 1.7817 12.639
-1.9846 -29.335 1.8473 10.051
从x1、x2、f1、f2的数值,不难发现
x1=-2.672, x2=-38.333 为X1、X2的最优解组合,其值分别为f1=1.9765,f2=33.06
1、打开MATLAB软件。
2、设置一个m文件,用于计算个体的适应度函数输出值一个适应度,输入是要优化的参数。
3、输入“gatool”指令打开工具箱。
4、如图所示,打开的ga工具箱界面。
5、输入适应度函数,和要优化的惨个数,和一些其它设置,要根据任务决定。
matlab遗传算法求最小包容圆的精彩内容就分享到这里,衷心希望这些信息能为您带来实质帮助。期待您继续支持我们,发现更多有价值的知识。