【MATLAB】线性规划问题中的绝对值问题
問題描述
在求解線性規(guī)劃問題中碰到絕對值的情況:
minz=∣x1∣+2∣x2∣+3∣x3∣+4∣x4∣,min z=|x_1|+2|x_2|+3|x_3|+4|x_4|,minz=∣x1?∣+2∣x2?∣+3∣x3?∣+4∣x4?∣,
s.t.{x1?x2?x3+x4=0,x1?x2+x3?3x4=1,x1?x2?2x3+3x4=?12,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;
要點:?xi∈R;ui,vi≥0\forall x_i \in R \ ;\ u_i,v_i \geq 0?xi?∈R?;?ui?,vi?≥0 滿足以下條件
xi=ui?vi,∣xi∣=ui+vix_i=u_i - v_i , \left\lvert {x_i} \right\rvert=u_i + v_ixi?=ui??vi?,∣xi?∣=ui?+vi?
對于分解的過程,取ui=xi+∣xi∣2,vi=∣xi∣?xi2u_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ù)在去除絕對值之后為:
minz=u1+v1+2(u2+v2)+3(u3+v3)+4(u4+v4),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.{u1?v1?u2?v2?u3?v3+u4?v4=0,u1?v1?u2?v2+u3?v3?3(u4?v4)=1,u1?v1?u2?v2?2(u3?v3)+3(u4?v4)=?12,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)形式 分別求解出fT,A,B,Aeq,Beq,lb,ubf^T,A,B,Aeq,Beq,lb,ubfT,A,B,Aeq,Beq,lb,ub
本題的matlab代碼如下:
最終求得最優(yōu)結(jié)果為:
x1=0.25;x2=0;x3=0;x4=?0.25;val=1.25x_1 =0.25 ;x_2= 0; x_3 =0 ; x_4 = -0.25; val = 1.25x1?=0.25;x2?=0;x3?=0;x4?=?0.25;val=1.25
總結(jié)
以上是生活随笔為你收集整理的【MATLAB】线性规划问题中的绝对值问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于数据统计的随机组建试卷的算法研究
- 下一篇: QUI框架学习链接