MATLAB实现-整数规划之分支定点法

代码实现

%main.m
%分支定界法

%求解模型:
%min z = f * x
%A * x <= b
%x >= 0,且为整数

clear gloal

global result;%存储所有整数解
global lowerBound;%下界
global upperBound;%上界
global count; %用来判断是否为第一次分支

f = [-40, -90];
A = [9, 7;
    7, 20;];
b = [56;70];
Aeq = [];
beq = [];
lb = [0; 0];
ub = [inf; inf]

[x, fval] = linprog(f, A, b, Aeq, beq, lb, ub);
x
abs(fval)
maxz = (-f) * x


%对x1进行分支 x1<=4
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)

%x1分支+x2分支 x1<=4,x2<=2
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)

%x1+x2分支 x1 <=4, x2>=3
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)

%对x1分支 x1>=5
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)

%x1+x2分支 x1>=5+x2<=2
c = [40, 90];
A = [9, 7; 7, 20];
b = [56, 70];
Aeq = [];beq = [];
lb = [5;0];
ub = [inf;2];
[x, fval] = linprog(-c, A, b, Aeq, beq, lb, ub);
x
maxz = abs(fval)

%x1+x2分支,x1>=5+x2>=3
c = [40, 90];
A = [9, 7; 7, 20];
b = [56, 70];
Aeq = [];beq = [];
lb = [5;3];
ub = [inf;inf];
[x, fval] = linprog(-c, A, b, Aeq, beq, lb, ub);
x
maxz = abs(fval)

运行结果

线性规划运行结果

在这里插入图片描述
然后对变量x1,x2进行分支计算

x1分支1(x1<=4)

在这里插入图片描述

x1,x2分支(x1<=4, x2<=2)

在这里插入图片描述

x1,x2分支(x1<=4, x2>=3)

在这里插入图片描述

x1分支2(x1>=5)

在这里插入图片描述

x1,x2分支(x1>=5, x2<=2)

在这里插入图片描述

x1,x2分支(x1>=5, x2>=3)

在这里插入图片描述
所以这个题目整数规划结果为
在这里插入图片描述

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值