精华内容
下载资源
问答
  • 针对目前采用的煤层冲击倾向性判别方法存在的不足,基于理想点法的基本原理,选取动态破坏时间、弹性能量指数、冲击能量指数和单轴抗压强度作为评判指标,通过信息熵理论确定各指标的权重系数,建立基于熵权-理想点法的...
  • 提出一种基于加权理想点法的配网故障供电恢复策略。首先以网损、电压质量、负荷均衡作为重构目标,确定综合评价函数,并利用粗糙集理论确定各子目标函数的权系数,然后基于理想点法获取综合评价函数的最优解。验证...
  • 该指标基于理想点法,结合电压/有功功率灵敏度和电压/无功功率灵敏度指标,从而达到联系有功功率和无功功率的目的。该指标无需标准化处理,可克服因量纲不同和数值数量级差异造成的结果偏差。为解决理想点法难以...
  • 对多目标规划的理想点法的探讨.pdf 多目标规划的理想点法.pdf 多目标决策_理想点法_的推广.pdf
  • 基于MATLAB的多目标规划问题的理想点法求解
  • 基于MATLAB的多目标规划问题的理想点法求解.pdf
  • 基于熵权-理想点法的煤层冲击倾向性分类研究,王超,赵丽彬,针对目前采用的煤层冲击倾向性判别方法存在的不足,本文基于理想点法的基本原理,选取动态破坏时间、弹性能量、冲击能量及单轴抗
  • 基于理想点法的基本原理,选取高切坡的粘聚力、内摩擦角、高切坡类型、地形坡度、边坡高度作为评价指标,通过熵权算法确定其权重,建立高切坡安全评价模型,并利用工程实测资料进行模型检验.评价结果表明:理想点法的评价...
  • 针对目前采用的煤层冲击倾向性判别方法存在的不足,基于理想点法的基本原理,选取动态破坏时间、 弹性能量指数、冲击能量指数和单轴抗压强度作为评判指标,通过信息熵理论确定各指标的权重系数,建立基于 熵权-理想点法...
  • 基于Matlab模型理想点法的站点周边容积率测算方法研究
  • 熵-理想点法在GPS观测质量评价中的应用研究.pdf
  • 基于Matlab模型理想点法的站点周边容积率测算方法研究.pdf
  • 基于理想点法的基本原理,在综合考虑岩爆主要影响因素的基础上,选取围岩最大切向应力与岩石单轴抗压强度的比值、岩石单轴抗压与抗拉强度的比值和岩石弹性能量指数作为评判指标,通过信息熵理论确定各指标的权重系数,...
  • 论文研究-一种结合“理想点法”的优势分析法及其应用.pdf, 在社会经济系统的管理与控制中,判别优势因素是必要的,灰色统计的关联度分析提供了一种多因素优势分析方法,...
  • 基于马克维茨投资组合模型的均值一方差理论,构建一种投资组合收益和风险在一定范围 的双目标线性模糊优化模型,并尝试采用极大模理想点法来求解该模型 。最后,给出一实际算例,对一具体 投资组合模型进行研究,结果表明...
  • 目前,我国舰载直升机保障能力评估方面存在数据不完整、评估指标关联度不确定的问题,研究了理想点法在舰载直升机保障能力评估指标体系构建中的应用;通过调研并参考陆基直升机的保障经验,构建舰载直升机保障能力...
  • 根据矿山的开采境界,依据露天矿拉沟位置的选择原则以及该矿山的特殊地质地形条件提出了3种首采区及拉沟位置方案,建立了含7种评价指标的评价体系,引入基于可变权重的理想点法建立的分析评价计算模型,求解得出各方案的...
  • 优化设计——多目标函数优化(降维/主目标法、线性加权法、理想点法)——MATLAB编程建议与本人前几篇博文程序互相参照,系列程序有继承性,一些程序段功能实现代码与原理在前几篇博文中都有提到!优化原理降维/主...

    2020.06.07修改(F2(x)函数输入输错了,只是结果偏差,程序逻辑没问题,已修正)

    建议与本人前几篇博文程序互相参照,系列程序有继承性,一些程序段功能实现代码与原理在前几篇博文中都有提到!

    案例如下:
    在这里插入图片描述

    优化原理

    降维/主目标法

    主目标法就是从多目标中依据重要程度选择一个目标作为主目标,而将其它目标转化为约束,即将多目标优化问题转化为单目标问题。

    线性加权法

    在具有多个指标的优化问题中,可以给予那些相对重要的指标较大的权系数,于是可将多目标优化问题转化为所有目标加权求和的单目标优化问题。

    理想点法

    即先求解每个单目标问题的最优解,将所有单目标问题最优解作为期望值,寻求可行域内距离期望解最近的点作为多目标优化问题的最优解。

    具体原理不在这里过多赘述,不少优化设计有关资料都有关于此三种方法的详细介绍

    MATLAB程序

    三种方法的计算全部在同一主程序main内,附有四个子程序(复合型法优化程序minfun、minfun2与可行域判断程序judge、judge2
    其中,minfun2judge2子程序为降维/主目标法服务,minfunjudge子程序为线性加权法与理想点法服务:

    主程序main:

    %% 初始参数设定,求f最小值
    syms x1 x2 x
    D1=100;D2=80;L=1000;E=2.06e11;%单位为mm
    f1=pi/4*(x1*(D2^2-x2^2)+(L-x1)*(D1^2-x2^2));%目标函数输入
    f2=64/(3*pi*E)*(x1^3*(1/(D2^4-x2^4)-1/(D1^4-x2^4))+L^3/(D1^4-x2^4));%目标函数输入
    e2=1e-3;%复合型法收敛e2
    xa=0.5;xb=40;%可行域内初始点,可通过judge函数选取
    %约束条件(在 judge函数)
    
    %% a.降维法、主目标法
    % f1为主目标函数,f2转化为约束条件
    % 先用复合型法求取f2的有约束最优解x20,得到ffx20
    minx20=minfun(f2,xa,xb,e2);
    ffx20=double(subs(f2,symvar(f2),minx20'));
    %f2转化的约束条件为f2<=ff20+abs(e1*ffx20),g5=f2-ffx20-abs(e1*ffx20);
    e1=0.02;
    e3=ffx20+abs(e1*ffx20);
    %再用复合型法直接求含g5约束条件的f1的解
    minxa=minfun2(f1,xa,xb,e2,e3);
    ffxa1=double(subs(f1,symvar(f1),minxa'));
    ffxa2=double(subs(f2,symvar(f2),minxa'));
    minxa
    ffxa1
    ffxa2
    %% a END %%
    
    
    %% b.线性加权法
    fb=0.6*f1+0.4*f2;%构造新目标函数fb
    %复合型法求解fb
    minxb=minfun(fb,xa,xb,e2);
    ffxb1=double(subs(f1,symvar(f1),minxb'));
    ffxb2=double(subs(f2,symvar(f2),minxb'));
    minxb
    ffxb1
    ffxb2
    %% b END %%
    
    
    %% c.理想点法求解
    % 先对f1复合型法求解最优解xc1
    xc1=minfun(f1,xa,xb,e2);
    ffc1=double(subs(f1,symvar(f1),xc1'));
    % 再对f2复合型法求解最优解xc2
    xc2=minfun(f2,xa,xb,e2);
    ffc2=double(subs(f2,symvar(f2),xc2'));
    fc=sqrt((f1-ffc1)^2+(f2-ffc2)^2);
    % 复合型法求解fc
    minxc=minfun(fc,xa,xb,e2);
    ffxc1=double(subs(f1,symvar(f1),minxc'));
    ffxc2=double(subs(f2,symvar(f2),minxc'));
    minxc
    ffxc1
    ffxc2
    %% c END %%
    

    复合型法minfun2:

    function minx=minfun2(f,xa,xb,e2,e3)       
    
    %% 初始参数设定,求f最小值
    syms x1 x2 x
    % 可行域条件在judge2子函数中.m文件中
    h=2;     % 初始单纯形构造因子
    hi=1;    % 初始单纯型构造因子系数
    alpha=1; %  alpha  反射因子
    ai=0;    %  反射因子系数
    gama=2;  %  gama   扩张因子
    beta=0.5;%  beta   收缩因子
    eps=e2;%  eps    精度值
    n = 0;  %迭代循环次数
    m = 1000;  %精度差值
    k = 0;  %数据记录
    g = 0;  %操作记录
    %% 构造初始单纯形
    x0=[xa xb];% 给定在可行域内初始点
    x0=x0';
    X(:,1)=x0;
    Num_var_f=length(symvar(f));%二维函数
    for i = 1:Num_var_f %二维函数,需要三个顶点坐标
        x = zeros(Num_var_f,1);%预分配内存
        x=x0;
        x(i) = x0(i) + h/hi;
        X(:,i+1)=x;% 将单纯形按列从左往右存储
    end
    for i = 1:Num_var_f+1
            F_val(i)=double(subs(f,symvar(f),X(:,i)'));
    end
    [F_sort,F_index]=sort(F_val);%从小到大排列函数
        % 最好点
        f_best_0=F_sort(1);
        X_best_0=X(:,F_index(1));
        % 最差点
        f_bad_n=F_sort(end);
        X_bad_n=X(:,F_index(end));
        % 次差点
        f_nextbad_1n=F_sort(end-1);
        X_nextbad_1n=X(:,F_index(end-1));
        % 计算形心
        Xc_n1=1/Num_var_f*sum(X(:,F_index(1:end-1)),2);
        f_Xc_n1=double(subs(f,symvar(f),Xc_n1'));
        
     %% 判断顶点不在可行域内以及型心在不在可行域内
    while judge2(X(1,1),X(2,1),e3)<1&&judge2(X(1,2),X(2,2),e3)<1&&judge2(X(1,3),X(2,3),e3)<1&&judge2(Xc_n1(1,1),Xc_n1(2,1),e3)<1
        
        hi=2*hi;
      for i = 1:Num_var_f %二维函数,需要三个顶点坐标
        x = zeros(Num_var_f,1);%预分配内存
        x=x0;
        x(i) = x0(i) + h/hi;
        X(:,i+1)=x;% 将单纯形存储
      end
        %计算函数值
        for i = 1:Num_var_f+1
            F_val(i)=double(subs(f,symvar(f),X(:,i)'));
        end
        [F_sort,F_index]=sort(F_val);%从小到大排列函数
        % 最好点
        f_best_0=F_sort(1);
        X_best_0=X(:,F_index(1));
        % 最差点
        f_bad_n=F_sort(end);
        X_bad_n=X(:,F_index(end));
        % 次差点
        f_nextbad_1n=F_sort(end-1);
        X_nextbad_1n=X(:,F_index(end-1));
        % 计算形心
        Xc_n1=1/Num_var_f*sum(X(:,F_index(1:end-1)),2);
        f_Xc_n1=double(subs(f,symvar(f),Xc_n1'));
    end
    
        %% 循环迭代语句
     while m > eps
       
        %% 反射
        flag = 0;
        X_reflect_n2=Xc_n1+alpha*(Xc_n1-X_bad_n);
        f_reflect_n2=double(subs(f,symvar(f),X_reflect_n2'));
        ai=0;
    while judge2(X_reflect_n2(1,1),X_reflect_n2(2,1),e3)<1%判断反射点在不在可行域内
       ai=ai+1;%太慢 
        if ai>10  %% 系数缩小是否过多
             flag = 0;
        X_reflect_n2=Xc_n1+alpha*(1/2^(ai-10))*(Xc_n1-X_nextbad_1n);
         f_reflect_n2=double(subs(f,symvar(f),X_nextbad_1n'));%% (方向不对,利用次差点重新找方向)
           if ai>20
            error=1;
           disp('无法收敛,请重新构造初始单纯型');
             break
           end
        else
         flag = 0;
        X_reflect_n2=Xc_n1+alpha*(1/2^ai)*(Xc_n1-X_bad_n);
         f_reflect_n2=double(subs(f,symvar(f),X_reflect_n2'));
        end
    end
        %% 反射成功 
        if  f_reflect_n2<f_best_0  % 反射点R<最好点
            %% 进行扩张
             X_reflect_expand_n3=Xc_n1+gama*(Xc_n1-X_bad_n);%扩张
             f_reflect_expand_n3=double(subs(f,symvar(f),X_reflect_expand_n3'));
             if f_reflect_expand_n3 < f_best_0 &&judge2( X_reflect_expand_n3(1,1),X_reflect_expand_n3(2,1),e3)>=1%判断扩张点是否在可行域内%扩张点继续缩小
                 X(:,F_index(end)) = X_reflect_expand_n3; %将其作为单纯型的新顶点
                 g=1;%扩张点
             else 
                 X(:,F_index(end)) = X_reflect_n2; %采用扩张前的点作为单纯形的新顶点
                 g=0;%反射点
             end
             flag = 1; %反射成功标志位
        end
        %% 反射失败
        if flag == 0  %说明没有反射成功
            if f_reflect_n2 < f_nextbad_1n  %反射点<次差点
                X(:,F_index(end)) = X_reflect_n2;%采用该反射点作为新的顶点
                g=0;%反射点
            %% 进行收缩
            else   % f_reflect >= f_nextbad
                X_reflect_shrink_n4=Xc_n1+beta*(X_reflect_n2-Xc_n1);% 收缩点
                f_reflect_shrink_n4=double(subs(f,symvar(f),X_reflect_shrink_n4'));
                X(:,F_index(end)) = X_reflect_shrink_n4;
                g=2;%收缩点
            end
        end
         %% 计算迭代完后函数序列,并计算精度
        for i = 1:Num_var_f+1
            F_val(i)=double(subs(f,symvar(f),X(:,i)'));
        end
        [F_sort,F_index]=sort(F_val);%从小到大排列函数
        % 最好点
        f_best_0=F_sort(1);
        X_best_0=X(:,F_index(1));
        % 最差点
        f_bad_n=F_sort(end);
        X_bad_n=X(:,F_index(end));
        % 次差点
        f_nextbad_1n=F_sort(end-1);
        X_nextbad_1n=X(:,F_index(end-1));
        % 计算形心
        Xc_n1=1/Num_var_f*sum(X(:,F_index(1:end-1)),2);
        f_Xc_n1=double(subs(f,symvar(f),Xc_n1'));
        % 计算精度与迭代次数
        m=abs(double(subs(f,symvar(f),X(:,F_index(end))'))-f_Xc_n1);
        n=n+1;
        % 运算数据记录
    
    end  
    %% 结果输出
    minx=X_best_0;
    
    

    复合型法minfun:

    function minx=minfun(f,xa,xb,e2)       
    
    %% 初始参数设定,求f最小值
    syms x1 x2 x
    % 可行域条件在judge子函数中.m文件中
    h=2;     % 初始单纯形构造因子
    hi=1;    % 初始单纯型构造因子系数
    alpha=1; %  alpha  反射因子
    ai=0;    %  反射因子系数
    gama=2;  %  gama   扩张因子
    beta=0.5;%  beta   收缩因子
    eps=e2;%  eps    精度值
    n = 0;  %迭代循环次数
    m = 1000;  %精度差值
    k = 0;  %数据记录
    g = 0;  %操作记录
    %% 构造初始单纯形
    x0=[xa xb];% 给定在可行域内初始点
    x0=x0';
    X(:,1)=x0;
    Num_var_f=length(symvar(f));%二维函数
    for i = 1:Num_var_f %二维函数,需要三个顶点坐标
        x = zeros(Num_var_f,1);%预分配内存
        x=x0;
        x(i) = x0(i) + h/hi;
        X(:,i+1)=x;% 将单纯形按列从左往右存储
    end
    for i = 1:Num_var_f+1
            F_val(i)=double(subs(f,symvar(f),X(:,i)'));
    end
    [F_sort,F_index]=sort(F_val);%从小到大排列函数
        % 最好点
        f_best_0=F_sort(1);
        X_best_0=X(:,F_index(1));
        % 最差点
        f_bad_n=F_sort(end);
        X_bad_n=X(:,F_index(end));
        % 次差点
        f_nextbad_1n=F_sort(end-1);
        X_nextbad_1n=X(:,F_index(end-1));
        % 计算形心
        Xc_n1=1/Num_var_f*sum(X(:,F_index(1:end-1)),2);
        f_Xc_n1=double(subs(f,symvar(f),Xc_n1'));
        
     %% 判断顶点不在可行域内以及型心在不在可行域内
    while judge(X(1,1),X(2,1))<1&&judge(X(1,2),X(2,2))<1&&judge(X(1,3),X(2,3))<1&&judge(Xc_n1(1,1),Xc_n1(2,1))<1
        
        hi=2*hi;
      for i = 1:Num_var_f %二维函数,需要三个顶点坐标
        x = zeros(Num_var_f,1);%预分配内存
        x=x0;
        x(i) = x0(i) + h/hi;
        X(:,i+1)=x;% 将单纯形存储
      end
        %计算函数值
        for i = 1:Num_var_f+1
            F_val(i)=double(subs(f,symvar(f),X(:,i)'));
        end
        [F_sort,F_index]=sort(F_val);%从小到大排列函数
        % 最好点
        f_best_0=F_sort(1);
        X_best_0=X(:,F_index(1));
        % 最差点
        f_bad_n=F_sort(end);
        X_bad_n=X(:,F_index(end));
        % 次差点
        f_nextbad_1n=F_sort(end-1);
        X_nextbad_1n=X(:,F_index(end-1));
        % 计算形心
        Xc_n1=1/Num_var_f*sum(X(:,F_index(1:end-1)),2);
        f_Xc_n1=double(subs(f,symvar(f),Xc_n1'));
    end
    
        %% 循环迭代语句
     while m > eps
       
        %% 反射
        flag = 0;
        X_reflect_n2=Xc_n1+alpha*(Xc_n1-X_bad_n);
        f_reflect_n2=double(subs(f,symvar(f),X_reflect_n2'));
        ai=0;
    while judge(X_reflect_n2(1,1),X_reflect_n2(2,1))<1%判断反射点在不在可行域内
       ai=ai+1;%太慢 
        if ai>10  %% 系数缩小是否过多
             flag = 0;
        X_reflect_n2=Xc_n1+alpha*(1/2^(ai-10))*(Xc_n1-X_nextbad_1n);
         f_reflect_n2=double(subs(f,symvar(f),X_nextbad_1n'));;%% (方向不对,利用次差点重新找方向)
           if ai>20
            error=1;
            disp('无法收敛,请重新构造初始单纯型');
             break
           end
        else
         flag = 0;
        X_reflect_n2=Xc_n1+alpha*(1/2^ai)*(Xc_n1-X_bad_n);
         f_reflect_n2=double(subs(f,symvar(f),X_reflect_n2'));
        end
    end
        %% 反射成功 
        if  f_reflect_n2<f_best_0  % 反射点R<最好点
            %% 进行扩张
             X_reflect_expand_n3=Xc_n1+gama*(Xc_n1-X_bad_n);%扩张
             f_reflect_expand_n3=double(subs(f,symvar(f),X_reflect_expand_n3'));
             if f_reflect_expand_n3 < f_best_0 &&judge( X_reflect_expand_n3(1,1),X_reflect_expand_n3(2,1))>=1%判断扩张点是否在可行域内%扩张点继续缩小
                 X(:,F_index(end)) = X_reflect_expand_n3; %将其作为单纯型的新顶点
                 g=1;%扩张点
             else 
                 X(:,F_index(end)) = X_reflect_n2; %采用扩张前的点作为单纯形的新顶点
                 g=0;%反射点
             end
             flag = 1; %反射成功标志位
        end
        %% 反射失败
        if flag == 0  %说明没有反射成功
            if f_reflect_n2 < f_nextbad_1n  %反射点<次差点
                X(:,F_index(end)) = X_reflect_n2;%采用该反射点作为新的顶点
                g=0;%反射点
            %% 进行收缩
            else   % f_reflect >= f_nextbad
                X_reflect_shrink_n4=Xc_n1+beta*(X_reflect_n2-Xc_n1);% 收缩点
                f_reflect_shrink_n4=double(subs(f,symvar(f),X_reflect_shrink_n4'));
                X(:,F_index(end)) = X_reflect_shrink_n4;
                g=2;%收缩点
            end
        end
         %% 计算迭代完后函数序列,并计算精度
        for i = 1:Num_var_f+1
            F_val(i)=double(subs(f,symvar(f),X(:,i)'));
        end
        [F_sort,F_index]=sort(F_val);%从小到大排列函数
        % 最好点
        f_best_0=F_sort(1);
        X_best_0=X(:,F_index(1));
        % 最差点
        f_bad_n=F_sort(end);
        X_bad_n=X(:,F_index(end));
        % 次差点
        f_nextbad_1n=F_sort(end-1);
        X_nextbad_1n=X(:,F_index(end-1));
        % 计算形心
        Xc_n1=1/Num_var_f*sum(X(:,F_index(1:end-1)),2);
        f_Xc_n1=double(subs(f,symvar(f),Xc_n1'));
        % 计算精度与迭代次数
        m=abs(double(subs(f,symvar(f),X(:,F_index(end))'))-f_Xc_n1);
        n=n+1;
        % 运算数据记录
    
    end  
    %% 结果输出
    minx=X_best_0;
    

    可行域判断judge2:

    function [J]=judge2(x1,x2,e3)
    %% 约束条件
    D1=100;D2=80;L=1000;E=2.06e11;%单位为mm
    g1=(9.78e6)*x1/(4.096e7-x2^4)-180;
    g2=x2-80;
    g3=40-x2;
    g4=-x1;
    g5=(64/3*pi*E)*(x1^3*(1/(D2^4-x2^4)-1/(D1^4-x2^4))+L^3/(D1^4-x2^4))-e3;
    % 可行域条件
    if g1<=0&&g2<=0&&g3<=0&&g4<=0&&g5<=0
        J=1;
    else
        J=0;
    end
    
    

    可行域判断judge:

    function [J]=judge(x1,x2)
    %% 约束条件
    g1=(9.78e6)*x1/(4.096e7-x2^4)-180;
    g2=x2-80;
    g3=40-x2;
    g4=-x1;
    
    % 可行域条件
    if g1<=0&&g2<=0&&g3<=0&&g4<=0
        J=1;
    else
        J=0;
    end
    
    

    程序运行结果

    降维/主目标法运行结果:
    minxa=(17.8871,17.8949);
    ffxa1= 7.548e+06;

    线性加权法运行结果:
    minxb=(0,80.0000);
    ffxb1=6.5957e+06;
    ffxb2=5.5834e-10;

    理想点法运行结果:
    minxc=(0,80.0000);
    ffxc1= 6.5957e+06;
    ffxc2=5.5834e-10;

    ps:如果minfun程序显示“无法收敛,请重新构造单纯型”,其原因可参看此文:https://blog.csdn.net/Randall_crow_J/article/details/106265961

    展开全文
  • 基于MATLAB的多目标线性规划_理想点法求解程序代码
  • 然后,通过定义专家与专家群体判断之间的偏差距离矩阵、方案集的正理想点和负理想点,根据专家判断与理想点之间的贴近度,给出了基于语言评价矩阵形式偏好信息的评判专家水平的分析方法,最后通过一个算例说明了所...
  • 利用理想点决策进行了湖泊水质富营养化的评价,并研究了我国15个主要湖泊的富营养化状况,取得了满意的结果,为湖泊水质复营养化评价提供了一种简单而适用的评价方法。
  • 针对权重未知的多指标决策问题,利用物元矩阵和理想点法进行了研究。在自定义方案指标矩阵、方案标准指标矩阵、正理想方案指标矩阵和负理想方案指标矩阵等的基础上,依据决策方案到正负理想方案指标矩阵距离大小,建立...
  • 为了科学地评价城市环境质量,并使评价方法更符合实际,对多目标决策理想点法进行改进,把评价标准处理成理想区间的形式,并用遗传投影寻踪方法来确定权重,提出了一种新的...
  • 视觉SLAM笔记(30) 特征点法

    万次阅读 2019-10-08 18:46:15
    特征点法、特征点、ORB 特征(FAST 关键点、BRIEF 描述子)、特征匹配


    1. 特征点法

    视觉 SLAM 主要分为视觉前端和优化后端
    前端也称为视觉里程计(VO)
    它根据相邻图像的信息,估计出粗略的相机运动,给后端提供较好的初始值
    VO 的实现方法,按是否需要提取特征,分为:

    • 特征点法的前端
    • 不提特征的直接法前端

    基于特征点法的前端,长久以来(直到现在)被认为是视觉里程计的主流方法
    它运行稳定,对光照、动态物体不敏感,是目前比较成熟的解决方案

    从特征点法入手,了解如何提取、匹配图像特征点
    然后估计两帧之间的相机运动和场景结构,从而实现一个基本的两帧间视觉里程计


    2. 特征点

    VO 的主要问题是如何根据图像来估计相机运动
    然而,图像本身是一个由亮度和色彩组成的矩阵
    如果直接从矩阵层面考虑运动估计,将会非常困难

    所以,习惯于采用这样一种

    展开全文
  • 8.1 系统评价决策模型概论 8.1.1 问题的引入 8.1.2 系统评价决策模型的基本概念 8.1.3 系统评价决策模型的...3.逼近理想点法(简称TOPSIS法) 8.2 案例分析-汽车选购 8.2.1 问题引入 8.2.2 决策矩阵的规范化 ...

    🚀【MOOC数学建模与实验---学习笔记---整理汇总表】🚀

    🌈【学习网址:MOOC---郑州轻工业大学---数学建模与实验】🌈

    目   录

    8.1 系统评价决策模型概论

    8.1.1 问题的引入

    8.1.2 系统评价决策模型的基本概念

    8.1.3 系统评价决策模型的要素

    8.1.4 系统评价决策模型的步骤

    8.1.5 评价指标的规范化处理

    1.评价指标类型的一致化处理

    2.评价指标的无量纲化

    8.1.6 系统评价模型的建立

    1.线性加权综合法(加权和法)

    2.非线性加权综合法(加权积法)

    3.逼近理想点法(简称TOPSIS法)

    8.2 案例分析-汽车选购

    8.2.1 问题引入 

    8.2.2 决策矩阵的规范化

    8.2.3 属性权重的确定

    信息熵法

    8.2.4 系统决策模型的构建

    线性加权和非线性加权

    逼近理想点(TOPSIS)

    8.2.5 系统评价模型的步骤

    8.3 层次分析法

    8.3.1 层次分析法概论

    8.3.2 层次分析法的步骤

    1、建立 层次分析结构(层次分析图)

    2、构造两两比较矩阵

    3、相对权重向量的确定

    4、判断矩阵的一致性检验和一致性指标

    5、比较矩阵的一致性检验及权重

    6、计算组合权重和组合一致性检验

    7、比较矩阵的一致性检验及权重

    8.3.3 层次分析法的应用范围

    8.3.4 层次分析法的优缺点

    优点

    缺点

    8.4 案例分析-职员晋升

    8.4.1 引例--职员晋升

    层次分析法的步骤

    8.4.2 建立层次结构图

    8.4.3 准则层对目标层的相对权重向量

    构造准则层对目标层的比较矩阵

    一致性检验

    8.4.4 综合权重向量及排序结果

    8.4.5 职员晋升问题再讨论

    8.4.6 层次分析法与系统综合评价的比较

    8.5 动态加权综合评价法

    8.5.1 引例

    8.5.2 动态加权评价法的一般提法

    评价指标的标准化处理

    8.5.3 动态加权函数的设定

    1.分段变幂函数

    2.偏大型正态分布函数

    3.S型分布函数

    8.5.4 综合评价模型的构建

    8.5.5 动态综合评价方法的特点

    8.6 案例分析-大气污染问题

    8.6.1 问题的引入

    8.6.2 问题的分析

    8.6.3 基本假设及符号说明

    1. 基本假设

    2. 符号说明

    8.6.4 模型的建立

    1. 评价指标的规范化处理

    2. 动态加权函数的确定

    3. 综合评价模型的建立

    8.6.5 模型的求解与分析

    1. 算法

    2. 求解及分析

    8.6.6 模型的评价与推广

    1. 模型的评价

    2.模型的推广


     画图、数据处理(插值、拟合)、最优规划(线性规划、整数规划)、概率模型...

    社会常见问题(评价问题):选优、排序、分类、

    本章主要内容

    • 8.1 系统评价决策模型概论        综合评价模型   选优排序
    • 8.2 案例分析:汽车选购
    • 8.3 层次分析法
    • 8.4 案例分析:职员晋升
    • 8.5 动态加权评价法
    • 8.6 案例分析:大气污染问题
    • 8.7 大气污染问题的MATLAB实现

    8.1 系统评价决策模型概论

    • 8.1.1 问题的引入
    • 8.1.2 系统评价决策模型的基本概念
    • 8.1.3 系统评价决策模型的要素
    • 8.1.4 系统评价决策模型的步骤
    • 8.1.5 评价指标的规范化处理
    • 8.1.6 系统评价模型的建立

    8.1.1 问题的引入

    汽车选购

    选购一辆私家车是许多进入稳定社会生活的人们要费心考虑的事情之一。

    由于经济情况、生活习惯、兴趣追求等方面的差别,他们选购汽车的标准自然不会相同。

    可以认为主要会考虑经济适用,性能良好、 款式新颖3个要素,只不过每个人对3个因素的侧重有所不同。

    初入社会的年轻人可能以经济适用为重,有一定经济实力的中年人更注重性能良好,经济实力很强的年轻人则可能更钟情于款式新颖。

    如果某个人对这3个因素在汽车选购这一目标的重要性已经有了大致比较,也确定了待选的若干型号汽车,那么他必要深入了解每一种待选的汽车,以便对各种汽车在每个因素的优劣程度做出基本的判断。最后,他要根据以上信息对待选汽车进行综合评价,从而为选购哪种汽车做出决策。   综合评价问题 --> 选购哪种汽车🚗,做出决策。

    假期旅游地

    假期旅游,是去风光绮丽的苏杭,还是迷人的北戴河海滨,抑或山水甲天下的桂林,这与旅游地的景色、旅途的费用、吃住条件等因素在你心目中的重要程度有关。   综合考虑

    • 汽车选购
    • 假期旅游地
    • 工作岗位的选择        国企、私企、科研院所:薪酬、地域(北、上、广)、发展前景
    • 队员选拔、设备采购、研究课题选择等

    特点:需要考虑的因素经常涉及经济、社会、人文、环境等领域,而对于它们的重要性、影响力作比较、评价时缺乏客观的标准,待选对象对于这些因素的优劣程度也往往难以量化

    这就给用数学建模解决一大类实际问题带来困难。

    系统评价决策模型层次分析法是处理这类评价决策问题的常用方法。

    8.1.2 系统评价决策模型的基本概念

    系统评价决策问题:指人们为了一个特定的目的,要在若干备选方案(如几种型号的汽车)中确定一个最优的,或者对这些方案按照优劣程度排序或者分类,或者需要给出优劣程度的数量结果,而方案的优劣由若干属性(如汽车的价格、性能、款式等因素)给以定量或定性的表述。这类又问题称为多属性(多指标)的系统综合评价问题,它是研究多目标决策问题的前提。   决策理论

    一般地说,系统评价决策模型包含以下要素:【决策目标、备选方案、评价指标、属性权重、综合评价模型、评价者】

    8.1.3 系统评价决策模型的要素

    一个评价决策模型有以下六个要素,分别是决策目标、备选方案、评价指标、属性权重、综合评价模型、评价者

    1、决策目标

    综合评价问题中评价的目的、目标,由实际问题本身所决定的,少有选择的余地。

    2、备选方案

    又称被评价对象或系统,是综合评价问题中所研究的对象,也由实际问题本身所决定的,少有选择的余地。

    通常情况下,在一个问题中被评价对象是属于同一类的,个数至少大于1。

    不妨设一个评价问题里有n个被评价对象(系统),分别记为S_{1},S2,…,S_{n}(n > 1)。

    3、评价指标【★★★重要★★★】

    反映被评价对象(或系统)的运行(或发展)状况的基本要素。

    通常的问题都是有多项指标(属性)构成,每一项指标都是从不同的侧面刻画系统所具有某种特征大小的一个度量。

    一个综合评价问题的评价指标一般可用一个向量表示,其中每一个分量就是从一个侧面反应系统的状态,即称为综合评价问题的指标体系(或 属性集合)。

    评价指标体系应遵循的原则:系统性、科学性、可比性、可测性(即可观测性)和 独立性。全面考虑各个因素、影响力、重要性   指标与指标之间,应尽量独立:关联性不能太强;否则建立模型后,会产生叠加影响,造成评价结果失误。尽量选择定量指标;选择定性指标,需要具有可比性...

    这里不妨设系统里有m个指标,分别记x_{1}x_{2},…,x_{m}(m>1),即评价指标向量为x = (x_{1} , x_{2} ,...,x_{m}) ^{T}(m>1)。

    将以方案为行、属性为列,以每一个方案对每一个属性的取值(指标观测值)为元素形成的矩阵叫决策矩阵,用以表示方案对属性的优劣和偏好。            n个方案、m个属性

    当某一属性可以定量描述时(如汽车的价格),矩阵的这一列元素的数值比较容易得到,而当属性只能定性描述时(如汽车的款式),这一列元素的数值就需要寻求合适的方法确定。条理清楚

    4、属性权重(权重系数)【★★★重要★★★】

    每一综合评价的问题都有相应的评价目的,针对某种评价目的,各评价指标之间的相对重要性是不同的,评价指标之间的这种相对重要性的大小可以用权重系数来刻画。行文关键:属性权重分配的原因。为什么这样分配;理由;采用哪种方法,为什么采用此方法。属性权重分配方法:信息熵法、层次分析法...

    一般用w_{j}来表示评价指标x_{j}(j=1,2,…,m)的权重系数,其中w_{j}≥0(j=1,2,…,m)且 \sum_{j=1}^{n}\omega _{j}=1

    注:当被评价对象和评价指标被确定后,问题的综合评价结果就完全依赖于权重系数的取值了。

    5、综合评价模型【★★★重要★★★】

    对于多指标(或多属性)的综合评价问题,就是要通过建立合适的综合评价数学模型将多个评价指标综合成为一个整体的综合评价指标,同时将属性指标和属性权重加以综合,作为综合评价的依据,从而得到相应的评价结果或最终决策。

    6、评价者

    又称决策者;是直接参与评价的人,可以是某一个人,也可以是一个团体。对于评价目的选择、评价指标体系确定、评价模型的建立和权重系数的确定都与评价者有关。          客观性、可行性、查阅大量资料、专家评定法、背景知识支持

    8.1.4 系统评价决策模型的步骤

    1. 明确决策目标;
    2. 确定备选方案;           确定所有被评价对象
    3. 建立评价指标体系(包括评价指标的原始值、评价指标的若干预处理等);选择合适的、可比的、科学系统的评价指标;根据评价指标的可比性、可测性、独立性,找出评价指标的原始值;为了评价结果的可行性与科学性,需要对指标做预处理。
    4. 确定与各项评价指标相对应的权重系数;
    5. 选择或构造综合评价模型;
    6. 计算各系统的综合评价值,并给出综合评价结果。根据结果,选优、排序

    8.1.5 评价指标的规范化处理

    对 评价指标的原始值 进行 规范化处理(预处理)。确定 权重系数、评价指标的规范化值 后,建立 系统评价模型。

    “评价指标的规范化处理”可作为数模论文小标题。

    1.评价指标类型的一致化处理

    一般来说,在评价指标x1,x2,…,xm(m>1)中可能包括“极大型”指标、“极小型”指标、“中间型”指标 和 “区间型”指标。

    • 极大型指标:总是期望指标的取值越大越好;   效益型指标
    • 极小型指标:总是期望指标的取值越小越好;   费用型指标
    • 中间型指标:总是期望指标的取值既不要太大,也不要太小,即取适当的中间值最好;
    • 区间型指标:总是期望指标的取值最好是落在某一个确定的区间内最好。

    极大型指标极小型指标又被称为效益型指标费用型指标

    极大型指标,如:收益、利润;

    极小型指标,如:成本、能耗;

    区间型指标,如:环境温度、湿度、人的身高、体重、BMI

    中间型指标,如:水质量评估中PH值。

    进行综合评价的过程中,将指标一致化(一样的指标类型),要么极小(综合评价值越小越好),要么极大(...)。评价指标预处理的过程中,首先将指标一致化处理。根据决策目标、实际问题来决定目标是极小还是极大!预处理数据最好不要产生大的变动。

     倒带换

    2.评价指标的无量纲化

    在实际中,评价指标x1,x2,…,xm(m>1)之间往往都存在着各种不同的单位和数量级,使得这些指标之间存在着不可公度性,这就给综合评价带来了困难,尤其是为评价指标体系的建立和依据这些指标的大小排序产生了不合理。量纲:单位

    如果不对这些指标做相应的无量纲处理,则在综合评价过程中就会出现“大数吃小数”的错误结果,从而导致最后得到错误的评价结论。

    无量纲化处理又称指标数据的标准化规范化处理

    常用的方法有:标准差方法极差方法功效系数法等。

     n个备选方案,m个评价指标

    显然  的均值和方差分别为0和1,即是无量纲的指标,称之为x_{ij}标准观测值。

     

      

    8.1.6 系统评价模型的建立

    m个备选方案:将 m个备选方案 综合起来。

    1.线性加权综合法(加权和法)

    线性加权函数

                                  y=\sum_{j=1}^{m}w_{j}x_{j} 

    针对某个评价系统,把此评价系统的观测值与对应属性的权重 做点乘,累加。得到每个属性综合值。-> 线性加权综合评价模型

    适用范围:各评价指标之间相互独立。

    对于不完全独立的情况采用该方法,其结果将导致各指标间信息的重复,使得评价结果不能客观反映实际。

    优点:

    • ①该方法使得各评价指标间作用得到线性补偿,保证综合指标的公平性;
    • ②该方法中权重系数对评价结果的影响明显,即权重较大的指标值对综合指标作用大;指标值:[0, 1]
    • ③当权重系数预先给定时,该方法使评价结果对于各备选方案之间的差异性不敏感;
    • ④该方法计算简便,可操作性强,便于推广使用。

    2.非线性加权综合法(加权积法)

    非线性加权函数

                                  y = \prod_{j=1}^{m}x_{j}^{w_{j}}   其中 x_{j}\geq 1

    适用范围:各评价指标之间有较强关联。

    优点:

    • ①该方法突出了各备选方案指标值的一致性,既可以平衡评价指标值较小的指标影响的作用;
    • ②权重系数大小的影响作用不是特别明显,而对指标值的大小差异相对敏感;
    • ③要求所有的评价指标值(无量纲)都大于或等于1;
    • ④非线性加权法相对于线性加权法计算复杂。线性加权法:不便于推广

    3.逼近理想点法(简称TOPSIS法)

       欧氏距离马氏距离

    8.2 案例分析-汽车选购

    • 8.2.1 问题引入
    • 8.2.2 决策矩阵的规范化
    • 8.2.3 属性权重的确定
    • 8.2.4 系统决策模型的构建

    8.2.1 问题引入 

    假定3种型号的汽车(相当于3个方案)供选购,记做S1、S2、S3,3个属性(评价指标)为价格、性能和款式,依次记为x1、x2、x3,具体数据如下表。

      性能、款式,满分为10分   打分

    表格中数据表示每个方案Si对属性xj的取值x_{ij},也称 属性值(指 标观测值)。

    表一的数据我们可以用(原始)决策矩阵表示为

       指标观测值 --> 决策矩阵

    决策矩阵的获得一般有两种途径,一种是直接通过测量或调查得到,如表1中的价格,这是偏于客观(定量)的方法;另一种是由决策者或请专家评定,这偏主观(定性)的方法。

    8.2.2 决策矩阵的规范化

    决策矩阵的每一列表示各方案对某一属性的属性值,由于通常各属性的物理意义各不相同,在下一步分析之前,需将决策矩阵规范化。

    进行规范化时首先需要区分效益型属性(极大型指标)费用型属性(极小型指标),前者指属性值越大,该属性对决策的重要程度越高,后者正相反。

    汽车选购中的属性x2 ,x3 是效益型的,而x1是费用型的,三个属性中两个是效益型的,故将全部属性值统一为效益型的。

    汽车选购中的属性x2 ,x3 是效益型的,而x1是费用型的,三个属性中两个是效益型的,故将全部属性值统一为效益型的。

    用取倒数的方法可将汽车选购中的决策矩阵重新表示为:

     一致化处理

    无量纲化 处理方法:

     模一化:列向量 单位化

    按“列”进行处理,保证每一列的处理方法统一。

    汽车选购的决策矩阵X经过(1)(2)(3)式标准化后分别

    通过计算与观察,经过规范化后的决策矩阵,每个数值都是介于0、1之间,消除了各个指标量纲的影响。

    经过此处理,决策矩阵的各个属性值就处于同一数量级,适合进行成对比较。

    8.2.3 属性权重的确定

    信息熵法

    各个指标对于决策目标的影响程度称为属性权重(权重系数),用w_{j}来表示评价指标x_{j}(j=1, 2, …, m)的权重系数,则应有\sum_{j=1}^{n}w_{j}=1

    属性权重的确定也有偏于主观和客观两种方法,偏于主观的方法可以由决策者根据决策目的和经验先验地给出,如层次分析法中利用比较矩阵的最大特征值对应的特征向量来作为权重,这里不再赘述。

    下面我们介绍一种偏于客观的典型方法——信息熵法

    在信息论中是衡量不确定性的指标,一个信息量的(概率)分布越趋于一致,所提供信息的不确定性越大,当信息呈均匀分布时 不确定性最大。   不确定性越大,熵越大。

    在系统决策中将按照归一化(1)式得到的决策矩阵R的各个列向量(r_{1j}, r_{2j}, ..., r_{mj})^{T}(j=1, 2, ..., n)看做信息量的概率分布,按照Shannon给出的数量指标——的定义,各方案关于属性xj的熵为

                                                   按“列”进行处理。


    当各方案对某个属性x_{j}的属性值全部相同时,即r_{ij}=1/m(i=1, 2, …, m)时,E_{j}=1达到最大,这时的x_{j}对于辨别方案的优劣不起任何作用;

    当各方案对某个属性x_{j}的属性值r_{ij}只有一个1其余都是0时,E_{j}=0达到最小,这样的x_{j}最能辨别方案的优劣。


    一般地,属性值r_{ij}相差越大,E_{j}越小,x_{j}辨别方案优劣的作用越大,于是定义

                                                 

    为属性x_{j}区分度


    对于汽车选购,将归一化的决策矩阵按照上述(4)-(6)式 计算的嫡E_{j}、区分度F_{j} 和 权重w_{j},如下表给出:

     实际上观察原始决策矩阵X(或表1)可以看出:3种汽车对价格的属性值相差很大,对款式的属性值相差甚小,根据这样的数据利用信息熵法计算权重,结果自然是价格的权重较大而款式的权重较小。差别越大,说明区分度越大,辨别备选方案的优劣程度越好。

    实际上,我们也可以将R通过最大化和模一化后按照信息熵法来确定其相应的区分度和权重系数。大家可以练习操作,这里不再赘述。

    信息熵法完全由决策矩阵计算属性权重,如果决策矩阵主要是直接通过测量或调查得到的,那么这种获取权重的方法客观性较强。

    与信息熵法的思路相似,可以用r_{1j}, r_{2j}, ..., r_{mj}标准差极差作为区分度F_{j}计算权重,这种方法适用于m较大的情况。

    8.2.4 系统决策模型的构建

    线性加权和非线性加权

    经过前面两部分的分析,现在有了规范化的属性(评价指标)观测值,有了属性(指标)权重,就可以利用前面介绍过线性加权非线性加权构建评价模型,从而得到综合计算的结果(如表3)。

      

    逼近理想点(TOPSIS)

    逼近理想点(TOPSIS)将n个属性,m个方案的多属性决策放到n维空间中m个点的几何系统中去处理。用向量模一化(3)式对决策矩阵规范化,以便在空间定义欧氏距离。每个点的坐标有各方案规范化的加权属性值确定。

    理论上的最优方案(称正理想解)由所有可能的加权最优属性值构成,最劣方案(称负理想解)由所有可能的加权最劣属性值构成,在确定最优和最劣属性值时应区分效益型与费用性属性。

    定义距正理想解尽可能近,距负理想解尽可能远的数量指标——相对接近度,备选方案的优劣顺序按照相对接近度的大小确定。

    下面我们分步骤用TOPSIS方法来解决这个问题。

      

    将三种方法得到的计算结果表示如下

       

    由表4可以看出,线性加权和和非线性加权积得到的结果差别较小,TOPSIS得到的差别较大,但用这三种方法得到的3个方案的优劣顺序 一样。

    8.2.5 系统评价模型的步骤

    • 1)确定决策目标,备选方案及指标属性集合;
    • 2)通过测量、调查、专家评定等手段确定决策矩阵和属性权重,推荐用信息熵法由决策矩阵确定属性权重;
    • 3)采用归一化、最大化、模一化对决策矩阵进行标准化;
    • 4)选用线性加权和、非线性加权积、TOPSIS等综合方法计算方案对目标的权重,即备选方案的优劣排序。

    8.3 层次分析法

    • 8.3.1 层次分析法概论
    • 8.3.2 层次分析法的步骤
    • 8.3.3 层次分析法的应用范围
    • 8.3.4 层次分析法的优缺点

    8.3.1 层次分析法概论

    假期旅游地选择

    • 景色、费用、居住、饮食、旅途

    选购电脑

    • 品牌、外观、费用、配置

    找工作、职员晋升、买房子等选优排序问题 

    层次分析法(Analytic Hierarchy Process)是一种定性和定量相结合的、系统化的、层次化的分析方法。

    特点:将半定性、半定量问题转化为定量问题的行之有效的一种方法,使人们的思维过程层次化。

    用途:通过逐层比较多种关联因素为分析评估、决策、预测或控制事物的发展提供定量依据,它特别适用于那些难于完全用定量方法进行分析的复杂问题

    分析系统中各因素之间的关系,建立系统的递阶层次结构,一般层次结构分为三层:目标层、准则层、方案层

    构造两两比较矩阵:对于同一层次的各因素关于上一层中某一准则(目标)的重要性进行两两比较。

    由比较矩阵计算被比较因素对每一准则的相对权重,并进行判断矩阵的一致性检验

    计算方案层对目标层的组合权重,并对被评价对象进行排序

    假如有三个旅游胜地供你选择,你会根据诸如景色(5A、4A...)、费用、居住、饮食和旅途条件等一些准则去反复比较那三个候选点。个人会根据自己的喜好和实际情况,对这些因素在你心目中重要性来最终确定你的选择。

    8.3.2 层次分析法的步骤

    1. 分析系统中各因素之间的关系,建立系统的递阶层次结构,一般层次结构分为三层:目标层、准则层、方案层
    2. 构造两两比较矩阵:对于同一层次的各因素关于上一层中某一准则(目标)的重要性进行两两比较。分层->两两比较。
    3. 由比较矩阵计算被比较因素对每一准则的相对权重,并进行判断矩阵的一致性检验两两比较矩阵->确定权重向量
    4. 计算方案层对目标层的组合权重,并进行排序。

    1、建立 层次分析结构(层次分析图)

    将所有影响问题的因素整理起来,将问题进行分层处理。

    最高层为目标层(O)(解决什么样的问题),中间层为准则层(C)(解决问题衡量的因素;同一层次因素属于上一层,对上一层有影响---相对重要性;支配下一层的子准则;准则层可有若干层次;处于同一层次的因素,不要相差太大、具有可比性;同一层次的准则,一般不要超过9个,9个以上要分层,否则两两比较矩阵的构造非常困难),最低层为方案层(P)(有多少个备选方案可以选择)。

     准则层,可分 多层。

     选购电脑

    以选择旅游地为目标的层次结构图如下:

     权重

    准则层:选择评价指标(不能过多、过少;相关性不能太强;确定相对重要性)

    2、构造两两比较矩阵

     两两比较矩阵 -> 确定权重向量(相对重要性)

    aii=1:自己与自己比较,取值为1。

    心理学家研究发现:1~9不容易犯错。

    准则层对目标层的两两比较矩阵

     第1行、第1列代表:景色、费用...(代表相同事物)  5个因素:5阶方阵  主观性强

     


    同理可得方案层P1,P2,P3对准则层5个准则的两两比较矩阵

     矩阵第一行代表:P1、P2、P3;B:景色...

    B1:三个方案层对景色(第1个准则)的重要性程度之比 --> 第1个旅游地的景色更好一些。

    如何确定下层因素对上层因素的排序结果,准则层的大小顺序?--> 权重向量【两两比较矩阵:准则之间的大致比较】

    3、相对权重向量的确定

    \overrightarrow{W}作归一化后可近似地作为A的权重向量,这种方法称为特征根法

    在实际应用中,多采用特征根法来确定相对权重向量。

    4、判断矩阵的一致性检验和一致性指标

    5、比较矩阵的一致性检验及权重

    CR<0.1:通过一致性检验 --> 特征向量对应的特征值 进行 归一化,得到 准则层对目标层的权重向量。

    权重w=(0.263, 0.475, 0.055, 0.099, 0.110) 依次对应 景色、费用、居住、饮食、旅途 --> 费用最重要,其次是景色...

    方案层P1、P2、P3对准则层5个准则的两两比较矩阵的一致性检验及权重向量

    (0.595...0.688)3×5矩阵:每1列对应:三个方案对对应准则的权重;第一种方案在各个指标中对应的权重值。

    综合权重向量:3×5矩阵的每一行*w^{(2)} 

    6、计算组合权重和组合一致性检验

    理论知识 --> 渗透到论文的书写中 -> 降低重复率 -> 换变量符号

    7、比较矩阵的一致性检验及权重

    (0.595...0.688)3×5矩阵:第1行:第一个方案在5个准则中对应的权重;   w^{(2)}:5个准则对目标的权重。

    计算 组合权重:3×5矩阵 第x行*w^{(2)}

    w^{(3)}方案层对目标层的相对重要性。按照组合权重进行大小排序 ==> P3>P1>P2

    CR>0.1:判断矩阵没有通过一致性检验 --> 返回检验,调整矩阵。

    8.3.3 层次分析法的应用范围

    层次分析法主要应用在生命科学和环境科学领域。

    在安全生产科学技术方面主要应用包括煤炭生产安全、危险化学品评价、油库安全评价、城市灾难应急能力研究及交通安全评价等;

    在环境保护研究中的应用主要包括:水安全评价、水质指标和环境保护措施、生态环境质量评价指标体系研究以及水生野生动物保护区污染源确定等。

    层次分析法更多的可以用于指定和解决个人生活中遇到的问题,比如说专业的选择、工作的选择及买房的选择等。

    8.3.4 层次分析法的优缺点

    优点

    1. 系统性的分析方法;          信息熵法:只能解决一个问题,确定决策矩阵的相对权重;层次...:一整套,层次分明。类似于人脑对复杂决策的模拟,符合人脑思考逻辑过程;层次分明,便于决策者认真地考虑衡量与决策指标的相对权重(相对重要性)。
    2. 简洁实用的决策方法;      非常容易上手来解决问题。
    3. 所需定量数据信息较少。  不仅适用于存在不确定性与主观性较多的情况下,而且允许用合乎逻辑的方式去运用经验、洞察力、直觉来进行决策。信息熵法 无法 利用洞察力,无法利用决策者自身优势。
    4. ...

    缺点

    1. 不能为决策者提供新的方案;      只能对已经提供的方案进行排序,只能在已有的方案(备选方案)中进行选择。
    2. 定量数据较少,定性数据多,不易令人信服;   直觉
    3. 指标过多时,数据统计量大,且权重难以确定;
    4. 特征值和特征向量的精确求法比较复杂。

    8.4 案例分析-职员晋升

    8.4.1 引例--职员晋升

    职场中公平公正地实施职员晋升,是管理者的一件非常重要而又困难的问题。

    一种简单易行的、具有一定合理性的办法是,由评委会先订立全面评价一位职员的几条准则,如工作年限、教育程度、工作能力、道德品质等,并且确定各准则在职员晋升这个总目标中所占的权重,然后按照每一个准则对每位申报晋升的职员进行比较和判别,最后将准则的权重与比较、判别的结果加以综合,得到各位申报者的最终排序,作为管理者对职员晋升的决策。 

    道德品质:定性指标 --> 层次分析法 --> 选择指标,需要参阅大量的参考文献:别人咋做咋做。

    现假设有3名职员申报职称晋升,评委会制定以工作年限、教育程度、工作能力、道德品质为晋升准则,每个职员的具体信息如下表1。

    问题:对3位申报职称晋升的职员进行排序。

    这个问题就是一个半定性半定量的问题,我们可以采用层次分析法来解决这个问题。

    层次分析法的步骤

    1. 建立层次结构图
    2. 构造两两比较矩阵(成对比较矩阵、判断矩阵
    3. 确定相对权重向量
    4. 确定综合权重向量
    5. 根据综合权重向量的大小确定选优排序顺序

    8.4.2 建立层次结构图

    将该问题自上而下地分为目标、准则、方案3各层次,并用一个层次结构图表示。

    最上层是目标层(职员晋升),中间是准则层(4个晋升准则),最下面是方案层(3位职员)。

    决策指标,不多不少:   太少:全面性不够;   太多:重复性指标。

    在建立层次结构图时,如果所选要素不合理,或者要素之间的关系不正确时,都会降低层次分析法的结果质量,甚至导致层次分析决策的失败。

    一般为保证递阶层次结构的合理性,需把握以下原则:

    1. 分解简化问题时把握主要因素,不漏不多;因素过多,不利于两两比较;因素过少,建立模型后,可能有失公理性,造成决策失败。
    2. 注意相比较元素之间的强度关系,相差太悬殊的要素不能在同一层次比较。特别是在建立准则层时,准则过多or准则比较因素相差悬殊太大,建立多个准则层(准则层、子准则层...)。

    8.4.3 准则层对目标层的相对权重向量

    构造准则层对目标层的比较矩阵

    当确定4个准则工作年限X_{1}、教育程度X_{2}、工作能力X_{3}、道德品质X_{4}对目标(职员晋升Y)的权重时,需将X_{1}X_{2}X_{3}X_{4}两两进行比较,按1-9尺度写出准则层对目标层的两两比较矩阵为

     A31:工作能力与工作年限 进行比较 --> 工作能力强一些。

    并求得A的最大特征根 \lambda _{max} = 4.0104 。

    求出最大特征根后,可求相应的特征向量,此特征向量能不能作为准则层对目标层的比较矩阵?--> 一致性检验

    一致性检验

     0.0039<0.1:矩阵满足一致性要求

    8.4.4 综合权重向量及排序结果

    对于职员晋升问题用两两比较矩阵得到第2层4个准则对第1层目标的权重(记为w^{(2)})之后,用同样的方法确定第3层3个方案(3个职员)对第二层每一准则的权重。

    设决策者给出的第3层对4个准则X_{1}X_{2}X_{3}X_{4}的成对比较矩阵分别为

     方案对工作年限、教育程度、工作能力、道德品质,两两比较

    B1:三个方案对工作年限的两两比较。

    B_{j}(j=1,2,3,4)计算其最大特征根\lambda _{j},一致性指标CI_{j}及(归一化)特征向量w_{j}^{(3)},结果如表2。

    注意到表2中第3行的前4个数值分别是职员A1对4个准则的权重,将它们与表2最后一列4个准则对目标的权重对应地相乘再求和,就得到职员A1对目标的权重。

    注意到表2中第2行的前4个数值分别是职员A1对4个准则的权重,将它们与表2最后一列4个准则对目标的权重对应地相乘再求和,就得到职员A1对目标的权重。类似可得到职员A2,A3对目标的权重,可得

                                 w^{(3)} = (0.4505, 0.3202, 0.2292)^{T}

    由此可知三位职员的优劣顺序为

                                 A_{1} > A_{2} > A_{3}

    8.4.5 职员晋升问题再讨论

    上面是对每位申报晋升的职员按照每一条准则进行比较和评判,由于这些准则过于笼统、不够具体,比较和评判起来有一定的困难,特别是当申报者较多时进行两两比较的一致性难以保证。

    实际上,可以将每条准则细分为若干等级,如工作年限和教育程度可以用入职时间和学历分级,工作能力和道德品质大概只好按照优、良、中划分。

    若评委会确定了每条准则中各个等级的分值,那么 每一位申报晋升的职员只需按照在每条准则中所处的等级“对号入座”,再根据4个准则在职员晋升中的权重,就可以计算出他(她)的总分,最后根据总分确定其能否晋升。

    对号入座、打分法

    如一位工作4年,工作能力优秀、道德品质良好的本科毕业生A_{k},4项准则中所处的等级如表所示,其总分

    60×0.1223 + 90×0.2270 + 100×0.4236 + 80×0.2270 = 88.29

    8.4.6 层次分析法与系统综合评价的比较

    两种方法都能用于解决决策问题,从前面的介绍可知,二者在步骤、方法上有很多相同之处。

    不论是层次分析还是系统综合评价,重点都是要确定准则(属性)对目标的权重方案对准则(属性)的权重,其手段可以分为相对测量绝对测量

    层次分析法进行的两两比较矩阵属于前者,而如果能用定量的尺度来表述方案和准则的特征,则属于后者。

    对于尚没有太多知识的新问题或模糊、抽象的准则,主要依赖于相对测量,而对于已有充分了解的老问题或明确、具体的准则,应尽可能用绝对测量。


    如购物选择、旅游地选择中的价格,人员聘用或职称晋升中的工作年限、奖学金评定中的学习成绩、宜居城市评选中的空气质量、大学排行榜制定中的论文数量等,都是可以使用绝对测量的。

    一般来说,相对测量偏于主观、定性,绝对测量偏于客观、定量,在指标值的确定时应尽量采用绝对测量。


    绝对测量的另一个好处是,当新方案加入或老方案退出时,原有方案的结果不会改变。而若用相对测量就要重新做若干比较,原方案的结果有可能改变。


    在应用中可以将多属性综合评价和层次分析法中的方法结合起来,如用两两比较矩阵确定属性(指标)的权重,而绝对测量确定决策矩阵。

    8.5 动态加权综合评价法

    8.5.1 引例

    2005年中国大学生数学建模竞赛的A题:“长江水质的评价和预测”问题的第一部分给出了17个观测站(城市)的最近28个月的实际检测指标数据,包括反映水质污染程度的最主要的四项指标:溶解氧(DO)高锰酸盐指数(CODMn)氨氮(NH3-N)PH值,要求综合这四种污染指标的28个月的检测数据对17个城市的水质情况做出综合评价。

    这是一个较复杂的多因素多指标的综合评价问题。

    查阅水质评价的国标(GB 3838—2002)规定可知 ,关于地表水的水质可分为Ⅰ类、Ⅱ类、Ⅲ类、Ⅳ类、Ⅴ类、劣Ⅴ类共六个类别,每一个类别对每一项指 标都有相应的标准值(区间),只要有一项指标达到高类别的标准就算是高类别的水质,所以实际中不同类别的水质有很大的差别,而且同一类别的水在污染物的含量上也有一定的差别

    在对17个城市的水质做综合评价时,要充分考虑这些指标值不同类别水的“质的差异”和同类别水的 “量的差异”,在此简称为“质差”和“量差” 。

    8.5.2 动态加权评价法的一般提法

    也就是对于每一个指标而言,既有不同水质类别 的差异,又有同类别的不同量值的差异。对于这种既 有“质差”,又有“量差”的问题,如果用通常的定常权综合评价法做综合评价不尽合理的,一种合理有效的方法是动态加权综合评价方法

    根据问题的实际背景和综合评价的一般原则,解决问题的主要过程分三步完成:

    1. 评价指标的标准化处理;
    2. 根据各指标的特性选择动态加权函数;
    3. 构建问题的综合评价模型,并依综合评价值做出评价。

    评价指标的标准化处理

    评价指标的类型有极大型、极小型、中间型和区间型四种,并且大多时候也有不同的量纲,这就要根据不同的情况分别作标准化处理,即将不同类型的指标变成一致的,无量纲的标准化指标。

    评价指标的标准化处理中在前面的课程中已有提及,这里不再赘述。

    需要注意的是,当对指标进行标准化处理时,也要对每一个指标对应所在的分类区间做相应处理,否则在利用标准化的指标值建立综合评价模型时综合评价结论出错 甚至导致结论与实际情况完全相反。

    8.5.3 动态加权函数的设定

    考虑到评价指标的“质差”与“量差”的关系,选择动态权重函数时 既要能体现不同类型指标之间质的差异,也要能体现同类型指标量的差异。

    具体取什么样的动态加权函数,主要是从实际问题出发分析确定。

    对于不同的指标可以取相同的权函数,也可以取不同的权函数。

    下面介绍三类常用的动态权函数。

    1.分段变幂函数

    2.偏大型正态分布函数

       

    3.S型分布函数

    8.5.4 综合评价模型的构建

    利用标准化的各评价指标值x_{i},以及相应的动态加权函数w_{i}(x) (i=1,2,..,m)建立综合评价模型来对n个被评价对象作出综合评价。

    例如,我们构建综合评价模型为各评价指标的动态加权和,即X = \sum_{i=1}^{m} w_{i}(x_{i}) \cdot x_{i} .

    如果每个被评价对象的m个指标都有N组样本观测值

    代入上式计算,每一个被评价对象都有N个综合评价指标值

    由此按其大小顺序排序,可得到n个被评价对象的N个排序方案。

    利用决策分析中的Borda函数方法确定综合排序方案。

    记在第j个排序方案中排在第k个被评价对象S_{k}后面的个数为B_{j}(S_{k}),则被评价对象S_{k}的Borda数为

                        B(S_{k}) = \sum_{j=1}^{N} B_{j}(S_{k}) (k=1,2,...,n)

    由此式的计算结果按大小排序,就可以得到第k个被评价对象的综合评价结果,即总排序结果。

    8.5.5 动态综合评价方法的特点

    从实际的综合评价结果可以看出,针对这样一类多因素多属性的既包含“质差”又包含“量差”的综合评价问题,采用动态加权综合评价方法使得评价结果科学合理。主要特点有:

    • 充分地考虑到了每一个因素每一属性的所有“差异”的影响和作用;
    • 在综合评价中也充分地体现出了各属性的“广泛性”和“民主性”;不是单看一个指标,而是将所有的指标都融合起来。
    • 避免了在一般的综合评价方法的“一票否决”(即某一指标的劣而导致结果的否定)的不合理性;
    • 体现出了综合评价的“综合”二字的含义。

    动态加权综合评价方法从方法上增加了综合评价的客观性,大大地淡化了评价人的主观因素对评价结果的影响。这与一般的定常加权法相比其优越性是显而易见的。

    动态加权综合评价方法不仅适用于水质的综合评价这一类问题,而且 类似的可以用来研究解决诸如空气质量的综合评价问题,以经济和军事等领域的很多综合评价问题,动态加权综合评价方法在实际中非常有推广应用价值 。

    8.6 案例分析-大气污染问题

    • 8.6.1 问题的引入
    • 8.6.2 问题的分析
    • 8.6.3 基本假设及符号说明
    • 8.6.4 模型的建立
    • 8.6.5 模型的求解与分析
    • 8.6.6 模型的评价与推广

    8.6.1 问题的引入

    大气是指包围在地球外围的空气层,是地球自然环境的重要组成部分之一。人类生活在大气里,洁净的大气是人类赖以生存的必要 条件。随着地球上人口的急剧增加,地球上的大气污染日趋严重,其影响也日趋严重,如由于一些有害气体的大量排放,不仅造成局 部地区的大气污染,而且影响到全球性的气候变化。因此,加强大 气质量的监测和预报是非常必要的。目前对大气质量的监测主要是监测大气中SO_{2}NO_{2}和悬浮颗粒物(主要是PM_{10})等的浓度。

    附件给出了城市A、B、C、D从2019年6月1日到2019年7月25日测量的污染物含量及城市A的气象参数的数据。请建立由污染物浓度评价空气质量的数学模型,并利用附件中的数据对4个城市的空气质量进行排序

    附件 四个城市的污染物含量       一共55天的测量数据

    8.6.2 问题的分析

    该问题要求建立由污染物浓度评价空气质量的数学模型,并对4个城市的空气质量进行排序。

    查阅国标(GB 3095-1996)规定知,环境空气质量标准分为三级,每一级别对每一项指标都有相应的标准值(相关数据见表1)。

     典型多属性多指标的综合排序问题

    由表可知,对于每一个评价指标,既有不同级别“质的差异”,又有同级别“量的差异”。对于这种既有“质差”又有“量差”的问题,采用定常加权法显然是不合理的,故合理有效的方法是动态加权综合评价法

    8.6.3 基本假设及符号说明

    1. 基本假设

    1. 假设评价空气质量的各指标间相互作用关系忽略不计;
    2. 假设附件中数据为每天的统计平均值,能客观反映当天空气污染物浓度的实际情况。表明建立模型的合理性

    2. 符号说明

    8.6.4 模型的建立

    1. 评价指标的规范化处理

    评价指标类型的一致化处理

    通过判断可知SO2,NO2和PM10的浓度这三类指标均为极小型指标,故在此不需要将指标类型一致化处理。

    评价指标的无量纲化处理

    一般来说,数据的无量纲化处理有标准差方法、极值差方法和功效系数法等。在此,选取极值差方法对三类指标进行标准化处理。 即令

                                                               对列进行处理

    经此处理,我们可以得到评价指标经标准化处理后的指标观测值,同时我们将评价指标的三级区间标准限值对应也做极值差处理。

    同时我们将评价指标的三级区间标准限值对应也做极值差处理。

    2. 动态加权函数的确定

    根据空气质量问题的实际情况,各指标x_{i}对综合评价的影响比较符合随着类别的增加呈现先缓慢增加,中间快速增长,最后平缓增加趋于最大。于是不妨选取呈正态分布的偏大型正态分布函数作为动态加权函数,即

    3. 综合评价模型的建立

    为了给每次的检测值进行排序,在基于上述模型的同时,取综合评价模型为各评价指标的动态加权和,即

                                             X = \sum_{i=1}^{m} w_{i}(x_{i}) \cdot x_{i}(i=1, 2, 3)

    由此综合评价指标函数可以求出每个被评价对象的N个综合评价指标X_{k}(j)(k=1, 2, ..., n;j=1, 2, ..., N),且据此大小排序,可得n个被评价对象的N个排序方案。

    利用决策分析中的Borda函数方法来确定综合排序方案。

    根据此式的计算结果大小排序,便可得到n个被评价对象的总排序结果。

    8.6.5 模型的求解与分析

    1. 算法

    • ① 运用极值差法,将数据先归一化化成可比较的[0,1]上的数值;数据标准化处理
    • ② 根据偏大型正态分布函数,确定三类指标的动态加权函数;
    • ③ 将i从1开始到3,k从1到4,j从1到55,对②得到的新数值矩阵进行加权求和,得到不同的i的分数;
    • ④ 对分数进行从大到小的排序,得到4个被评价对象的55个排序方案;
    • ⑤ 利用Borda函数计算4个被评价对象的Borda数,并根据Borda数从大到小进行排序,从而得到最终排序结果。

    2. 求解及分析

    运用Matlab软件编程对各次检测值进行加权求和,得到各综合评价指标值。部分结果如下表。

    根据表3的结果进行排序得到55个排序方案,利用Borda函数编程计算可得A、B、C、D的Borda数及总排序结果。

    由表4可知四个城市的空气污染物浓度排序为:D>C>A>B,可见空气污染最严重的是D城市,其次是C城市,排在第三位的是A城市,而空气质量最好的是B城市。

    8.6.6 模型的评价与推广

    1. 模型的评价

    在这个问题中,考虑大气污染物浓度等评价指标的“质差”和“量差”的关系,采用了动态加权综合评价的方法建立模型,最后利用Borda函数得到四个城市空气质量的总排序。这一模型不仅充分考虑了每一个因素每一个属性的所有差异的影响和作用,使得评价结果科学合理;而且增加了综合评价的客观性,与定常加权相比大大淡化了主观因素的影响。

    2.模型的推广

    该模型不仅可以科学地评价空气质量问题,还可以推广到水质评价问题及经济、军事等领域的许多综合评价问题,具有广泛的应用 价值。

    展开全文
  • 最优化内外点法matlab实现

    千次阅读 2020-12-31 17:14:50
    文章目录实验二: 约束优化实验目的及要求:实验原理:算法1:内点法算法2:外点法实验内容(方法和步骤) :题目1 编写程序实现外点法(包含源代码和运行截图)外点法函数源代码运行截图题目2 编写程序实现内点法...
     
    

    实验二: 约束优化

    实验目的及要求:

    1. 熟练掌握内点法和外点法的思想和原理;

    2. 编写程序实现内点法和外点法求解极值实例;

    实验原理:

    在$Matlab $环境下,按照要求编写函数和程序,求解实例,直至取得正确的运行结果。(写出每种算法的步骤)

    算法1:内点法
    1. 给定严格内点 x 0 x_0 x0为初始点,初始障碍因子 r 1 = 1 r_1=1 r1=1,给定误差 ε > 0 \varepsilon>0 ε>0,并令 k = 1 k=1 k=1
    2. 构造障碍函数(选择其一):
      • G ( x , r k ) = f ( x ) + r k ∑ j = 1 l 1 g j ( x ) G\left(x, r_{k}\right)=f(x)+r_{k} \sum_{j=1}^{l} \frac{1}{g_{j}(x)} G(x,rk)=f(x)+rkj=1lgj(x)1.
      • G ( x , r k ) = f ( x ) − r k ∑ j = 1 l ln ⁡ g j ( x ) G\left(x, r_{k}\right)=f(x)-r_{k} \sum_{j=1}^{l} \ln g_{j}(x) G(x,rk)=f(x)rkj=1llngj(x).
    3. 求障碍函数无约束极小 G ( x , r k ) G(x,r_k) G(x,rk)
    4. 判断精度若:$r_{k} \sum_{j=1}^{l} \frac{1}{g_{j}(x)} \leq \varepsilon 或 或 \left|r_{k} \sum_{j=1}^{l} \ln g_{j}(x)\right| \leq \varepsilon , 则 以 ,则以 ,x_k 为 原 约 束 问 题 近 似 极 小 解 , 停 止 迭 代 ; 否 则 , 取 为原约束问题近似极小解,停止迭代;否则,取 x_{k+1}<x_k , 并 令 ,并令 k{++}$,返回步骤3,继续迭代。
    算法2:外点法
    1. 取第一个罚因子 M 1 = 0.1 M_1=0.1 M1=0.1 , 允许误差 ε > 0 \varepsilon>0 ε>0,令 k = 1 k=1 k=1

    2. 求解罚函数 P ( x , M ) P(x,M) P(x,M)的无约束极小问题,设极小值为 x k x_k xk
      P ( x , M ) = f ( x ) + M { ∑ i = 1 m [ h i ( x ) ] 2 + ∑ j = 1 l [ min ⁡ ( 0 , g j ( x ) ) ] 2 } P(x, M)=f(x)+M\left\{\sum_{i=1}^{m}\left[h_{i}(x)\right]^{2}+\sum_{j=1}^{l}\left[\min \left(0, g_{j}(x)\right)\right]^{2}\right\} P(x,M)=f(x)+M{i=1m[hi(x)]2+j=1l[min(0,gj(x))]2}

    3. 判断精度. 若在 x k x_k xk点,罚项 < ε <\varepsilon <ε,则停止计算,得到原问题 的近似极小点 x k x_k xk ; 反之,若存在某一个 j ( 1 ≤ j ≤ l ) j (1\leq j \leq l ) j(1jl),有 − g j ( x k ) > ε -g_{j}\left(x_{k}\right)>\varepsilon gj(xk)>ε或存在某$i (1\leq i\leq m ) , 有 ,有 \left|{h}{i}\left({x}{k}\right)\right|>\varepsilon 则 令 则令 M_{k+1} =CM_k$ , (例如 , 可取C= 5 , 10) , 并令 k + + k{++} k++,返回步骤2 。

    实验内容(方法和步骤) :

    题目1 编写程序实现外点法(包含源代码和运行截图)

    利用 M a t l a b Matlab Matlab 编写外点算法,实现下列优化问题的求解

    { min ⁡ f ( x ) = x 1 3 + x 2 2 s.t.  g ( x ) = x 1 + x 2 − 1 \left\{\begin{array}{l} \min f(x)=x_{1}^{3}+x_{2}^{2} \\ \text {s.t. } g(x)=x_{1}+x_{2}-1 \end{array}\right. {minf(x)=x13+x22s.t. g(x)=x1+x21

    外点法函数源代码
    function [X1, X2] = EPM(f, h)
    %       EPM     外点法
    %       f       目标函数
    %       h       等式约束
    M = 0.1;        %M值
    C = 10;         %倍率
    eps =  0.001;    %误差
    syms x1 x2;             %定义变量
    H = matlabFunction(h*h);%函数句柄
    
    while true
        P = f + M*(h*h);        %构造函数
    
        P_x1 = diff(P,x1);      %求x1偏导
        P_x2 = diff(P,x2);      %求x2偏导
        X = solve(P_x1==0,P_x2==0,x1,x2); %解方程组
        X1 = double(X.x1);
        X2 = double(X.x2);
        if M * abs(H(X1, X2)) < eps  %判断终止条件
            break;
        end
        M = M * C;              %加倍
    end
    %%%%%%%%%%%% 多个最优解则选择罚项最小的
    i = 1;
    answer = 10000000;
    X = [X1 X2];
    [n, ~] = size(X);
    for j = 1 : 1 : n
        if abs(H(X(j, 1), X(j, 2))) < answer
            answer = abs(H(X(j, 1), X(j, 2)));
            i = j;
        end
    end
    %%%%%%%%%%% 更新答案
    X1 = X1(i);
    X2 = X2(i);
    end
    
    运行截图
    • 输入
    >> syms x1 x2
    >> f = x1 ^ 3 + x2 ^ 2;
    >> h = x1 + x2 - 1;
    >> [X1,X2]=EPM(f,h)
    
    • 输出
    X1 =
        0.5486
    X2 =
        0.4514
    
    题目2 编写程序实现内点法(包含源代码和运行截图)

    利用 M a t l a b Matlab Matlab编写内点算法,实现下列优化问题的求解

    { min ⁡ f ( x ) = x 1 3 + x 2 2  s.t.  g ( x ) = x 1 + x 2 − 1 \left\{\begin{array}{l} \min f(x)=x_{1}^{3}+x_{2}^{2} \\ \text { s.t. } g(x)=x_{1}+x_{2}-1 \end{array}\right. {minf(x)=x13+x22 s.t. g(x)=x1+x21

    内点法函数源代码
    function [X1, X2] = IPM(f, h)
    %       IPM     内点法
    %       f       目标函数
    %       h       等式约束
    R = 1;          %障碍因子R值
    C = 0.1;        %倍率
    eps =  0.001;   %误差
    syms x1 x2;             %定义变量
    
    H = matlabFunction(log(h));%函数句柄
    F = matlabFunction(f);%函数句柄
    while true
        G = f - R * log(h);    %构造函数
        G_x1 = diff(G,x1);      %求x1偏导
        G_x2 = diff(G,x2);      %求x2偏导
        X = solve(G_x1==0,G_x2==0,x1,x2); %解方程组
        X1 = real(double(X.x1));
        X2 = real(double(X.x2));
        if abs(R * H(X1, X2)) <= eps     % 判断终止条件
            break
        end
        R = R * C;
    end
    %%%%%%%%%%%% 多个最优解则选择目标函数最小的
    i = 1;
    answer = 10000000;
    X = [X1 X2];
    [n, ~] = size(X);
    for j = 1:1:n
        if F(X(j,1),X(j,2)) < answer && X(j,1)>0 && X(j,2)>0
            answer = F(X(j,1),X(j,2));
            i = j;
        end
    end
    %%%%%%%%%%% 更新答案
    X1 = X1(i);
    X2 = X2(i);
    end
    
    运行截图
    • 输入
    >> syms x1 x2
    >> f = x1 ^ 3 + x2 ^ 2;
    >> h = x1 + x2 - 1;
    >> [X1,X2]=IPM(f,h)
    
    • 输出
    X1 =
        0.5486
    X2 =
        0.4514
    
    • 运行截图

    运行截图

    • 输入
    >> syms x1 x2
    >> f = x1 ^ 3 + x2 ^ 2;
    >> h = x1 + x2 - 1;
    >> [X1,X2]=IPM(f,h)
    
    • 输出
    X1 =
        0.5486
    X2 =
        0.4514
    
    展开全文
  • 理想解法(TOPSIS) 一基本原理 TOPSIS是一种综合评价方法其基本原理是 (1) 将n个评价指标看成n条坐标轴由此可以构造出一个n维空间则每个待评价的对象依照其各项指标的数据就对应n维空间中一个坐标 (2) 针对...
  • 本文提出了一种分析RC耦合放大电路的新方法,即理想大电容.该简单、直观不用作图就能方便的求出输出信号的最大值、最小值及能形象的看到输出信号的极性变化情况,并能给出确定最佳静态工作的计算公式,给电路...
  • 比较直线插补

    万次阅读 多人点赞 2018-10-19 09:38:29
    首先我们看看什么是直线插补?数控机床上的横向伺服电机(X轴)带动刀具在X轴向上进行移动,纵向伺服电机(Y轴)带动刀具在Y轴上进行...所以,刀具从A到B移动,实际上并非是一条直线,而是通过X轴与Y轴方向的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,871
精华内容 30,748
关键字:

理想点法