线性规划的求解算法.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

线性规划的求解算法

线性规划(linearprogramming)是运筹学中的一个重要分支,在现代工业、农业、商业、交通运输、国防军事及经济管理等诸多领域都有着广泛重要的应用。

在数学系的竞赛数学建模中,也多次应用线性规划来建模从而解决实际问题。在这里介绍单纯性法和对偶单纯形法两种求解线性规划的方法。

一、单纯形法算法主体思想

标准线性规划简记如下:LP-max

标准线性规划简记如下:

LP-max

LP-min

s.t{版=bx0s.t{仙=b

s.t{版=b

x0

x0

这里只以LP-min为例。

1、算法思想

单纯形法是在已知一个可行基的前提下采用的解决线性规划的算法。步骤如下:

aaKa01020,n

a

a

K

a

01

02

0,n

a

a

L

a

11

12

1,n

M

M

O

M

a

a

K

a

(1)输入初始矩阵:

m2

m1

m,n

+1

+1

,并化为典则形式。

用R(i)记录单位矩阵I中元素1的位置。

(2)求min{jIa0,1jn}@t

若t

若t不存在,则得到最优解;%⑴=气

,

+1(i=1,2,...m).其他j=0,

停。否则,转到(3)。

.ra. …. …

(3)求min{^:n+11a0,1im}@人alt

it

若*不存在,则LP-min无下届,所以无最优解,停;否则,求

minR(i)I气,外

minR(i)I气,外+】

[a

it

a

(4)气j=a,(j=1

st

aua一aa

ijijsjit,

=x,a〉0,1im\@R(s)转到(4)。

it

2....n+1)

(i=0,1,2...m;i壬s;j=1,2,....,n+1),

R(s)ut,转到(2).

二、对偶单纯形法

对偶单纯形法是在已知一个正则基的条件下的求解线性规划的方法。步骤如下:

a

a

K

a

01

02

0,n+1

a

a

L

a

11

12

1,n+1

M

M

O

M

a

a

K

a

m1

m2

m,n+1

(1)输入初始矩阵:

,并化为典则形式。

用R(i)记录单位矩阵I中元素1的位置。

⑵求min{jIa0,1jn}@s

若s

若s不存在,则得到最优解;气⑴=a

i,n+1(i=1,2,...m).其他j=0,

停。否则,转到(3)。

.,a

⑶求min{in+11a0,1im}@人a

it

若*不存在,则LP-min无下届,所以无最优解,停;否则,求

minR

minR(i)I气,n+i

ia

it

=*,a〉0,1im\@R(s),转到(4)。

it

a

(4)气j=寸,(j=1,2....n+1)

st

气U气气气,(i=0,1,2...m;is;j=1,2,....,n+1),

R(s)ut,转到(2).

三、程序代码

1、单纯形法。

%求解标准型线性规划:maxc*x;s.t.A*x=b;x=0%A1是标准系数矩阵及最后一列是资源向量,C是目标函数的系数向量%N是(初始的)基变量的下标%M=10000人工变量系数

%本函数中的A是单纯形表,包括:最后一行是初始的检验数,最后一列是资源向量b%c1是基变量系数%输出变量sol是最优解

%输出变量val是最优值,k是迭代次数%flag1的值代表有无最优解,0无界解,1无可行解,2无穷多解,3唯一最优解function[sol,val,k,flag1]=ssimplex(A1,C,N)M=10000;

[mA1,nA1]=size(A1);C1=[C,0];

val=zeros(1,length(C));fori=1:length(N)c1(i)=C1(N(i));endfori=1:nA1

a(i)=C1(i)-c1*A1(:,i);%计算初始检验数endA=[A1;a];%构造初始单纯形表[mA,nA]=size(A);k=0;%迭代次数flag=1;whileflagfori=1:(nA-1)ifA(mA,i)=0flag=0;elseflag=1;break;endendifflag==0%已找到最优解val1=A(1:(mA-1),nA);fori=1:length(N)

if(val1(i)~=0abs(C(N(i)))==M)disp(无可行解);sol=inf;val=inf;

flag3=0;

flag1=1;

break;

else

flag

文档评论(0)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档