精华内容
下载资源
问答
  • 优化决策机制
    千次阅读
    2018-07-17 18:09:21

    本篇需要使用的数据集为credit.csv,下载好并保存于R目录。

    1.理解决策树算法

    简而言之,决策树是一个分类器(classifier)。 它利用树状结构,来对于特征以及潜在的结果之间的关系建立模型。如下图(来源网络):

    在决定是见于不见的时候,决策树给出了一些节点(node)来作为判断依据,至于这些节点是如何被找到的,内在的算法是什么,这个很难在这里讲清楚(而且严格地讲,我们每个人都可以不依赖R中已有的function而自己去编写决策树函数(并不会很难,如果你的逻辑简单的话)),但是决策树算法合适停下来却很容易理解:

    a. 没有剩余的特征来分辨案例之间的区别

    b.决策树已经达到预先定义的大小限制

    2.此次的目的

    credit.csv file里包含着的是1000个关于贷款的案例,我们的目的是希望建立模型来预测影响违约风险的因素。 数据里面的变量很多,最关键的是最后一个default变量,Yes便是违约了,No便是没有违约。

    正如很多在R中的函数一样,决策树函数在R中也不仅仅是一个表达式,这里介绍一个较为常见的包和function,C5.0算法。

    这个算法的内在逻辑可以自行上网查阅(切记,没有任何一种算法是绝对好的,我们并不需要找出什么时候哪个算法更好,也没必要,只需要这个算法拟合度高便行)

    install.packages( 'C50' )
    
    library( C50 )  #安装c50包

    读取我们已经下载好的csv文件:

    credit <- read.csv("credit.csv") 

    往往我们需要设置stringAsFactors= F 来使字符型数据不被设为因子(factor),我们可以先设置,然后再更具自己的需要一个个调整,但是这里我并没有设置,因为我需要将他们设置为factor。

    3.准备工作-data clean

    如果你多次尝试过自己完完整整的处理一个项目(数据由别人提供),你会发现,data cleaning将会占用你整个项目8成以上的时间,你需要不断地去清洗数据以达到你需要的最终结果,甚至很多时候结果不好仅仅是因为数据的清洗不到位。

    dim(credit)  
    head(credit)
    tail(credit)
    str(credit)
    summary(credit)
    which(!complete.cases(credit))   
    

    有一些步骤我们经常都要做,比如了解数据整体结构,看一看有没有缺失值,即使C5.0 的decision tree算法可以帮助我们处理缺失值,但是你仍然得去看看有没有缺失值,这有助于你了解数据的整体性。

    > table(credit$default)  
    
     no yes 
    700 300 

    整体而言,违约的人数是30%,所以在之后我们随机分类training data 和testing data的时候, 这个大概的比例我们也应该记在心中,如果比例差距很大,建议再做一次随机分类。

    进行数据分类:

    set.seed(123)   #这一步是为了使你的结果和我的一样
    train_sample <- sample(1000, 900)  
    
    str(train_sample)
    
    # split the data frames
    credit_train <- credit[train_sample, ]  #训练组
    credit_test  <- credit[-train_sample, ]  #测试组
    
    prop.table(table(credit_train$default))  
    
           no       yes 
    0.7033333 0.2966667 
    prop.table(table(credit_test$default))
    
      no  yes 
    0.67 0.33 

    我使用了set.seed(123)来建立伪随机,因为如果没有这个codes的话,你跑出来的结果肯定和我的不一样,因为下一步的sample是完全随机的。 尽管的伪随机,但是和真正的随机机制没有什么区别。

    可以看见,No的比例在70%左右, yes的比例也在30%左右,总体符合我们数据特点。

    4.使用C5.0函数建立模型

    之前我们已经安装了C50包,而里面的决策树模型函数是C5.0

    credit_model <- C5.0(x= credit_train[-17], y= credit_train$default) #x为training data,去除
    #17th column因为那是 我们需要的结果, y为class,必须是一个levels大于2的因子变量
    
    > credit_model
    
    Call:
    C5.0.default(x = credit_train[-17], y = credit_train$default)
    
    Classification Tree
    Number of samples: 900   #900个samples
    Number of predictors: 16 #使用了16个预测量(我们数据里面一共有17列,除去被我们去除的17列,就是说
    #这里使用了全部变量,过拟合!!!)
    
    Tree size: 57    #树的node有57个,也就是说57个分叉口
    
    Non-standard options: attempt to group attributes

    值得注意的是,这里使用了数据里面全部的列(16个)作为predictors,这也是决策树缺点之一:过拟合。 后续的博客会提到的随机森林理论可以很好的解决这一点。

    > summary(credit_model)
    
    Call:
    C5.0.default(x = credit_train[-17], y = credit_train$default)
    
    
    C5.0 [Release 2.07 GPL Edition]  	Tue Jul 17 17:15:45 2018
    -------------------------------
    
    Class specified by attribute `outcome'
    
    Read 900 cases (17 attributes) from undefined.data
    
    Decision tree:
    
    checking_balance in {> 200 DM,unknown}: no (412/50)
    checking_balance in {< 0 DM,1 - 200 DM}:
    :...credit_history in {perfect,very good}: yes (59/18)
        credit_history in {critical,good,poor}:
        :...months_loan_duration <= 22:
            :...credit_history = critical: no (72/14)
            :   credit_history = poor:
            :   :...dependents > 1: no (5)
            :   :   dependents <= 1:
            :   :   :...years_at_residence <= 3: yes (4/1)
            :   :       years_at_residence > 3: no (5/1)

    这是决策树结果的一部分,告诉了我们nodes是如何被分类的。 如第一行:checking_balance in {> 200 DM,unknown}: no (412/50), 告诉我们支票账户如果大于200 DM 或者unknown的时候, 那么我们判断为不大可能违约,(412/50)表示412个案例符合这个判断, 50个案例违背了判断。你会发现这个判断似乎没有逻辑可言,>200可以理解为有存款,违约当然概率低。但是unknown却让人难以理解,这有可能是因为异常值导致的,又或者是这便是真实情况(也许unknown的人存款都很大,或者是某个地区统计的时候漏掉了,但是该地区属于富裕地区)。

    5.评估模型

    > # create a factor vector of predictions on test data
    > credit_pred <- predict(credit_model, credit_test)
    > # cross tabulation of predicted versus actual classes
    > library(gmodels)
    > CrossTable(credit_test$default, credit_pred,
    +            prop.chisq = FALSE,  prop.c = FALSE,
    +            dnn = c('actual default', 'predicted default'))
    
     
       Cell Contents
    |-------------------------|
    |                       N |
    |           N / Row Total |
    |         N / Table Total |
    |-------------------------|
    
     
    Total Observations in Table:  100 
    
     
                   | predicted default 
    actual default |        no |       yes | Row Total | 
    ---------------|-----------|-----------|-----------|
                no |        59 |         8 |        67 | 
                   |     0.881 |     0.119 |     0.670 | 
                   |     0.590 |     0.080 |           | 
    ---------------|-----------|-----------|-----------|
               yes |        19 |        14 |        33 | 
                   |     0.576 |     0.424 |     0.330 | 
                   |     0.190 |     0.140 |           | 
    ---------------|-----------|-----------|-----------|
      Column Total |        78 |        22 |       100 | 
    ---------------|-----------|-----------|-----------|

    从结果而言,我们成功预测了100个测试案例中的73个,错误的预测中有8个守信案例(NO)被归为违约(YES),这是False possitive, 有19个 False negative的案例。  我们的结果看似有73%的正确率(不算糟糕),但是你如果把每一个结果都预测为NO的话,你也会有67%的正确率(和我们的就差7%),对比于我们的工作量而言,我们的预测可谓是毫无意义。更糟糕的是,我们的False negative预测有19个, 占整体违约数量(33个)的 58%,这是非常糟糕的,是不能接受的。试想错误地高估了一个人的守信度会给银行带来多大的损失。

    6. 提升模型性能

    这里就可以提到C5.0 函数中的另一个argument:trails(an integer specifying the number of boosting iterations. A value of one indicates that a single model is used.) 这是一个基于boosting的算法,正如R里面的描述,这是一种算法的集合,迭代。 默认值为1,意味着我们只使用一种算法。 通常我们将trails设为10,这已经通过实践检验可以提高精确度大概25%。

    > credit_boost10 <- C5.0(credit_train[-17], credit_train$default,
    +                        trials = 10)
    > credit_boost10
    
    Call:
    C5.0.default(x = credit_train[-17], y = credit_train$default, trials
     = 10)
    
    Classification Tree
    Number of samples: 900 
    Number of predictors: 16 
    
    Number of boosting iterations: 10 
    Average tree size: 47.5 
    
    Non-standard options: attempt to group attributes

    可以看见 average tree size变成了47.5,我们之前是57.而运行:

    summary(credit_boost10)
    
    Evaluation on training data (900 cases):
    
    Trial	    Decision Tree   
    -----	  ----------------  
    	  Size      Errors  
    
       0	    56  133(14.8%)
       1	    34  211(23.4%)
       2	    39  201(22.3%)
       3	    47  179(19.9%)
       4	    46  174(19.3%)
       5	    50  197(21.9%)
       6	    55  187(20.8%)
       7	    50  190(21.1%)
       8	    51  192(21.3%)
       9	    47  169(18.8%)
    boost	         34( 3.8%)   <<
    
    
    	   (a)   (b)    <-classified as
    	  ----  ----
    	   629     4    (a): class no
    	    30   237    (b): class yes
    
    > credit_boost_pred10 <- predict(credit_boost10, credit_test)
    > CrossTable(credit_test$default, credit_boost_pred10,
    +            prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
    +            dnn = c('actual default', 'predicted default'))
    
     
       Cell Contents
    |-------------------------|
    |                       N |
    |         N / Table Total |
    |-------------------------|
    
     
    Total Observations in Table:  100 
    
     
                   | predicted default 
    actual default |        no |       yes | Row Total | 
    ---------------|-----------|-----------|-----------|
                no |        62 |         5 |        67 | 
                   |     0.620 |     0.050 |           | 
    ---------------|-----------|-----------|-----------|
               yes |        13 |        20 |        33 | 
                   |     0.130 |     0.200 |           | 
    ---------------|-----------|-----------|-----------|
      Column Total |        75 |        25 |       100 | 
    ---------------|-----------|-----------|-----------|

    可以发现错误率变成了 18%, False Negative 和false possitive 的预测都降低了。

    但是这就足够了吗?

    尽管在预测不会违约的案例上表现的很好,但是也将本来会违约的人预测为了不会违约(13/33)39%的错误率,这里表现的并不满意。幸运的是,如果我们认为False negative是不能接受的,因为这很可能会导致银行大量的损失,那么我们有办法在C5.0上增加一个argument来达到这一个目的:

    > # create dimensions for a cost matrix
    > matrix_dimensions <- list(c("no", "yes"), c("no", "yes"))
    > names(matrix_dimensions) <- c("predicted", "actual")
    > matrix_dimensions
    $`predicted`
    [1] "no"  "yes"
    
    $actual
    [1] "no"  "yes"
    
    > # build the matrix
    > error_cost <- matrix(c(0, 1, 4, 0), nrow = 2, dimnames = matrix_dimensions)
    > error_cost
             actual
    predicted no yes
          no   0   4
          yes  1   0

    以上建立了一个matrix,这是因为C5.0里面的参数costs必须等于一个matrix(a matrix of costs associated with the possible errors. The matrix should have C columns and rows where C is the number of class levels.),这里将false negative的代价设为了4, false possitive设为1(值可以根据需求来调整)

    > # apply the cost matrix to the tree
    > credit_cost <- C5.0(credit_train[-17], credit_train$default,
    +                     costs = error_cost)
    > credit_cost_pred <- predict(credit_cost, credit_test)
    > CrossTable(credit_test$default, credit_cost_pred,
    +            prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
    +            dnn = c('actual default', 'predicted default'))
    
     
       Cell Contents
    |-------------------------|
    |                       N |
    |         N / Table Total |
    |-------------------------|
    
     
    Total Observations in Table:  100 
    
     
                   | predicted default 
    actual default |        no |       yes | Row Total | 
    ---------------|-----------|-----------|-----------|
                no |        37 |        30 |        67 | 
                   |     0.370 |     0.300 |           | 
    ---------------|-----------|-----------|-----------|
               yes |         7 |        26 |        33 | 
                   |     0.070 |     0.260 |           | 
    ---------------|-----------|-----------|-----------|
      Column Total |        44 |        56 |       100 | 
    ---------------|-----------|-----------|-----------|

    看见整体错误率在 37%,并没有提高(反而下降了),但是false negative的预测却降到了7个(你可以尝试不断改变代价值来达到你想要的结果),如果你觉得这个错误率是可以接受的,那么这个模型本身便可以被接受了。

    ALL IN ALL

    我们最终的预测存在一些不尽如人意的地方,如错误率仍然偏高, false negative的值还是太多等等,这真的印证了人心不可预测,或者是贷款人的一些其他重要信息没有被搜集(如借款的目的)。没有完美的模型,也没有百分百的预测,但是总体上讲,决策树模型只要满足了我们的需求,那么就是可以接受的(也许false negative的值足够低就行,因为银行不希望亏本)

    更多相关内容
  • 以构建“专家图谱”为例,融合分析了科研管理大数据中的关联知识和潜在信息,并探讨基于这些技术手段,如何将传统被动的管理模式转变为主动的科研管理模式,进而建立基于大数据的新型管理模式与决策机制
  • 基于大数据的主动科研管理模式与优化决策机制.docx
  • 在此基础上,提出了一种多目标遗传优化总最佳连接(always best connected,ABC)支持型切换决策机制,通过精英选择和个体迁移提高决策质量,基于博弈分析, 寻求多终端对多接入网络的最佳切换决策方案,使用户和...
  • 阐述了模型选择技术在泵站优化运行中研究的必要性,给出泵站优化运行模型选择系统的结构,采用两级模型字典库存储模型并通过构造搜索树建立模型选择推理机制,完善了模型选择的全过程和操作步骤,实现了泵站优化运行模型...
  • 同时基于大数据的教育决策机制因其对创新、开放、共享等内在价值的追求必然衍生建立扁平化决策结构的外在诉求,从而消除决策组织的科层制壁垒,促使决策流程中的数据理性与
  • 在此基础上,结合事件触发机制有效提高家庭能量管理系统的运行效率,进而给出从家庭能量管理控制中心到用电设备的智能优化调度方法;最后,通过仿真算例证实了所提方法的有效性,结果表明其能在减少用户用电费用的...
  • 基于供应商和零售商的两级供应链, 探讨最优零售价格的确立, 分别建立分散决策下的零售商利润函数模型和集中决策下的供应链系统利润函数模型, 通过函数单峰性分析证明最优订货量的存在性和唯一性, 并求得最优解....
  • 应用博弈方法比较分析合作博弈、纳什均衡博弈、Stackelberg主从博弈三种决策模式下制造/再制造产品的最优定价和广告投入策略, 并针对非合作博弈下的效率损失设计了闭环供应链中制造和再制造过程的利益协调机制。...
  • 论文研究-双积分制下汽车生产商生产决策优化.pdf, 本文研究了燃料消耗量积分和新能源汽车积分"双积分制"下汽车生产商生产决策问题,基于持股比例和内部期权协议建立了...
  • AVS视频编码标准中存在丰富的帧内和帧间预测模式速率失真优化模式决策可以充分利用这种灵活性来提高时空预测效率并最大化编码效率。但是,由于巨大的吞吐负担,实现复杂性非常高针对这项工作,针对VLSI实现量身定制...
  • 分析列车运行过程中的能量转换机制,建立单列车耗能最低优化模型、多列车节能优化模型及列车延误多目标优化控制模型,针对模型本身及其约束条件的复杂性,提出基于改进布谷鸟优化算法与动态搜索方法的“模拟优化”...
  • 应用博弈方法比较分析合作博弈、纳什均衡博弈、Stackelberg主从博弈三种决策模式下制造/再制造产品的最优定价和广告投入策略,并针对非合作博弈下的效率损失设计了闭环供应链中制造和再制造过程的利益协调机制。...
  • 多维网上拍卖优化机制决策模型研究 在网上多维拍卖的机理设计中,多维拍卖竞胜标的确定问题是一个十分复杂的 问题,事实上它已经被证明是NP C Non-deterministic Polynomial,非确定性多项式) 难题。本文是通过...
  • IEEE) 这是2020年发布在IEEE上的一篇文章,主要讲的是基于决策分类的进化算法来解决动态多目标优化问题(DMOPs),由于本人也是才接触多目标进化没多久,学术功底有限,如果有不正确的地方欢迎批评指正!...

    阅读论文:A Dynamic Multiobjective Evolutionary Algorithm
    Based on Decision Variable Classification

    (Zhengping Liang , Tiancheng Wu, Xiaoliang Ma, Zexuan Zhu , Member, IEEE,and Shengxiang Yang , Senior Member, IEEE)
    这是2020年发布在IEEE上的一篇文章,主要讲的是基于决策分类的进化算法来解决动态多目标优化问题(DMOPs),由于本人也是才接触多目标进化没多久,学术功底有限,如果有不正确的地方欢迎批评指正!

    前言

    首先提出两个问题
    1、什么是动态多目标优化问题(DMOPs)?
    具有多个互相冲突且随着时间变化的多目标优化问题
    2、动态多目标优化问题和多目标优化问题之间有什么区别呢?
    动态=Dynamic 优化问题是指其目标函数不仅与决策变量有关,而且还会随着时间(环境)动态变化。
    定义多目标问题(MOP)
    在这里插入图片描述
    定义动态多目标问题(DMOP)
    在这里插入图片描述
    X = (x1,x2,…xnt)代表nt维的决策变量向量,主要是新增加了t:离散的时间实例,fmt(x,t)表示x在时间t的第mt个目标函数。nt和mt的值都会随时间变化。F(x,t)代表时间t评估解x的目标函数向量;p和q分别是不等式约束和等式约束的个数;gi(x,t)代表第i个不等式约束;Ωt代表可行的时间空间;

    Abstract–摘要

    现状:目前提出了许多动态多目标进化算法(DMOEAs)来解决DMOPs,主要是通过将多样性引入方法或预测方法与常规多目标进化算法相结合来解决。维持种群收敛性和分布性(Convergence and Diversity)的良好平衡对于DMOEAs的性能至关重要。

    解决方案:提出了一种基于决策变量分类的DMOEA(DMOEA-DVC)。 DMOEA-DVC在静态进化和变化响应阶段分别将决策变量分为两个和三个不同的组。在静态进化中,两个决策变量组使用两种不同的交叉算子来加速收敛,同时保持良好的多样性。在变化响应中,DMOEA-DVC分别通过保持,预测和分布性引入策略来重新初始化三个决策变量组。

    实验结果:在33个基准DMOPs上将DMOEA-DVC与其他六个典型的DMOEAs进行了比较。实验结果表明,DMOEA-DVC的总体性能优于或类似于所比较的算法。

    Introduction–引言

    • 从MOEAs 到 DMOEAs遇到的问题
      多目标进化算法(MOEAs)在各种静态多目标优化问题(MOPs)上都取得了成功。但是,由于在动态环境中缺少快速的变化响应机制,在DMOPs中它们往往会失败。
    • 解决方法
      为了解决DMOPs,近年来已经提出了许多动态MOEAs(DMOEAs)。它们大部分可以被分为多样性引入方法(Diversity introduction approaches)和预测方法(prediction approaches)。

    Diversity introduction approaches–多样性引入方法

    多样性引入方法将一定比例的随机或突变个体引入进化种群以增加种群多样性。多样性的增加可以促进算法更好地适应新环境。但是,由于这些算法主要依靠静态进化搜索来找到引入多样性之后的最优解集,因此收敛速度可能会变慢

    prediction approaches–预测方法

    预测方法采用预测模型来预测在变化的环境中有希望的种群。可以大大提高种群收敛性。然而,大多数预测模型需要一个训练周期,在训练周期中预测模型的性能不能令人满意

    主要问题

    都没有考虑决策变量的不同特征。他们倾向于以相同的方式探索所有决策变量,这在平衡种群多样性和收敛性方面效率较低。

    主要亮点(idea)

    提出了基于决策变量分类(DMOEA-DVC)的DMOEA。分别在静态进化和变化响应阶段,使用两种决策变量分类方法将决策变量分为两个和三个不同的组。根据决策变量分类,将不同的进化算子和变化响应策略相应地应用于不同的组,以增强种群的分布性和收敛性。

    1. 在静态进化和变化响应阶段分别使用两种不同的决策变量分类方法,使算法能够更有效地探索不同的决策空间。
    2. 在静态进化中,引入了一种新的子代生成策略,该策略通过对两种不同类型的决策变量使用特定的交叉算子产生子代来加快种群收敛速度,同时保持算法的种群多样性。
    3. 在变化响应中,提出了一种保持,预测和多样性引入相结合的混合响应策略来处理三种类型的决策变量,从而在不同的动态环境中实现更好的适应性。

    Background–背景

    A、DMOP基础

    基于动态帕累托支配找到动态帕累托最优解或动态帕累托前沿面

    1. 定义1(动态帕累托支配):在时间t给出两个候选解x和y(x,y∈Ω),称x支配y,写为x(t)≺y(t),当且仅当
      在这里插入图片描述
    2. 定义2(动态帕累托最优解集):在时间t的一个动态帕累托最优解集记为PS(t),其中包括所有不被其他解支配的解,如下:在这里插入图片描述
    3. 定义3(动态帕累托前沿面):在时间t的一个动态帕累托最优面记为PF(t),是PS(t)中的解在目标函数空间中的映射,如下:
      在这里插入图片描述
    4. 定义4(多最优值变量):给定一个决策变量i,若PS(t)中存在两个解x,y,并且xi≠yi,xi,yi分别指x,y在决策变量i上的值,则称i有多个最优值,是一个多最优值变量。
    5. 定义5(单最优值变量):给定一个决策变量i,对于PS(t)中任意两个解x,y,他们对应的决策变量i值是一样的,即xi=yi,则称i有单个最优值,是一个单最优值变量。

    根据PF(t)和PS(t)的动态特性,将DMOP分为四种类型

    • 类型I: PS(t)随时间变化,而PF(t)是固定的。
    • 类型II: PS(t)和PF(t)都随时间变化。
    • 类型三:PS(t)是固定的,PF(t)随时间变化。
    • 类型IV: PS(t)和PF(t)都是固定的,但是随着时间的推移问题会改变。

    B、动态多目标进化算法

    1. 动态多目标算法(多样性引入)

    通过看下面这个表格就非常直观,最终通过引入多样性方法可以防止种群陷入局部最优,并且易于实施。在这里插入图片描述

    2. 动态多目标算法之(基于预测的方法)

    在这里插入图片描述
    其中基于预测的方法中,也有很多在PPS算法的基础上,进行一些改进,最终也可以显示出提高收敛速度的能力。

    C、决策变量分类方法

    通过结合多样性引入和基于快速预测的方法来利用两者的优点,提出了一种增强的变化响应策略。

    多样性引入或预测方法可以被视为搜索决策变量最优值的概率模型,大多数现有的DMOEAs都假定所有决策变量都处于相同的概率分布下。在实际的DMOPs中,决策变量的概率分布可能会发生很大变化。通过决策变量分类,可以将决策变量分为不同的组,然后可以将特定的概率搜索模型应用于相应的变量组以获得更好的解。

    在静态中的决策变量分类

    许多基于决策变量分类的MOEAs在静态MOPs上都取得了成功,决策变量扰动会产生大量个体用于分类,并成比例地消耗大量适应性评估。此策略对于静态MOPs效果很好,在静态MOPs中,决策变量的类别不变,并且仅需要分类一次。

    在动态中的决策变量分类

    • Woldesenbet和Yen [51]通过对目标空间变化的平均敏感度来区分决策变量,并以此为基础来重新安置个体。 该方法对于动态单目标优化问题效果很好,但是不适用于DMOP。
    • Xu提出了一种针对DMOP的协作式协同进化算法,其中决策变量被分解为两个子组件,即相对于环境变量t不可分离和可分离的变量。应用两个种群分别协同优化两个子组件。文献中提出的算法在基于环境敏感性可分解决策变量的DMOP上具有优越性,但是,在许多DMOP中可能并非如此。

    在这里插入图片描述

    Framework–框架

    在这里插入图片描述
    具体过程:初始化父代种群P,然后从父代种群中选出一个子代种群P′和一个非支配解的档案A。在每次迭代中,在使用进化算子生成每个子代个体之前,对P使用决策变量分类方法,并将结果记录在布尔向量flag_multi中,其中每个元素指示相应的决策变量是多最优还是单最优变量。DMOEA-DVC可检测到进化过程中的任何潜在变化,如果检测到变化,则将使用变化响应策略,否则,将对个体的不同类型决策变量使用不同的交叉算子生成子代个体,生成子代个体后,更新P和A。在每一次迭代的末尾,从当前父代种群和子代种群的混合中选择一个新的子代种群和一个新的档案。

    A、ClassificationSO–决策变量分类

    在静态进化阶段(算法1第6行)使用决策变量分类,以增加生成高质量子代个体的可能性。
    目标:找到在PF上分布均匀的种群,并尽快收敛到PF
    方法:探索种群中非支配个体的邻居是很有效的
    问题:如果子代的所有决策变量都是在非支配个体的决策变量附近生成的,则种群会陷入局部最优,为了避免这种情况,子代个体中的多最优值变量值应远离父代个体产生。

    • 子代中的多最优变量值应该远离非支配个体产生,以保持良好的多样性。
    • 对于单最优变量,子代个体中的生成值应尽可能接近父代个体中的相应值,以加速收敛。

    关键问题:如何确定多最优值变量和单最优值变量

    提出了一种区分多最优值变量和单最优值变量的近似方法。

    在DMOP中,目标函数可能在某些决策变量上相互冲突。如果两个目标函数在决策变量上发生冲突,则该决策变量被视为具有多个最优值。(这个也很好理解,如果在X=C时存在两个最优的解,那么这两个目标相互冲突)

    因此使用斯皮尔曼等级相关系数(SRCC)来衡量一个变量和一个目标函数之间的相关性。
    在这里插入图片描述
    如果第i个变量的两个目标函数之间存在明显的相关冲突(正相关与负相关),即max(ri1(t),ri2(t),…,rim(t))>0.5α并且min(ri1(t),ri2(t),…,rim(t))<-0.5α(α是预定义的阈值),则将第i个决策变量分类为多最优值变量。否则,第i个决策变量将被视为单最优值变量。

    在这里插入图片描述
    首先计算每个决策变量i与每个目标j之间的SRCC值,然后根据SRCC值将决策变量分为多最优值变量(第10行)或单最优值变量(第12行),然后采取上述对应方案。

    Classification–变化响应中决策变量分类

    在大多数现有的DMOPs中,考虑到环境变化,可以将决策变量分类为相似,可预测和不可预测的变量。

    • 相似 —无需重新初始化
    • 可预测 ----决策变量应基于预测进行重新初始化
    • 不可预测 -----可以通过引入多样性进行重新初始化

    非参数t-test用于评估决策变量的变化与环境变化的相关性

    在这里插入图片描述
    t-testi <=β,其中β是预定义的阈值,则第i个变量被视为无明显变化,也就是说,它是相似的变量,不需要重新初始化。如果t-testi>β,则第i个决策变量被认为具有显著变化,即变量i是可预测的或不可预测的,需要重新初始化。

    上面公式已经区分了相似或者可预测和不可预测的情况,现在我们继续区分到底是可预测情况还是不可预测情况。如下图所示

    将x_center的第i个决策变量置为预测值而其他决策变量保持不变来生成n个试验个体x_trial[i],如果x_trial [i]支配x_center,则接受第i个决策变量的预测,并将第i个决策变量分类为可预测变量,并使用基于预测的方法重新初始化。否则,第i个决策变量是不可预测的,并使用基于多样性引入的方法重新初始化
    在这里插入图片描述
    下面就展示算法3 的伪代码
    在这里插入图片描述
    首先,分别根据(7)和(8)计算t-test和x_center。其次,使用预测模型来预测新的个体x_p(确切的预测模型在第IV -C节中进行了描述)。第三,产生试验个体(第6-14行)并进行评估。如果试验个体支配质心个体,则该试验个体的相应决策变量的预测是正确的,否则该预测是不可接受的。

    B、环境选择

    • DMOEA-DVC和SGEA[33]使用相同的选择方法,适应度函数F(i)表示支配个体xi的个体数目
      在这里插入图片描述

    • 如果存档A中个体少于N则从种群中挑选最好的个体进P’,如果刚好相等,就将A中所有个体转入P’,如果存档A中个体多了就从种群中挑选最远的个体进P’.

    C、ChangeResponse --变化响应

    定义的三种类型的决策变量分别使用保持,多样性引入和预测方法。

    • 保持:如果决策变量是相似变量,则DMOEA-DVC会在变化响应中保持该变量的值不变。
    • 多样性引入:如果决策变量是不可预测的变量,则对该变量应用随机重新初始化策略。变量更新如下:
      在这里插入图片描述
      其中,Li(t)和Ui(t)分别表示在时间t处第i个变量的上限和下限,rand是[0,1]中的随机值。
    • 预测方法:如果将决策变量分类为可预测变量,则使用具有较短训练周期的卡尔曼滤波器[25],[33]通过中心预测将其重新初始化。
    • 在这里插入图片描述
      下面就是算法4的伪代码
      在这里插入图片描述

    D、GenerateOffspring --子代生成

    模拟二进制交叉(SBX)或DE交叉算子用于根据决策变量是否为多最优值变量来生成决策变量的值。SBX和DE交叉算子是MOEAs中两个常用的交叉算子。
    在这里插入图片描述
    图1展示了这两个交叉算子生成的子代解的分布示例。SBX生成的子代解更接近父代,而DE交叉生成的子代解远离父代。应该在远离父代的位置生成多最优值变量,在这种情况下应使用DE交叉算子。而单最优值变量应在父代附近生成,即选择SBX。
    在这里插入图片描述
    这个伪代码已经很简单了,如果是多最优值变量就选择DE交叉算子,否则,单优值变量选择SBX交叉算子。

    E、种群更新

    DMOEA-DVC使用与SGEA相同的稳态种群更新策略。种群更新策略在父种群P和档案A中都执行。新生成的子代个体y用于替换P中最差的个体,同时更新A。

    Conclusion

    • 本文提出了一种基于决策变量分类的DMOEA,即DMOEA-DVC。对静态优化阶段和变化响应阶段的决策变量进行了分类。采用不同的策略来生成不同类型变量的值,以达到种群多样性和收敛性的良好平衡。
    • DMOEA-DVC与其他六种最先进的DMOEA在33个基准DMOP上进行了比较。实验结果表明了DMOEA-DVC算法的有效性。

    ps:上面大部分也是根据原文来进行总结以及理解的,由于本人也是才接触多目标进化没多久,学术功底有限,如果有不正确的地方欢迎批评指正!同时也借鉴了这些博客,如果想要了解,可以看
    https://blog.csdn.net/u013555719/article/details/106856234?
    同时这篇文章提到的几种动态多目标的算法,DCOEA、PPS、SGEA、有兴趣大家可以搜索了解一下。
    同时我目前的微信公众号也是“研行笔录”,后期我也会持续更新,如果有兴趣的话,可以点个关注,不迷路!
    在这里插入图片描述

    展开全文
  • 通过修正塔格特模型,深入探讨了基于企业价值成长的资本结构优化条件,并根据中国企业制度的特殊性提出了建议。研究表明,当融资债券具有税盾效应时或当企业家前期消费的边际效用与后期的非金钱支出的边际效用之比...
  • 针对求解不确定、动态和分布式的多学科设计优化问题时所面临的挑战,提出了一种基于行为均衡分析的多学科协同决策机制。在行为博弈分析框架下,通过采用折衷决策支持问题建立学科设计团队的基本决策模型,利用理性...
  • 通过对决策树节点特征的优化选择,使各故障子类的区分得以最大化。最后按照决策树结构建立分级诊断的故障决策系统,分别以支持向量机和神经网络作为树节点分类器,有效地提高了故障的识别率。该方法应用于高通滤波器...
  • 为进一步提高煤矿区煤与煤层气共采效率,需要对现阶段煤与煤层气协调开发模式进行优化决策,针对该问题,以晋城矿区为研究对象,基于层次规划思想提出了“采煤工作面→采区→矿井”3层级煤与煤层气协调开发模式优化...
  • 文章目录一、理论基础1、哈里斯鹰优化算法(HHO)2、结合高斯变异和维数决策逻辑的哈里斯鹰优化算法(GCHHO)(1)高斯变异(2)布谷鸟搜索中的维数决策逻辑(3)提出的GCHHO二、仿真实验与结果分析三、参考文献 ...

    一、理论基础

    1、哈里斯鹰优化算法(HHO)

    请参考这里

    2、结合高斯变异和维数决策逻辑的哈里斯鹰优化算法(GCHHO)

    本节将说明如何改进原始HHO以增强原始算法的搜索性能。原始算法的缺点主要是由于探索和开发之间的不平衡导致搜索性能下降。因此,引入了两种机制来改善这种平衡,即高斯变异机制和布谷鸟搜索机制。

    (1)高斯变异

    高斯变异(Gaussian mutation, GM)是一种优化策略,它使用服从正态分布的随机数作用于原始位置向量以生成新位置。大多数变异算子分布在原始位置周围,这相当于在小范围内执行邻域搜索。这种变异不仅提高了优化算法的优化精度,而且有利于算法跳出局部最优区域。同时,少数算子远离当前位置,增强了种群的多样性,有利于更好地搜索潜在区域,从而提高搜索速度,加快优化算法的收敛趋势。高斯概率密度公式如下所示: f ( x ) = 1 2 π σ exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) (1) f(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)\tag{1} f(x)=2π σ1exp(2σ2(xμ)2)(1)其中, μ \mu μ表示分布的平均值或期望值, σ \sigma σ表示标准差。特别地,标准高斯概率密度种的 μ \mu μ σ \sigma σ分别设置为0和1。为了充分考虑当前种群的特征,随机选择种群中的两个位置,并利用二者的差值与高斯分布算子进行交互,以形成所提出的高斯变异算子。高斯变异的表达式如下所示: O = G ( ζ ) ⋅ ( X r a n d , 1 D − X r a n d , 2 D ) (2) O=G(\zeta)\cdot\left(X_{\rm rand,1}^D-X_{\rm rand,2}^D\right)\tag{2} O=G(ζ)(Xrand,1DXrand,2D)(2)其中, G ( ζ ) G(\zeta) G(ζ)是由式(1)的概率密度形成的高斯分布, ζ ∈ [ 0 , 1 ] \zeta\in[0,1] ζ[0,1] X r a n d , 1 D X_{\rm rand,1}^D Xrand,1D X r a n d , 2 D X_{\rm rand,2}^D Xrand,2D分别表示在群体中随机选择的两个鹰的位置信息, O O O表示上述提出的高斯变异算子,每个算子包含 D D D维。

    (2)布谷鸟搜索中的维数决策逻辑

    布谷鸟搜索是一种启发式算法,模仿布谷鸟的孵卵和移动行为。布谷鸟的蛋将被放在其他的鸟舍里,是否找到一个新的鸟舍将取决于它们能否成功地伪装它们的蛋而不被发现。从CS的特性可以看出,通过将其引入基本HHO,位置向量上的某些维度的数据可以通过孵卵策略进行随机变异,从而使变异后的位置向量仍然保持原始位置的优越特性。判断是否能找到鸟蛋的公式如下: k = J u d g e D > θ (3) k=Judge^D>\theta\tag{3} k=JudgeD>θ(3)其中, J u d g e D Judge^D JudgeD是一行 D D D维随机数, θ \theta θ是用于决定是否放弃当前鸟巢的概率, k k k表示将所判断的每个维度与 θ \theta θ进行比较的结果,用于决定数据的哪个维度将发生变异。
    当鸟巢的主人发现了这些外来的蛋时,布谷鸟会随机地走到下一个被认为是昂贵的地方。布谷鸟的随机运动策略如下所示: C = k ⋅ L F ( D ) (4) C=k\cdot LF(D)\tag{4} C=kLF(D)(4)其中, C C C是CS算子, k k k确定向量的哪个维度将被变异, L F LF LF是Levy飞行公式,其定义已在原始HHO中解释。

    (3)提出的GCHHO

    在本小节中,将高斯变异策略和布谷鸟搜索机制引入原始HHO,即GCHHO。具体来说,在HHO正常执行后,根据上述两种机制,随机选择群体中的两个个体,根据两个个体之间的差别产生变异。然后,加入当前搜索位置以获得新的位置向量。最后,我们比较了新的和旧的位置向量,并保留了更好的位置向量。该过程的计算公式如下所示: X n e w = X r a w + O ⋅ C (5) X_{\rm new}=X_{\rm raw}+O\cdot C\tag{5} Xnew=Xraw+OC(5) X ( t + 1 ) = { X n e w if    F ( X n e w ) < F ( X r a w ) X r a w e l s e (6) X(t+1)=\begin{dcases}X_{\rm new}\quad \text{if}\,\,F(X_{\rm new})<F(X_{\rm raw})\\X_{\rm raw}\quad \rm else\end{dcases}\tag{6} X(t+1)={XnewifF(Xnew)<F(Xraw)Xrawelse(6)其中, X r a w X_{\rm raw} Xraw表示原始HHO的搜索结果, X n e w X_{\rm new} Xnew表示变异操作后的新位置, O O O C C C分别由式(2)和(4)计算得出, F F F表示适应度函数。所提出算法的流程图如图1所示。
    在这里插入图片描述

    图1 GCHHO算法流程图

    从图1可以看出,添加的机制在原始算法搜索可行解之后重新处理位置信息。它巧妙地结合了上述两种策略,不仅增加了种群的多样性,而且提高了求解过程的效率;同时,改进后的算法并没有使原算法的结构复杂化。总体上,GCHHO的伪码描述如图2所示。
    在这里插入图片描述

    图2 GCHHO算法伪代码

    二、仿真实验与结果分析

    将GCHHO与HHO、WOA、MFO和SCA进行对比,设置种群规模为30,最大迭代次数为10000,以文献[1]中IEEE CEC 2017[2]测试函数F1、F3、F8、F9、F16、F17、F25、F29为例,维度为30,结果显示如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    函数:F1
    GCHHO:最优值: 3094.4157
    HHO:最优值: 16567401942.9725
    WOA:最优值: 5017175.8812
    MFO:最优值: 16017630721.743
    SCA:最优值: 15157270395.9507
    函数:F3
    GCHHO:最优值: 2997.2357
    HHO:最优值: 68813.1388
    WOA:最优值: 212257.0996
    MFO:最优值: 94199.1229
    SCA:最优值: 34791.7194
    函数:F8
    GCHHO:最优值: 936.3087
    HHO:最优值: 1026.8504
    WOA:最优值: 988.3895
    MFO:最优值: 1019.5817
    SCA:最优值: 1036.5593
    函数:F9
    GCHHO:最优值: 4901.9067
    HHO:最优值: 5744.7218
    WOA:最优值: 12309.0445
    MFO:最优值: 5715.0659
    SCA:最优值: 5749.6204
    函数:F16
    GCHHO:最优值: 2916.2254
    HHO:最优值: 3452.4407
    WOA:最优值: 3621.7162
    MFO:最优值: 2995.4419
    SCA:最优值: 3714.009
    函数:F17
    GCHHO:最优值: 2648.3002
    HHO:最优值: 2813.1504
    WOA:最优值: 2328.3612
    MFO:最优值: 2183.7633
    SCA:最优值: 2386.896
    函数:F25
    GCHHO:最优值: 2899.2562
    HHO:最优值: 3361.8303
    WOA:最优值: 2908.9673
    MFO:最优值: 2962.4549
    SCA:最优值: 3178.4707
    函数:F29
    GCHHO:最优值: 4011.1331
    HHO:最优值: 7438.1632
    WOA:最优值: 4265.6218
    MFO:最优值: 3841.2102
    SCA:最优值: 4926.7322
    

    实验结果表明:GCHHO与原始HHO以及其他成熟的优化算法相比,具有优异的性能。

    三、参考文献

    [1] Shiming Song, Pengjun Wang, Ali Asghar Heidari, et al. Dimension decided Harris hawks optimization with Gaussian mutation: Balance analysis and diversity patterns[J]. Knowledge-Based Systems, 2020, 215: 106425.
    [2] Guohua Wu, R. Mallipeddi, P. N. Suganthan. Problem Definitions and Evaluation Criteria for the CEC 2017 Competition and Special Session on Constrained Single Objective Real-Parameter Optimization[R]. Technical Report, Nanyang Technological University, Singapore, November 2016. (Single objective, constrained case)

    展开全文
  • 在真实世界中,带有决策和目标约束的多目标优化问题常常都同时出现。但以前的人工CMOPS从来没有同时考虑过决策和目标约束。因此,本文设计了一个同时带有决策和目标约束的人造的多目标优化问题集,取名为DOC。 另外...

    Handling Constrained Multiobjective Optimization Problems With Constraints in Both the Decision and Objective Spaces

    1.摘要

    在真实世界中,带有决策和目标约束的多目标优化问题常常都同时出现。但以前的人工CMOPS从来没有同时考虑过决策和目标约束。因此,本文设计了一个同时带有决策和目标约束的人造的多目标优化问题集,取名为DOC。
    另外,本文还提出了一个简单且高效的处理DOC或也可用于其他CMOPS的方法,取名为TOP。最后本文通过实验证明了TOP算法的有效性。

    2.介绍

    这部分文章对CMOP和本文研究内容做了基本介绍,这里只对重点问题做介绍。
    ①一个CMOP可以简单描述为以下形式:
    在这里插入图片描述
    其中F(x)是目标函数集,g(x)是不等式约束,h(x)是等式约束,x是决策变量。
    ②现实生活中,大部分限制是决策限制。文章提供了个小例子区别目标约束和决策约束,比如我们去买车,我们的目标函数是舒适度和价格。我们希望价格cost<50k,这个就构成了目标约束,这很容易在目标空间中描述。另外,我们希望座位seat>5,生产国=德国,可以发现这两个约束却不能在目标空间描述出来,这两个实际就是决策限制。
    ③DOC中涉及到等式约束,目前很少的人工CMOPS考虑到了等式约束
    ④TOP算法分成两步。第一步:利用加权的方法将CMOP转换为一个单目标问题,进行优化。第二步:直接使用现有的CMOEAs对第一步优化结果进行进一步优化,注意此时优化的是个带约束的多目标优化原问题。

    3.相关工作

    这部分文章介绍了CMOPs里面涉及的一些基本定义,以及对当前人工CMOPs和CMOEAs做了介绍。
    A.基本定义
    1)Pareto Dominance:假设有两个决策向量,Xu和Xv。当Xu得到的所有目标函数的值都小于Xv求出的,我们称Xu支配Xv。
    2)Feasible Region:满足所有约束条件的空间即为可行域。我们用下面的公式描述约束的违反程度。
    在这里插入图片描述
    在这里插入图片描述
    其中,CVi(x)为第i个目标函数的违反程度。
    3)Pareto Optimal Solution:对于一个决策向量Xu,如果找不到比起更优的Xv向量,则称Xu是一个最优的解决方案
    4)Pareto Optimal Set:Pareto 最优集,由多个最优决策向量组成的最优解决方案集合
    5) Pareto Front:Pareto 前沿,Pareto 最优集在目标空间的图像
    B.当前的人工CMOPs的介绍
    目前的人工CMOPs主要分如下两种:

    1. 第一种:在多目标优化问题中只考虑了目标约束。比如CTPs, DAS-CMOPs, 和 NCTPs.
    2. 第二种:在多目标优化问题中只单独考虑决策和目标约束。比如CFs.

    C.当前的CMOEAs的介绍
    目前的CMOEAs算法大致分成以下3类:

    1. 基于支配的方法,包括NSGA-II-CDP,IDEA
    2. 基于分解的方法,包括CMOEAD,MOEA/D-CDP
    3. 基于指标的方法

    而主流的为前两种,所以这里不讨论基于指标的方法:
    基于支配的方法
    NSGA-II-CDP
    原文:A fast and elitist multiobjective genetic algorithm: NSGA-II。
    该算法是NSGA-II的延伸,其中CDP指加入了约束支配原理。具体的说,任何可行的个人都支配任何不可行的个体,对于两个不可行个体,最好是约束违反较小的个体。
    IDEA
    原文:Infeasibility Driven Evolutionary Algorithm (IDEA) for Engineering Design Optimization
    该算法进化过程中显式地保持了一小部分不可行的解决方案。 认为不可行解的存在有利于IDEA从可行区域和不可行区域搜索帕累托最优解。
    Adaptive tradeoff model
    原文:A comparative study of constraint-handling techniques in evolutionary constrained multiobjective optimization
    自适应权衡模型根据当前种群的可行性比例将整个进化过程分为三种情况。 这三种情况是:1)不可行情况;2)半可行情况;3)可行情况。 在不同的情况下,设计了不同的约束处理技术来处理约束。
    A CMOEA based on an adaptive penalty function and a distance measure
    原文:Constraint handling in multiobjective evolutionary optimization
    该算法不仅可以在可行区域内搜索帕累托最优解,而且可以利用不可行个体提供的重要信息,具有更好的目标函数值和较低的约束违反。
    Blended ranking to cross infeasible regions in constrained multiobjective problems注:标题即原文
    该算法可以跨越目标空间的不可行区域,找到真正的约束帕累托前沿。 该算法的主要思想是将个体在目标空间中的秩与其在约束空间中的秩相混合。
    An evoltionary algorithm for constrained multi-objective optimization
    提出了一种CMOEA,其中帕累托优势概念与约束处理技术和多样性机制相结合。
    New constraint handling method for multi-objective and multi-constraint evolutionary optimization
    提出了一种新的基于帕累托最优性的约束处理技术。
    Constrained Pareto simulated annealing for constrained multi-objective optimization 和 Constrained multiobjective optimization algorithm based on immune system model
    分别采用模拟退火和免疫系统模型求解CMOP。
    A corner point-based algorithm to solve constrained
    multi-objective optimization problems 和 Differential evolution mutation operators for constrained multi-objective optimization

    采用差分进化(DE)来应对CMOP。
    A modified objective function method with feasible-guiding strategy to solve constrained multiobjective optimization problems
    引入了一种改进的目标函数方法来引导优势度检验,并采用了一种可行的指导策略来修复不可行的个体。 认识到单一约束处理技术的局限性。
    Constrained multi-objective optimization algorithm with an ensemble of constraint handling methods
    提出了一种新的CMOEA,它利用约束处理技术的集合来求解CMOP。

    基于分解的方法
    CMOEAD
    原文:An adaptive constraint handling approach embedded MOEA/D
    提出了一种基于分解的CMOEA,称为CMOEAD,通过添加一种新的约束处理技术,可以看作是MOEA/D的扩展。 在这种约束处理技术中,根据约束类型、可行空间的大小和搜索结果自适应地调整违规阈值。 这种约束处理技术的目的是增加选择压力,并使不可行的解决方案的违规小于确定的阈值,得到可行解。
    MOEA/D-CDP
    原文:A study of two penalty-parameterless constraint handling techniques in the framework of MOEA/D
    随机排序和CDP的扩展/修改版本是在MOEA/D框架下实现的。 实验结果表明,CDP比随机排序更有效。
    An improved epsilon constraint handling method embedded in MOEA/D for constrained multi-objective optimization problems
    将改进的epsilon约束处理技术应用于MOEA/D,其中epsilon水平根据当前人群中的可行性比率动态调整。
    Push and pull search for solving constrained multi-objective optimization problems
    一个推拉搜索(PPS)框架被嵌入到MOEA/D中,以解决CMOPs。 在PPS中,搜索过程分为两个不同的阶段:1)推送阶段和2)拉动阶段。 在推送阶段,忽略了约束,旨在跨越无约束帕累托前沿前面的不可行区域。 然后在拉阶段,考虑约束,并采用改进的epsilon约束技术将在推阶段得到的解拉向可行的和非主导的区域。
    MOEA/D with angle-based constrained dominance principle for constrained multi-objective optimization problems
    一种名为基于角度的约束优势原理的约束处理技术被纳入到MOEA/D中,用于求解CMOP。

    4.DOC

    在这里插入图片描述
    DOC中包含了9个实例,即DOC1-DOC9,其中m代表目标函数个数,D代表决策变量的个数,NOC代表目标约束,NDC代表决策约束,NIC代表不等式约束,NEC代表等式约束,Feasibility Ratio代表得到可行解的概率.

    5.TOP

    TOP算法分成两步。
    第一步:利用加权的方法将CMOPs转换为一个简单的单目标问题,进行优化。我们需要注意的是:

    1. 设计一个合理的权重向量将问题转换为单目标函数
    2. 约束处理方式为a.如果Xu和Xv都是可行解时,取目标函数的导数更小的 b.当一个可行一个不可行时取可行的 c.当都不可行时,取约束违反程度小的
    3. 本文采用了DE进行搜索
    4. 停止条件:a.可行解的比例超过三分之一 b.计算所有可行个体的所有目标函数的归一化结果之和,取其max和min,若max-min<0.2. 则停止
      在这里插入图片描述
      在这里插入图片描述

    第二步:直接使用现有的CMOEAs对第一步优化结果进行进一步优化,注意此时优化的是个带约束的多目标优化原问题。

    6.实验

    实验指标

    1. FR:可行率
    2. IGD:越小越好
    3. HV:越大越好

    参数设置

    1. 种群大小:对于2目标问题设置成100,3目标问题设置成300。这里参考了MOEA/D: A multiobjective evolutionary algorithm based on decomposition提供的建议
    2. 使用了二进制交叉和多项式变异,交叉概率设为1.0,变异概率设为1/D,D为决策变量个数
    3. 独立运行数和终止条件:所有算法在每个实例上独立运行20次,当两个目标CMOP和三个目标CMOP分别达到200,000和400,000个适应度评估时终止。
    4. 算法参数设置:为了确保比较公平,NSGA-II-CDP、IDEA、CMOEAD和MOEA/D-CDP的其他参数设置与它们的原始论文相同,并且在ToP框架下保持不变。

    本文对比了使用TOP的 NSGA-II-CDP 和IDEA 算法和没使用TOP的,这两个进化算法都是基于支配的方式,结果如下图。
    在这里插入图片描述
    在这里插入图片描述

    本文对比了使用TOP的 CMOEAD 和 MOEA/D-CDP 算法和没使用TOP的,这两个进化算法都是基于分解的方式,结果如下图。
    在这里插入图片描述
    在这里插入图片描述
    另外,文章还对比了使用DE后TOP的表现。
    在这里插入图片描述

    7.总结

    从上述实验结果来看,在CMOEAs中,引入TOP的机制可以提高算法的表现。这可能是因为:
    1.TOP提供了更少的评估次数,即更快的训练速度
    2.TOP有效避免了种群陷入局部最优
    DOC和ToP的MATLAB源代码可以从Y.Wang的主页下载 http://www.escience.cn/people/yongwang1/index.html.

    返回受约束的多目标优化问题优秀论文及总结目录

    展开全文
  • 针对由一个低碳产品制造商与一个零售商组成的供应链, 考虑需求同时受减排水平和销售价格的影响, 分别研究寄售契约、收益共享契约以及收益共享与减排成本共担3 种契约下供应链企业的优化决策, 并进一步探讨当需求的...
  • 中国五矿集团公司由建国初期的单纯经营金属矿产品进出口...完善投资决策创新机制与方法,通过投资备案管理、项目授权及发布各项专业操作指引等措施,保障决策效率的提高;建立清晰投资决策流程,明确投资决策内部问责制度
  • 该算法采用实数编码,以ADVISOR为HEV的仿真软件获得各候选方案目标值,基于Pareto 支配性原理判定候选方案的优劣,并设计了可以调整待优化变量有效位的机制以保证优化所得的候 选方案具有可...
  • 决策树算法及其实现

    千次阅读 2021-11-23 16:00:05
    决策树算法及其实现 1 什么是决策决策树(Decision Tree)是一种基本的分类与回归方法,本文主要讨论分类决策树。决策树模型呈树形结构,在分类问题中,表示基于特征对数据进行分类的过程。它可以认为是if-then...
  • 决策

    2019-09-20 15:33:25
    一、决策树学习 1.根节点和叶节点 从根结点到每个叶结点的路路径对应了一个判定测试序列列,其基本流程遵循简单且直观的 “分而治之” 策略。由此,局部区域通过少数几步递归分裂确定,每个决策节点实现一个具有...
  • 模型:对模拟环境与个体交互机制的描述,模型包含两个部分: 状态之间的转移概率    状态转移的收益  注意:模型仅对于个体来说的,模型对个体来说也不是必须的;考虑环境的实际规划状态的研究称为环境...
  • 摘要:持续集成环境下的测试存在测试用例集变化大、测试时间有限和快速反馈等需求,传统的测试优化方法难以适用.强化学习是机器学习的一个重要分支,其本质是解决序贯决策

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,680
精华内容 27,872
热门标签
关键字:

优化决策机制

友情链接: drawingsoftware.rar