多目标优化模型求解方案


文章目录

  • (1) 概念引入
  • 1.多目标优化模型
  • 2.支配
  • (2) 多目标优化的传统解法
  • (3) 智能优化算法
  • (3) matlab的智能优化算法
  • 1. 基本的两个函数
  • 2. 例子
  • 3. 如果有三个目标


(1) 概念引入

1.多目标优化模型

  • 数学模型(一般都转化成最小问题)目标检测 多模态 数据扩增_Matlab
  • 决策空间: 目标检测 多模态 数据扩增_Matlab_02所在的空间 目标检测 多模态 数据扩增_遗传算法 智能算法_03,其中 目标检测 多模态 数据扩增_Matlab_04
  • 目标空间:目标检测 多模态 数据扩增_遗传算法 智能算法_05维向量目标检测 多模态 数据扩增_Matlab_06所在的空间。

2.支配

  • 定义1:对最小化问题,一个向量 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_07 称为支配(优于)另一个向量 目标检测 多模态 数据扩增_Matlab_08,当且仅当 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_09目标检测 多模态 数据扩增_遗传算法 智能算法_10
  • 定义2:对于任意两个自变量向量目标检测 多模态 数据扩增_数学建模 MATLAB lingo_11,如果下列条件成立:目标检测 多模态 数据扩增_Matlab_12则称 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_13 支配 目标检测 多模态 数据扩增_遗传算法 智能算法_14
  • 定义3:
  • 如果 目标检测 多模态 数据扩增_遗传算法 智能算法_15 中没有支配(优于)目标检测 多模态 数据扩增_数学建模 MATLAB lingo_16 的解,则称 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_16
  • Pareto最优解的全体被称作Pareto最优解集;Pareto最优解集在目标函数空间的像集称为Pareto Front(Pareto前沿,阵(界)面)。


目标检测 多模态 数据扩增_Matlab_18


(2) 多目标优化的传统解法

  • 加权法
  • 理想点法(TOPSIS)
  • 分层序列法(就是每次先求出一个最优值,然后把这个最优值当作不等式限制)
  • 目标检测 多模态 数据扩增_Matlab_19 个目标篇按重要程度排序。假定 目标检测 多模态 数据扩增_遗传算法 智能算法_20 最重要,目标检测 多模态 数据扩增_数学建模 MATLAB lingo_21
  • 先求问题目标检测 多模态 数据扩增_Matlab_22 的最优解 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_23 及最优值 目标检测 多模态 数据扩增_Matlab_24
  • 再求问题目标检测 多模态 数据扩增_数学建模 MATLAB lingo_25 的最优解 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_23 及最优值 目标检测 多模态 数据扩增_Matlab_24
  • 重复上面的步骤。

(3) 智能优化算法

  • 这里选取 NSGA-II 方法
  • 算法简介
  • 首先随机产生种群规模为 目标检测 多模态 数据扩增_遗传算法 智能算法_28 的初始种群 目标检测 多模态 数据扩增_遗传算法 智能算法_29,进化代数 目标检测 多模态 数据扩增_遗传算法 智能算法_30
  • 开始循环,对 目标检测 多模态 数据扩增_遗传算法 智能算法_29 进行交叉变异操作生成新种群 目标检测 多模态 数据扩增_Matlab_32
  • 目标检测 多模态 数据扩增_Matlab_33
  • 目标检测 多模态 数据扩增_Matlab_34
  • 按非劣等级从低到高选出 目标检测 多模态 数据扩增_遗传算法 智能算法_28 个个体填充到 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_36 中。
  • 获取 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_37
  • 如此反复,直到不能容纳该非劣等级的所有个体,假设为第 目标检测 多模态 数据扩增_Matlab_38
  • 重复
  • 快速非支配排序方法
  • 首先不被任何点支配的点选出来,成为 目标检测 多模态 数据扩增_遗传算法 智能算法_39
  • 把选出来的点支配的点的支配关系全部删除,然后再看现在有哪些点不被任何点支配,成为 目标检测 多模态 数据扩增_遗传算法 智能算法_40.
  • 拥挤距离目标检测 多模态 数据扩增_数学建模 MATLAB lingo_41
  • 目标检测 多模态 数据扩增_遗传算法 智能算法_42 表示第 目标检测 多模态 数据扩增_Matlab_43
  • 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_44目标检测 多模态 数据扩增_Matlab_45 是个体 目标检测 多模态 数据扩增_Matlab_43 沿着 目标检测 多模态 数据扩增_Matlab_43
  • 目标检测 多模态 数据扩增_Matlab_48目标检测 多模态 数据扩增_遗传算法 智能算法_49 分别表示 目标检测 多模态 数据扩增_数学建模 MATLAB lingo_44目标检测 多模态 数据扩增_Matlab_45 个个体第 目标检测 多模态 数据扩增_Matlab_19 个目标函数值。(下面的图目标检测 多模态 数据扩增_Matlab_53)


目标检测 多模态 数据扩增_遗传算法 智能算法_54


(3) matlab的智能优化算法

1. 基本的两个函数

  • 参数设置
  • options=gaoptimset('paretoFraction',0.3,'populationsize',100'generations',200,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto);
  • paretoFraction:最优个体系数这里设为0.3
  • populationsize:种群大小这里设为100
  • generations:最大进化代数这里设为200
  • stallGenLimit:停止代数这里设为200
  • TolFun:适应度函数偏差这里设为1e-10
  • gaplotpareto:绘制Pareto前沿
  • 函数引用
  • [X,FVAL]=gamultiobj(fitnessfcn,nvars,A,b, Aeq,beq,lb,ub,nonlcon,options))
  • fitnessfcn:函数句柄。
  • nvars:变量个数。
  • ub,lb:上下限。
  • A,b:线性不等式约束。
  • Aeq,beq:线性等式约束。

2. 例子


目标检测 多模态 数据扩增_数学建模 MATLAB lingo_55


  • 函数定义
%%这里定义该函数
function y=Fun(x) 
y(1)=x(1); 
y(2)=(1+x(2))/x(1);
  • 进行计算
%%这里赋初值并且进行多目标优化的计算
fitnessfcn=@Fun;
nvars=2; 
lb=[0.1,0]; 
ub=[1,5]; 
A=[-9,-1;-9,1];
b=[-6;-1]; 
Aeq=[];
beq=[]; 
 
options=gaoptimset('paretoFraction',0.4,'populationsize',200,'generations',300,'stallGenLimit',300,'TolFun',1e-10,'PlotFcns',@gaplotpareto); 

[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)
  • 结果


目标检测 多模态 数据扩增_遗传算法 智能算法_56


3. 如果有三个目标

  • 可以先优化出来,得到 fval 然后用 scatter3 进行绘制。
  • 对上面的问题增加条件 目标检测 多模态 数据扩增_遗传算法 智能算法_57
  • 增加 scatter3(fval(:,1),fval(:,2),fval(:,3))
  • 得到结果


目标检测 多模态 数据扩增_Matlab_58