• Matlab 整数线性规划问题模型代码


    整数线性规划问题的基本内容

    整数线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题。其中自变量只能取整数。特别地,当自变量只能取0或者1时,称之为 0-1 整数规划问题。

    当目标函数为最小值时,上述问题可以写成如下形式:

    [min z=mathbf{F}^{T}mathbf{X} ]

    [ ext { s.t. } left{egin{array}{l} {mathbf{A}mathbf{X} leqslant mathbf{B}} \ {mathbf{A}_{mathrm{eq}} mathbf{X}=mathbf{B}_{mathrm{eq}}} \ {mathbf{LB} leqslant mathbf{X} leqslant mathbf{UB}} \mathbf{X} ext{取整数} end{array} ight. ]

    其中

    (F)线性目标函数系数向量

    (mathbf{X}) 为决策变量向量

    (mathbf{A}) 为线性不等式系数矩阵

    (mathbf{B}) 为线性不等式右端常数向量

    (mathbf{A}_mathrm{eq}) 为线性等式系数矩阵

    (mathbf{B}_mathrm{eq}) 为线性等式右端常数向量

    (mathbf{L B}) 为决策变量下界向量

    (mathbf{U B}) 为决策变量上界向量


    Matlab模型代码

    调用形式

    [X,FVAL,EXITFLAG,OUTPUT,LAMBDA] = intlinprog(F,intcon,A,B,Aeq,Beq,LB,UB) % 统一形式
    

    输入变量

    • F为目标函数系数向量
    • intcon为整数变量的地址
    • A 为不等式约束系数矩阵(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)
    • B 为不等式右端常数向量(注意默认不等式方向为小于等于,若为大于等于,需要将其取相反数)
    • Aeq 为等式约束系数矩阵
    • Beq 为等式右端常数向量
    • LB 为决策变量下界向量
    • UB为决策变量上界向量

    在调用时,输入参数不存在时,可以将其输入用 [] 空矩阵表示。

    输出变量

    • X 为最优解
    • FVAL 为最优目标值
    • EXITFLAG 为运行结束标志,当等于1时,表示程序收敛于解 X;当等于0时,表示程序运行次数到达最大;当小于0时,说明情况较多
    • OUTPUT 为程序迭代次数
    • LAMBDA 为解X相关的Largrange乘子和影子价格

    案例演示

    目标函数与约束条件

    [min z=-3 x_{1}-2 x_{2}-x_{3}$$ $$ ext { s. t. }left{egin{array}{l}{x_{1}+x_{2}+x_{3} leq 7} \ {4 x_{1}+2 x_{2}+x_{3}=12} \ {x_{1}, x_{2} geqslant 0} \ {x_{3}=0 ext{ or }1}end{array} ight. ]

    Matlab程序

    clc,clear
    f = [-3;-2;-1];
    intcon = 3; % 整数变量的地址
    A = ones(1,3);
    B = 7;
    Aeq = [4,2,1];
    Beq = 12;
    LB = zeros(3,1);
    UB = [inf;inf;1]; % 只有x(3)取0或者1
    [x,fval]= intlinprog(f,intcon,A,B,Aeq,Beq,LB,UB)
    

    运行结果

    x =
    
             0
        5.5000
        1.0000
    
    
    fval =
    
      -12.0000
    
  • 相关阅读:
    PHPCMS快速建站系列之添加单页模版
    func_num_args(),func_get_arg(),func_get_args()
    34 个使用 Raspberry Pi 的酷创意
    解决sublime text 2总是在新窗口中打开文件
    帝国cms后台不停的登录成功
    PHP正则表达式的逆向引用与子模式 php preg_replace应用
    【采集】php str_replace
    如何设置让SFTP的用户限制在某个目录下
    win2008修改最大远程桌面连接数
    mysql查询差集
  • 原文地址:https://www.cnblogs.com/gshang/p/11495574.html
Copyright © 2020-2023  润新知