2021-11-07

文章目录

题目

在这里插入图片描述

matlab解题过程

第一步

matlab代码


>> c=[40 90];
>> a=[9 7; 7 20];
>> b=[56 70];
>> aeq=[];
>> beq=[];
>> lb=[0 0];
>> ub=[inf;inf];
>> lb=[0;0];
>[x y]=linprog(-c,a,b,aeq,beq,lb,ub);
>x
>best=c*x

答案如下:
在这里插入图片描述best=40 * x1+90 * x2
在这里插入图片描述解出x1=4.8092,x2=1.8168,Max Z=355.8800.
下面采用分支定界法求解该目标函数的最优整数解。
x1 =< [4.8092] = 4 , x1 >= [4.8092]+1 = 5
此时约束条件为:

9*x1+7*x2<=56
7*x1+20*x2<=70
0<x1<4 x2>0

则需修改代码第八行:

ub=[4;inf]%x1变量上线为4

得到结果为:
在这里插入图片描述
此时x1=4,x2=2.1,best=349
同理我们可以继续求得x1分支的另一半:

x1>=5
349```
此时约束条件为:

```python
9*x1+7*x2<=56
7*x1+20*x2<=70
x1>=5  x2>0

修改代码第六行:

lb=[5;0];
ub=[inf;inf];

答案如下:
在这里插入图片描述最优值范围为:0 =< Z =<349
同理我们可以按照相同方法对X2进行分枝:

分枝的数据应该采用z最大值取得时的x2的值:

x1=4,x2=2.1
0 =< x2 <=[2.1] , x2 >= [2.1] + 1

此时约束条件为:

9*x1+7*x2<=56
7*x1+20*x2<=70
0<=x1<=4  2>x2>0

修改代码得到结果为:
在这里插入图片描述在计算x2的第二个分枝:

x2>=3

约束条件为:

9*x1+7*x2<=56
7*x1+20*x2<=70
0<=x1<=4  x2>=3

得到结果为:
在这里插入图片描述计算到这里我们可以确定目标函数的最佳值范围:

340 =< Z =< 341

第二步

对于问题:
在这里插入图片描述按照第一步的方法进行分枝
第一步中我们得到此时最优解为:
在这里插入图片描述我们对x2进行分枝:

0 =< x2 =< [1.5714] = 1 , x2 >= [1.5714] + 1 = 2;

约束条件为:

9*x1+7*x2<=56
7*x1+20*x2<=70
x1>=5  1>x2>0

matlab代码为:

clc
clear all
c=[40 90];%用目标函数系数来确定

a=[9 7 ;7 20];%约束条件左边约束

b=[56 70];%约束条件右边系数

aeq=[];%没有等式约束,因此aeq,beq都为空
beq=[];

lb=[5;0];%下限
ub=[inf;1];%上限

[x,y]=linprog(-c,a,b,aeq,beq,lb,ub) %这里没有等式约束,对应的矩阵为空矩阵

结果为:
在这里插入图片描述得到结果为:

x1 = 5.4444 , x2 = 1 , best = 307.7778

再次对x2分枝
得到约束条件:

9*x1+7*x2<=56
7*x1+20*x2<=70
x1>=5  x2>=2

修改代码后发现该目标函数无解。
因此我们根据第一步,第二步分枝可以得到最优解:

x1 = 4 , x2 = 2 , best = 340

总结分析

在这里插入图片描述

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

与森先生

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值