多目标规划 订阅
多目标规划是数学规划的一个分支。研究多于一个的目标函数在给定区域上的最优化。又称多目标最优化。通常记为 MOP(multi-objective programming)。多目标规划的概念是 1961年由美国数学家查尔斯和库柏首先提出的。多目标最优化思想,最早是在1896年由法国经济学家V.帕雷托提出来的。他从政治经济学的角度考虑把本质上是不可比较的许多目标化成单个目标的最优化问题,从而涉及了多目标规划问题和多目标的概念。 展开全文
多目标规划是数学规划的一个分支。研究多于一个的目标函数在给定区域上的最优化。又称多目标最优化。通常记为 MOP(multi-objective programming)。多目标规划的概念是 1961年由美国数学家查尔斯和库柏首先提出的。多目标最优化思想,最早是在1896年由法国经济学家V.帕雷托提出来的。他从政治经济学的角度考虑把本质上是不可比较的许多目标化成单个目标的最优化问题,从而涉及了多目标规划问题和多目标的概念。
信息
外文名
multi-objective programming
别    称
目标最优化
提出者
V.帕雷托
意    义
目标函数在给定区域上的最优化
中文名
多目标规划
学    科
数学
属    性
数学规划的一个分支
多目标规划基本定义
多目标规划multiple objectives programming数学规划 的一个分支。研究多于一个目标函数在给定区域上的最优化。又称多目标最优化。通常记为 VMP。在很多实际问题中,例如经济、管理、军事、科学和工程设计等领域,衡量 一个方案的好坏往往难以用一个指标来判断,而需要用多个目标来比较,而 这些目标有时不甚协调,甚至是矛盾的。因此有许多学者致力于这方面的研究。1896年法国经济学家 V.帕雷托最早研究不可比较目标的优化问题 ,之后,J.冯·诺伊曼 、H.W.库恩、A.W.塔克尔、A.M.日夫里翁等数学家做了深入的探讨,但是尚未有一个完全令人满意的定义。求解多目标规划的方法大体上有以下几种:一种是化多为少的方法 , 即把多目标 化为比较容易求解的单目标或双目标,如主要目标法、线性加权法、理想点法等;另一种叫分层序列法,即把目标按其重要性给出一个序列,每次都在前一目标最优 解集内求下一个目标最优解,直到求出共同的最优解。对多目标的线性规划除以上方法外还可以适当修正单纯形法来求解;还有一种称为层次分析法,是由美国运筹 学家沙旦于70年代提出的,这是一种定性与定量相结合的多目标决策与分析方法,对于目标结构复杂且缺乏必要的数据的情况更为实用。
收起全文
精华内容
下载资源
问答
  • 建立实际问题的多目标规划数学模型并求解是运筹学中常遇到的问题,应用最优化软件LINGO可以快捷准确地求出该类问题的解,本文以实例的方式介绍了多目标规划数学模型的建立、LINGO求解程序的编写,为实际工作者解决这...
  • 有各类多目标规划问题,和相应得到求解理论方法,还有对应的matlab程序
  • 里面包含了灰狼算法求解多目标规划的基本代码并,同时还有相关改进的代码与改进的参照论文,除此之外,还有用灰狼算法优化svm算法的代码
  • 线性规划.非线性规划.多目标规划Matlab代码[比赛已经用过,保真好使]
  • 多目标规划.pdf

    2019-09-17 20:09:35
    文档主要介绍了多目标规划问题的相关模型的建立与求解,有详细实例。
  • 简要阐述了遗传算法的基本原理,探讨了在MATLAB 环境中实现遗传算法各算子的编程方法, 并以一个简单的实例说明所编程序在函数全局寻优中的应用。并且附有MATLAB源程序
  • 多目标规划的LINGO求解法 对于对目标问题的一种比较好的方法
  • 多目标规划模型

    2012-05-11 19:34:22
    多目标规划模型多目标规划模型多目标规划模型
  • 多目标规划与数学模型,南京邮电大学,投资问题
  • 多目标规划学习笔记

    千次阅读 2020-07-02 23:33:19
    对于多于一个的目标函数在给定区域上的最优化问题称为多目标规划问题。在多目标规划中,各目标之间是相互冲突的,不一定存在所有目标上都是最优的解。因此目标问题的解构成一个集合,他们之间不能简单地比较好坏,...

    author:旭宝ww
    DateTime:2020/7/2


    一、引言

    对于多于一个的目标函数在给定区域上的最优化问题称为多目标规划问题。在多目标规划中,各目标之间是相互冲突的,不一定存在所有目标上都是最优的解。因此多目标问题的解构成一个集合,他们之间不能简单地比较好坏,这样的解称为非支配解(有效解) 或者 Pareto最优解

    注意:多目标规划不同于单目标规划,在数学建模的结果中不应当给出一个最优解,Pareto最优解应当是一组解,以供甲方选择。

    二、模型实例

    1 一般地,多目标规划的数学模型如下:

    m i n F ( x ) = ( f 1 ( x ) , f 2 ( x ) , … , f m ( x ) ) s . t . x ∈ Ω \mathbf{min \quad F(x)=\left (f_1(x),f_2(x),…,f_m(x)\right) }\\ \mathbf{s.t.\quad x\in \Omega} minF(x)=(f1(x),f2(x),,fm(x))s.t.xΩ

    其中 x = ( x 1 , x 2 , … , x n ) x=(x_1,x_2,…,x_n) x=(x1,x2,,xn)所在的空间 Ω \Omega Ω称为问题的决策空间(可行解空间),m维向量 F ( x ) F(x) F(x)所在的空间称为问题的目标空间

    其中 Ω = { x ∈ R n ∣ g i ( x ) ≤ 0 , i = 1 , 2 , … , p } \Omega =\left \{x\in R^{n} |g_i(x)\le 0,i=1,2,…,p \right \} Ω={xRngi(x)0,i=1,2,,p}

    2 相关概念

    定义1:对最小化问题,一个向量 u = ( u 1 , u 2 , … , u m ) u=(u_1,u_2,…,u_m) u=(u1,u2,,um)支配另一个向量 v = ( v 1 , v 2 , … , v m ) v=(v_1,v_2,…,v_m) v=(v1,v2,,vm),当且仅当

    { u i ≤ v i , ∀ i ∈ { 1 , 2 , … , m } ∃ j ∈ { 1 , 2 , … , m } \begin{cases} u_i \le v_i,\forall i \in \left \{ 1,2,…,m \right \} \\ \exists j \in \left \{ 1,2,…,m \right \} \end{cases} {uivi,i{1,2,m}j{1,2,,m}

    定义2:对于任意两个自变量向量 x 1 , x 2 ∈ Ω x_1,x_2\in \Omega x1,x2Ω,如果向量 ( f 1 ( x 1 ) , f 2 ( x 1 ) , … , f m ( x 1 ) ) (f_1(x_1),f_2(x_1),…,f_m(x_1)) (f1(x1),f2(x1),,fm(x1))支配向量 ( f 1 ( x 2 ) , f 2 ( x 2 ) , … , f m ( x 2 ) ) (f_1(x_2),f_2(x_2),…,f_m(x_2)) (f1(x2),f2(x2),,fm(x2)),则称 x 1 x_1 x1支配 x 2 x_2 x2

    定义3:如果 Ω \Omega Ω中没有支配 x x x的解,则称 x x x是问题的一个Pareto最优解,Pareto最优解的集合称为Pareto最优解集,Pareto最优解集在目标空间的像集称为Pareto前沿(Pareto Front)

    在这里插入图片描述
    例如,此图的横坐标为 F 1 ( x ) F_1(x) F1(x),纵坐标为 F 2 ( x ) F_2(x) F2(x),红色的连线即为该问题的Pareto前沿,H和G两点的自变量 x x x都是此问题的解。

    三、求解方法

    多目标优化问题的算法大体分为传统的数学规划方法和智能优化方法。传统方法只能得到非支配解,故需要重点掌握智能优化方法的MATLAB实现。

    3.1传统的数学规划方法

    1.主要目标法:确定一个目标为主要目标,确定合适的界限值把次要目标作为约束条件。
    { m i n f 1 ( x ) s . t . f i ( x ) ≤ a i , i = 2 , 3 , … , m x ∈ Ω \begin{cases} min \quad f_1(x)\\ s.t. \quad f_i(x) \le a_i,i=2,3,…,m\\ \quad\quad x \in \Omega \end{cases} minf1(x)s.t.fi(x)ai,i=2,3,,mxΩ
    其中界限值 a i ≥ min ⁡ x ∈ Ω f i ( x ) , i = 2 , 3 , … , m a_i\ge \min \limits_{x\in \Omega} f_i(x),i=2,3,…,m aixΩminfi(x),i=2,3,,m

    2.分层序列法:先对m个目标的重要性排序。先求问题:
    P ( 1 ) { m i n f 1 ( x ) s . t . x ∈ Ω P(1)\quad \begin{cases} min \quad f_1(x)\\ s.t.\quad x \in \Omega \end{cases} P(1){minf1(x)s.t.xΩ

    的最优解 x ( 1 ) x^{(1)} x(1)和最优值 f 1 ∗ f_1^{*} f1
    再求问题:
    P ( 2 ) { m i n f 2 ( x ) s . t . x ∈ Ω 1 = Ω ⋂ { x ∣ f 1 ( x ) ≤ f 1 ∗ } P(2)\quad \begin{cases} min \quad f_2(x)\\ s.t.\quad x \in \Omega_1=\Omega \bigcap \left \{ x|f_1(x) \le f_1^* \right \} \end{cases} P(2){minf2(x)s.t.xΩ1=Ω{xf1(x)f1}
    的最优解 x ( 2 ) x^{(2)} x(2)和最优值 f 2 ∗ f_2^{*} f2
    如此进行下去,直到求出第 m m m个问题:
    P ( m ) { m i n f m ( x ) s . t . x ∈ Ω m − 1 = Ω m − 2 ⋂ { x ∣ f m − 1 ( x ) ≤ f m − 1 ∗ } P(m)\quad \begin{cases} min \quad f_m(x)\\ s.t.\quad x \in \Omega_{m-1}=\Omega_{m-2} \bigcap \left \{ x|f_{m-1}(x) \le f_{m-1}^* \right \} \end{cases} P(m){minfm(x)s.t.xΩm1=Ωm2{xfm1(x)fm1}
    的最优解 x ( m ) x^{(m)} x(m)和最优值 f m ∗ f_m^{*} fm

    于是 x ∗ = x ( m ) x^*=x^{(m)} x=x(m)就是多目标规划问题的一个非支配解

    3.加权法:对m个目标加以适当的权重,化作单目标规划
    { m i n ∑ i = 1 m ω i f i ( x ) s . t . x ∈ Ω \begin{cases} min \sum\limits_{i=1}^{m}\omega_if_i(x)\\ s.t.\quad x \in \Omega \end{cases} mini=1mωifi(x)s.t.xΩ

    4.MATLAB求解单目标规划问题

    [x,fval]=quadprog(H,f,A,b,Aeq,beq,lb,ub) %%求解二次规划 x T A x x^TAx xTAx
    [x,fval]=fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon) %%求解约束下的多元函数最小值

    3.2 智能优化算法(NSGA-Ⅱ)

    能力有限,无法理解算法的原理,贴一位大佬的博客:
    https://blog.csdn.net/qq_40434430/article/details/82876572

    MATLAB中的内置函数gamultiobj()ga:遗传;multiobj:多目标 )是基于NSGA-Ⅱ改进的一种多目标遗传算法。

    sfa

    gamultiobj适用于求解以下形式的多目标问题:
    { m i n F ( x ) s . t . A X ≤ b A e q ∗ X = b e q l b ≤ X ≤ u b \begin{cases} min \quad F(x)\\ s.t.\quad AX\le b\\ \qquad Aeq*X=beq\\ \qquad lb\le X\le ub \end{cases} minF(x)s.t.AXbAeqX=beqlbXub

    调用格式:

    [X,FVAL]=gamultiobj( f, NVARS, A, b, Aeq, beq, lb, ub, nonlcon, options)
    %X是Pareto解集
    %FVAL是目标函数在Pareto解上的函数值
    %f是需要计算的目标函数
    %NVARS是变量的个数
    %options是绘制Pareto前沿的函数gaoptimset的参数

    实例:
    { m i n f 1 ( x ) = x 1 4 − 10 x 1 2 + x 1 x 2 + x 2 4 − x 1 2 x 2 2 m i n f 2 ( x ) = x 1 4 + x 1 x 2 + x 2 4 − x 1 2 x 2 2 s . t . − 5 ≤ x 1 , x 2 ≤ 5 \begin{cases} min\quad f_1(x)=x_1^4-10x_1^2+x_1x_2+x_2^4-x_1^2x_2^2\\ min\quad f_2(x)=x_1^4+x_1x_2+x_2^4-x_1^2x_2^2\\ s.t.\quad -5\le x_1,x_2\le 5 \end{cases} minf1(x)=x1410x12+x1x2+x24x12x22minf2(x)=x14+x1x2+x24x12x22s.t.5x1,x25

    function y=Fun(x)
    y(1)=x(1)^4-10*x(1)^2+x(1)*x(2)+x(2)^4-x(1)^2*x(2)^2;
    y(2)=x(2)^4-x(1)^2*x(2)^2+x(1)^4+x(1)*x(2);
    end
    
    clear;clc;
    fitnessfcn=@Fun	%%调用函数句柄
    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-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,options)
    

    MATLAB运行结果如下:
    在这里插入图片描述

    展开全文
  • 介绍了求解多目标的几种基本的方法,并附有matlab的一些基本语句!!
  • 【数学建模】多目标规划

    万次阅读 多人点赞 2020-07-24 16:51:04
    多目标规划概念 线性规划只能解决一组线性约束条件下,一个目标的最大或最小值的问题。在实际决策中,衡量方案优劣要考虑个目标,这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的,也有定性;有相互...

    多目标规划概念

    线性规划只能解决一组线性约束条件下,一个目标的最大或最小值的问题。在实际决策中,衡量方案优劣要考虑多个目标,这些目标中,有主要的,也有次要的;有最大值的,也有最小值的;有定量的,也有定性;有相互补充的,也有相互对立的,线性规划则无能为力。

    求解思路

    加权系数法——为每一目标赋一个权系数, 把多目标模型转化成单一目标的模型。但困难是要确定合理的权系数,以反映不同目标之间的重要程度。
    优先等级法—— 将各目标按其重要程度不同的优先等级,转化为单目标模型。
    此外,主要目标法常用。
    在目标规划中不提最优解的概念, 只提满意解的概念, 即寻求能够照顾到各个目标, 并使决策者感到满意的解, 由决策者来确定选取哪一个解。缺点是满意解的数目太多而难以将其一一求出。

    有关数学概念

    正、负偏差变量

    在这里插入图片描述

    绝对(刚性)约束和目标约束

    绝对约束是指必须严格满足的等式约束和不等式约束,例如线性规划问题的所有约束条件。不能满足这些约束条件的解称为非可行解,所以它们是硬约束,钢性约束。

    目标约束是目标规划特有的,可把约束右端项看作要追求的目标值。在达到此目标值时允许发生正或负偏差,因此在这些约束中加入正、负偏差变量,它们是软约束,柔性约束。

    正负偏差变量的作用:可将绝对约束通过添加正、负偏差变量的方式转化为柔性约束。

    例:
    条件1:产品I的产量不大于产品II;
    条件2:应尽可能充分利用设备, 但不希望加班;
    条件3:应尽可能达到并超过计划利润指标56万元;

    硬性约束:
    x1<=x2;
    x1+2x2<=10;
    z=8
    x1+10*x2;

    通过添加正负偏差变量转化为柔性约束:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    优先因子(优先等级)与权系数

    在这里插入图片描述

    一般而言,要求排在前面的优先考虑,优先级更高,优先因子更大。

    目标规划的目标函数

    与线性规划的目标函数构造不同,目标规划方法的目标函数(准则函数)是按各目标约束的正、负偏差变量,并赋于相应的优先因子和权系数而构造的。当每一目标值确定后,决策者的要求是尽可能缩小偏离目标值。因此目标规划的目标函数只能是所有偏差变量的加权和。其基本形式有三种。

    (1)第i个目标要求恰好达到目标值,即正、负偏差变量都要尽可能地小
    在这里插入图片描述
    (2)第i个目标要求不超过(不大于)目标值, 即允许达不到目标值,就是正偏差变量要尽可能地小
    在这里插入图片描述
    (3)第i个目标要求超过(不小于)目标值, 即超过量不限, 但必须是负偏差变量要尽可能地小

    在这里插入图片描述

    目标规划的一般数学模型

    在这里插入图片描述
    在这里插入图片描述
    建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它们都具有一定的主观性和模糊性,可以用专家评定法给以量化。

    目标规划的续贯算法

    根据优先级的先后次序, 将目标规划问题分解成一系列的单目标规划问题, 然后再依次求解。
    注意:求下一级目标, 之前的目标规划全部作为约束条件。


    所有目标一个一个的求,求出前面的目标后,在后面目标的求解中将前面目标的结果作为刚性约束。

    例:某企业生产甲、乙两种产品,需要用到A,B,C三种设备,关于产品的赢利与使用设备的工时及限制如表2 所示。问该企业应如何安排生产,才能达到下列目标。
    (1)力求使利润指标不低于1500 元;
    (2)考虑到市场需求,甲、乙两种产品的产量比应尽量保持1:2;
    (3)设备A为贵重设备,严格禁止超时使用;
    (4)设备C可以适当加班,但要控制;设备B既要求充分利用,又尽可能不加班。在重要性上,设备B是设备C的3 倍。
    在这里插入图片描述
    解:由条件分析,得:
    设备A是刚性约束, 其余是柔性约束;
    首先, 最重要的指标是企业的利润, 因此将它的优先级列为第一级;
    其次, 甲、乙两种产品的产量保持1:2的比例, 列为第二级;
    再次, 设备B,C的工作时间要有所控制, 列为第三级;在第三级中, 设备B的重要性是设备C的三倍, 因此它们的权重不一样, 设备B前的系数是设备C前系数的3倍。

    在这里插入图片描述

    多目标规划的Lingo解法

    序贯算法中每个单目标问题都是一个线性规划问题, 可以使用
    Lingo软件进行求解。

    以上例为例,利用lingo求解如下:

    第一级:

    model:
    sets:
    variable/1,2/:x;
    s_con_num/1..4/:g,dplus,dminus; !目标约束项数;
    s_con(s_con_num,variable):c;
    !dplus=d+,dminus=d-,目标约束系数c=c(i,j);
    endsets
    data:
    g=1500 0 16 15;c=200 300 2 -1 4 0 0 5; !默认按行赋值;
    enddata
    min=dminus(1); !一级目标函数;
    2*x(1)+2*x(2)<=12;
    @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j)+dminus(i)-dplus(i))=g(i););
    @for(variable:@gin(x)); !变量取整约束;
    end
    

    第二级:

    model:
    sets:
    variable/1,2/:x;
    s_con_num/1..4/:g,dplus,dminus;
    s_con(s_con_num,variable):c;
    endsets
    data:
    g=1500 0 16 15;c=200 300 2 -1 4 0 0 5;
    enddata
    min=dplus(2)+dminus(2); !二级目标函数;
    2*x(1)+2*x(2)<=12;
    @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j)+dminus(i)-dplus(i))=g(i););
    dminus(1)=0; !一级目标约束;
    @for(variable:@gin(x));
    end
    

    第三级:

    model:
    sets:
    variable/1,2/:x;
    s_con_num/1..4/:g,dplus,dminus;
    s_con(s_con_num,variable):c;
    endsets
    data:
    g=1500 0 16 15;c=200 300 2 -1 4 0 0 5;
    enddata
    min=3*dplus(3)+3*dminus(3)+dplus(4); !三级目标函数;
    2*x(1)+2*x(2)<=12;
    @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i););
    dminus(1)=0;dplus(2)+dminus(2)=0; !一、二级目标约束;
    @for(variable:@gin(x));
    end
    

    若三个阶段在一起求:

    model:
    sets:
    level/1..3/:p,z,goal; !三个目标;
    variable/1,2/:x;
    s_con_num/1..4/:g,dplus,dminus;
    s_con(s_con_num,variable):c;
    h_con_num/1/:b;
    h_con(h_con_num,variable):a;
    obj(level,s_con_num)/1 1,2 2,3 3,3 4/:wplus,wminus; !权重;
    endsets
    data:
    ctr=?;
    goal=? ? 0;
    b=12;
    a=2 2;
    g=1500 0 16 15;
    c=200 300 2 -1 4 0 0 5;
    wplus=0 1 3 1;
    wminus=1 1 3 0;
    enddata
    min=@sum(level:p*z);
    @for(level(i)|i#ne#ctr:p(i)=0);
    @for(level(i):z(i)=@sum(obj(i,j):wplus(i,j)*dplus(j)+wminus(i,j)*dminus(j)););
    @for(h_con_num(i):@sum(variable(j):a(i,j)*x(j))<=b(i););
    @for(s_con_num(i):@sum(variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i););
    @for(level(i)|i#lt#@size(level):@bnd(0,z(i),goal(i)));
    @for(variable:@gin(x));
    end
    

    多目标规划的matlab解法

    通式总结:
    在这里插入图片描述
    在这里插入图片描述
    fgoalattain()函数的用法:
    x = fgoalattain(fun,x0,goal,weight)
    x = fgoalattain(fun,x0,goal,weight,A,b)
    x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
    x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
    x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
    x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)
    x = fgoalattain(problem)
    [x,fval] = fgoalattain(___)
    [x,fval,attainfactor,exitflag,output] = fgoalattain(___)
    [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(___)

    例:求解多目标线性规划问题
    在这里插入图片描述
    (1)定义目标函数:

    function F=Fun16_5(x)
    F=[-100*x(1)-90*x(2)-80*x(3)-70*x(4);3*x(2)+2*x(4)];
    end
    

    (2)goal由两个目标函数分别求出目标值合并而成;weight由abs(goal)取定

    a=[-1 -1 0 0;0 0 -1 -1;3 0 2 0;0 3 0 2]
    b=[-30,-30,120,48].'
    c1=-[100,90,80,70]
    c2=[0,3,0,2]
    [x1,goal1]=linprog(c1,a,b,[],[],zeros(4,1))
    [x2,goal2]=linprog(c2,a,b,[],[],zeros(4,1))
    goal=[goal1;goal2]
    [x,fval]=fgoalattain('Fun16_5',rand(4,1),goal,abs(goal),a,b,[],[],zeros(4,1))
    
    展开全文
  • 数学规划模型(五):多目标规划模型

    千次阅读 多人点赞 2020-04-01 14:44:49
    多目标规划模型多目标规划模型的基本知识多目标规划模型的绝对最优解多目标规划模型的有效解多目标规划模型的弱有效解多目标规划模型的常用解法介绍1. 主要目标法2. 分层序列法3.线性加权求和法多目标规划建模示例1...

    多目标规划模型的基本知识

    前面介绍的线性规划模型整数规划模型非线性规划模型中的目标函数都只有一个(可以进我的博客查看详细)。而在许多实际问题中,衡量一个方案好坏的标准往往不止一个,例如设计导弹,既要射程最远,又要

    展开全文
  • 本篇笔记对数学建模中常见的多目标规划问题提供了解法:在建立传统的多目标规划的常用模型的基础上,使用智能优化算法对多目标规划问题进行求解,通过Pareto Front直观展现非劣解的分布情况,以解决传统的多目标规划...

    摘要

    本篇笔记对数学建模中常见的多目标规划问题提供了解法:在建立传统的多目标规划的常用模型的基础上,使用智能优化算法对多目标规划问题进行求解,通过Pareto Front直观展现非劣解的分布情况,以解决传统的多目标规划问题将多目标转化为单目标问题带来的只有单一解的问题。并结合一些伪代码,流程图对遗传算法算法本身进行了分析,阅读了一定的材料之后给出利用自己写的简单的具有“变异算子”,“交叉算子”,“选择算子”的代码完成对飞机巡航路线的设计。最后利用Matlab的gamultiobj函数实现对布置的课后作业的求解。
    关键词:多目标规划;智能优化算法;遗传算法;Pareto Front

    一、多目标规划及其非劣解

    1. 概念:
      研究多于一个的目标函数在给定区域上的最优化,称为多目标规划。通常记作:MOP(multi-objective-programming)。
      要注意的是多目标规划的目标之间是相互冲突的(不然就不是多目标),是不能将多个目标合并成为一个统一的目标来求解的,这是判断一个问题是否是多目标规划问题的关键。例如:设计一辆汽车,既要安全(重量大),又要省油;设计一种导弹,既要射程远,又要节约燃料。这样的各个目标之间是冲突的,才能被称为多目标规划问题。
      建模时要注意,多目标求解的目标数尽量保持在2~3个比较合适,目标数量过多会给我们的求解带来困难。

    2. 多目标规划模型的组成:
      (1) 两个以上的目标函数
      (2) 若干个约束条件

    3. 多目标规划模型的主要描述形式:
      在这里插入图片描述
      式中X=[x_1,x_2,…,x_n ]^T为决策变量。我们把
      在这里插入图片描述
      可以写成:s.t. x∈Ω 其中x=(x_1,x_2,…,x_n)所在的空间Ω称为决策空间,F(x)所在的空间称为目标空间
      缩写形式:
      Max⁡(min)Z=F(X)----(1)
      s.t. ϕ(X)≤G

      若有n个决策变量,k个目标函数,m个约束方程,则

    • Z=F(x)-----k维函数变量
    • ϕ(X)-----m维向量函数
    • G-----m维常数向量
    1. 多目标规划的非劣解
      多目标规划问题,不能只顾一个目标函数的最优,而不顾其他的目标函数。多目标规划需要作出复合选择:
      (1) 目标函数的选择
      (2) 决策变量的选择
      衡量某一个方案的好坏无法用一个指标来衡量,需要多个目标进行比较,这些目标有时不是很协调,甚至是对立的。
      在这里插入图片描述
      由上图(假设要求f1和f2都达到最大):1和2比较,1的f2指标大于2的f2指标,但2的f1指标大于1的f1指标,于是二者的较优性无法比较,即无法确定这两个方案的优劣。
      而在各个方案之间,显然,4比1好,3比2好,5比4好,7比3好……
      而对于方案5,6,7之间则无法比较优劣性,且没有比他们更好的其他方案,所以他们被称为多目标规划问题的非劣解,或者Pareto最优解,而其他的解被称为劣解。
      定义1:
      对于最小化问题,一个向量u=(u_1,u_2,…,u_m)支配(优于)另一个向量v=(v_1,v_2,…,v_m),当且仅当u_i≤v_i, i=1,2,…,m,并且存在j∈1,2,3,…,m,u_j<v_j
      定义2:
      对于任意的两个自变量向量x_1,x_2∈Ω,如果下列条件成立:
      在这里插入图片描述
      那么向量f_1 (x_1 ),f_2 (x_1 ),…,f_m (x_1),支配(优于)向量f_1 (x_2 ),f_2 (x_2 ),…,f_m (x_2),则称x_1支配x_2。
      定义3:
      如果Ω中没有支配(优于)x的解,则x是问题的一个pareto最优解,(非劣解,有效解,非支配解)。
      Pareto最优解的全体被称为Pareto最优解集。Pareto最优解集在目标函数空间的像集被称为Pareto Front(Pareto 前沿,阵面)。
      当目标函数处于冲突状态时,就不会存在使所有目标函数同时达到最大或最小值的最优解,有可能一个解在目标上最好,而在另一个目标上是最差。于是我们只能寻求非劣解(又称非支配解或帕累托解)。

    二、多目标规划及其求解方法

    对于多目标规划的解法,这里主要介绍两类:传统的多目标解法和智能优化算法,其中智能优化算法目前是国际上比较流行的多目标规划的求解方法,算法已经被Matlab集成。

    1. 传统解法——多目标规划转换为单目标规划
      ① 效用最优化模型
      思想:规划问题的各个目标函数可以通过一定的方式进行求和运算。这种方法将一系列的目标函数与效用函数建立相关关系,各目标之间通过效用函数协调,使多目标规划问题转化为传统的单目标规划问题:
      在这里插入图片描述
      是与各目标相关的效用函数的和函数。
      在用效用函数作为规划目标时,需要确定一组权值λ来反映原问题中各目标函数在总体目标中的权重,即:
      在这里插入图片描述
      其中,权重值和为1:
      在这里插入图片描述
      ② 罚款模型(理想点法)
      思想: 规划决策者对每一个目标函数都能提出所期望的值(或称满意值);通过比较实际值f_i与期望值f*_i之间的偏差来选择问题的解,其数学表达式如下:
      在这里插入图片描述
      其中λ_i是与第i个目标相关的权重。
      ③ 约束模型
      理论依据 :若规划问题的某一目标可以给出一个可供选择的范围,则该目标就可以作为约束条件而被排除出目标组,进入约束条件组中。
      假如,除第一个目标外,其余目标都可以提出一个可供选择的范围,则该多目标规划问题就可以转化为单目标规划问题:
      在这里插入图片描述
      ④ 目标达到法
      首先将多目标规划模型化为如下标准形式:
      在这里插入图片描述
      在求解之前,先给出与目标函数相对应的一组理想化的期望目标f_i^* (i=1,2,3,…,k),每一个目标对应的权重系数为:ω_i^* (i=1,2,3,…,k),再设γ为一松弛因子,那么多目标规划模型转换为:
      在这里插入图片描述
      用目标达到法求解多目标规划的计算过程,可以通过调用Matlab软件系统优化工具箱中的fgoalattain函数实现。

    2. 智能优化算法求解
      ① 传统算法与智能优化算法的比较:
      在上述的传统的算法中,整体的思想都是将多目标规划转化为但目标规划问题,如果要得到多个解的话,就要进行多次的运行,无法得到pareto最优解集,整体上的效率并不高。而智能优化算法能在一次运行过程中找到Pareto最优解集中的多个解,且不限于Parato前沿解集的形状和连续性,易于解决不连续的,凹的Pareto前沿。
      ② 基于精英策略的快速非支配排序遗传算法(NSGA-II)
      (1)算法概述
      遗传算法( Genetic Algorithm , GA) 是借鉴生物界自然选择和群体进化机制形成的一种全局寻优算法。为方便理解,首先从宏观角度了解遗传算法。
      在遗传算法中,将问题空间的决策变量通过一定的编码方法转换为遗传空间中的个体。将目标函数转化成为一定的适应值,这个适应值将作为评价个体优劣的依据。
      在这里插入图片描述
      遗传算法中涉及到三个算子:选择算子,交叉算子和变异算子,这三个算子模拟了种群遗传和变异产生后代,并且适者生存的过程。其中选择算子反映了“适者生存”,通过种群个体的“适应值”判断个体能否被加入交配池进行交配产生“子代个体”。交叉算子则是模拟种群产生个体的过程,互相交换“染色体”完成产生下一代的过程,而这里的染色体可以理解为编码的序列,具体的我们下面会通过一个例子进行说明。最后变异算子则是较小概率的改变个体的“染色体序列”,实现新个体的出现。
      在这里插入图片描述
      需要说明的是遗传算法中需要确定的参数有:编码串长度、种群大小、交叉和变异概率。编码串长度由优化问题所要求的求解精度决定。种群大小表示种群中所含个体的数量 ,种群较小时,可提高遗传算法的运算速度 ,但却降低了群体的多样性,可能找不出最优解;种群较大时 ,又会增加计算量 ,使遗传算法的运行效率降低。一般取种群数目为20~100。交叉操作是遗传算法中产生新个体的最主要的方法,所以交叉的概率应该设定得比较大,保证种群能进行充分的交配,但若过大可能破坏群体的优良模式。一般取 0. 4~0. 99。变异概率也是影响新个体产生的一个因素,变异概率小 ,产生新个体少;变异概率太大 ,又会使遗传算法变成随机搜索。一般取变异概率为0. 0001~0. 1。遗传算法常采用 的收敛判据有:规定遗传代数;连续几次得到的最优个 体的适应值没有变化或变化很小等。
      下面我们给出遗传算法的流程图,说明遗传算法的主要流程:
      在这里插入图片描述
      首先,建立一个随机的种群规模大小为 N 的初始种群P_0,并初始化计数器 t=0。然后对种群 P_t进行遗传操作产生子代种群Q_t,将P_t和Q_t合并产生R_t,并对具有 2N 规模的种群R_t进行非劣分类操作,并生成下一代种群P_(t+1)。
      进化代数计数器 t 加 1 并判断 t 是否大于最大进化代数 MaxGen。如果是,那么该算法结束;否则,继续进化。如此循环,直到进化到指定的最大进化代数。
      每一个个体都有其对应的适应值,正如每一个决策变量都有其对应的目标函数值。非劣分类操作的原则即是根据上述的由优化问题的目标函数对应转换成的个体的适应值来进行筛选。在进行非劣分类排序时需要保存的值有两个S_p和n_p。S_p对应的被个体p支配的集合,n_p对应个体p被多少个其他的个体所支配,保存这个被其他个体的个数,即是n_p。这个过程也被称为“快速非支配排序算法”的过程。
      我们以需求目标最小值来描述“快速非支配排序算法”过程:
      在这里插入图片描述
      首先找出n_p=0的所有点,即这些点不被任何点所支配,并且保存这些点的S_p,将这些点标记为Pareto等级①。不考虑等级①的点(即图中蓝色的点,或者说删除这些点),在剩余的点中继续寻找n_p=0的点,标记为Pareto等级②……以此类推分完所有的等级。其中①中的解是最好的,也就是前面所提到的精英解集,它只支配其他解而不被其他任何解支配,②中的个体只被 ①不被其它解支配,依次类推。
      但在实际的操作中,并不需要完成对所有的等级的分类——由于整个种群R_t的种群大小为2N,新种群P_(t+1)的N个位置不能容纳所有的非劣等级。当考虑被允许的最后一个等级中的解时,该非劣等级可能存在比新种群剩下位置更多的个体。在这种情况下,使用密度估计的方法从最后一等级选择位于该等级较稀疏区域的个体填充满新种群。这里着重要指出的是R_t的非劣分类和P_(t+1)填充过程可以一起执行。这样,对每一个非劣等级先看它的大小,看它是否 能被新种群容纳,如果不能,那么就不必再进行非劣分类,这样能减少该算法的运行时间。
      在这里插入图片描述
      b. 拥挤选择算子以及交叉算子与变异算子的实现
      拥挤距离的定义
      在上述的“快速非支配排序算法”的叙述中,我们提到了“密度估计”,需要选择较为“疏松”的个体填充P_(t+1)中不足的个体数量。这样是为了使Pareto Front宽广度和均匀度更加合理。
      拥挤距离:第i个个体的拥挤距离定义为第i+1和i-1个体的所有目标函数值的差的和。第一个和最后一个个体的距离设为无穷大——
      在这里插入图片描述
      拥挤选择算子
      下面给出拥挤距离的求解算法: 第一步:对该层(等 Pareto 排序值)的所有点排序,排序结果如上图所示。
      对于两个目标函数值的而言,先选择其中一个目标函数 然后按照该目标函数值从小到大的顺序进行排列,按式(3)计算距离,进而可以用下面的第三步计算拥挤距 离,至到累积完所有的目标函数。
      第二步:每个点的拥挤距离d_i初始化为 0;
      在这里插入图片描述
      伪代码如下:

    1.	def crowding_distance_assignment( I )  
    2.	        nLen = len( I )        #I中的个体数量  
    3.	    for i in I:  
    4.	        i.distance = 0    #初始化所有个体的拥挤距离  
    5.	    	   for objFun in M:        #M为所有目标函数的列表  
    6.	           I = sort( I, objFun )    #按照目标函数objFun进行升序排序  
    7.	           I[0] = I[ len[I]-1 ] =#对第一个和最后一个个体的距离设为无穷大  
    8.	            	for i in xrange( 1, len(I) - 2 ):  
    9.	                 I[i].distance = I[i].distance + ( objFun( I[i+1] ) - objFun( I[i-1] ) )/(Max(objFun()) - Min(objFun()) )  
    
    

    在这里插入图片描述
    在这里插入图片描述
    c. 交叉算子
    d. 变异算子
    (4) 在Matlab中的使用
    在Matlab中可以通过函数gamultiobj函数来进行基于快速非支配排序精英策略的遗传算法。
    具体使用格式

    1.	gamultiobj - Find Pareto front of multiple fitness functions using genetic algorithm  
    2.	  
    3.	    This MATLAB function finds x on the Pareto Front of the objective functions  
    4.	    defined in fun.  
    5.	  
    6.	    x = gamultiobj(fun,nvars)  
    7.	    x = gamultiobj(fun,nvars,A,b)  
    8.	    x = gamultiobj(fun,nvars,A,b,Aeq,beq)  
    9.	    x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub)  
    10.	    x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)  
    11.	    x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,options)  
    12.	    x = gamultiobj(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)  
    13.	    x = gamultiobj(problem)  
    14.	    [x,fval] = gamultiobj(___)  
    15.	    [x,fval,exitflag,output] = gamultiobj(___)  
    16.	    [x,fval,exitflag,output,population,scores] = gamultiobj(___)  
    
    
    1. 用遗传算法求解最优解问题
      例1:
      已知敌方100个目标的经度、纬度如表1所示。
      在这里插入图片描述
      在这里插入图片描述
      下面给出模拟遗传算法的Matlab代码
    1.	function primerRun(routeData)  
    2.	%%-------------------数据初始化-------------------------------------  
    3.	sj0=routeData;          %完成经纬度的加载  
    4.	x=sj0(:,1:2:8);         %提取纬度  
    5.	x=x(:);  
    6.	y=sj0(:,2:2:8);         %提取经度  
    7.	y=y(:);  
    8.	sj=[x y];               %经纬度组成向量  
    9.	mylocation=[70,40];     %我方经纬度  
    10.	sj=[mylocation;sj;mylocation];   
    11.	sj=sj*pi/180;           %转化为弧度  
    12.	distance=zeros(102);    %二维距离数组初始化为0  
    13.	%二维数组计算出地图上任意两点的距离  
    14.	for i=1:101  
    15.	    for j=i+1:102  
    16.	        distance(i,j)=6370*acos(cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2)));  
    17.	    end  
    18.	end  
    19.	distance=distance+distance';  
    20.	  
    21.	%%-----------------------改良圈算法得到一个较优解----------------------  
    22.	N=50;   %一个种群有50个个体,这个精度由问题的精确性给出,这里取50  
    23.	g=100;  %进化代数定义为进化10024.	rand('state',sum(clock));   %matlab随机数为伪随机数,这里定义一个种子,初始化随机发生器  
    25.	for k=1:N   %改良圈算法初始化种群  
    26.	    c=randperm(100);    %产生1~100的一个全排列  
    27.	    c1=[1,c+1,102];     %生成初始圈  
    28.	    for t=1:102         %修改圈  
    29.	        flag=0;         %退圈标志  
    30.	        for m=1:100  
    31.	            for n=m+2:101  
    32.	                if distance(c1(m),c1(n))+distance(c1(m+1),c1(n+1))<distance(c1(m),c1(m+1))+distance(c1(n),c1(n+1))  
    33.	                    c1(m+1:n)=c1(n:-1:m+1);  
    34.	                    flag=1;  
    35.	                end  
    36.	            end  
    37.	        end  
    38.	        if flag==0  
    39.	            J(k,c1)=1:102;  
    40.	            break;  %记录下较好的解后跳出循环  
    41.	        end  
    42.	    end  
    43.	end  
    44.	J(:,1)=0;  
    45.	J=J/102;            %转换为染色体编码  
    46.	%%---------------------------------------------遗传算法主体---------------------------------------  
    47.	for k=1:g   %循环进行种群交配  
    48.	    A=J;    %得到亲代的初始的染色体  
    49.	    c=randperm(N);%产生一个1~50的全排列,作为初始的染色体交换对象  
    50.	    %------------------------------------交叉操作-----------------------------------------------  
    51.	    for i=1:2:N  
    52.	        F=2+floor(100*rand(1));     %保证圈的起始点和终点不变的条件下,产生要进行染色体交换的地址  
    53.	        temp=A(c(i),[F:102]);       %中间变量保存值  
    54.	        A(c(i),[F:102])=A(c(i+1),[F:102]);  %交叉操作  
    55.	        A(c(i+1),F:102)=temp;  
    56.	    end  
    57.	    by=[];  
    58.	    %-----------------------------------变异操作-----------------------------------------  
    59.	    %循环保证by非空  
    60.	    while ~length(by)  
    61.	        by=find(rand(1,N)<0.1);      %返回向量或者矩阵中不为0的元素的位置索引  
    62.	    end  
    63.	    B=A(by,:);%产生变异操作的初始染色体  
    64.	    for j=1:length(by)  
    65.	        bw=sort(2+floor(100*rand(1,3)));    %产生变异操作的三个索引  
    66.	        B(j,:)=B(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:102]);%交换位置  
    67.	    end  
    68.	    G=[J;A;B];%父代和子代的种群合在一起  
    69.	    [SG,ind1]=sort(G,2);  
    70.	    num=size(G,1);  
    71.	    long=zeros(1,num);%路径长度的初始值  
    72.	    for j=1:num  
    73.	        for i=1:101  
    74.	            long(j)=long(j)+distance(ind1(j,i),ind1(j,i+1));  
    75.	        end  
    76.	    end  
    77.	    [slong,ind2]=sort(long);%对路径长度由小到大排序  
    78.	    J=G(ind2(1:N),:);%优胜劣汰  
    79.	end  
    80.	path=ind1(ind2(1),:),flong=slong(1)  
    81.	xx=sj(path,1);  
    82.	yy=sj(path,2);  
    83.	plot(xx,yy,'-o'); 
    
    

    在这里插入图片描述

    三、多目标规划应用实例(例题)

    例一:
    某厂生产A和B两种型号的摩托车,每辆车平均生产时间和利润分别为A种:3小时,100元;B种:2小时,80元。该厂每周生产时间为120小时,但可加班48小时,加班时间生产每辆车的利润为:90元(A种),70元(B种),市场每周需要A,B两种车各30辆以上,问如何安排每周的生产计划,在尽量满足市场需求的条件下使利润最大,加班时间最少,建立数学模型,并求解分析。
    解:提取题目信息绘制表格:
    在这里插入图片描述
    设:

    • f_1利润,f_2:加班时间
    • x_1----正常时间生产A型号的件数
    • x_2----加班时间生产A型号的件数
    • x_3----正常时间生产B型号的件数
    • x_4----加班时间生产B型号的件数

    建立下面的数学模型:
    在这里插入图片描述
    由于智能优化算法涉及到算子的选择问题,以及终止代数的不同,运行了多次后这里给出某一次运行得到的解:
    在这里插入图片描述
    在这里插入图片描述
    上图为Pareto Front图像,横轴Objective_1为第一个目标,即加班时间;纵轴Objective_2为第二个目标,即工厂利润。
    其中主要的三个拐点已经标记出,由上图我们可以看到加班时间最小化与利润最大化之间是存在冲突的,和多目标规划定义符合。
    利用Matlab代码求解后得到上图所示的Pareto front。由图像可知:当加班时间在45小时时,收益达到最大值12100元,而当加班时间小于1.5小时时,利润变动变化较小,基本保持在1000元左右。对于其他的情况,工厂决策者可以根据工厂实际情况进行方案选择。
    求解代码如下:

    1.	function y=example1Fun(x)  
    2.	y(1)=-100*x(1)-90*x(2)-80*x(3)-70*x(4);  
    3.	y(2)=0*x(1)+0*x(3)+3*x(2)+2*x(4);  
    
    
    1.	clear  
    2.	clc  
    3.	fitnessfcn=@example1Fun;  
    4.	nvars=4;  
    5.	lb=zeros(1,4);  
    6.	ub=[];  
    7.	A=[-1,-1,0,0;0,0,-1,-1;3,2,0,0;0,3,0,2];  
    8.	b=[-30,-30,120,48]';  
    9.	Aeq=[];  
    10.	beq=[];  
    11.	options=gaoptimset('paretoFraction',0.3,'populationsize',200,'generations',300,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto);  
    12.	[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options) 
    
    

    例2:
    某工厂共有工人300名,生产A,B,C,D四种产品,要求每人每周平均生产时间在40~48小时内,C为国防用产品,每周至少生产150件,而每周至多可以提供能源20吨标准煤。其他数据如下表:

    在这里插入图片描述
    问如何安排每周的生产,才能使纯利润最高,而能耗最少?试建立数学模型并求解。
    解:设利润函数为f_1,能耗函数为f_2。A,B,C,D四种产品分别生产x_1,x_2,x_3,x_4件。
    在这里插入图片描述
    利用Matlab代码求解后得到下图所示的Pareto front。由图像可知:当煤耗量达到17.71t时所获得的利润也达到了最大值14240元;当煤耗量在14.45t~14.33t之间波动时,最大利润波动不大;当煤耗量达到最小14.06t时,利润值也达到了10510元。
    对于其他的情况,我们给出相应的决策变量以及对应的决策空间的解,管理者可以根据工厂的实际情况进行相应的选择。
    在这里插入图片描述
    Matlab代码如下:

    1.	function y=example2Fun(x)  
    2.	y(1)=-10*x(1)-20*x(2)-12*x(3)-14*x(4);  
    3.	y(2)=0.01*(1.5*x(1)+2*x(2)+1.8*x(3)+1.1*x(4));  
    
    
    1.	clear   
    2.	clc  
    3.	fitnessfcn=@example2Fun;  
    4.	nvars=4;  
    5.	A=[13,13.5,14,15;-13,-13.5,-14,-15;1.5,2,1.8,1.1];  
    6.	b=[48*300 -40*300 2000]';  
    7.	Aeq=[];  
    8.	beq=[];  
    9.	lb=[0,0,150,0];  
    10.	ub=[270 240 460 130];  
    11.	options=gaoptimset('paretoFraction',0.3,'populationsize',200,'generations',300,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto);  
    12.	[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)  
    
    

    决策变量取值以及对应解空间:
    在这里插入图片描述在这里插入图片描述

    展开全文
  • 多目标规划

    2012-05-11 19:30:45
    matlab程序 多目标规划_ 多目标规划_ 多目标规划_
  • 解决多目标规划问题 可以解决优先级有正负偏差的目标规划问题
  • 数学建模:线性规划与多目标规划

    千次阅读 2020-09-07 11:41:24
    目录单目标线性规划多目标线性规划理想解法线性加权法最大最小法目标规划法模糊数学解法 单目标线性规划 MATLAB中有一个专门求解线性规划问题的函数:linprog(),其使用方法如下: [x,fval]=linprog(c,A,b,Aeq,beq,...
  • 文章目录一、引入多目标规划问题二、证券投资组合问题讲解1. 问题分析2. 将多目标规划问题转为单目标规划问题3. MATLAB 求解 一、引入多目标规划问题 目标规划又称为多目标规划,是指在一组约束下,对个不同目标...
  • 多目标规划求解的matlab和lingo求解方法,里面还有例题
  • 今天我们要来解决一个运筹学中较为头疼的问题,多目标规划问题。 1.多目标规划问题的描述 目标问题可以描述成如下问题: 其中,fi(x)f_i(x)fi​(x)为待优化的目标函数;x为待优化的变量;lb和ub分别为变量x的...
  • matlab多目标规划讲解及代码
  • 多目标规划(1)ppt第三章多目标规划.pptx
  • 多目标规划的几个充分性条件,杭丹,王晓燕,对于带不等式和等式约束的一般多目标规划问题,对其最有性条件进行了讨论,在较弱的条件下,对既带不等式约束又带等式约束的
  • 多目标规划方法

    2012-05-11 19:38:52
    多目标规划方法
  • 数学建模——lingo实现多目标规划

    万次阅读 2019-08-03 18:20:24
    数学建模——lingo实现多目标规划
  • 利用遗传算法解决多目标规划问题

    千次阅读 2020-04-13 13:40:37
    %随机产生分案员工 lan=size(la,1); ny=[]; for i = 1:n ny0=floor(m/sum(y0))*y0(i,1)+floor(mod(m,sum(y0))/n)+size(find(fai),2)-size(find(la==i),1);%第i个员工实际分案量 ny1=ones(1,ny0)i; ny=[ny ny1]; ...
  • 数学建模(3.9)多目标规划

    万次阅读 2019-08-03 18:20:10
    数学建模(3.9)多目标规划 理解 多目标规划跟一般的规划问题有所不同,多目标规划通常是要求学生做出满足各个优先度要求的最佳抉择。衡量出尽量满足所有需求而得出使得目标最优(如收益最大)的方案。 由于...
  • 最优理论与技术--多目标规划问题

    千次阅读 2019-10-25 16:17:28
    目标规划的产生: 线性规划的局限性—— 目标单一性,不能处理目标问题。但现在很问题都有个目标,希望能获得综合的最优,但目标之间往往存在一定的矛盾,如利润最高、成本最低、产量高、质量好、用工最少等...
  • 目标线性规划的基本思想大都是将目标问题转化为单目标规划,本论文介绍了理想点法、线性加权和法、最大最小法、目标规划法。包含原理,代码,小论文格式,适合资源配置,系统优化初学者
  • 在在项目组合管理中,如何在确保实现企业战略目标的基础上,兼顾各个项目的计划目标,并自上而下地平衡和协调各个项目的资源使用,从而使得企业的有限资源得到最大化地利用是项目组合资源优化管理中一大难题。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 273,602
精华内容 109,440
关键字:

多目标规划