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取值的取值范围。

函数使用形式:


4 M. A- \: \8 l0 o1 e- g- |' l# A

一般主要用的是:

& 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)

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

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

  ~6 R, t2 H: |+ n8 K

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

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


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