线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)

线性规划(Linear Programming Problem:LPP)是凸优化以及现实生活中经常遇到的问题,解决线性规划问题常用的方法有单纯形法(Simlex Method)(普通单纯形法,大M法,两阶段法,对偶单纯形法)以及内点法(karmarkar method)

matlab中求解线性规划使用 linprog(f, A, b, Aeq, beq, lb, ub)以及revised(c, b, a, inq, 1)

注:f为目标函数(min形式)系数矩阵,A为限制条件系数矩阵,b为右端值矩阵(元素可以小于零),Aeq为等式约束的系数矩阵,beq为等式约束的右端值矩阵,lb和ub为未知数的下限和上限

1.LPP 

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第1张图片

2.Simplex Method

每一次迭代的tableau 格式如下:

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第2张图片

 

=====================================================================

=====================================================================

换入基、换出基的选择:

原理:

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第3张图片

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第4张图片

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第5张图片

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第6张图片

所以标准型可以换成以下的形式:

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第7张图片

迭代的思想:

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第8张图片

 

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第9张图片

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第10张图片

 

解的情况讨论:

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第11张图片 

========================================================================

========================================================================

2.1 Simplified Simplex Method (普通单纯形)

LPP中的约束条件全是等式约束

standard form

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第12张图片

 注:这里的右端值b必须全部非负

 下面举例说明该种方法的应用以及matlab的两种实现

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第13张图片

 

Solution 

首先引入变量(slack or surplus)将原问题转为标准格式:

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第14张图片

下面开始迭代:

first tableau

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第15张图片 

将x1作为基变量换出x4

second tableau

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第16张图片

将x2作为基变量换出x3

third tableau

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第17张图片

 

可以看到

所有的z_j-c_j都是非负的,所以此时的x值是最优值,答案为:

matlab实现

linprog() : 

注意:linprog()解决问题的标准格式如下:

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第18张图片

 

所以需要转换原问题为最小化问题!!!

 

f = [-2, -1];
A = [3 4; 6 1];
b = [6 3];
[x, fval] = linprog(f, A, b)

 

 下面贴出运行结果

线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第19张图片

revised():

注意:该函数不是内置函数,需要自行下载函数,附上网址:http://cn.mathworks.com/matlabcentral/fileexchange/26554-revised-simplex-method?focused=5147615&tab=function

 

c = [2 1];
A = [3 4; 6 1];
b = [6 3];
inq = [-1 -1];
revised(c, b, A, inq, 0)

 

 线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)_第20张图片

 

转载于:https://www.cnblogs.com/Mr-ZeroW/p/optimization.html

你可能感兴趣的:(线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一))