运筹学实验报告doc.docx

上传人:b****3 文档编号:5490710 上传时间:2022-12-17 格式:DOCX 页数:11 大小:18.95KB
下载 相关 举报
运筹学实验报告doc.docx_第1页
第1页 / 共11页
运筹学实验报告doc.docx_第2页
第2页 / 共11页
运筹学实验报告doc.docx_第3页
第3页 / 共11页
运筹学实验报告doc.docx_第4页
第4页 / 共11页
运筹学实验报告doc.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

运筹学实验报告doc.docx

《运筹学实验报告doc.docx》由会员分享,可在线阅读,更多相关《运筹学实验报告doc.docx(11页珍藏版)》请在冰豆网上搜索。

运筹学实验报告doc.docx

运筹学实验报告doc

运筹学实验报告

篇一:

高志通运筹学实验报告

  运筹学

  实验报告

  姓名:

高志通

  学号:

XX0404302

  班级:

信息与计算科学1203

  指导老师:

武梦梦

  目录

  1、线性规划问题:

.......................................................................................3

  2、运输问题:

..............................................................................................5

  3、一般整数规划问题:

...............................................................................9

  4、指派问题:

............................................................................................11

  相关问题说明:

  一、实验性质和教学目的

  本实验是运筹学课内安排的上机操作实验。

  目的在于了解、熟悉计算机Lingo软件在运筹学模型求解中的作用,激发学习兴趣,提高学习效果,增强自身的动手能力,提高实际应用能力。

  二、实验基本要求

  要求学生:

  1.实验前认真做好理论准备,仔细阅读实验指导书;

  2.遵从教师指导,认真完成实验任务,按时按质提交实验报告。

  三、主要参考资料

  1.LINGO软件

  3.优化建模与LINDO/LINGO软件,清华大学出版社,XX

  4.运筹学编写组主编,运筹(本文来自:

wwW.xIAocAofaNwE小草范文网:

运筹学实验报告)学(第四版),清华大学出版社,XX

  5.胡运权主编,运筹学教程(第二版),清华大学出版社,XX

  实验1线性规划问题

  maxz?

4x1?

3x2

  ?

9x1?

8x2?

12?

7x?

11x?

24?

12s..t?

?

9x1?

11x2?

13

  ?

?

x1,x2?

0

  

(1)给出原始代码;

  max4x1+3x2

  st

  9x1+8x2  7x1+11x2  9x1+11x2  end

  

(2)计算结果(包括灵敏度分析,求解结果粘贴);

  Globaloptimalsolutionfound.

  Objectivevalue:

5.333333

  Infeasibilities:

0.000000

  Totalsolveriterations:

2

  VariableValueReducedCost

  X11.3333330.000000

  X20.0000000.5555556

  RowSlackorSurplusDualPrice

  15.3333331.000000

  20.0000000.4444444

  314.666670.000000

  41.0000000.000000

  Rangesinwhichthebasisisunchanged:

  ObjectiveCoefficientRanges

  CurrentAllowableAllowableVariableCoefficientIncreaseDecreaseX14.000000INFINITY0.6250000X23.0000000.5555556INFINITY

  RighthandSideRanges

  RowCurrentAllowableAllowableRHSIncreaseDecrease

  212.000001.00000012.00000324.00000INFINITY14.66667413.00000INFINITY1.000000

  (3)回答下列问题(手写):

  a)最优解及最优目标函数值是多少;

  答:

最优解:

X1=1.333333X2=0.000000;最优目标函数值=5.333333b)资源的对偶价格各为多少,并说明对偶价格的含义;

  答:

y1=0.4444444;y2=0.000000;y3=0.000000;对偶价格的含义:

表示每增加一个单位(约束右边的常数),目标值改变的数量(在最大化问题中目标函数值是增加,在最小化问题中目标函数值是减少)。

  c)为了使目标函数值增加最多,让你选择一个约束条件,将它的常数项增加一个单位,你将选择哪一个约束条件?

这时目标函数值将是多少?

  答:

选择第一个约束条件,若常数项增加一个单位,目标函数值将=5.77777d)对x2的目标函数系数进行灵敏度分析;

  答:

目标函数中x2变量原来的费用系数为3,允许增加(AllowableIncrease)=0.5555556、允许减少(AllowableDecrease)=INFINITY,说明当它在[3-∞,3+0.5555556]=[-∞,3.5555556]范围变化时,最优基保持不变。

  e)对第2个约束的约束右端项进行灵敏度分析;

  答:

当它在[24-14.66667,24+∞]=[9.33333,∞]范围变化时,最优基保持不变。

f)结合本题的结果解释“ReducedCost”的含义。

  答:

ReducedCost指为了使某个变量在解中的数值增加一个单位,目标函数值必须付出的代价。

在本题中x1的ReducedCost值为0,当x1增加一个单位时,目标函数值将不变。

x2的ReducedCost值为0.5555556,即当x2增加一个单位时,目标函数值将减少0.5555556;

  实验2运输问题

  如下是一个最小费用运输问题。

产销量及单位运价如下表。

  

(1)给出原始代码;

  Sets:

  warehouse/1..6/:

WH;

  customer/1..8/:

V;

  routes(warehouse,customer):

c,x;

  endsets

  data:

  WH=60,55,51,43,41,52;

  V=35,37,22,32,41,32,43,38;

  c=6,2,6,7,4,2,5,9,

  3,6,5,3,8,9,8,2,

  7,6,1,5,7,4,3,3,

  5,2,7,3,9,2,7,1,

  2,3,9,5,5,2,6,5,

  5,7,2,2,3,1,4,3;

  enddata

  [obj]min=@sum(routes:

c*x);

  @for(warehouse(i):

[sup]@sum(customer(j):

x(i,j))篇二:

运筹学实验报告

(1)

  运筹学实验报告一、实验目的:

  通过实验熟悉单纯形法的原理,掌握matlab循环语句的应用,提高编程的能力和技巧,体会matlab在进行数学求解方面的方便快捷。

  二、实验环境:

  MatlabXXb,计算机

  三、实验内容(包含参数取值情况):

  构造单纯形算法解决线性规划问题

  Minz=cx

  s.t.Ax=b

  xj>=0,j=1,…,n

  函数功能如下:

  function[S,val]=danchun(A1,C,N)

  其中,S为最优值,Val为最优解,A1为标准形式LP问题的约束矩阵及最后一列为资源向量(注:

资源向量要大于零),A1=[A+b];C是目标函数的系数向量,C=c;N为初始基的下标(注:

请按照顺序输入,若没有初始基则定义N=[])。

  先输入A1,C,N三个必要参数,然后调用danchun(A1,C,N)进行求解。

在此函数中,首先判断N的长度是否为空,若为空,则flag=1,进入初始解问题的迭代求值,添加辅助问题,构建单纯形表,求g所对应的RHS值,若其>0,则返回该问题无解,若其=0,则返回A1,C,N三个参数,继续构造单纯形表求解。

A1为经过变换后的系数及资源向量,C为单纯形表的第一行,

  N为经过辅助问题求解之后的基的下标。

否则,直接构建单纯形表,对该问题进行求解,此时flag=2,多次迭代后找到解。

另外,若在大于零的检验数所对应的系数均小于零时,会显示“此问题无界”。

  若找到最优解和最优值时,会输出“val”和“S=”以及具体数值。

  四、源程序(在matlab中输入edit后回车,写在.M文件中,并保存为danchun.M)function[S,val]=danchun(A1,C,N)

  if(length(N)==0)

  gN=zeros(1,length(A1(:

1)));

  gC=[-C,gN,0];%原文题的检验数的矩阵

  G=[zeros(1,length(C)),-ones(1,length(gN)),0];

  val=zeros(1,length(C));%val为最优解;

  fori=(length(C)+1):

length(C)+length(A1(:

1))%生成基变量

  gN(i-length(C))=i;

  end

  Nn=gN;

  %%%%%%%

  ll=zeros(1,length(N));%比值最小原则

  %生成除了最上端两行的表的矩阵

  gb=A1(:

length(C)+1);

  A1(:

length(C)+1)=[];

  l=zeros(length(gN),length(gN));

  gA=[A1,l,gb];

  fori=1:

length(gb)

  gA(i,gN(i))=1;

  end

  fori=1:

length(gN)%J为基本可行基所对应的检验数

  J(i)=G(gN(i));

  end

  fori=1:

length(gN)%找到基本可行基的检验数,将其赋值为0if(J(i)~=0)

  G=G-(J(i)/gA(i,gN(i)))*gA(i,:

);

  end

  end

  flag=1;

  else

  flag=2;

  A=A1;

  Z=[-C,0];%单纯形表的第一行

  val=zeros(1,length(C));%val为最优解;

  ll=zeros(1,length(N));%比值最小原则

  end

  %%初始解问题

  whileflag==1

  fori=1:

length(gN)%J为基本可行基所对应的G的检验数

  J(i)=G(gN(i));

  JZ(i)=Z(gN(i));%JZ为基本可行基所对应的Z的检验数

  end

  fori=1:

length(gN)%找到基本可行基的检验数,将其赋值为0if(J(i)~=0)

  G=G-(J(i)/gA(i,gN(i)))*gA(i,:

);

  Z=Z-(JZ(i)/gA(i,gN(i)))*gA(i,:

);

  end

  G1=G;%G1为检验数

  G1(:

length(G1))=[];

  D=max(G1);%找到检验数的最大值

  if(D  if(G(length(G))>=1)

  disp('此情况无解');

  flag=0;

  else

  if(G(length(G))>=0)

  fori=1:

length(gN)

  if(max(gN)  flag=2;

  forj=1:

length(Nn)

  a=Nn

(1);

  gA(:

a)=[];

  Z(a)=[];

  end

  A=gA;

  N=gN;

  break;

  end

  end

  end

  end

  else%检验数大于0

  fori=1:

length(G)

  if(G(i)==D)%找到最大的那个检验数所对应的元素forj=1:

length(gN)

  if(gA(j,i)>0)

  ll(j)=gA(j,length(G))/gA(j,i);%求比值

  else

  ll(j)=10000;

  end

  end

  d=min(ll);

  fork=1:

length(ll)%找到进基和离基

  if(ll(k)==d)

  gN(k)=i;

  gA(k,:

)=gA(k,:

)/gA(k,i);

  form=1:

k-1

  gA(m,:

)=-(gA(m,i)/gA(k,i))*gA(k,:

)+gA(m,:

);end

  forn=k+1:

length(ll)

  gA(n,:

)=-(gA(n,i)/gA(k,i))*gA(k,:

)+gA(n,:

);end

  break;

  end

  end

  end

  end

  end

  end

  while(flag==2)

  fori=1:

length(N)%J为基本可行基所对应的检验数

  J(i)=Z(N(i));

  end

  fori=1:

length(N)%找到基本可行基的检验数,将其赋值为0if(J(i)~=0)

  Z=Z-(J(i)/A(i,N(i)))*A(i,:

);

  end

  end

  Z1=Z;%Z1为检验数

  Z1(:

length(Z1))=[];

  D=max(Z1);%找到检验数的最大值

  if(D  disp('已找到最优解和最优值')

  fori=1:

length(N)

  val(N(i))=A(i,length(Z));

  end

  S=Z(length(Z));

  disp('val');

  disp(val);

  flag=0;

  else%检验数大于0

  fori=1:

length(Z)

  if(Z(i)==D)%找到最大的那个检验数所对应的元素forj=1:

length(N)

  if(A(j,i)>0)

  ll(j)=A(j,length(Z))/A(j,i);%求比值

  else

  ll(j)=10000;

  end

  end

  d=min(ll);

  if(d==10000)

  disp('此问题无界')

  flag=0;

  break;

  end

  fork=1:

length(ll)%找到进基和离基

  if(ll(k)==d)

  N(k)=i;

  A(k,:

)=A(k,:

)/A(k,i);

  form=1:

k-1

  A(m,:

)=-(A(m,i)/A(k,i))*A(k,:

)+A(m,:

);end

  forn=k+1:

length(ll)

  A(n,:

)=-(A(n,i)/A(k,i))*A(k,:

)+A(n,:

);end

  break

  end

  end

  end

  end

  end

  end

  五、运行结果与数据测试

  参考例题:

  例1:

  Minz=3x1+x2+x3+x4

  s.t.-2x1+2x2+x3=4

  3x1+2x+x4=6

  Xj>=0,j=1,2,3,4

  在workspace中写入,形式如下:

  >>A=[-22104

  31016]

  A=

  -22104

  31016

  >>C=[3111]

  C=

  3111

篇三:

运筹学实验报告

  运筹学实验报告

  实验内容:

整数规划问题的建模和求解。

案例4.3“建业银行职员的上班安排”。

  一、问题提出

  南平市青山区建业银行分理处每周七天营业,从周一到周日每天值班人员数见下表:

  试回答:

a)银行职员每周上班5天,休息两天,但具体哪几天上班由银行排定。

领导保证每周六或周日两个公休日内至少安排一天休息,该分理处至少配备多少名职员才能满足值班需要;b)因排定的值班表有的职员每周六、日均得到休息,有的只能安排一个公休日休息,显得不公。

于是研究一个值班的倒班计划,做到在一个周期内,每名职工公休日休息的天数一致,问如何才能做到这一点。

  二、问题简述

  从该银行每天需要值班人数表可看出:

七天所需职员人数分别为15.17.14.14.15.16.18。

每个职员每周值五个班。

为了满足值班需要,并且公平合理。

现制定以下两种方案,通过建立整数规划模型并求解,分析各种方案的最佳安排方式。

  方案一:

每个银行职员每周上班5天,休息2天,且每周末至少休息1天。

  方案二:

每个银行职员每周上班5天,休息2天,每周末至少休息1天,且每名职工周末休息天数一致。

  三、符号说明

  四、问题分析

  方案一:

  每名职员在周六、周日两天内至少休息一天,每周共上班5天。

由每名职员在周六、周日两天内至少休息一天可知,周六周日休息人数a6+a7>=t。

而通过每周共上班5天,可推出

  ?

a(i=1、2...7)=2t。

而由表格可知

  i

  因此综上,可列出方程。

  方案二:

  每名职员在周六、周日两天内至少休息一天且休息天数一致。

每名职员每周共上班5天。

由每名职员在周六、周日两天内至少休息一天且休息天数一致可知,任何一名职员只能在周末休息一天,否则就无人上班了。

因此,遇上一体的唯一区别在于,将a6+a7>=t改为a6+a7=t。

  五、建模及求解

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

当前位置:首页 > 工程科技 > 材料科学

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

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