国赛培训——规划论——线性规划

本文详细介绍了如何使用MATLAB解决线性规划问题,包括基础概念、标准型转换,以及五个具体实例:最基础实现、绝对值转化、生产决策、产销平衡和指派问题,展示了MATLAB在解决各种线性规划问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

线性规划问题:在一组线性约束条件的限制下,求一线性目标函数最大或最小的问题
可行解:满足所有约束条件的解称为可行解
最优解:使目标函数达到最优值的可行解是最优解
可行域:所有可行解构成的集合

求线性规划的matlab解法

(1)基本函数:linprog(c,a,b,aeq,beq,lb,ub,x0,options)
[x,y] = linprog(c,a,b,aeq,beq,lb,ub,x0,options)
fval 返回目标函数的值,LB 和 UB 分别是变量 x 的下界和上界,x0 是 x 的初始值,OPTIONS 是控制参数。

(2)标准型:
min c’x
s.t. ax <= b
aeq
x = beq
lb <= x <=rb

①当处理max或>=情况时,对应函数或不等式系数取反
②向量x:n行1列,变量系数c:n行一列

在这里插入图片描述

实例1:最基础的实现

例题1:
max z = 2x1 + 3x2 - 5x3
s.t. x1 + x2 + x3 = 7
2x1 - 5x2 + x3 ≥10
x1 + 3x2 + x3 ≤12
x1, x2 , x3 ≥ 0
因为最优解为max,需要转换取反 min z = -2x1-3x2+5x3
且不等式2x1-5x2+x3≥10转化为-2x1+5x2-x3≤-10

c = [-2;-3;5];
a = [-2,5,-1;1,3,1];
b = [-10;12];
aeq = [1,1,1];
beq = 7;
x = linprog(c,a,b,aeq,beq,zeros(3,1))
y = c'*x;

结果:

x =
6.4286
0.5714
0
y =
14.5714

实例2:绝对值转化为线性规划

理论依据:对任意的 xi ,存在ui , vi > 0满足xi = ui − vi ,| xi |= ui + vi,其中:
在这里插入图片描述
例题2:
min z=|x1|+2|x2|+3|x3|+4|x4|;
s.t. x1-x2-x3+x4=0;
x1-x2+x3-3x4=1;
x1-x2-2x3+3*x4=-1/2;
思路:利用绝对值得线性规划转换,将目标函数和约束条件转换为:
min z = (u1+v1)+2(u2+v2)+3(u3+v3)+4(u4+v4)
s.t. (u1-u2-u3+u4)-(v1-v2-v3+v4) = 0
(u1-u2+u3-3u4)-(v1-v2+v3-3v4) = 1
(u1-u2-2u3+3u4)-(v1-v2-2v3+3v4) = -1/2
最终得到的向量是[u1;u2;u3;u4;v1;v2;v3;v4]

c = [1;2;3;4;1;2;3;4]
aeq = [1,-1,-1,1,-1,1,1,-1;1,-1,1,-3;-1,1,-1,3;1,-1,-2,3,-1,1,2,-3];
beq = [0;1;-1/2];
x = linprog(c,[],[],aeq,beq,zeros(8,1))
z = c'*x

结果:

x =
0.2500
0
0
0
0
0
0
0.2500
z =
1.2500

实例3:生产决策问题

问题描述:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冠long馨

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值