目前正在研究最优化方法,首先谈谈线性规划问题。
问题描述: 线性规划是研究在一组线性不等式或等式约束下使得某一线性目标函数取最大(或最小)的极值问题。
线性规划问题的一般形式为: minxCTx Ax=B x≥0
特点:目标函数求极大;等式约束;变量非负。 如何化标准形:
(I) 目标函数实现极大化,即 minxz=CTx ,令 w=−z ,则等价于 maxxw=−CTx ;
(II)约束条件为不等式
约束条件为“ ≤ ” 不等式,则在约束条件的左端加上一个非负的松弛变量;
约束条件为“ ≥ ” 不等式,则在约束条件的左端减去一个非负的松弛变量。
(III)若存在无约束的变量 xi ,可令 xi=x1i−x2i ,其中 x1i≥0,x2i≥0
最后利用单纯性算法进行求解!!!!!!
// 在matlab中,规定线性规划的标准形式 minXCTX Ax≤b Aeq⋅X=beq lb≤x≤ub 其中 C 和X为 n 维的向量,A,Aeq 为适当维数的矩阵, b,beq 为适当维数的列向量。 例如: maxz=2x1+3x2−5x3 s.t.x1+x2+x3=7 2x1−5x2+x3≥10 x1+3x2+x3≤12 x1,x2,x3≥0
matlab 代码:
c=[2;3;-5]; a = [-2,5,-1;1,3,1]; b = [-10;12]; aeq = [1,1,1]; beq = 7; x = linprog(-c,a,b,aeq,beq,zeros(3,1)); value = c’*x;
问题的主要难点在于怎样建立合适的数学表达形式,求解反而是次要的。