EDA365电子论坛网
标题: Matlab线性规划函数linprog… [打印本页]
作者: uperrua 时间: 2020-12-25 14:54
标题: Matlab线性规划函数linprog…
Matlab真的很强大,优化都方便了很多
先说说linprog的使用吧:
min f'x
- w. k& F# s3 \* X m9 O9 B! P约束条件: Ax<=b. k/ G- D& d0 h$ `* K
等式约束条件: Aeqx=beq
+ j, ]' L) b% p; S Z4 ?, llb<=x<=ub
; X! r9 p9 M* X' L: T' l
linprog函数的调用格式如下:
! B6 `3 v; U: c3 t( R! h6 \% w5 H. I9 D! _linprog中f都是求最小值,这个要记住。
5 k& F2 r; I6 O+ J3 yA和b是不等式约束条件的参数。
0 O8 Y6 k3 T* c" H3 V! q% Z( d# I$ EAeq和beq是等式约束条件的参数。
- ?5 l1 B# E% q# a, w5 glb和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(…)
# J" x* e8 x' Q% q: e$ O
4 M. A- \: \8 l0 o1 e- g- |' l# A一般主要用的是:
- x=linprog(f,A,b,Aep,beq,lb,ub);
/ q( p3 N& L3 e! z; k# r
& D8 o& k! C y/ N8 q' z, M! k4 h
设定中主要要注意的就是参数的维数是否于使用的相对应。举个例子吧:
生活中最常用的:假如有三种商品,a,b,c。三种商品总的数量不能超过30;c种商品不能超过15,b种商品不能超过10。
商品的单价是10,20,30。现在求三种商品各是多少,销售额最高。
转化为数学问题:
条件:
a+b+c<30
c<15
b<10
* z/ E. Y T" _" P
函数: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] 5 Q+ _5 K/ {8 ~, F
~6 R, t2 H: |+ n8 K
但这样算出来的结果大家会发现是小数,也可能是负数。
因此我们加入a b c取值的上下限
- lb = [0 0 0]
- ub = [30 30 30] : X- E/ i* o8 O j+ h
4 _1 q2 f0 M" a( p3 u% N如果在计算中需要得到小数的结果,只要写成0.00或者30.00就可以了最后带入函数计算就可以了
) c8 {2 A5 d/ U) K) z
作者: NingW 时间: 2020-12-25 16:12
Matlab线性规划函数linprog
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) |
Powered by Discuz! X3.2 |