数学建模最优化方法建模及实现分解.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验作业: 钢管订购及运输优化模型 2000年“网易杯”全国大学生数学建模竞赛B题 要铺设一条输送天然气的主管道A1→A2→…→A15,能生产这种钢管的厂家一共有:S1,S2,…S7 。厂家与管道间的交通网络已知。假设沿管道或者原来有公路,或者建有施工公路。 为方便计算,1km主管道钢管称为1单位钢管。一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂Si在指定期限内能生产该钢管的最大数量为si 个单位,钢厂1单位钢管的出厂销价为pi万元,如下表: I 1 2 3 4 5 6 7 SI 800 800 1000 2000 2000 2000 3000 Pi 160 155 155 160 155 150 160 1单位钢管的铁路运价如下表,1000km以上每增加1至100km运价增加5万元。公路运输费用为1单位钢管每公里0.1万元(不足整公里部分按整公里计算)。钢管可由铁路、公路运往铺设地点(不只是运到主管道结点A1,A2,…, A15 ,而是管道全线)。 里程(km) ≤300 301~350 351~400 401~450 451~500 运价(万元) 20 23 26 29 32 里程(km) 501~600 601~700 701~800 801~900 901~1000 运价(万元) 37 44 50 55 60 (1)请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。 (2)请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。 (3)如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图(2)的情形给出模型和结果。 需解决的问题: 1) 首先建立M文件fun.m,定义目标函数F(X): function f=fun(X); f=F(X); 其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步: 二、非线性规划问题及其Matlab 3) 建立主程序.非线性规划求解的函数是fmincon, 命令的基本格式如下: (1) x=fmincon(‘fun’,X0,A,b) (2) x=fmincon(‘fun’,X0,A,b,Aeq,beq) (3) x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB) (4) x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’) (5) x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options) (6) [x,fval]= fmincon(...) (7) [x,fval,exitflag]= fmincon(...) (8) [x,fval,exitflag,output]= fmincon(...) 输出极值点 M文件 迭代的初值 参数说明 变量上下限 注意: [1] fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为’on’),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。 [2] fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。 [3] fmincon函数可能会给出局部最优解,这与初值X0的选取有关。 1.写成标准形式: s.t. 2x1+3x2 6 s.t x1+4x2 5 x1,x2 0 例1 2.先建立M-文件 fun1.m: function f=fun1(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2 MATLAB(youh1) 3.再建立主程序youh1.m:

文档评论(0)

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

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

1亿VIP精品文档

相关文档