Matlab求整数规划

这篇具有很好参考价值的文章主要介绍了Matlab求整数规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言

1.问题

2.Matlab求解以及线性规划图

3.运行结果

二、整数规划问题求解

三、Matlab求解整数规划(分枝定界法)

3.1Matlab(对变量x1的分枝)的求解

3.2(对变量x1的分枝)运行结果

3.3Matlab(对变量x1的分枝)的求解2

3.4(对变量x1的分枝)运行结果2

3.5.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解

3.5.2(对变量x2的分枝)运行结果

3.6.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解2

3.6.2(对变量x2的分枝)运行结果2

3.7.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解3

3.7.2(对变量x2的分枝)运行结果3 

3.8.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解4

3.8.2(对变量x2的分枝)运行结果4

四、结论


一、前言

对于线性规划,整数规划与之相比,只不过增加了相应的限制条件。即变量必须为整数。首先对于整数规划问题,应用线性规划有(来源:川川菜鸟)

1.问题

Matlab求整数规划

2.Matlab求解以及线性规划图

clear
c=[40,90];          %目标函数的系数矩阵
a=[9 7;7 20];       %约束条件的系数矩阵
b=[56;70];          %约束条件的右端项列向量
aeq=[];             %约束条件中无等式
beq=[];             %约束条件中无等式
lb=[0;0];           %变量的下界为0
ub=[inf;inf];       %变量无上界
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);     %linprog求解线性规划问题的最优解x1和x2
Optimization terminated.
x                 
abs(fval)           %目标函数的最优值
maxz=c*x

线性规划图

 Matlab求整数规划

3.运行结果

>>x
x =
    4.8092
    1.8168
>> abs(fval)
ans =
  355.8779
>> maxz=c*x
maxz =
  355.8779

二、整数规划问题求解

通过@川川菜鸟大佬的介绍,采用分支定界法求解整数规划问题的理解如下:

1.首先利用linprog函数求解整数规划问题对应的线性规划问题,得出的结论如下:

1.1若相应的线性规划的最优解为整数,则对于相应的整数规划也是最优解。

1.2若相应的线性规划的最优解为小数,则对相应的变量进行单变量的子集划分,采用分支定界法进行下一步的linprog求解,比如说有2个变量,则对变量需进行4次分支,然后相应的进行剪枝操作,对比求出最优解。

1.3若相应的线性规划无解,则相应的整数规划也无解。

三、Matlab求解整数规划(分枝定界法)

       分枝定界法是对线性规划后的最优解进行一个范围的划分,也就是说首先对最优解的变量x1进行范围的划分。利用取整函数对变量范围进行划分,分别在各自的定义域内求解目标函数。

       由上述线性规划的解可以得知,z=355.8779,可以得知,z的取值范围为[0,356],因为上述x1,x2都不是整数,所以采用分枝定界法进行划分,将自变量x1划分为两个定义域进行求解。

Matlab求整数规划

3.1Matlab(对变量x1的分枝)的求解

clear
c=[40,90];
a=[9,7;7,20];
b=[56;70];
aeq=[];beq=[];
lb=[0;0];ub=[4;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x
maxz=abs(fval)

3.2(对变量x1的分枝)运行结果

对第一个区域进行约束,得到的最优化取值为x1=4.0000,x2=2.1000,最优化的最大值为349.0000.

x =
    4.0000
    2.1000
maxz =
  349.0000

3.3Matlab(对变量x1的分枝)的求解2

clear
c=[40,90];
a=[9,7;7,20];
b=[56;70];
aeq=[];beq=[];
lb=[5;0];ub=[inf;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x
maxz=abs(fval)

3.4(对变量x1的分枝)运行结果2

x =
    5.0000
    1.5714
maxz =
    341.4286

结果分析:在对x1自变量进行分枝时,在[0,4]和[5,inf]中,可以看到当在[0,4]中,可以看到,当x1=4,x2=2.1时,取得最大值maxz=349。在[5,inf]此区域内,可以看到,当x1=5,x2=1.5714时,取得最大值341.4286.但因为x2是小数,并不能判别到底是在第一区域内取最大值,还是第二区域内取最大值,所以对两区域内的x2变量进行分枝。

3.5.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解

对x1的第一个范围[0,4]内对x2取整后划分范围为[0,2]和[3,inf],继续进行分支定界法。

clear
c=[40,90];
a=[9,7;7,20];
b=[56;70];
aeq=[];beq=[];
lb=[0;0];ub=[4;2];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x
maxz=abs(fval)

3.5.2(对变量x2的分枝)运行结果

x =
    4.0000
    2.0000
maxz =
  340.0000

3.6.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解2

clear
c=[40,90];
a=[9,7;7,20];
b=[56;70];
aeq=[];beq=[];
lb=[0;3];ub=[4;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x
maxz=abs(fval)

3.6.2(对变量x2的分枝)运行结果2

x =
    1.4286
    3.0000
maxz =
    327.1429

由此,可以确定的最大值的范围为[0,340].

3.7.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解3

对x1的第二个范围[5,inf]内对x2取整后划分范围为[0,1]和[2,inf],继续进行分支定界法。

clear
c=[40,90];
a=[9,7;7,20];
b=[56;70];
aeq=[];beq=[];
lb=[5;0];ub=[inf;1];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x
maxz=abs(fval)

3.7.2(对变量x2的分枝)运行结果3 

x =
    5.4444
    1.0000
maxz =
  307.7778

因为自变量中仍然有小数部分,不符合整数规划的要求,所以舍去。

3.8.1Matlab(在变量x1的基础上,对变量x2的分枝)的求解4

clear
c=[40,90];
a=[9,7;7,20];
b=[56;70];
aeq=[];beq=[];
lb=[5;2];ub=[inf;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x
maxz=abs(fval)

3.8.2(对变量x2的分枝)运行结果4

Exiting: One or more of the residuals, duality gap, or total relative error
 has grown 100000 times greater than its minimum value so far:
         the primal appears to be infeasible (and the dual unbounded).
         (The dual residual < OptimalityTolerance=1.00e-08.)

x =

    5.0000
    2.0000


maxz =

  380.0000

可以发现,最大值超出线性规划范围,不可取。采取剪枝操作。

因此,最优解为:

 

四、结论

1.在使用分枝定界法时,对每一个变量都要进行分枝操作,或者说在第一变量的基础上,对第二变量进行,依次分枝。

2.在判断结果时,一定要根据线性规划的最优解取值范围进行判断,否则超出范围都不可取。文章来源地址https://www.toymoban.com/news/detail-467039.html

到了这里,关于Matlab求整数规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【路径规划matlab代码】基于遗传算法求解机器人栅格地图路径规划问题

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年03月08日
    浏览(55)
  • 【路径规划】基于遗传算法求解机器人栅格地图路径规划问题matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月24日
    浏览(49)
  • 【MPC】①二次规划问题MATLAB求解器quadprog

    二次规划是指约束为线性的二次优化问题。在Matlab中,quadprog是具有线性约束的二次目标函数求解器。 min ⁡ x 1 2 x T H x + f T x mathop {min }limits_x frac{1}{2}{{bf{x}}^{bf{T}}}{bf{Hx}} + {{bf{f}}^{bf{T}}}{bf{x}} x min ​ 2 1 ​ x T H x + f T x 其实H是Hessian 阵,是n乘n的对称阵。 1、海森矩阵的正

    2024年01月25日
    浏览(32)
  • 基于遗传算法求解机器人栅格地图路径规划问题matlab仿真

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月22日
    浏览(39)
  • 使用COPT求解混合整数线性规划

    使用 from copt import * 引入模型 import coptpy as cp env = Envr() 创建优化模型,返回一个Model对象 mdl=env.ccreateModel(\\\"name\\\") 添加一个决策变量: mdl.addVar(lb=0.0, ub=COPT.INFINITY, obj=0.0, vtype=COPT.CONTINUOUS, name=\\\"\\\", column=None) Lb : 变量的下界。可选参量,默认为0.0。 Ub : 变量的上界。可选参量

    2024年02月06日
    浏览(37)
  • 数学建模--非整数规划求解的Python实现

    目录 1.算法流程简介 2.算法核心代码 3.算法效果展示

    2024年02月10日
    浏览(24)
  • 【任务分配】多目标粒子群算法求解多无人机多任务路分配及路径规划(最短路程+最短时间)问题【含Matlab源码 3522期】

    1 粒子群算法 粒子群算法是智能算法领域中除蚁群算法、鱼群算法又一个智能群体算法。 PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解。粒子在解空间中运动,通过跟踪个体极值Pbest和群体极值Gbest更新个体位置。 粒子每更新一次

    2024年02月04日
    浏览(50)
  • 【Matlab】混合整数规划

    链接 f、x、intcon、lb、beq、Ib和ub是向量,A和Aeq是矩阵 min ⁡ x f T x  subject to  { x (  intcon  )  are integers  A ⋅ x ≤ b  Aeq  x = b e q l b ≤ x ≤ u b min _{x} f^{T} x text { subject to }left{begin{array}{l} x(text { intcon }) text { are integers } \\\\ A cdot x leq b \\\\ text { Aeq } x=b e q \\\\ l b leq x leq u

    2024年02月04日
    浏览(25)
  • Matlab求整数规划

    目录 一、前言 1.问题 2.Matlab求解以及线性规划图 3.运行结果 二、整数规划问题求解 三、Matlab求解整数规划(分枝定界法) 3.1Matlab(对变量x1的分枝)的求解 3.2(对变量x1的分枝)运行结果 3.3Matlab(对变量x1的分枝)的求解2 3.4(对变量x1的分枝)运行结果2 3.5.1Matlab(在变量

    2024年02月07日
    浏览(23)
  • 0-1规划的MATLAB求解

    1、在上述模型中,目标函数f 需要 “极小化” ,不等式约束形式为 “≤” 。假设x为n维设计变量,且线性规划问题具有不等式约束m1个,等式约束m2个,那么:c、x均为n维列向量,b为m1维列向量,beq为m2维列向量,A为m1×n维矩阵,Aeq为m2×n维矩阵。 2、如果不满足标准型的要求

    2024年02月02日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包