线性规划问题求解
1.线性规划问题的解的概念:
标准型:
m
a
x
z
=
∑
j
=
1
n
c
j
x
j
,
s
.
t
.
{
∑
j
=
1
n
a
i
j
x
j
=
b
i
,
i
=
1
,
2
,
⋯
,
m
,
x
j
≥
0
,
j
=
1
,
2
,
⋯
,
n
。
式
中
:
b
i
≥
0
,
i
=
1
,
2
,
⋯
,
m
。
max\;z=\sum_{j=1}^n{c_j}{x_j},\\ s.t. \begin{cases} \sum_{j=1}^n{a_{ij}}{x_j} =b_i,i=1,2,\cdots,m,\\ x_j\geq0,j=1,2,\cdots,n。\\ \end{cases}\\ 式中:b_i\geq0,i=1,2,\cdots,m。
maxz=j=1∑ncjxj,s.t.{∑j=1naijxj=bi,i=1,2,⋯,m,xj≥0,j=1,2,⋯,n。式中:bi≥0,i=1,2,⋯,m。
可行解:满足约束条件式的解
x
=
[
x
1
,
⋯
,
x
n
]
T
x=[x_1,\cdots,x_n]^T
x=[x1,⋯,xn]T
称为线性规划问题的可行解,而让z达到最大值的可行解称为最优解。
可行域:所有可行解构成的集合称为问题的可行域,记为R。
2.线性规划的Matlab标准形式及软件求解:
Matlab中规定线性规划的标准形式为:
m
i
n
f
T
x
(
1
)
,
s
.
t
.
{
A
⋅
x
≤
b
,
(
2
)
A
e
q
⋅
x
=
b
e
q
,
(
3
)
l
b
≤
x
≤
u
b
。
(
4
)
式
中
:
f
,
x
,
b
,
b
e
q
,
l
b
,
u
b
为
列
向
量
,
其
中
f
称
为
价
值
向
量
,
b
称
为
资
源
向
量
;
A
,
A
e
q
为
矩
阵
。
minf^Tx\quad(1),\\ s.t.\begin{cases} A\cdot x\leq b,\quad(2)\\ Aeq\cdot x=beq,\quad(3)\\ lb\leq x\leq ub。\quad(4)\\ \end{cases}\\ 式中:f,x,b,beq,lb,ub为列向量,其中f称为价值向量,b称为资源向量;\\A,Aeq为矩阵。
minfTx(1),s.t.⎩⎪⎨⎪⎧A⋅x≤b,(2)Aeq⋅x=beq,(3)lb≤x≤ub。(4)式中:f,x,b,beq,lb,ub为列向量,其中f称为价值向量,b称为资源向量;A,Aeq为矩阵。
PS: (1)式表示求解式。规定求最小值的形式,若要求最大值,则需要把式子求负,即最小值求负表示最大值。
(2)式表示不等式约束条件。规定求小于的形式,若是大于则需要通过两边求负进行转换。若有多个不等式条件,则用矩阵的形式来 分别表示A,b。
(3)式表示等式约束条件。若有多个等式条件,也用矩阵的形式来分别表示Aeq,beq。
(4)式表示取值范围。
Matlab中求解线性规划的命令为:
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub)
式中:x返回决策向量的取值;
fval返回目标函数的最优值;
f为价值向量;
A和b对应线性不等式约束;
Aeq和beq对应线性等式约束;
lb和ub分别对应决策向量的下界向量和上界向量;
PS: (1)若约束条件中间不齐全,则可以用空向量[]来替代缺失部分,如:
[x,fval] = linprog(f,A,b,[],beq,[],ub)
(2)若约束条件只有前面条件,则可以直接省略参数,如:
[x,fval] = linprog(f,A,b)
3.例题求解应用:
例1.求解下列线性规划问题:
m
a
x
z
=
2
x
1
+
3
x
2
−
5
x
3
,
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
。
max \quad z=2x_1+3x_2-5x_3,\\ s.t.\begin{cases} x_1+x_2+x_3=7,\\ 2x_1-5x_2+x_3\geq 10,\\ x_1+3x_2+x_3\leq12,\\ x_1,x_2,x_3>=0。 \end{cases}
maxz=2x1+3x2−5x3,s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧x1+x2+x3=7,2x1−5x2+x3≥10,x1+3x2+x3≤12,x1,x2,x3>=0。
解:先把上式转化称为Matlab的标准形式:
m
i
n
w
=
−
2
x
1
−
3
x
2
+
5
x
3
,
s
.
t
.
{
−
2
x
1
+
5
x
2
−
x
3
≤
−
10
,
x
1
+
3
x
2
+
x
3
≤
12
,
x
1
+
x
2
+
x
3
=
7
,
x
1
,
x
2
,
x
3
≥
0
。
min\quad w=-2x_1-3x_2+5x_3,\\ s.t.\begin{cases} -2x_1+5x_2-x_3 \leq -10,\\ x_1+3x_2+x_3 \leq 12,\\ x_1+x_2+x_3=7,\\ x_1,x_2,x_3 \geq 0。 \end{cases}
minw=−2x1−3x2+5x3,s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧−2x1+5x2−x3≤−10,x1+3x2+x3≤12,x1+x2+x3=7,x1,x2,x3≥0。
现在再把标准形式按照函数提取出我们想要参数:
依照**[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub)**
可得:
f
=
[
−
2
−
3
5
]
或
者
[
−
2
−
3
5
]
T
A
=
[
−
2
5
−
1
1
3
1
]
b
=
[
−
10
12
]
或
者
[
−
10
12
]
T
A
e
q
=
[
1
1
1
]
或
者
[
1
1
1
]
T
b
e
q
=
7
l
b
=
[
0
0
0
]
或
者
[
0
0
0
]
T
u
b
=
[
∞
∞
∞
]
或
者
[
∞
∞
∞
]
T
f=\begin{bmatrix} -2\\-3\\5 \end{bmatrix} 或者 \begin{bmatrix} -2 & -3 &5 \end{bmatrix}^T\\ A=\begin{bmatrix} -2 & 5 & -1\\ 1 & 3 & 1 \end{bmatrix}\\ b=\begin{bmatrix} -10\\12 \end{bmatrix} 或者 \begin{bmatrix} -10 & 12 \end{bmatrix}^T\\ Aeq=\begin{bmatrix} 1\\1\\1 \end{bmatrix} 或者 \begin{bmatrix} 1&1&1 \end{bmatrix}^T\\ beq=7\\ lb=\begin{bmatrix} 0\\0\\0 \end{bmatrix} 或者 \begin{bmatrix} 0&0&0 \end{bmatrix}^T\\ ub=\begin{bmatrix} \infty\\\infty\\\infty \end{bmatrix} 或者 \begin{bmatrix} \infty&\infty&\infty \end{bmatrix}^T
f=⎣⎡−2−35⎦⎤或者[−2−35]TA=[−2153−11]b=[−1012]或者[−1012]TAeq=⎣⎡111⎦⎤或者[111]Tbeq=7lb=⎣⎡000⎦⎤或者[000]Tub=⎣⎡∞∞∞⎦⎤或者[∞∞∞]T
用Matlab中的程序语言来表示:
f = [-2;-3;5];
a = [-2,5,-1;1,3,1];
b = [-10;12];
aeq = [1,1,1];
beq = 7;
代入求解时:lb可用zeros(3,1)来生成三行一列的零向量
ub则不填参来表示无穷
最后解得的fval取相反数即为所要求的最大值z
完整代码如下:
f = [-2;-3;5];
a = [-2,5,-1;1,3,1];
b = [-10;12];
aeq = [1,1,1];
beq = 7;
[x,y] = linprog(f,a,b,aeq,beq,zeros(3,1));
x,y = -y
求解得结果如下图:
例2:某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000元和3000元。生产甲机床需用A、B机器加工,加工时间分别 为每台2h和1h;生产乙机床需用A、B、C三种机器加工,加工时间为每台各1h。若每天可用于加工的机器时数分别为A机器 10h、B机器8h和C机器7h,问该厂应生产甲、乙机床各几台,才能使总利润最大?
解:对上述描述建立数学模型:设该厂生产
x
1
x_1
x1台甲机床和
x
2
x_2
x2台乙机床时总利润z最大,则
x
1
x_1
x1,
x
2
x_2
x2应满足:
m
a
x
z
=
4
x
1
+
3
x
2
,
s
.
t
.
{
2
x
1
+
x
2
≤
10
,
x
1
+
x
2
≤
8
,
x
2
≤
7
,
x
1
,
x
2
≥
0
。
变
量
x
1
,
x
2
为
决
策
变
量
max \quad z=4x_1+3x_2,\\ s.t.\begin{cases} 2x_1+x_2 \leq 10,\\ x_1+x_2 \leq 8,\\ x_2 \leq 7,\\ x_1,x_2 \geq 0。 \end{cases}\\ 变量x_1,x_2为决策变量
maxz=4x1+3x2,s.t.⎩⎪⎪⎪⎨⎪⎪⎪⎧2x1+x2≤10,x1+x2≤8,x2≤7,x1,x2≥0。变量x1,x2为决策变量
将上式转化为Matlab标准型并抽取参数得:
f
=
[
−
4
−
3
]
A
=
[
2
1
1
1
]
b
=
[
10
8
]
l
b
=
[
0
0
]
u
b
=
[
∞
7
]
f=\begin{bmatrix} -4\\-3 \end{bmatrix}\\ A=\begin{bmatrix} 2&1\\ 1&1 \end{bmatrix}\\ b=\begin{bmatrix} 10\\8 \end{bmatrix}\\ lb=\begin{bmatrix} 0\\0 \end{bmatrix}\\ ub=\begin{bmatrix} \infty\\7 \end{bmatrix}
f=[−4−3]A=[2111]b=[108]lb=[00]ub=[∞7]
完整代码如下:
f = [-4;-3];
A = [2,1;1,1];
b = [10;8];
ub = [inf;7];
[x,y] = linprog(f,A,b,[],[],zeros(2,1),ub);
x,y=-y
求解得结果如下图:
4.可以转化为线性规划的问题:
对于
m
i
n
∣
x
1
∣
+
∣
x
2
∣
+
⋯
+
∣
x
n
∣
s
.
t
.
A
x
≤
b
。
式
中
:
x
=
[
x
1
,
⋯
,
x
n
]
T
;
A
和
b
为
相
应
维
数
的
矩
阵
和
向
量
min\quad |x_1|+|x_2|+\cdots +|x_n|\\ s.t.\quad Ax\leq b。\\ 式中:x=[x_1,\cdots,x_n]^T;\\ A和b为相应维数的矩阵和向量
min∣x1∣+∣x2∣+⋯+∣xn∣s.t.Ax≤b。式中:x=[x1,⋯,xn]T;A和b为相应维数的矩阵和向量
可以依据对任意的
x
i
x_i
xi,存在
u
i
,
v
i
≥
0
u_i,v_i\geq 0
ui,vi≥0满足
x
i
=
u
i
−
v
i
,
∣
x
i
∣
=
u
i
+
v
i
x_i=u_i-v_i,|x_i|=u_i+v_i
xi=ui−vi,∣xi∣=ui+vi
只要取
u
i
=
x
i
+
∣
x
i
∣
2
,
v
i
=
∣
x
i
∣
−
x
i
2
u_i=\frac{x_i+|x_i|}{2},v_i =\frac{|x_i|-x_i}{2}
ui=2xi+∣xi∣,vi=2∣xi∣−xi即可满足上面的条件
这样记
u
=
[
u
1
,
⋯
,
u
n
]
T
,
v
=
[
v
1
,
⋯
,
v
n
]
T
u=[u_1,\cdots,u_n]^T,v=[v_1,\cdots,v_n]^T
u=[u1,⋯,un]T,v=[v1,⋯,vn]T,即可化问题为
m
i
n
∑
i
=
1
n
(
u
i
+
v
i
)
,
s
.
t
.
{
A
(
u
−
v
)
≤
b
,
u
,
v
≥
0
。
min\quad \sum_{i=1}^{n}(u_i+v_i),\\ s.t.\begin{cases} A(u-v)\leq b,\\ u,v\geq 0。 \end{cases}
mini=1∑n(ui+vi),s.t.{A(u−v)≤b,u,v≥0。
进一步改写模型为:
m
i
n
∑
i
=
1
n
(
u
i
+
v
i
)
,
s
.
t
.
{
[
A
,
−
A
]
[
u
v
]
≤
b
,
u
,
v
≥
0
。
min\quad \sum_{i=1}^{n}(u_i+v_i),\\ s.t.\begin{cases} [A,-A]\begin{bmatrix}u\\v\end{bmatrix}\leq b,\\ u,v\geq 0。 \end{cases}
mini=1∑n(ui+vi),s.t.⎩⎨⎧[A,−A][uv]≤b,u,v≥0。
例3:求解下列数学规划问题:
m
i
n
z
=
∣
x
1
∣
+
2
∣
x
2
∣
+
3
∣
x
3
∣
+
4
∣
x
4
∣
,
s
.
t
.
{
x
1
−
x
2
−
x
3
+
x
4
≤
−
2
,
x
1
−
x
2
+
x
3
−
3
x
4
≤
−
1
,
x
1
−
x
2
−
2
x
3
+
3
x
4
≤
−
1
2
min\quad z=|x_1|+2|x_2|+3|x_3|+4|x_4|,\\ s.t.\begin{cases} x_1-x_2-x_3+x_4\leq -2,\\ x_1-x_2+x_3-3x_4\leq -1,\\ x_1-x_2-2x_3+3x_4\leq-\frac{1}{2} \end{cases}
minz=∣x1∣+2∣x2∣+3∣x3∣+4∣x4∣,s.t.⎩⎪⎨⎪⎧x1−x2−x3+x4≤−2,x1−x2+x3−3x4≤−1,x1−x2−2x3+3x4≤−21
解:做变量变换
u
i
=
x
i
+
∣
u
i
∣
2
,
v
i
=
∣
x
i
∣
−
x
i
2
u_i=\frac{x_i+|u_i|}{2},v_i=\frac{|x_i|-x_i}{2}
ui=2xi+∣ui∣,vi=2∣xi∣−xi,i=1,2,3,4,并把新变量重新排序成一维向量
y
=
[
u
v
]
=
[
u
1
,
⋯
,
u
4
,
v
1
,
⋯
,
v
4
]
T
y=\begin{bmatrix}u\\v\end{bmatrix}=[u_1,\cdots,u_4,v_1,\cdots,v4]^T
y=[uv]=[u1,⋯,u4,v1,⋯,v4]T,则可 把模型变换为线性规划模型
m
i
n
c
T
y
,
s
.
t
.
{
[
A
,
−
A
]
[
u
v
]
≤
b
,
y
≥
0
。
式
中
:
c
=
[
1
,
2
,
3
,
4
,
1
,
2
,
3
,
4
]
T
,
b
=
[
−
2
,
−
1
,
−
1
2
]
T
,
A
=
[
1
−
1
−
1
1
1
−
1
1
−
3
1
−
1
−
2
3
]
。
min\quad c^Ty,\\ s.t.\begin{cases} [A,-A]\begin{bmatrix}u\\v\end{bmatrix}\leq b,\\ y\geq0。 \end{cases}\\ 式中:c=[1,2,3,4,1,2,3,4]^T,\\ b=[-2,-1,-\frac{1}{2}]^T,\\ A=\begin{bmatrix} 1&-1&-1&1\\ 1&-1&1&-3\\ 1&-1&-2&3 \end{bmatrix}。
mincTy,s.t.⎩⎨⎧[A,−A][uv]≤b,y≥0。式中:c=[1,2,3,4,1,2,3,4]T,b=[−2,−1,−21]T,A=⎣⎡111−1−1−1−11−21−33⎦⎤。
故Matlab代码如下:
c = 1:4;
c = [c,c]';%构造价值列向量
a = [1 -1 -1 1;1 -1 1 -3;1 -1 -2 3];
a = [a,-a];%构造变换后新的系数矩阵
b = [-2 -2 -1/2]';
[y,z] = linprog(c,a,b,[],[],zeros(8,1))%这里没有等式约束,对应的矩阵为空矩阵
x = y(1:4) - y(5:end)%变换到原问题的解,x=u-v
结果如图:
5.经典模型:投资的收益与风险
例4:市场上有n种资产 s i ( i = 1 , 2 , ⋯ , n ) s_i(i=1,2,\cdots,n) si(i=1,2,⋯,n)可以选择,现用数额为M的相当大的资金作一个时期的投资。这n种资产在这一时期内购买 s i s_i si的平均收益率为 r i r_i ri,风险损失率为 q i q_i qi,投资越分散,总的风险越少,总体风险可用投资的 s i s_i si中最大的一个风险来度量。
购买 s i s_i si时要付交易费,费率为 p i p_i pi,当购买额不超过给定值 u i u_i ui时,交易费按购买 u i u_i ui计算。另外,假定同期银行存款利率是 r 0 r_0 r0,既无交易也无风险 ( r 0 = 5 % ) (r_0=5\%) (r0=5%)。
已知n=4时相关数据如表所示:
s i s_i si | r i / % r_i/\% ri/% | q i / % q_i/\% qi/% | p i / % p_i/\% pi/% | u i / 元 u_i/元 ui/元 |
---|---|---|---|---|
s 1 s_1 s1 | 28 | 2.5 | 1 | 103 |
s 2 s_2 s2 | 21 | 1.5 | 2 | 198 |
s 3 s_3 s3 | 23 | 5.5 | 4.5 | 52 |
s 4 s_4 s4 | 25 | 2.6 | 6.5 | 40 |
试给该公司设计一种投资组合方案,即用给定资金M,有选择地购买若干种资产或存银行生息,使净收益尽可能的大,总体风险尽可能的小。
解:首先进行符号规定和基本假设:
1.符号规定
(1) s i 表 示 第 i 种 投 资 项 目 , 如 股 票 、 债 券 等 , i = 0 , 1 , ⋯ , n , 其 中 s 0 指 存 入 银 行 。 s_i表示第i种投资项目,如股票、债券等,i=0,1,\cdots,n,其中s_0指存入银行。 si表示第i种投资项目,如股票、债券等,i=0,1,⋯,n,其中s0指存入银行。
(2) r i , p i , q i 分 别 表 示 s i 的 平 均 收 益 率 、 交 易 费 率 、 风 险 损 失 率 , i = 0 , 1 , ⋯ , n , 其 中 p 0 = 0 , q 0 = 0. r_i,p_i,q_i分别表示s_i的平均收益率、交易费率、风险损失率,i=0,1,\cdots,n,其中p_0=0,q_0=0. ri,pi,qi分别表示si的平均收益率、交易费率、风险损失率,i=0,1,⋯,n,其中p0=0,q0=0.
(3) u i 表 示 s i 的 交 易 定 额 , i = 1 , 2 , ⋯ , n 。 u_i表示s_i的交易定额,i=1,2,\cdots,n。 ui表示si的交易定额,i=1,2,⋯,n。
(4) x i 表 示 投 资 项 目 s i 的 资 金 , i = 0 , 1 , ⋯ , n 。 x_i表示投资项目s_i的资金,i=0,1,\cdots,n。 xi表示投资项目si的资金,i=0,1,⋯,n。
(5) a 表 示 投 资 风 险 度 a表示投资风险度 a表示投资风险度
(6) Q 表 示 总 体 收 益 Q表示总体收益 Q表示总体收益
2.基本假设
(1) 投 资 数 额 M 相 当 大 , 为 了 便 于 计 算 , 假 设 M = 1 投资数额M相当大,为了便于计算,假设M=1 投资数额M相当大,为了便于计算,假设M=1
(2) 投 资 越 分 散 , 总 的 风 险 越 小 投资越分散,总的风险越小 投资越分散,总的风险越小
(3) 总 体 风 险 用 投 资 项 目 s i 中 最 大 的 一 个 风 险 来 度 量 总体风险用投资项目s_i中最大的一个风险来度量 总体风险用投资项目si中最大的一个风险来度量
(4) n + 1 种 资 产 s i 之 间 是 相 互 独 立 的 n+1种资产s_i之间是相互独立的 n+1种资产si之间是相互独立的
(5) 在 投 资 的 这 一 时 期 内 , r i , p i , q i 为 定 值 , 不 受 意 外 因 素 影 响 在投资的这一时期内,r_i,p_i,q_i为定值,不受意外因素影响 在投资的这一时期内,ri,pi,qi为定值,不受意外因素影响
(6) 净 收 益 和 总 体 风 险 只 受 r i , p i , q i 影 响 , 不 受 其 他 因 素 干 扰 净收益和总体风险只受r_i,p_i,q_i影响,不受其他因素干扰 净收益和总体风险只受ri,pi,qi影响,不受其他因素干扰
再构建模型:
( 1 ) 总 体 风 险 用 所 投 资 的 s i 中 最 大 的 一 个 风 险 来 衡 量 , 即 m a x { q i x i ∣ i = 1 , 2 , ⋯ , n } (1)总体风险用所投资的s_i中最大的一个风险来衡量,即\\max\{q_ix_i|i=1,2,\cdots,n\} (1)总体风险用所投资的si中最大的一个风险来衡量,即max{qixi∣i=1,2,⋯,n}
(2) 购 买 s i ( i = 1 , 2 , ⋯ , n ) 所 付 交 易 费 是 一 个 分 段 函 数 , 即 交 易 费 = { p i x i , x i > u i , p i u i , x i ≤ u i 。 而 题 目 所 给 的 定 值 u i ( 单 位 : 元 ) 相 当 总 投 资 M 很 少 , p i U i 更 小 , 这 样 购 买 s i 的 净 收 益 可 以 化 简 为 ( r i − p i ) x i 。 购买s_i(i=1,2,\cdots,n)所付交易费是一个分段函数,即\\交易费=\begin{cases}p_ix_i,x_i> u_i,\\p_iu_i,x_i\leq u_i。\end{cases}\\而题目所给的定值u_i(单位:元)相当总投资M很少,p_iU_i更小,这样购买s_i的净收益可以化简为(r_i-p_i)x_i。 购买si(i=1,2,⋯,n)所付交易费是一个分段函数,即交易费={pixi,xi>ui,piui,xi≤ui。而题目所给的定值ui(单位:元)相当总投资M很少,piUi更小,这样购买si的净收益可以化简为(ri−pi)xi。
(3)要让净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型:
{
m
a
x
∑
i
=
0
n
(
r
i
−
p
i
)
x
i
,
m
i
n
{
m
a
x
{
q
i
x
i
}
}
\begin{cases} max\sum_{i=0}^{n}(r_i-p_i)x_i,\\ min\{max\{q_ix_i\}\} \end{cases}
{max∑i=0n(ri−pi)xi,min{max{qixi}}
s . t . { ∑ i = 0 n ( 1 + p i ) x i = M , x i ≥ 0 , i = 0 , 1 , ⋯ , n 。 s.t.\begin{cases} \sum_{i=0}^{n}(1+p_i)x_i=M,\\ x_i\geq 0,i=0,1,\cdots,n。 \end{cases} s.t.{∑i=0n(1+pi)xi=M,xi≥0,i=0,1,⋯,n。
再简化模型:
一是固定风险水平,优化收益。
m
a
x
∑
i
=
0
n
(
r
i
−
p
i
)
x
i
,
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
。
max\sum_{i=0}^n(r_i-p_i)x_i,\\ s.t.\begin{cases} \frac{q_ix_i}{M}\leq a,i=1,2,\cdots,n,\\ \sum_{i=0}^{n}(1+p_i)x_i=M,x_i\geq0,i=0,1,\cdots,n。 \end{cases}
maxi=0∑n(ri−pi)xi,s.t.{Mqixi≤a,i=1,2,⋯,n,∑i=0n(1+pi)xi=M,xi≥0,i=0,1,⋯,n。
二是固定盈利水平,极小化风险
m
i
n
{
m
a
x
{
q
i
x
i
}
}
,
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
。
min\{max\{q_ix_i\}\},\\ s.t.\begin{cases} \sum_{i=0}^{n}(r_i-p_i)x_i\geq k,\\ \sum_{i=0}^{n}(1+p_i)x_i = M,\\ x_i\geq 0,i=0,1,\cdots,n。 \end{cases}
min{max{qixi}},s.t.⎩⎪⎨⎪⎧∑i=0n(ri−pi)xi≥k,∑i=0n(1+pi)xi=M,xi≥0,i=0,1,⋯,n。
三是对风险收益分别赋予权重s和1-s,s称为投资偏好系数
m
i
n
s
{
m
a
x
{
q
i
x
i
}
}
−
(
1
−
s
)
∑
i
=
0
n
(
r
i
−
p
i
)
x
i
,
s
.
t
.
{
∑
i
=
0
n
(
1
+
p
i
)
x
i
=
M
,
x
i
≥
0
,
i
=
0
,
2
,
⋯
,
n
min\quad s\{max\{q_ix_i\}\}-(1-s)\sum_{i=0}^{n}(r_i-p_i)x_i,\\ s.t.\begin{cases} \sum_{i=0}^{n}(1+p_i)x_i=M,\\ x_i\geq 0,i=0,2,\cdots,n \end{cases}
mins{max{qixi}}−(1−s)i=0∑n(ri−pi)xi,s.t.{∑i=0n(1+pi)xi=M,xi≥0,i=0,2,⋯,n
模型一代码如下:
%%从a=0开始以0.001为步长进行循环搜索
a = 0;
hold on
while a<0.05
c = [-0.05,-0.27,-0.19,-0.185,-0.185];
A = [zeros(4,1),diag([0.025,0.015,0.055,0.026])];
b = a*ones(4,1);
Aeq = [1,1.01,1.02,1.045,1.065];
beq = 1;
LB = zeros(5,1);
[x,Q] = linprog(c,A,b,Aeq,beq,LB);
Q = -Q;
plot(a,Q,'*k');
a = a + 0.001;
end
xlabel('a'),ylabel('Q')
结果如图:
结果分析:
( 1 ) 风 险 大 , 收 益 也 大 (1)风险大,收益也大 (1)风险大,收益也大
( 2 ) 当 投 资 越 分 散 时 , 投 资 者 承 担 的 风 险 越 小 (2)当投资越分散时,投资者承担的风险越小 (2)当投资越分散时,投资者承担的风险越小
( 3 ) 在 a = 0.006 附 近 有 一 个 转 折 点 , 在 这 一 点 左 边 , 风 险 增 加 很 小 时 , 利 润 增 长 很 快 ; 在 这 一 点 的 右 边 反 之 , 所 以 应 选 a = 0.6 % , Q = 20 % , 所 以 对 应 的 投 资 方 案 为 风 险 度 a = 0.006 , 收 益 Q = 0.2019 , x 0 = 0 , x 1 = 0.24 , x 2 = 0.4 , x 3 = 0.1091 , x 4 = 0.2212. (3)在a=0.006附近有一个转折点,在这一点左边,风险增加很小时,利润增长很快;在这一点的右边反之,所以应选a=0.6\%,Q=20\%,\\所以对应的投资方案为风险度a=0.006,收益Q=0.2019,x_0=0,x_1=0.24,x_2=0.4,x_3=0.1091,x_4=0.2212. (3)在a=0.006附近有一个转折点,在这一点左边,风险增加很小时,利润增长很快;在这一点的右边反之,所以应选a=0.6%,Q=20%,所以对应的投资方案为风险度a=0.006,收益Q=0.2019,x0=0,x1=0.24,x2=0.4,x3=0.1091,x4=0.2212.