matlab多目标优化工具箱_基于遗传算法的多目标优化算法

本文文字:1400  阅读时间:5分钟 

多目标优化问题中拥有多个目标函数,x为待优化的变量。其中,x可能拥有上下约束、线性等式约束以及线性不等式约束。多目标优化算法的目的为寻找Pareto最优解

Pareto最优解是指资源分配的一种理想状态,假定固有的一群人和可分配的资源,从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,使得至少一个人变得更好。

函数gamultiobj

多目标优化算法有很多,MATLAB提供了函数gamultiobj,为在MATLAB平台下解决多目标优化问题提供了良好的途径。函数gamultiobj也包含在GADS工具箱中。

函数gamultiobj是基于遗传算法的,除了个体、种群、代等概念,其还有以下概念。

  1. 支配(dominate)与非劣(non- inferior)

在多目标优化问题中,如果个体p至少有一个目标比个体q的好,而且个体p的所有目标都不比个体q的差,那么称个体p支配个体q,或者称个体q受个体p支配,也可以说,个体p非劣于个体q。

  1. 序值(rank)和前端(front)

如果p支配q,那么p的序值比q的低。如果p和q互不支配,或者说,p和q相互非劣,那么p和q有相同的序值。序值为1的个体属于第一前端,序值为2的个体属于第二前端,依次类推。显然,在当前种群中,第一前端是完全不受支配的,第二前端受第一前端中个体的支配。这样,通过排序,可以将种群中的个体分到不同的前端。

  1. 拥挤距离(crowding distance)

拥挤距离用来计算某前端中的某个体与该前端中其他个体之间的距离,用以表征个体间的拥挤程度。显然,拥挤距离的值越大,个体间就越不拥挤,种群的多样性就越好。需要指出的是,只有处于同一前端的个体间才需要计算拥挤距离,不同前端之间的个体计算拥挤距离是没有意义的。

  1. 最优前端个体系数(ParetoFraction)

最优前端个体系数定义为最优前端中的个体在种群中所占的比例,即最优前端个体数=min{ ParetoFraction×种群大小,前端中现存的个体数目},其取值范围为0~1。

代码实现

  • 目标函数
function f = fx(x)
f(1) = x(1)^4 - 10*x(1)^2+x(1)*x(2) + x(2)^4 - (x(1)^2)*(x(2)^2);
f(2) = x(2)^4 - (x(1)^2)*(x(2)^2) + x(1)^4 + x(1)*x(2);
  • 主函数
fitnessfcn = @fx;   			% 适应度函数句柄
nvars = 2; % 变量数
lb = [-5,-5]; % 下限
ub = [5,5]; % 上限
A = []; b = []; % 非线性不等式约束
Aeq = []; beq = []; % 非线性等式约束
options = gaoptimset('ParetoFraction',0.3,'PopulationSize',100,'Generations',200,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);
[x,fval] = gamultiobj(fitnessfcn,nvars, A,b,Aeq,beq,lb,ub,options);

结果分析

第一前端中个体的分布情况

matlab多目标优化工具箱_基于遗传算法的多目标优化算法_第1张图片

运行得到的Pareto最优解

x1 x2 f1 f2
-0.70688 0.70703 -5.24674 -0.25000
-0.70688 0.70703 -5.24674 -0.25000
2.67193 -1.97679 -38.33340 33.05882
1.65056 -1.25603 -23.70369 3.53983
1.70279 -1.37729 -24.83488 4.16002
0.97957 -0.90390 -9.67668 -0.08113
2.33422 -1.76693 -36.18671 18.29904
1.57102 -1.36606 -21.85902 2.82207
0.86115 -0.74116 -7.60976 -0.19392
2.30790 -1.64394 -35.77857 17.48531
1.33510 -0.85621 -16.56014 1.26486
1.20033 -0.99526 -13.97263 0.43524
2.66165 -1.92321 -38.29687 32.54714
1.40403 -1.10587 -18.29484 1.41815
2.53188 -1.76775 -37.75335 26.35063
2.49473 -1.78291 -37.62955 24.60718
2.58547 -1.83519 -38.07728 28.76951
1.95690 -1.50869 -30.11766 8.17674
1.99515 -1.49294 -30.84397 8.96232
1.29737 -1.15471 -15.96318 0.86855
2.22804 -1.68202 -34.78660 14.85513
1.86536 -1.56740 -28.12496 6.67087
2.10091 -1.64153 -32.73762 11.40041
2.61216 -1.96059 -38.24947 29.98437
2.47216 -1.93759 -37.40443 23.71145
2.41074 -1.75377 -36.98412 21.13271
1.15697 -1.00744 -13.08797 0.29773
2.26121 -1.73705 -35.23852 15.89200
-0.70736 0.70703 -5.25365 -0.25000
1.01758 -0.77468 -10.33201 0.02263

你可能感兴趣的:(matlab多目标优化工具箱)