最优化实验报告单纯形法的matlab程序lingo程序.docx

上传人:b****5 文档编号:3080763 上传时间:2022-11-17 格式:DOCX 页数:9 大小:94.15KB
下载 相关 举报
最优化实验报告单纯形法的matlab程序lingo程序.docx_第1页
第1页 / 共9页
最优化实验报告单纯形法的matlab程序lingo程序.docx_第2页
第2页 / 共9页
最优化实验报告单纯形法的matlab程序lingo程序.docx_第3页
第3页 / 共9页
最优化实验报告单纯形法的matlab程序lingo程序.docx_第4页
第4页 / 共9页
最优化实验报告单纯形法的matlab程序lingo程序.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

最优化实验报告单纯形法的matlab程序lingo程序.docx

《最优化实验报告单纯形法的matlab程序lingo程序.docx》由会员分享,可在线阅读,更多相关《最优化实验报告单纯形法的matlab程序lingo程序.docx(9页珍藏版)》请在冰豆网上搜索。

最优化实验报告单纯形法的matlab程序lingo程序.docx

最优化实验报告单纯形法的matlab程序lingo程序

实验一:

线性规划单纯形算法

一、实验目的

通过实验熟悉单纯形法的原理,掌握Matlab循环语句的应用,提高编程的能力和技巧。

二、实验用仪器设备、器材或软件环境

WindowsXp操作系统,Matlab6.5,计算机

三、算法

对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始基本可行解。

设初始基为B,然后执行如下步骤:

(1).解

求得

(2).计算单纯形乘子

得到

对于非基变量,计算判别数

R为非基变量集合

若判别数

则得到一个最优基本可行解,运算结束;否则,转到下一步

(3).解

得到

;若

的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4).

(4).确定下标r,使

为离基变量。

为进基变量,用

替换

,得到新的基矩阵

,返回步骤

(1)。

对于极大化问题,可以给出完全类似的步骤,只是确定进基变量的准则不同。

对于极大化问题,应令

四、计算框图

 

 

 

五、计算程序

function[x,f]=zuiyouhua(A,b,c)

size(A)=[m,n];

i=n+1:

n+m;%基变量集合,后面m个松弛变量为初始基变量;

N=1:

n;%初始非基变量;

B=eye(m,m);

xb=b';

xn=zeros(m,1);

f1=0;

w=zeros(1,m);

z=-c;%初始判别数;

flag=1;

while

(1)

[a,k]=max(z);%x(k)为进基变量;

ifa<=0

flag=0;

break

else

y=inv(B)*A(:

k)

ify<=0

flag=0;

fprintf('不存在最优解')

break

end

t=find(y>0);

[a,r1]=min(b1(t)./y(t))

r=t(r1);%基变量中第r个变量为退基变量;

i(:

r)=k

B(:

r)=A(:

k);%换基,即将原基中第r个变量换成第k个变量;

cb=c(:

i);%新的价值系数;

xb=inv(B)*b;

b0=xb;

x=zeros(1,n+m)

x(:

i)=xb'

f=cb*xb

z=cb*inv(B)*A-c;%可用z=cb*(B\A)-c,判别数.

end

end

六、数值实验及结果分析

求解线性规划问题:

 

在工作区输入:

A=[3,3,1,0;-4,-4,0,1;2,-1,0,0];

b=[30,16,12]';

c=[-3,1,0,0];

[x,f]=zuiyouhua(A,b,c)

x=

7.33332.666700056.00000

 

f=

-19.3333

检验结果正确

七、心得体会

通过这次试验,使我对单纯形法的计算有了更进一步的了解。

但是在编程过程中由于对matlab不是很熟悉还是遇到了很多麻烦,所以我觉得老师在让我们编程的时候不能只是简单的介绍一下算法,更要着重说明一下软件的使用方法。

这样我们在编程的时候就能更加的得心应手。

本次完全仿照老师给的程序,没有能够形成自己的东西。

自己编程的能力还是很差的,对于这种已经给出算法的程序也不能正确的编写出来。

所以在今后要加强这方面的学习。

 

实验二:

Lingo求解动态规划问题

一、实验目的

通过本实验熟悉动态规划的原理,了解动态规划的应用,并能利用数学软件(Lingo)求解动态规划模型。

二、问题重述

某公司打算向他的营业区增设4个销售点,各区赚取的利润与增设的销售点个数有关,其数据为:

销售店增加数

第一区利润(万元)

第二区利润(万元)

第三区利润(万元)

第四区利润(万元)

0

160

190

200

250

1

310

225

298

308

2

541

445

399

487

3

600

517

601

655

4

705

632

721

674

试求各区应分配几个增设的销售书店,才能使利润最大?

其值是多少?

三、数学模型

为第

区增设销售点的个数,

为增设第

个点所得到的盈利。

故问题模型为:

四、计算编程

model:

sets:

quyu/1..4/;

zl/0..4/;

lirun(quyu,zl):

g,c;

endsets

data:

g=160310541600705,

190225445517632,

200298399601721,

250308487655674;

enddata

max=@sum(lirun(i,j):

g(i,j)*c(i,j));

@for(quyu(i):

@sum(lirun(i,j):

c(i,j))<=1);

@for(lirun:

@bin(c));

@sum(lirun(i,j):

(j-1)*c(i,j))=4;

End

五、计算结果

Globaloptimalsolutionfound.

Objectivevalue:

1436.000

Objectivebound:

1436.000

Infeasibilities:

0.000000

Extendedsolversteps:

0

Totalsolveriterations:

0

 

VariableValueReducedCost

G(1,1)160.00000.000000

G(1,2)310.00000.000000

G(1,3)541.00000.000000

G(1,4)600.00000.000000

G(1,5)705.00000.000000

G(2,1)190.00000.000000

G(2,2)225.00000.000000

G(2,3)445.00000.000000

G(2,4)517.00000.000000

G(2,5)632.00000.000000

G(3,1)200.00000.000000

G(3,2)298.00000.000000

G(3,3)399.00000.000000

G(3,4)601.00000.000000

G(3,5)721.00000.000000

G(4,1)250.00000.000000

G(4,2)308.00000.000000

G(4,3)487.00000.000000

G(4,4)655.00000.000000

G(4,5)674.00000.000000

C(1,1)0.000000-160.0000

C(1,2)0.000000-310.0000

C(1,3)1.000000-541.0000

C(1,4)0.000000-600.0000

C(1,5)0.000000-705.0000

C(2,1)0.000000-190.0000

C(2,2)0.000000-225.0000

C(2,3)1.000000-445.0000

C(2,4)0.000000-517.0000

C(2,5)0.000000-632.0000

C(3,1)1.000000-200.0000

C(3,2)0.000000-298.0000

六、分析、检验和结论

结果中Variable列对应的

表示第

区,

表示增加

个销售点,Value列对应的0.000000表示不增加销售点,1.000000表示增加销售点。

例如C(1,3)1.000000表示第一区增加两个销售点。

表示第

行第

列对应的值。

从结果中我们知道最优解是第一区和第二区分别增加2个销售点,第三区和第四区增加0个销售点此时盈利

1436为最优值。

经过检验结果正确。

七、心得体会

通过实验我熟悉了Lingo的使用方法,学会了用Lingo编写计算程序。

同时也掌握了分配问题的算法。

由于之前没有接触过Lingo软件,老师也没有系统的讲述Lingo的使用规则,所以我通过老师给的例题,依葫芦画瓢的写出了本问题的程序。

但是对实质性的东西还不是很了解,没有达到举一反三的地步。

仅仅只会分配法这一类问题的算法和程序,对程序中函数的具体应用还不了解。

所以我希望老师能在上实验课之前给我们讲述一下这种题型编程的注意事项,和涉及函数的具体意思,这样更有利于我们对问题的理解。

同时我也体会到自己没有主动的去学习而是被动的等待老师来讲解,从而造成了实验过程中出现了一些问题。

所以,以后要主动学习。

 

THANKS!

!

!

 

致力为企业和个人提供合同协议,策划案计划书,学习课件等等

打造全网一站式需求

欢迎您的下载,资料仅供参考

 

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

当前位置:首页 > 法律文书 > 判决书

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

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