問題描述
在求解線性規(guī)劃問題中碰到絕對值的情況:
m
i
n
z
=
∣
x
1
∣
+
2
∣
x
2
∣
+
3
∣
x
3
∣
+
4
∣
x
4
∣
,
min z=|x_1|+2|x_2|+3|x_3|+4|x_4|,
minz=∣x1?∣+2∣x2?∣+3∣x3?∣+4∣x4?∣,
s
.
t
.
{
x
1
?
x
2
?
x
3
+
x
4
=
0
,
x
1
?
x
2
+
x
3
?
3
x
4
=
1
,
x
1
?
x
2
?
2
x
3
+
3
x
4
=
?
1
2
,
s.t. \left\{ \begin{aligned} &x_1-x_2-x_3+x_4 & = & 0,\\ &x_1-x_2+x_3-3x_4 & = & 1,\\ &x_1-x_2-2x_3+3x_4 & = & -\frac{1}{2}, \end{aligned} \right.
s.t.?
?
???x1??x2??x3?+x4?x1??x2?+x3??3x4?x1??x2??2x3?+3x4??===?0,1,?21?,?
原因分析:
我們想用matlab的linprog函數(shù)進行求解,需要將其轉(zhuǎn)化成為matlab中線性規(guī)劃的標(biāo)準(zhǔn)形式
但是,對于絕對值的出現(xiàn),導(dǎo)致我們無法輕易進行轉(zhuǎn)換。
解決方案:
由于絕對值阻礙了我們的轉(zhuǎn)換,因此解決問題的主要思路便是去絕對值,再轉(zhuǎn)換成標(biāo)準(zhǔn)形式后進行求解。
絕對值轉(zhuǎn)換
目標(biāo):去除絕對值,且使得相應(yīng)的變量的范圍全部大于0;
要點:
?
x
i
∈
R
?
;
?
u
i
,
v
i
≥
0
\forall x_i \in R \ ;\ u_i,v_i \geq 0
?xi?∈R?;?ui?,vi?≥0 滿足以下條件
x i = u i ? v i , ∣ x i ∣ = u i + v i x_i=u_i - v_i , \left\lvert {x_i} \right\rvert=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+\left\lvert {x_i} \right\rvert}{2},v_i=\frac{\left\lvert {x_i} \right\rvert - x_i}{2} ui?=2xi?+∣xi?∣?,vi?=2∣xi?∣?xi??
因此,上述目標(biāo)函數(shù)在去除絕對值之后為:
m
i
n
z
=
u
1
+
v
1
+
2
(
u
2
+
v
2
)
+
3
(
u
3
+
v
3
)
+
4
(
u
4
+
v
4
)
,
min z=u_1 + v_1+2(u_2+ v_2)+3(u_3 + v_3)+4(u_4 + v_4),
minz=u1?+v1?+2(u2?+v2?)+3(u3?+v3?)+4(u4?+v4?),
s
.
t
.
{
(
u
1
?
v
1
)
?
(
u
2
?
v
2
)
?
(
u
3
?
v
3
)
+
(
u
4
?
v
4
)
=
0
,
(
u
1
?
v
1
)
?
(
u
2
?
v
2
)
+
(
u
3
?
v
3
)
?
3
(
u
4
?
v
4
)
=
1
,
(
u
1
?
v
1
)
?
(
u
2
?
v
2
)
?
2
(
u
3
?
v
3
)
+
3
(
u
4
?
v
4
)
=
?
1
2
,
s.t. \left\{ \begin{aligned} &(u_1 - v_1) -(u_2 - v_2)-(u_3 - v_3)+(u_4 - v_4)& = & 0,\\ &(u_1- v_1 )-(u_2 - v_2)+(u_3 - v_3)-3(u_4 - v_4)& = & 1,\\ &(u_1 - v_1) -(u_2 - v_2)-2(u_3 - v_3)+3(u_4 - v_4) & = & -\frac{1}{2}, \end{aligned} \right.
s.t.?
?
???(u1??v1?)?(u2??v2?)?(u3??v3?)+(u4??v4?)(u1??v1?)?(u2??v2?)+(u3??v3?)?3(u4??v4?)(u1??v1?)?(u2??v2?)?2(u3??v3?)+3(u4??v4?)?===?0,1,?21?,?
成功去除絕對值,后續(xù)根據(jù)matlab中線性規(guī)劃的標(biāo)準(zhǔn)形式 分別求解出
f
T
,
A
,
B
,
A
e
q
,
B
e
q
,
l
b
,
u
b
f^T,A,B,Aeq,Beq,lb,ub
fT,A,B,Aeq,Beq,lb,ub
本題的matlab代碼如下:文章來源:http://www.zghlxwxcb.cn/news/detail-406948.html
clc,clear
c=1:4;
c=[c,c]';
aeq=[1 -1 -1 1; 1 -1 1 -3; 1 -1 -2 3;];
beq=[0 1 -1/2];
aeq=[aeq,-aeq];
[uv,val]=linprog(c,[],[],aeq,beq,zeros(8,1));
x=uv(1:4)-uv(5:end)
最終求得最優(yōu)結(jié)果為:
x
1
=
0.25
;
x
2
=
0
;
x
3
=
0
;
x
4
=
?
0.25
;
v
a
l
=
1.25
x_1 =0.25 ;x_2= 0; x_3 =0 ; x_4 = -0.25; val = 1.25
x1?=0.25;x2?=0;x3?=0;x4?=?0.25;val=1.25文章來源地址http://www.zghlxwxcb.cn/news/detail-406948.html
到了這里,關(guān)于【MATLAB】線性規(guī)劃問題中的絕對值問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!