MATLAB中关于函数intlinprog的使用

您所在的位置:网站首页 vlb和vub MATLAB中关于函数intlinprog的使用

MATLAB中关于函数intlinprog的使用

2024-07-09 18:43| 来源: 网络整理| 查看: 265

1. intlinprog介绍

intlinprog是matlab中用于求解混合整数线性规划(Mixed-integer linear programming)的一个函数,用法基本和linprog差不多

这是关于该函数一份文档的说明截图 文档详情点这里 在这里插入图片描述

英语八级的随便看,不想看的请听我细细道来。

intlinprog函数有九个参数

大多数求解线性规划问题时,只用到前面8个参数,所以这里,我就详细的讲解前面8个参数的含义

f :目标函数的系数矩阵 intcon :整数所在位置 A :不等式约束的变量系数矩阵 b :不等式约束的资源数 Aeq :等式约束的变量系数矩阵 beq :等式约束的资源数 lb :变量约束下限 ub :变量约束上限

咱就话不多说,直接上例子和代码

2. 实例和代码 例1:

在这里插入图片描述

根据函数的使用要求;求最大值,首先要把目标函数转化为最小值,即min z = - (2x+3y);要把大于等于转换为小于等于,即在有 “≥” 符号式子两边同时乘以-1;

代码如下:

f = [-2 -3]; % 目标函数的系数矩阵 intcon = []; % 整数所在位置,题目没有要求,所以是空 A = [2,-1;-1,1;-1,-1]; % 不等式约束的变量系数矩阵 b = [2;1;-1]; % 不等式约束的资源数 [x,fval] = intlinprog(f,intcon,A,b); % fval代表最优解处的函数值 x,fval = -fval % 返回最大值的结果

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

例2:

在这里插入图片描述 在这里插入图片描述

该问题是个0-1规划问题,加上限制条件即可,代码如下:

f = [7 5 9 6 3]; intcon = [1,2,3,4,5]; // 这个表示限制变量集x1 x2 x3 x4 x5都是整数。个人觉得数组的值用1表示整数,0表示不限制,数组的下标表示第几个结果限制为整数,更贴合编程逻辑,比如[1,1,1,1,1] 表示变量集都限制为整数。但是该函数好像并未那么做 A = [56,20,54,42,15;1,4,1,0,0;-1,-2,0,-1,-2]; b = [100;4;-2]; lb = zeros(5,1); % 生成5×1的 0 矩阵 ub = ones(5,1); % 生成5×1的 1 矩阵 [x,fval]=intlinprog(f,ic,A,b,[],[],lb,ub)

变量的下限是0,上限是1,同时限制了变量是整数。这就是0-1整数规划。其他的规划,读者也可以自己推

结果如下: 在这里插入图片描述 怎么样,是不是很简单?

补充说明:使用intlinprog函数时,如果没有该参数所对应的限制条件,是用 [] 符号代替,不可以不写(在不打乱intlinprog函数参数顺序的前提下,如果后面都是[],可以省略不写)

如果觉得对你有用,那就点个赞把😀~

参考来自:

Matlab中 intlinprog函数用法简介 MATLAB求解线性规划(含整数规划和0-1规划)问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3