加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab线性规划函数linprog的使用(转)

(2013-10-14 22:33:46)
标签:

matlab

线性规划

linprog

it

分类: IT技术

Matlab真的很强大,优化都方便了很多

先说说linprog的使用吧:

min f'x
约束条件: Ax<=b
等式约束条件: Aeqx=beq
lb<=x<=ub

linprog函数的调用格式如下:
linprog中f都是求最小值,这个要记住。
A和b是不等式约束条件的参数。
Aeq和beq是等式约束条件的参数。
lb和ub为x取值的取值范围。

函数使用形式:

  1. x=linprog(f,A,b)  
  2. x=linprog(f,A,b,Aeq,beq)  
  3. x=linprog(f,A,b,Aeq,beq,lb,ub)  
  4. x=linprog(f,A,b,Aeq,beq,lb,ub,x0)  
  5. x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)  
  6. [x,fval]=linprog(…)  
  7. [x, fval, exitflag]=linprog(…)  
  8. [x, fval, exitflag, output]=linprog(…)  
  9. [x, fval, exitflag, output, lambda]=linprog(…)  
x=linprog(f,A,b)
x=linprog(f,A,b,Aeq,beq)
x=linprog(f,A,b,Aeq,beq,lb,ub)
x=linprog(f,A,b,Aeq,beq,lb,ub,x0)
x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
[x,fval]=linprog(…)
[x, fval, exitflag]=linprog(…)
[x, fval, exitflag, output]=linprog(…)
[x, fval, exitflag, output, lambda]=linprog(…)

一般主要用的是:

  1. x=linprog(f,A,b,Aep,beq,lb,ub);  
x=linprog(f,A,b,Aep,beq,lb,ub);
设定中主要要注意的就是参数的维数是否于使用的相对应。

举个例子吧:

生活中最常用的:假如有三种商品,a,b,c。三种商品总的数量不能超过30;c种商品不能超过15,b种商品不能超过10。

商品的单价是10,20,30。现在求三种商品各是多少,销售额最高。

转化为数学问题:

条件:

a+b+c<30

c<15

b<10

函数:f = 10*a+20*b+30*c

因为linprog求的是最小值,一次我们改为:f = -(10*a+20*b+30*c)

这样我们有了函数,然后:

根据约束条件不等式,有:

  1. A [1 1;0 1;0 0]  
  2. b [30 15 10]  
A = [1 1 1;0 0 1;0 1 0]
b = [30 15 10]

但这样算出来的结果大家会发现是小数,也可能是负数。

因此我们加入a b c取值的上下限

  1. lb [0 0]  
  2. ub [30 30 30]  
lp = [0 0 0]
up = [30 30 30]
如果在计算中需要得到小数的结果,只要写成0.00或者30.00就可以了

最后带入函数计算就可以了

写完后发现例子挺水的(自己编的),同志们见谅吧,水平有限。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有