第八章 线性规划和整数规划Word文件下载.docx

上传人:b****3 文档编号:17346872 上传时间:2022-12-01 格式:DOCX 页数:13 大小:157.35KB
下载 相关 举报
第八章 线性规划和整数规划Word文件下载.docx_第1页
第1页 / 共13页
第八章 线性规划和整数规划Word文件下载.docx_第2页
第2页 / 共13页
第八章 线性规划和整数规划Word文件下载.docx_第3页
第3页 / 共13页
第八章 线性规划和整数规划Word文件下载.docx_第4页
第4页 / 共13页
第八章 线性规划和整数规划Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

第八章 线性规划和整数规划Word文件下载.docx

《第八章 线性规划和整数规划Word文件下载.docx》由会员分享,可在线阅读,更多相关《第八章 线性规划和整数规划Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

第八章 线性规划和整数规划Word文件下载.docx

4:

5的新溶液。

但如果我们增加一种溶液,其含有A、B、C三种物质的比例为2:

1:

2,那么将八分的1:

3、一份的3:

1和五份的2:

2混合后就可以得到3:

5的混合物。

决定将给定的一组溶液以何种比例混合并不是件轻松的任务。

但是,正如ACM所表明的,这可能是一件利润丰厚的任务。

你必须写一个程序以寻找混合比例。

输入

输入文件包含多个测试数据。

每个测试数据的第一行包含一个整数n(0≤n<

100),代表了测试数据中混合物的数目。

接下来的n行每行包含三个非负整数ai、bi、ci,指明了A、B、C在第i种混合物中出现的比例为ai:

bi:

ci。

每种混合物的三个整数中至少有一个是正的。

最后,有包含三个非负的整数a、b、c的一行,指明了所需溶液的比例为a:

b:

c。

输入文件由最后一个测试数据之后仅含整数0的一行结束。

输出

对于每一个测试数据,输出单词“Mixture”,其后跟着测试数据的编号。

在下一行中,如果能通过混合输入的溶液得到所需溶液,则输出单词“possible”,否则的话,输出单词“impossible”。

输入范例

2

123

371

345

3

212

0

输出范例

Mixture1

impossible

Mixture2

Possible

算法分析

该题实际上是一门线性代数题,要求选手通过计算机编程求解。

设xi为第i种溶液取出的比例(xi≥0,1≤i≤n);

ai,bi,ci为第i种溶液中A、B、C三种物质的比例(ai,bi,ci≥0,1≤i≤n);

x,y,z为混合溶液中A、B、C三种物质的比例。

能否从铅中提炼出金子,就是判断下述非齐次线性方程组

a1x1+a2x2+......+anxn=x

b1x1+b2x2+......+bnxn=y

c1x1+c2x2+......+cnxn=z

是否有解。

该非齐次线性方程组的增广矩阵为

常量系数矩阵

xa1…an

A=yb1…bn

zc1…cn

如果n<

3,则增添(3-n)个全零的列向量,使得系数矩阵的规模扩充至3×

4。

3-n个全0的列向量

0..

增广矩阵0..

4

n+1个列向量

这个非齐次线性方程组有解的充分必要条件是增广矩阵与系数矩阵的秩相等。

所谓矩阵的秩就是矩阵中最大一个非零子行列式的规模。

显然矩阵A的秩小于等于3。

正因为如此,我们每次仅取三种溶液,其他溶液不取,设这三种溶液的序号分别为i,j,k(i≠j≠k,1≤i,j,k≤n),即

aixi+ajxj+akxk=x

bixi+bjxj+bkxk=y

cixi+cjxj+ckxk=z

混合溶液中A、B、C的比例

xaiajakb10b11b12b13

对应的增广矩阵为B=ybibjbk=b20b21b22b23

zcicjckb30b31b32b33

i,j,k三种溶液中A,B,C的比例

我们采用主元消去对矩阵B进行初等变换,使其系数矩阵变成一个单位矩阵

x’100

B’=y’010

z’001

注意,变换后非零的行向量可能会减少,初始时设行数pm=3

我们从第1行开始搜索每一行向量,若第i行(1≤i≤pm)中的三个系数bi1,bi2,bi3全0,则分析同行的常量bi0:

1.若bi0<

>

0,则不可能使bi1*xi+bi2*xj+bi3*xk=bi0<

0,因此方程组无解;

2.若bi0=0,则消去第i行(i行向量与pm行向量对换,pm←pm-1;

i←i-1);

如果l行向量中的一个系数blk<

0,则称blk为主元。

通过下述变换关系式进行消元。

变换后矩阵各元素为

blj/blki=l

b’ij=

bij-(blj/blk)biki≠l

(1≤i≤pm,1≤j,k≤3)

使得第k列向量中除第1元素blk=1外,其余元素为0。

上述一直进行至无解退出或者指针i≥pm为止(目前系数矩阵为单位矩阵或者产生0矩阵)。

最后分析目前矩阵方程的常量b1,0…,bpm,0:

如果都大于等于0,说明变换后矩阵对应的方程组有解且符合题意。

根据线性代数中矩阵初等变换的等价原理“若矩阵B经有限次初等变换后变换成矩阵B’,则B的行向量组与B’的行向量组等价”,因此可以断定

aixi+ajxj+akxk=x

bixi+bjxj+bkxk=y

cixi+cjxj+ckxk=z

xp=0(p≠i、j、k,1≤p≤n)

有解。

例如,有五种溶液:

第一种溶液中A、B、C三种物质的比例为a1=1,b1=2,c1=3;

第二种溶液中A、B、C三种物质的比例为a2=3,b2=7,c2=2;

第三种溶液中A、B、C三种物质的比例为a3=2,b3=1,c3=2;

第四种溶液中A、B、C三种物质的比例为a1=1,b1=2,c1=3;

第五种溶液中A、B、C三种物质的比例为a1=2,b1=3,c1=4;

如果五种溶液配置成A、B、C的比例为x=3,y=4,z=5的特殊混合溶液,便可以提炼金子。

求解过程如下。

先列出对应得非齐次方程组和增广矩阵

x1+3x2+2x3+x4+2x5=3

313212

2x1+7x2+x3+2x4+3x5=4A=427123

532234

3x1+2x2+2x3+3x4+4x5=5

令x4=x5=0,得出

313231329101127/25100

B=4271→-201-3→-201-3→4/25010

5322-40-7-4-1800-2518/25001

按照x1=27/25、x2=4/25、x3=18/25、x4=x5=0的比例提取5种溶液,便可产生满足要求的混合溶液。

上述消元法可描述如下:

设i为行向量序号;

pm为目前非零的向量行数;

pm=3;

i=0;

while(i<

pm){

i++;

if(bi1…bin全0){

if(bi0==0){

i行向量与pm行向量对换;

pm--;

i--;

}else{

无解退出

}

}else{//bi1…bin中有bij<

0(1≤j≤n)

for(r=0;

r<

n;

r++){

bir/=bij;

for(r=1;

pm;

if(r!

=i){

for(s=0;

s<

s++){

brs-=brj*bis;

}

}

}

}

if(b1,0…bpm,0非全零){

方程有解退出;

现有n种溶液。

如果n<

3,则增添3-n个{0,0,0}作为列向量,然后按照上述算法进行消元,判新混合方案是否存在。

问题是n>

3时,究竟应该取哪三种溶液无法预知,因此只能枚举n种溶液中取3种溶液的全部组合。

设三种溶液的一个组合序列为m,其中m[i]为组合中第i种溶液的一个序号(1≤i≤3)。

规定组合中的3个溶液序号按递增顺序排列,即m[i]∈{m[i-1]+1…n-3+i}。

只有其中一个组合m对应的方程组

am[1]xm[1]+am[2]xm[2]+am[3]xm[3]=x

bm[1]xm[1]+bm[2]xm[2]+bm[3]xm[3]=y

cm[1]xm[1]+cm[2]xm[2]+cm[3]xm[3]=z

有解,即可断定混合方案存在。

如果c(n,3)个组合对应的方程组都无解,则断定混合方案不存在。

为此,我们设计了一种solve(s)过程,其中s为组合m的元素序号(1≤s≤3):

voidsolve(s){

if(s>

3){

对m组合对应的方程组进行消元变换,判断是否有解;

}else{

for(i=m[s-1]+1;

i<

n-(3-s);

i++){

m[s]=i;

solve(s+1);

if(m组合对应的方程组有解){

exit;

m[s]=0;

}

在主程序中调用solve(如果一个m组合对应的方程组有解,则输出“possible”;

否则输出“impossible”。

程序题解

8.2整数规划

8.2.1案例2:

装箱问题

例1四件物品将装入一容量为20的集装箱。

已知每种物品每装入一件所占用的容量和可获得的效益如下表所示。

1

2

3

每件物品占用的容量

5

每件物品的效益

110

160

260

210

问:

如何安排装箱计划,才能使集装箱中的物品有最大的总效益?

注:

集装箱只有装满或剩余空间不能再容纳下任何一件物品时才有可能取得最大效益。

求解:

设四件物品的装箱数量分别为:

x1,x2,x3,x4

则该问题的数学模型为:

maxz=110x1+160x2+260x3+210x4

其中,x1,x2,x3,x4为非负整数

且2x1+3x2+5x3+4x4≤20

分析:

已知集装箱的容量为20

1)若集装箱放入物品4的x4件,则

Ø

0≤x4≤5

装入x4件物品4后,集装箱中容量消耗为4x4,但同时带来效益

210x4

此时,还能用来装物品1,2,3的剩余容量为

20-4x4

问题转化为:

在容量为20-4x4的情况下,如何装物品1,2,3(即求x1,x2,x3),才能相对于容量20-4x4产生最大的效益?

重复以上步骤,可以对x1,x2,x3进行分析

若上面的x1,x2,x3都能确定了,则与x4一起所能带来的总效益值为

z=110x1+160x2+260x3+210x4。

现求,能产生最大z值得x1,x2,x3,x4

仅就x4而言,x4的值等于多少,才能使箱中效益达到最大呢?

现设一般情况:

有n件物品,容器(集装箱)容量为M

记:

fn(M)为在容量为M时,装入所有n件物品所能带来的最大效益,xi表示装入第i件物品的数量(正整数或0),i=1,2,…,n。

则x4的取值由递推式确定:

其中f3(20-4x4)是在容量为20-4x4时,装入1,2,3物品所能带来的最大效益。

记当前容量为X,则一般情况下递推关系式有:

xi的取值范围

实例分析

f0(k)=0

故,当b=20时(k=20)有,

f4(20)=1100

x4=0

依次递推得:

x2=x3=x4=0

x1=20/2=10

maxz=1100

 

例2设有一旅客可携带10重量单位的物品,现有3种物品,每件重2,3,4个重量单位,每件物品的价值分别为11,16,20(x103元)

试问:

3种物品各应待可使所带物品的总价值最大。

分析:

设携带3中物品的数量分别为:

x1,x2,x3

则有,maxz=11x1+16x2+20x3

其中2x1+3x2+4x3≤10

x1,x2,x3为非负整数

解:

动态规划求解策略——采用与前类似的递推策略

计算举例:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1