多目标优化模型求解方案
文章目录
- (1) 概念引入
- 1.多目标优化模型
- 2.支配
- (2) 多目标优化的传统解法
- (3) 智能优化算法
- (3) matlab的智能优化算法
- 1. 基本的两个函数
- 2. 例子
- 3. 如果有三个目标
(1) 概念引入
1.多目标优化模型
- 数学模型(一般都转化成最小问题)
- 决策空间: 所在的空间 ,其中 。
- 目标空间:维向量所在的空间。
2.支配
- 定义1:对最小化问题,一个向量 称为支配(优于)另一个向量 ,当且仅当 且
- 定义2:对于任意两个自变量向量,如果下列条件成立:则称 支配 。
- 定义3:
- 如果 中没有支配(优于) 的解,则称
- Pareto最优解的全体被称作Pareto最优解集;Pareto最优解集在目标函数空间的像集称为Pareto Front(Pareto前沿,阵(界)面)。
(2) 多目标优化的传统解法
- 加权法
- 理想点法(TOPSIS)
- 分层序列法(就是每次先求出一个最优值,然后把这个最优值当作不等式限制)
- 把 个目标篇按重要程度排序。假定 最重要,
- 先求问题 的最优解 及最优值 。
- 再求问题 的最优解 及最优值 。
- 重复上面的步骤。
(3) 智能优化算法
- 这里选取 NSGA-II 方法
- 算法简介
- 首先随机产生种群规模为 的初始种群 ,进化代数 。
- 开始循环,对 进行交叉变异操作生成新种群 。
- 取 。
- 对
- 按非劣等级从低到高选出 个个体填充到 中。
- 获取
- 如此反复,直到不能容纳该非劣等级的所有个体,假设为第
- 重复
- 快速非支配排序方法
- 首先不被任何点支配的点选出来,成为 。
- 把选出来的点支配的点的支配关系全部删除,然后再看现在有哪些点不被任何点支配,成为 .
- 拥挤距离
- 表示第
- 和 是个体 沿着
- 和 分别表示 和 个个体第 个目标函数值。(下面的图)
(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. 例子
- 函数定义
%%这里定义该函数
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)
- 结果
3. 如果有三个目标
- 可以先优化出来,得到
fval
然后用scatter3
进行绘制。 - 对上面的问题增加条件
- 增加
scatter3(fval(:,1),fval(:,2),fval(:,3))
- 得到结果