matlab线性规划

1.线性规划概念

线性规划模型首先是列出约束条件及目标函数,然后画出约束条件所表示的可行域,最后在可行域内求目标函数的最优解及最优值。

线性规划模型求解流程图如图所示
在这里插入图片描述

2.线性规划的标准形式

从实际问题中建立数学模型一般有以下三个步骤:

  • (1)根据影响所要达到目的的因素找到决策变量;
  • (2)由决策变量和所要达到目的之间的函数关系确定目标函数;
  • (3)由决策变量所受的限制条件确定决策变量所要满足的约束条件。

所建立的数学模型具有以下特点:
(1) 每个模型都有若干个决策变量(x1,x2,x3…xn).其中n为决策变量个数。决策变量的一组值表示一种方案,同时决策变量一般是非负的。
(2)目标函数是决策变量的线性函数,根据具体问题可以是最大化(max)或最小化(min),二者统称为最优化(opt)。
(3)约束条件也是决策变量的线性函数。
当得到的数学模型的目标函数为线性函数,约束条件为线性等式或不等式时,称此数学模型为线性规划模型。

3.线性规划的matlab函数

在MATLAB中,用于LP的求解函数为linprog,其调用格式为

x = linprog(f, A, b, Aeq, beq)
x = linprog(f,A b, Aeq, beq, 1b, ub)
x = linprog(f, A, b, Aeg, beq, 1b, ub, x0)
x = linprog(f,A, b, Aeq, beq, 1b, ub, x0, options)
[x,fval] = linprog (...)
[x, fval, exitflag] = linprog(...).
[x, fval, exitflag, output] = 1inprog(...)
[x, fval, exitflag, output, lambda] = linprog(....)

其中,f、A,b是不可默认的输入变量,x是不可默认的输出变量,它是问题的解。lb、ub均是向量,分别表示x的下界和上界,x0为x的起始点,options为optimset函数中定义的参数的值,fval是目标函数在解x处的值,lambda为在解x处的Lagrange乘子。

lambda参数的属性如下:
lambda. lower: lambda 的下界。
lambda. upper: lambda的上界。
lambda. ineqlin: lambda的线性不等式。
lambda. eqlin: lambda的线性等式。

函数linprog的具体用例解释如下:
x= linprog(f,A,b):求解问题min Fx,约束条件为Ax≤b。
x= linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeqx= beq。若没有不等式存在.则令A=[].b=D。
x= linprog(f.A,b,Aeq,beq,lb,ub):定义设计变量x的下界lb和上界ub,使得x始终在该范围内。若没有等式约束,令Aeq=[].beq=[]。
x= linprog(f.A, b,Aeq, beq,lb,ub,x0):设置初值为x0。该选项只适用于中型问题,默认大型算法将忽略初值。
x= linprog(i,A,b.Aeq. beq,lb, ub, x0 ,options):用options 指定的优化参数进行最小化。
[x,fval]= linprog(……)返回解x处的目标的数值fval。
[x. lambda,exitlag] =linprog(…);返回exitlag值,描述函数计算的退出条件。
[x,lambda ,exitflag ,output]= linprog(…):返回包含优化信息的输出变量output.
[x.fval,exiflag ,output ,lambda]= linprog(…)将解x处的Lagrange 乘子返回到
lambda参数中。

例1
在这里插入图片描述
请问a,b.c分别取何值时,Z有最小值?

clear all;
clc
c=[-4 1 7];
A=[3 -1 1;1 1 -4];
b=[4;-7];
Aeq=[1 1 -1];
beq= [5];vlb=[0,0];
vub=[]; 
[x, fval] = linprog(c, A, b, Aeq, beq, vlb, vub)

在这里插入图片描述

4.线性规划实例

例2 某厂生产甲、乙两种产品,已知制成一吨产品甲需要资源A 5t,资源B 4m³ ,资源C 1个单位; 制成 1t产品乙需要资源A 2t,资源B 6m³ ? ,资源C7个单位。若1t产品甲和乙的经济价值分别为9万元和4万元,3种资源的限制量分别为85t.210m³和250个单位。试分析应生产这两种产品各多少吨才能使创造的总经济价值最高?

解:这里可以令生产产品甲的数量为x1,生产产品乙的数量为x2。根据题意,编码
代码如下:

clear all
clc
f = [-9;-4];
A = [5 2
     4 7
     1 6];
b = [85; 210; 250];
lb = zeros(2,1);

[x, fval, exitflag, output, lambda] = linprog(f,A,b,[],[],lb)

在这里插入图片描述在这里插入图片描述
由上可知,生产甲种产品6.4815t.乙种产品26.2963t可使创造的总经济价值最高,最高经济价值为163.5185万元。exitflag=1 表示过程正常收敛于解x处。

类似这种问题都可以采用线性规划模型求解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值