Matlab 整数线性规划问题建模代码
整数线性规划问题的基本内容
整数线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题。其中自变量只能取整数。特别地,当自变量只能取0或者1时,称之为 0-1 整数规划问题。
当目标函数为最小值时,上述问题可以写成如下形式:
\[ \min z=\mathbf{F}^{T}\mathbf{X} \]
\[ \text { s.t. } \left\{\begin{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} \text{取整数} \end{array}\right. \]
其中
\(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}\] \[\text { s. t. }\left\{\begin{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\text{ or }1}\end{array}\right.\]
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
原文地址:https://www.cnblogs.com/gshang/p/11495574.html
下一篇: 整数分割(动态编程)
推荐阅读
-
数字图像处理实验(五)|图像修复 {反滤波和伪反滤波、维纳滤波 deconvwnr、大气湍流扰动建模、运动模糊处理 fspecial}(附 Matlab 实验代码和截图)
-
数学建模 - 线性和整数编程 - Matlab 解决优化问题
-
[数学建模] 数学建模研究 2 - 整数编程(示例 + matlab 代码实现)
-
整数编程 | 解决 0-1 背包问题的分支与边界算法(附 MATLAB 代码)
-
Matlab 整数线性规划问题建模代码
-
[数学建模算法](号外 1)用于解决整数编程问题的 Matlab 函数 intlinprog
-
基于A-star算法的无人飞行器二维路径规划问题求解 Matlab 代码。
-
数学建模】2021 年美国锦标赛 B 级问题解决方案(森林火灾和无人机布局) 【包括 Matlab 源代码 247 期
-
FJSP:用于解决灵活作业车间调度问题(FJSP)的蜣螂优化器(DBO)算法,提供 MATLAB 代码
-
非洲秃鹫优化算法:一种新的自然启发元启发式算法,用于解决全局优化问题(Matlab 代码实现)