借助于Matlab用贯序算法求解目标规划问题.doc

上传人:wj 文档编号:4712330 上传时间:2023-05-07 格式:DOC 页数:12 大小:179.50KB
下载 相关 举报
借助于Matlab用贯序算法求解目标规划问题.doc_第1页
第1页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第2页
第2页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第3页
第3页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第4页
第4页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第5页
第5页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第6页
第6页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第7页
第7页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第8页
第8页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第9页
第9页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第10页
第10页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第11页
第11页 / 共12页
借助于Matlab用贯序算法求解目标规划问题.doc_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

借助于Matlab用贯序算法求解目标规划问题.doc

《借助于Matlab用贯序算法求解目标规划问题.doc》由会员分享,可在线阅读,更多相关《借助于Matlab用贯序算法求解目标规划问题.doc(12页珍藏版)》请在冰点文库上搜索。

借助于Matlab用贯序算法求解目标规划问题.doc

《计量地理学》(徐建华,高等教育出版社,2005)配套实习指导

§17.借助于Matlab用贯序算法求解目标规划问题

虽然Matlab没有提供直接求解目标规划的优化工具,但是根据目标规划的求解思路——单纯形方法。

我们可以将一个目标规划问题分解成若干线性规划问题,通过序贯式算法借助于Matlab优化工具进行求解。

例1:

教材第6章第3节中的目标规划问题:

首先将上述问题化为标准形式:

然后按照以下步骤分解计算:

第一步:

求解如下线性规划问题:

mind1

2x1+x2+x3=11

x1-x2+d1_-d1=0

x1,x2,x3>=0,d1_>=0,d1>=0

对上述线性规划问题,可以借助于Matlab优化工具中的linprog函数求解,函数调用命令为:

[x,fval]=linprog(f,[],[],Aeq,beq,lb,[])

其中,参数如下:

Aeq=

2

1

1

0

0

0

0

0

0

1

-1

0

1

-1

0

0

0

0

beq=

11

0

f=

0

0

0

0

1

0

0

0

0

lb=

0

0

0

0

0

0

0

0

0

运行后,得求解结果如下:

Optimizationterminatedsuccessfully.

x=

0.1645

6.0628

4.6083

267.4155

261.5173

0

0

0

0

fval=

0

即:

d1=0

第二步:

求解如下线性规划问题:

mind2_+d2

2x1+x2+x3=11

x1-x2+d1_-d1=0

x1+2x2+d2_-d2=10

d1=0

x1,x2,x3>=0,d1_>=0,d1>=0,d2_>=0,d2>=0

对上述线性规划问题,可以借助于Matlab优化工具中的linprog函数求解,函数调用命令为:

[x,fval]=linprog(f,[],[],Aeq,beq,lb,[],x0)

其中,参数如下:

Aeq=

2

1

1

0

0

0

0

0

0

1

-1

0

1

-1

0

0

0

0

1

2

0

0

0

1

-1

0

0

0

0

0

0

1

0

0

0

0

beq=

11

0

10

0

f=

0

0

0

0

0

1

1

0

0

lb=

0

0

0

0

0

0

0

0

0

x0=

0.1645

6.0628

4.6083

267.4155

261.5173

0

0

0

0

运行后,得求解结果如下:

x=

0.0577

4.9712

5.9135

4.9135

0

0.0000

0.0000

0

0

fval=

5.1844e-010

即:

d2_+d2=5.1844e-010≈0

第三步:

求解如下线性规划问题:

mind3_

2x1+x2+x3=11

x1-x2+d1_-d1=0

x1+2x2+d2_-d2=10

8x1+10x2+d3_-d3=56

d1=0

d2_+d2=0

x1,x2,x3>=0;d1_>=0,d1>=0,d2_>=0,d2>=0,d3_>=0,d3>=0

对上述线性规划问题,可以借助于Matlab优化工具中的linprog函数求解,函数调用命令为:

[x,fval]=linprog(f,[],[],Aeq,beq,lb,[],x0)

其中,参数如下:

Aeq=

2

1

1

0

0

0

0

0

0

1

-1

0

1

-1

0

0

0

0

1

2

0

0

0

1

-1

0

0

8

10

0

0

0

0

0

1

-1

0

0

0

0

1

0

0

0

0

0

0

0

0

0

1

1

0

0

beq=

11

0

10

56

0

0

f=

0

0

0

0

0

0

0

1

0

lb=

0

0

0

0

0

0

0

0

0

x0=

0.0577

4.9712

5.9135

4.9135

0

0

0

0

0

运行后,输出结果如下:

x=

2.2793

3.8603

2.5810

1.5810

0

0.0000

0.0000

0.0000

0.8380

fval=

3.6940e-013

最后得到如下一组满意解:

2.2793

3.8603

2.581

1.581

0

0

0

0

0.838

可以看出,以上求解的满意解方案不同于用Lindo软件求得的结果。

这是因为,该问题本身有多重解,而linprog函数求解算法又不同于Lindo的缘故。

有兴趣的读者可以进一步验证,上述解和借助于Lindo软件用贯序方法求解的结果都是满意解方案。

例2:

教材第6章第4节中的目标规划问题,土地利用问题:

耕地面积约束:

最低收获量约束:

目标约束为:

即:

非负约束:

对于上述目标规划问题,可以按照如下两个步骤进行分解求解:

第一步:

求解线性规划问题:

mind1_+d1

x11+x21+x31=100

x12+x22+x32=300

x13+x23+x33=200

11000x11+9500x12+9000x13>=190000

8000x21+6800x22+6000x23>=130000

14000x31+12000x32+10000x33>=350000

11000x11+9500x12+9000x13+8000x21+6800x22+6000x23+14000x31+12000x32+10000x33+d1_-d1=6100000

xij>=0(i,j=1,2,3);d1_>=0,d1>=0

对上述线性规划问题,可以借助于Matlab优化工具中的linprog函数求解,函数调用命令为:

[x,fval]=linprog(f,A,b,Aeq,beq,lb,[])

其中,参数如下:

A=

-11000

-9500

-9000

0

0

0

0

0

0

0

0

0

0

0

-8000

-6800

-6000

0

0

0

0

0

0

0

0

0

0

0

-14000

-12000

-10000

0

0

b=

-190000

-130000

-350000

Aeq=

1

0

0

1

0

0

1

0

0

0

0

0

1

0

0

1

0

0

1

0

0

0

0

0

1

0

0

1

0

0

1

0

0

11000

9500

9000

8000

6800

6000

14000

12000

10000

1

-1

beq=

100

300

200

6100000

f=

0

0

0

0

0

0

0

0

0

1

1

lb=

0

0

0

0

0

0

0

0

0

0

0

求解运行,输出结果:

x=

33.2724

108.3943

145.3961

16.4696

54.3202

0.6296

50.2580

137.2855

53.9743

0.0000

0.0000

fval=

2.6261e-014

即:

d1_+d1=2.6261e-014≈0

第二步:

求解线性规划问题:

mind2_+d2

x11+x21+x31=100

x12+x22+x32=300

x13+x23+x33=200

11000x11+9500x12+9000x13>=190000

8000x21+6800x22+6000x23>=130000

14000x31+12000x32+10000x33>=350000

11000x11+9500x12+9000x13+8000x21+6800x22+6000x23+14000x31+12000x32+10000x33+d1_-d1=6100000

d1_+d1=0

13200x11+11400x12+10800x13+12000x21+10200x22+9000x23+11200x31+9600x32+8000x33+d2_-d2=6600000

xij>=0(i,j=1,2,3);d1_>=0,d1>=0,d2_>=0,d2>=0

对上述线性规划问题,可以借助于Matlab优化工具中的linprog函数求解,函数调用命令为:

[x,fval]=linprog(f,A,b,Aeq,beq,lb,[])

其中,参数如下:

A=

-11000

-9500

-9000

0

0

0

0

0

0

0

0

0

0

0

0

0

-8000

-6800

-6000

0

0

0

0

0

0

0

0

0

0

0

0

0

-14000

-12000

-10000

0

0

0

0

b=

-190000

-130000

-350000

Aeq=

1

0

0

1

0

0

1

0

0

0

0

0

0

0

1

0

0

1

0

0

1

0

0

0

0

0

0

0

1

0

0

1

0

0

1

0

0

0

0

11000

9500

9000

8000

6800

6000

14000

12000

10000

1

-1

0

0

13200

11400

10800

12000

10200

9000

11200

9600

8000

0

0

1

-1

0

0

0

0

0

0

0

0

0

1

1

0

0

beq=

100

300

200

6100000

6600000

0

f=

0

0

0

0

0

0

0

0

0

0

0

1

1

lb=

0

0

0

0

0

0

0

0

0

0

0

0

0

运行输出求解结果:

x=

5.9011

232.5826

198.5503

12.8145

4.2771

0.7905

81.2844

63.1403

0.6592

0.0000

0.0000

0.0000

0.0000

fval=

1.0126e-015

即:

d2_+d2=1.0126e-015≈0

最后得到一个非劣解方案,如下表:

I等耕地

II等耕地

III等耕地

水稻

5.9011

232.5826

198.5503

大豆

12.8145

4.2771

0.7905

玉米

81.2844

63.1403

0.6592

同样可以看出,以上求解的满意解方案不同于用LINDO软件求得的结果。

这是因为,该问题本身有多重解,而linprog函数求解算法又不同于LINDO的缘故。

有兴趣的读者可以进一步验证,上述解和借助于LINDO软件用贯序方法求解的结果都是满意解方案。

133

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2