线性规划
Matlab 中 求解线性规划的命令为
[x,fval] = linprog(c,A,b,Aeq,beq,lb,ub)
求解形式:
m i n c T x min c^T x mincTx
s . t . { A x ≤ b A e q ⋅ x = d e q l b ≤ x ≤ u b s.t. \left\{\begin{matrix}Ax \le\ b \\Aeq·x = deq \\ lb\le\ x \le\ ub \end{matrix}\right. s.t.⎩⎨⎧Ax≤ bAeq⋅x=deqlb≤ x≤ ub
例题:
m
a
x
z
=
2
x
1
+
3
x
2
−
5
x
3
max z = 2x1+3x2-5x3
maxz=2x1+3x2−5x3
s . t . { x 1 + x 2 + x 3 = 7 2 x 1 − 5 x 2 + x 3 ≥ 10 x 1 + 3 x 2 + x 3 ≤ 12 x 1 , x 2 , x 3 ≥ 0 s.t. \left\{\begin{matrix}x1+x2+x3 = 7 \\2x1-5x2+x3 \ge\ 10 \\ x1+3x2+x3 \le\ 12 \\ x1,x2,x3 \ge\ 0 \end{matrix}\right. s.t.⎩⎪⎪⎨⎪⎪⎧x1+x2+x3=72x1−5x2+x3≥ 10x1+3x2+x3≤ 12x1,x2,x3≥ 0
c = [-2;-3;5];
Aeq = [1 1 1];
beq = 7;
A = [-2 5 -1;1 3 1];
b = [-10;12];
[x,y] = linprog(c,A,b,Aeq,beq,zeros(3,1));
y = -y;
x
y
例题:
问题的提出
市场上有n种资产 si (i= 1,2,····· ,n)可以选择,现用数额为M的相当大的资金作一个时期的投资。这n种资产在这一时期内购买si的平均收益率为ri,风险损失率为qi;, 投资越分散,总的风险越少,总体风险可用投资的si中最大的一个风险来度量。
购买si时要付交易费,费率为pi,当购买额不超过给定值ui时,交易费按购买ui计算。另外,假定同期银行存款利率是r0,既无交易费又无风险(r=5%)。
已知n=4时相关数据如表
si | ri / % | qi / % | pi / % | ui / % |
---|---|---|---|---|
s1 | 28 | 2.5 | 1 | 103 |
s2 | 21 | 1.5 | 2 | 198 |
s3 | 23 | 5.5 | 4.5 | 52 |
s4 | 25 | 2.6 | 6.5 | 40 |
试给该公司设计一种投资组合方案,即用给定资金M,有选择地购买若干种资产或存银行生息,使净收益尽可能大,使总体风险尽可能小。
符号规定和基本假设
1.符号规定:
- si表示第i种投资项目,如股票,债券等,i= 0,1,······ ,n,其中s0指存入银行;
- ri,pi,qi分别表示si的平均收益率,交易费率,风险损失率,i=0,1,····· ,n,其中p0 = 0,q0 = 0;
- ui表示si的交易定额,i= 1,······ ,n ;
- xi,表示投资项目si,的资金,i= 0,1,······ ,n ;
- a表示投资风险度;
- Q表示总体收益;
2.基本假设:
- (1)投资数额M相当大,为了便于计算,假设M=1;
- (2)投资越分散,总的风险越小;
- (3)总体风险用投资项目si中最大的一个风险来度量;
- (4) n+1种资产si之间是相互独立的;
- (5)在投资的这一时期内,ri,pi,qi,为定值,不受意外因素影响;
- (6)净收益和总体风险只受ri,pi,qi影响,不受其它因素干扰。
模型的分析与建立
1. 总体风险用所投资的si 中最大的一个风险来衡量,即
m
a
x
{
q
i
x
i
∣
i
=
1
,
2
,
⋅
⋅
⋅
⋅
,
n
}
.
max\{q_i x_i | i = 1,2,····,n\}.
max{qixi∣i=1,2,⋅⋅⋅⋅,n}.
2. 购买si(i = 1,2,····,n) 所付交易费是一个分段函数,即
交
易
费
=
{
p
i
x
i
,
x
i
>
u
i
p
i
u
i
,
x
i
≤
u
i
交易费 = \left\{\begin{matrix}p_i x_i,x_i > u_i \\ p_i u_i,x_i \le\ u_i \end{matrix}\right.
交易费={pixi,xi>uipiui,xi≤ ui
而题目所给的定制ui(单位:元) 相对总投资M 很少,pi *ui 更小,这样购买si的净收益可以简化为(ri-pi)xi。
3. 要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型。
目标函数为:
{
m
a
x
∑
(
i
=
0
)
n
(
r
i
−
p
i
)
x
i
m
i
n
{
m
a
x
1
≤
i
≤
n
{
q
i
x
i
}
}
\left\{\begin{matrix}max \sum^n_{(i=0)} (r_i - p_i)x_i \\ min\{max_{1\le\ i \le\ n} \{q_ix_i\} \} \end{matrix}\right.
{max∑(i=0)n(ri−pi)ximin{max1≤ i≤ n{qixi}}
约束条件为:
{
∑
i
=
0
n
x
i
=
M
x
i
≥
0
,
i
=
0
,
1
,
⋅
⋅
⋅
⋅
,
n
。
\left\{ \begin{matrix} \sum ^n _{i=0} x_i = M \\ x_i \ge\ 0,i = 0,1,····,n。 \end{matrix} \right.
{∑i=0nxi=Mxi≥ 0,i=0,1,⋅⋅⋅⋅,n。
4.模型简化
1.在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a,使最大的一个风险为a,即 (qi xi) / M <= a(i= 1,2,····,n), 可找到相应的投资方案。这样把多目标规划变成一个目标的线性规划。
模型一 固定风险水平,优化收益
m
a
x
∑
i
=
0
n
(
r
i
−
p
i
)
x
i
max \sum ^n _{i = 0} (r_i-p_i)x_i
maxi=0∑n(ri−pi)xi
s . t . { q i x i / M ≤ a , i = 1 , 2 , ⋅ ⋅ ⋅ ⋅ , n , ∑ i = 0 n ( 1 + p i ) x i = M , x i ≥ 0 , i = 0 , 1 , ⋅ ⋅ ⋅ ⋅ , n 。 s.t. \left\{ \begin{matrix} q_i x_i / M \le\ a,i = 1,2,····,n, \\ \sum^n_{i=0}(1+p_i)x_i = M,x_i \ge\ 0 ,i = 0,1,····,n。 \end{matrix} \right. s.t.{qixi/M≤ a,i=1,2,⋅⋅⋅⋅,n,∑i=0n(1+pi)xi=M,xi≥ 0,i=0,1,⋅⋅⋅⋅,n。
2.若投资者希望总盈利至少达到水平k以上,在风险最小的情况下,寻求相应的投资组合。
模型二 固定盈利水平,极小化风险
m
i
n
{
m
a
x
1
≤
i
≤
n
{
q
i
x
i
}
}
min \{ max_{1 \le\ i \le\ n } \{ q_i x_i\} \}
min{max1≤ i≤ n{qixi}}
s . t . { ∑ i = 0 n ( r i − p i ) x i ≥ k , ∑ i = 0 n ( 1 + p i ) x i = M , x i ≥ 0 , i = 0 , 1 , ⋅ ⋅ ⋅ ⋅ , n 。 s.t. \left\{ \begin{matrix} \sum^n_{i=0} (r_i-p_i)x_i \ge\ k, \\ \sum^n_{i=0} (1+p_i)x_i = M,\\ x_i \ge\ 0 ,i = 0,1,····,n。 \end{matrix} \right. s.t.⎩⎨⎧∑i=0n(ri−pi)xi≥ k,∑i=0n(1+pi)xi=M,xi≥ 0,i=0,1,⋅⋅⋅⋅,n。
3.投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。因此对风险、收益分别赋予权重s(0<s≤1)和(1-s),s称为投资偏好系数。
模型三
m
i
n
s
{
m
a
x
1
≤
i
≤
n
{
q
i
x
i
}
}
−
(
1
−
s
)
∑
i
=
0
n
(
r
i
−
p
i
)
x
i
,
min s\{max_{1\le\ i \le\ n} \{q_ix_i\}\}-(1-s)\sum^n_{i=0}(r_i-p_i)x_i,
mins{max1≤ i≤ n{qixi}}−(1−s)i=0∑n(ri−pi)xi,
s . t . { ∑ i = 0 n ( 1 + p i ) x i = M , x i ≥ 0 , i = 0 , 1 , ⋅ ⋅ ⋅ ⋅ , n 。 s.t. \left\{ \begin{matrix} \sum^n_{i=0}(1+p_i)x_i = M,\\ x_i \ge\ 0 ,i = 0,1,····,n。 \end{matrix} \right. s.t.{∑i=0n(1+pi)xi=M,xi≥ 0,i=0,1,⋅⋅⋅⋅,n。