找回密码
 注册
关于网站域名变更的通知
查看: 425|回复: 1
打印 上一主题 下一主题

Matlab线性规划函数linprog…

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-25 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

先说说linprog的使用吧:

min f'x! n5 }% W/ v; x* X9 y3 G
约束条件: Ax<=b
# E, l3 M6 P: v' o( G' J7 e等式约束条件: Aeqx=beq! b9 h8 x: w9 [8 \; K
lb<=x<=ub4 N, Q+ ~% V* h% w$ i8 i  w9 `

linprog函数的调用格式如下:
& O$ b# q4 g% @9 ?" T" o; slinprog中f都是求最小值,这个要记住。
0 p6 z8 D5 j$ f6 O5 b' ^+ m# DA和b是不等式约束条件的参数。$ ?' [+ A& x4 T. U, O
Aeq和beq是等式约束条件的参数。
* a8 [. b) h6 Y) @lb和ub为x取值的取值范围。

函数使用形式:

  • 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(…)  # q; c1 ]. x+ n; s0 q
4 S/ \5 q5 l$ {1 w5 K6 n

一般主要用的是:

  • x=linprog(f,A,b,Aep,beq,lb,ub);  ! d3 A8 W' [- D% e% T- V5 Y, @( r: T
  _( Q; b7 f4 M
设定中主要要注意的就是参数的维数是否于使用的相对应。

举个例子吧:

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

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

转化为数学问题:

条件:

a+b+c<30

c<15

b<10
7 R: P3 {# |3 O" u3 s# \1 V

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

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

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

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

  • A = [1 1 1;0 0 1;0 1 0]  
  • b = [30 15 10]  % W/ P6 k. D( B1 O
, B9 ^, t$ M, i; O$ {2 l+ p

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

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

  • lb = [0 0 0]  
  • ub = [30 30 30]  6 v" G$ e" k" `/ G) Z9 i% g

6 Q5 [6 z+ e5 J9 |* M: Q! O/ N+ s如果在计算中需要得到小数的结果,只要写成0.00或者30.00就可以了

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


0 e  t2 z' O* I

该用户从未签到

2#
发表于 2020-12-25 16:12 | 只看该作者
Matlab线性规划函数linprog
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-22 20:20 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表