欢迎来到某某鲜果配送有限公司!

专注鲜果配送

新鲜 / 健康 / 便利 / 快速 / 放心

全国咨询热线020-88888888
摩登7-摩登娱乐-摩登注册登录入口

新闻中心

 

推荐产品

24小时服务热线 020-88888888

新闻中心

数学建模与应用1:多目标优化模型求解方案

发布日期:2024-03-12 11:28浏览次数:

  • 数学模型(一般都转化成最小问题)

\\min{F(x)}=(f_1(x),f_2(x),\\dots,f_m(x))\\\\ ~~\\\\s.t. \\mathrm{x}\\in\\Omega

  • 决策空间: \\small\\mathrm{x}=(x_1, x_2,\\dots,x_n) 所在的空间 \\small\\Omega ,其中

\\Omega=\\{x\\in R^n|g_i(x)\\le0,i=1,2,\\dots,p \\}\\\\

  • 目标空间: \\small m 维向量 \\small F(x) 所在的空间。
  • 定义1:对最小化问题,一个向量 \\small u=(u_1,u_2,\\dots,u_w) 称为支配(优于)另一个向量 \\small v=(v_1,v_2,\\dots,v_w) ,当且仅当 \\small u_i\\le v_i~~ i=1,2,\\dotsb,m\\small \\exists ~j\\in\\{1,2,\\dotsb,m\\},u_j<v_j
  • 定义2:对于任意两个自变量向量 \\small x_1,x_2\\in\\Omega ,如果下列条件成立: f_i(x_1)\\le f_i(x_2),\\forall i\\in\\{1,2,\\dotsb,m\\}\\\\f_j(x_1)\\le f_j(x_2),\\forall j\\in\\{1,2,\\dotsb,m\\}\\\\ 则称 \\small x_1 支配 \\small x_2
  • 定义3:
    • 如果 \\small Q 中没有支配(优于) \\small x 的解,则称 \\small x 是问题的一个Pareto最优解。
    • Pareto最优解的全体被称作Pareto最优解集;Pareto最优解集在目标函数空间的像集称为Pareto Front(Pareto前沿,阵(界)面)。
  • 加权法
  • 理想点法(TOPSIS)
  • 分层序列法(就是每次先求出一个最优值,然后把这个最优值当作不等式限制)
    • \\small  m 个目标篇按重要程度排序。假定 \\small f_1(x) 最重要, \\small f_m(x) 最不重要。
    • 先求问题 \\min{f_1(x)}\\\\s.t. x\\in\\Omega 的最优解 \\small x^{(1)} 及最优值 \\small f_1^*
    • 再求问题 \\min{f_2(x)}\\\\s.t. x\\in\\Omega_1=\\Omega\\cap\\{x|f_1(x)\\le f_1^*\\} 的最优解 \\small x^{(1)} 及最优值 \\small f_1^*
  • 重复上面的步骤。
  • 这里选取 NSGA-II 方法
  • 算法简介
    • 首先随机产生种群规模为 \\small N 的初始种群 \\small P_t ,进化代数 \\small t=0
    • 开始循环,对 \\small P_t 进行交叉变异操作生成新种群 \\small Q_t
    • \\small R_t=P_t\\cup Q_t
    • \\small R_t 进行非劣分类。
  • 按非劣等级从低到高选出 \\small N 个个体填充到 \\small P_{t+1} 中。
    • 获取 \\small R_t 中的第一非劣等级个体集,判断并决定该非劣等级能否全被新种群容纳。如果能,将该非劣等级的所有个体填充到新种群中,继续判断下一非劣等级能否全被新种群容纳。
    • 如此反复,直到不能容纳该非劣等级的所有个体,假设为第 \\small i+1 级。对最后不能被完全容纳的非劣组中的个体求其拥挤距离,并选择分布最广的个体填充满新种群。
    • 重复
  • 快速非支配排序方法
    • 首先不被任何点支配的点选出来,成为 \\small F_1
    • 把选出来的点支配的点的支配关系全部删除,然后再看现在有哪些点不被任何点支配,成为 \\small F_2 .
  • 拥挤距离 d_i=\\sum_{m=1}^{M}|f_m^{i+1}-f_m^{i-1}|\\\\
    • \\small d_i 表示第 \\small i 个个体的拥挤距离。
    • \\small i-1\\small i+1 是个体 \\small i 沿着 \\small i 所在的Pareto Front Line 的两边邻近的两个个体。
    • \\small f_m^{i+1}\\small f_m^{i-1} 分别表示 \\small i-1\\small i+1 个个体第 \\small m 个目标函数值。(下面的图 \\small m=1,2 )
  • 参数设置
    • 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:线性等式约束。
  • 函数定义
%%这里定义该函数
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)
  • 结果
  • 可以先优化出来,得到 fval 然后用 scatter3 进行绘制。
  • 对上面的问题增加条件 \\min~{x_1+x_2}\\\\
  • 增加 scatter3(fval(:,1),fval(:,2),fval(:,3))
  • 得到结果

020-88888888

平台注册入口