运用Lingo和Matlab软件求解线性规划问题比较
线性规划在实际生活中的应用(多种方法求解,MATLAB,lingo,winQSB,含灵敏度分析)
2.每一个农场的水量分布 3X1+2X4+X7≤600 3X2+2X5+X8≤800 3X3+2X6+X9≤375
每一种作物的总种植量
X1+X2+X3≤600 X4+X5+X6≤500 X7+X8+X9≤325 非负约束 Xi≥0 , i=1,2,……9
fval =
-633333.333333211
四、Excel
最优值的选择
四种计算工具计算出来的最优值相同,但最优解,即每个农场所种农作 物的量不同,考虑到实际生活中的人力成本以及不同农作物的管理难度 等,我们决定将WinQSB(Excel)的结果作为最优解来施行
结论:
农场种植最优种植方案如下:
计算机求解过程步骤
一、WinQSB
步骤1.生成表格 步骤2.输入数据
步骤3.求解结果
输出分析:
最优解为(0, 133.33,125, 300, 200, 0, 0, 0,0) 最优值为Z=633333.334.
二、Lingo
Max=1000*(X1+X2+X3)+750*(X4+X5+X6)+250*(X7+X8+X9); X1+X4+X7<=400; X2+X5+X8<=600; X3+X6+X9<=300; 3*X1+2*X4+X7<=600; 3*X2+2*X5+X8<=800; 3*X3+2*X6+X9<=375; X1+X2+X3<=600; X4+X5+X6<=500; X7+X8+X9<=325; Xi>0(i=1,2,...,9)
Matlab与Lingo在非标准指派问题中的应用
Matlab与Lingo在非标准指派问题中的应用摘要:非标准指派问题是生产管理者在日常工作中经常会遇到的一类问题,它的数学模型是讨论指派个人需要完成项任务的目标最优化()。
为了更好地将数学与计算机结合,本文针对“人少任务多型”及“人多任务少型”两类非标准指派问题,基于数学理论方法:“加边补零法”和“加边补最小值法”,利用计算机软件Matlab与Lingo求解,高效解决问题。
关键词:非标准指派;加边补零法;加边补最小值法;Matlab;Lingo在日常生活安排和企业生产管理工作中,经常会遇到给人分派工作,如:某单位有个人需要完成项任务,根据每个人完成每项任务的工作效率来研究如何分配任务,使完成任务所消耗的总资源最少或总收益最大。
形如这样的问题称之为指派问题,指派问题是0-1型整数规划问题中比较常见的一种,它的特点是决策变量只有0和1两种取值,在问题讨论时,通常把某个人是否执行某项任务取值为1和0,建立一般指派问题与0-1规划对应关系。
目前,一般指派问题根据人数和任务数的数量关系大致有以下三种情况:(1)人数和任务数相等,即每个人必须只完成一项任务;(2)人数小于任务数,一个人可以完成几项任务;(3)人数大于任务数,一项任务可由几个人来完成。
其中,第一种指派为标准指派,它是一种最基础的指派,人与任务一对应;第二、第三种指派属于非标准指派。
对于比较复杂的非标准指派问题的模型,求解也更加困难。
因此,本文通过具体的案例采用计算机软件[1,2]Matlab和Lingo求解非标准型问题。
1预备知识1.1标准指派问题标准指派问题是经济计划工作中经常遇到的一个问题。
当指派个人去完成项任务时,要求满足以下3个前提假设:人数等于任务数;每个人必须且只需完成一项任务;每项任务必须且只需一人去完成。
如果用表示第个人完成第项任务时的效率(或时间、成本等),,而变量则相应的极小化数学模型如下:由该数学模型不难看出其代数性质:每一次指派对应于一个阶排列。
线性规划问题的Lingo求解
Lingo中参数设置与调整
01
参数设置
02
调整策略
Lingo允许用户设置求解器的参数, 如求解方法、迭代次数、收敛精度等 。这些参数可以通过`@option`进行 设置。
如果求解过程中遇到问题,如无解、 解不唯一等,可以通过调整参数或修 改模型来尝试解决。常见的调整策略 包括放松约束条件、改变目标函数权 重等。
02
比较不同方案
03
验证求解结果
如果存在多个可行解,需要对不 同方案进行比较,选择最优方案。
可以通过将求解结果代入原问题 进行验证,确保求解结果的正确 性和合理性。
感谢您的观看
THANKS
问题,后面跟随线性表达式。
02 03
约束条件表示
约束条件使用`subject to`或简写为`s.t.`来引入,后面列出所有约束条 件,每个约束条件以线性表达式和关系运算符(如`<=`, `>=`, `=`, `<`, `>`)表示。
非负约束
默认情况下,Lingo中的变量是非负的,如果变量可以为负,需要使用 `@free`进行声明。
问题的解通常出现在约束条件的边界上 。
变量通常是连续的。
特点 目标函数和约束条件都是线性的。
线性规划问题应用场景
生产计划
确定各种产品的最优生产量, 以最大化利润或最小化成本。
资源分配
在有限资源下,如何最优地分 配给不同的项目或任务。
运输问题
如何最低成本地将物品从一个 地点运输到另一个地点。
金融投资
03
求解结果
通过Lingo求解,得到使得总加工时间最短的生产计划安 排。
运输问题优化案例
问题描述
某物流公司需要将一批货物从A地运往B地,可以选择不同的运输方式和路径,每种方式和路径的运输时间和成本不 同。公司需要在满足货物送达时间要求的前提下,选择最优的运输方式和路径,使得总成本最低。
3.应用LINGO、MATLAB软件求解线性规划
例3 用MATLAB解线性规划问题
min z 2 x1 x2 x3 x1 x2 2 x3 6 x 4x x 4 1 2 3 s.t. 2x1 2x2 x3 12 x1 0,x2 0,x3 5
(2)
解 Matlab程序如下: c=[-2,-1,1]; A=[1,4,-1;2,-2,1]; b=[4;12]; Aeq=[1,1,2]; beq=6; lb=[0,0,-inf]; ub=[inf,inf,5]; [x,z]=linprog(c,A,b,Aeq,beq,lb,ub) 运行后得到输出 Optimization terminated successfully. x= 4.6667 0.0000 0.6667 z= -8.6667
求解输出结果如下: Global optimal solution found at iteration: 4 Objective value: 22.40000 Variable Value Reduced Cost X1 0.000000 0.7000000 X2 12.00000 0.000000 X3 0.000000 0.6166667 X4 30.00000 0.000000 X5 10.00000 0.000000 Row Slack or Surplus Dual Price 1 22.40000 -1.000000 2 0.000000 -0.5833333 3 4.100000 0.000000 4 0.000000 -4.166667 5 0.000000 0.8833333
线性规划问题的求解方法
注:这里x、b不要求非负
例3.1
max S 3x1 x2 s.t. x1 2 x2 8 x1 6 x 0, i 1, 2 i
例3.2
max S 80 x1 45 x2 s.t. 20 x1 5 x2 400 15 x1 10 x2 450 x 0, i 1, 2 i
注:x,b不要求非负
格式为:x=linprog(f,A,b,Aeq,beq) [x,fval]=linprog(f,A,b,Aeq,beq)
3.求解线性规划问题
min S f * X s.t. AX b AeqX beq LB X UB
格式为:x=linprog(f,A,b,Aeq,beq,LB,UB)
例3 max=8*x+5*y+4*z; x+y+z<=9; 8*x+5*y+4*z<=45; x<=1; y<=5; z<=5; @gin(x); @gin(y); @gin(z); 例4 model: max=5*x1+7*x2; x1+x2<=20; 3*x1+7*x2<=80; end
例5 model: max=3*x1+2*x2; 2*x1+3*x2<=14; 2*x1+x2<9; @gin(x1); @gin(x2); end 例6 model: max=x1+x2; 3*x1+2*x2+x3<=10; 2*x2+x4<=5; @gin(x1); @gin(x2); end
基于Matlab和Lingo的曲线拟合方法比较
根 据最 小 二乘 原理 。曲线 拟合 实质 上是 一 个无 约束 优 在理 论 上 是 有 意义 的 、 行 的 . 是 , 可 但 由于计 算 机 的字 化 问题 . 即 长确 定 了它 在表 示 一 个数 时 的精 度【. 样 。 计算 过 4这 】 在
ml 【() 】 i 一 I
表 1 l u人 口模 型 拟 合 结果 对 比表 t s Mah
准 则 下 与 所 有 数 据 点 最 接 近 . 则 给 出 了衡 量 曲 线 拟 准 根 据两 种 软件 的 拟合 过 程 和拟 合结 果 不难得 到 两 合 方 法 优 劣 的标 准 . 最小 二 乘 准则 由 于其 计 算 的 方 便 个 结 论 : ) ( 对于 非线性 拟 合 问题 , 1 直接使 用 非线 性拟 合 性被广泛采用 . 因此对 于基 于最 / - 乘 准 则 的 曲线 拟 比线 性化 后再 使 用 线性 拟 合 的效果 要 好得 多.() 为 b 2作 合 方 法 . 直 接 使 用残 差 平 方 和来 比较 分 析 其 拟 合 效 用于 优 化 问题建 模 和求 解 的 专业 软件 Ln o 在 曲线 拟 应 ig 。 果。 合 的精度 方 面 比Ma a 有 过之 而无 不 及 ,这是 由其 内 tb l 在 数 学 软 件Ma a 中分 别 提 供 了 进 行 线 性 拟 合 和 部 的算 法决 定 的 . tb l 且用 Lno 非 线 性拟合 不 必 给定 参 ig做
k + ∞ _+
量 较 大 时 的 产 量 , 取n = 62 . a= O 一 即a = 故 o4 .2而 ,W()a ,
一
2 .4最 后任 取一 组试 验 数 据代 入效 应 方 程计算 出a 72 . .
的初始 值 . 比如 使 用第 二组 试 验 数据 计 算得a= . 7 . 2O0 8 0
运筹学课程设计-Matlab和Lingo求解生产存储问题之比较
运筹学课程设计-Matlab和Lingo求解生产存储问题之比较CHANGSHA UNIVERSITY OF SCIENCE & TECHNOLOGY课程名称: 运筹学题目:Matlab和Lingo求解生产存储问题之比较学生姓名:学号:班级: 数学1402所在院部: 数学与统计学院指导教师:2016 年月《运筹学》课程设计指导任务书课程名称:《运筹学》课程设计学分数:2开课系(部)、教研室:数学与计算科学学院,运筹与概率统计教研室执笔人编写时间:2014年11月一、设计目的《运筹学》是数学与应用数学专业的必修课程之一,具有很强的理论性和实际应用性。
通过课程设计,可以使学生较系统地掌握运筹学的理论和计算方法,培养学生综合利用所学的理论知识分析解决实际问题的能力、利用和查阅资料的能力、独立工作的能力以及计算机应用能力。
二、课题内容1. 掌握运筹学的基本知识,了解数学建模的基本过程;2. 掌握运用运筹学基本知识解决实际问题的基本方法;3. 查阅相关资料,了解有关问题的背景知识;4. 撰写一篇论文。
三、课题要求1. 通过对本课题的研究,以期使学生运用运筹学基本知识,解决实际问题的能力得到较大提高;2. 课题的程序设计可以使用各种编程工具完成;3. 实际问题的数学模型的假设要合理,问题分析和模型正确,模型的计算结果准确程度要高;4. 论文正文篇幅不少于3000字;5. 提交的所有材料必须符合《长沙理工大学课程设计管理规定》(长理工大教[2009]48号)的要求.四、课题完成后应提交材料的要求1. 课程设计(论文)按以下排列顺序装订成册(1) 封面(统一到学校教材中心领取,并详细填写)(2) 任务书(3) 中文摘要(4) 英文摘要(5) 目录(6) 正文(7) 参考文献(8) 附件(源程序打印件)(9) 课程设计成绩评定表2. 装订成册的论文装入资料袋资料袋统一到学校教材中心领取,并详细填写。
五、主要参考文献[1] 胡运权(运筹学教程(第4版)[M](北京:清华大学出版社,2012:1-460.[2] 韩中庚(实用运筹学模型、方法与计算[M](北京:清华大学出版社,2007:1-232.[3] 姜启源,谢金星,叶俊编(数学模型(第三版)[M](北京:高等教育出版社,2005:1-202.[4] 刘琼荪,何中市(数学实验(第一版)[M](北京:高等教育出版社,2004.01:1-247.[5] 张明辉,王学辉等编著(MATLAB6.1最新应用详解[M](北京:中国水利水电出版社,2001:1-180.六、参考日程课程设计(论文)是运筹学课程的实践教学环节,独立安排,总学时2周,在运筹学课程结束后集中进行,具体时间按照学校的教学安排。
MATLAB求解线性规划(含整数规划和01规划)问题
MATLAB 求解线性规划(含整数规划和0-1规划)问题线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约束的,变量范围为有理数的线性规划。
如:max 712z x y =+9430045200s.t 310300,0x y x y x y x y +≤⎧⎪+≤⎪⎨+≤⎪⎪≥⎩对于这类线性规划问题,数学理论已经较为完善,可以有多种方法求解此类问题。
但写这篇文章的目的并不是为了介绍数学理论,我们这里主要讲解如果利用工具求解这一类线性规划问题。
最著名,同时也是最强大的数学最优化软件是LINGO/LINDO 软件包,它能够求解多种的数学规划问题,同时还提供了多种的分析能力。
但LINGO 软件并不容易上手,同时,应用LINGO 的场合一般是大规模的线性规划问题,小小的线性规划完全可以不使用它。
一个更受科研人员欢迎的数学软件是MATLAB ,它以功能强大而称著,并有数学软件中的“航空母舰”之称。
我们这里就是要学习使用MATLAB 软件求解线性规划(含整数规划和0-1规划)问题。
为了使得不熟悉MATLAB 的人员也能够使用MATLAB 进行线性规划问题求解,本文将对MATALB 中使用到的函数和过程以及结果进行详细的分析,最后会对每一个问题都给出一个可以完全“套用”的MATLAB 程序。
我们首先从上面的线性规划问题开始,为了便于表达,将上面的式子写成矩阵形式:max 712z x y =+9430045200s.t 310300,0x y x y ⎧⎛⎫⎛⎫⎛⎫⎪ ⎪ ⎪∙≤⎪ ⎪ ⎪ ⎪⎨⎝⎭ ⎪ ⎪⎝⎭⎝⎭⎪⎪≥⎩于是约束就表达为了一个Ax b ≤不等式。
求解MATLAB 线性规划时,最常用的函数是linprog 函数,下面来介绍一下这个函数的使用。
打开MATLAB 帮助文档(PS:帮助文档的内容是最全的,只要你的英文过了专业8级),可以看到linprog 函数求解的是具有如下标准形式的线性规划:min .Tx f x A X b s t Aeq X beq lb x ub ≤⎧⎪=⎨⎪≤≤⎩公式中各符号的意义是自明的,在这里简单介绍下,首先MATLAB 中求解的是目标函数是最小值的问题,但如果我们的目标函数是求最大值,可以通过对目标函数中每一项中乘以-1,将求最大值问题转化为求最小值问题;A ,b 分别为不等式约束中的系数矩阵。
常用数学软件的功能及特点比较
常用数学软件的功能及特点比较1 常用数学软件简介从计算机发明到现在已经有50多年的时间了,随着计算机的普及,计算机技术已被广泛应用于各行各业,对科学发展起到了巨大的推动作用.伴随科学研究的不断深入,科技工作者经常需要对大量数据进行分析处理或者对复杂问题进行计算求解.为了减轻科技工作者的压力,许多数学软件被相继开发.常用的数学软件包括符号计算软件,如Mathematica、Maple等;数值计算软件,如Matlab、MathCAD等;求解最优化问题软件,如Lingo、Lindo等.数学软件的优越性主要在于它能够进行大规模的代数运算.通常我们用笔和纸进行代数运算只能处理符号较少的算式,当算式的符号上升到百位数后,手工计算便成为可能而不可行的事,主要原因是在做大量符号运算时,我们很容易出错,并且缺乏足够的耐心.当算式的符号个数上升到四位数后,手工计算便成为不可能的事,这时用计算机代数系统进行运算就可以做到准确,快捷,有效.下面介绍三个比较常用的数学软件Mathematica、Matlab和Lingo.1.1 Mathematica软件Mathematica是由美国物理学家Stephen Wolfram领导的Wolfram Research公司1986年开发的数学软件,1988年发布Mathematica系统的1.0版,因为系统精致的结构和强大的计算能力而被广为流传,经过不断扩充和修改后,在1991年和1997年推出了功能更加充实和完善的Mathematica2.0版和Mathematica3.0版,1999年又推出了Mathematica4.0版,现在的最新版本是Mathematica5.2.2版.Mathematica是一个拥有强大的符号计算和数值计算能力的软件,它将数值、符号、计算引擎、图形运算、编程语言、文字处理和与其他应用程序的高级连接等众多功能有机地结合在一起.Mathematica是一个很容易扩充和修改的系统.它提供了一套描述方法,相当于编程语言,用这个语言可以编写程序,解决各种特殊问题.Mathematica的基本系统主要是用C语言开发的,因而可以比较容易地移植到各种平台上.Mathematica还是一个交互式的计算系统,计算是在用户和Mathematica互相交换、传递数据信息的过程中完成的.Mathematica系统所接受的命令称作表达式,系统在接受了一个表达式以后就对它进行处理,然后再把计算结果返回.Mathematica是最大的单应用程序之一,它内容丰富功能强大的函数覆盖了初等数学、微积分和线性代数等众多的数学领域.Mathematica软件虽然功能强大,但它的语言非常简单,很容易学会并且熟练掌握.1.1.1 Mathematica具有强大的运算功能例111122314899π--⎫⎛⎫+⨯⨯⎪⎪⎭⎝⎭的精确解及近似解. In[1]:= 100^(1/4)*(1/9)^(-1/2)+8^(-1/3)*(4/9)^(1/2)*Pi Out[1]= 3103π+ (精确解)In[2]:= N[%]Out[2]= 10.543 (近似解)1.1.2 Mahematica 具有强大的绘图功能例2 描绘函数xy z sin =在]3,3[],[-⨯-ππ上的图形. In[1]:= Plot3D[Sin[x y],{x,-Pi,Pi},{y,-3,3}]1.1.3 Mathematica 还具有一些专用的函数,主要用来查看和设置日期、时间、目录;测试、提高表达式的计算速度等例3 ln[1]=Date[]Out[1]={2008,5,1,13,58,26}输出的元素依次是当前的年、月、日、时、分、秒.如果担心计算时间太长,还可以使用TimeConstrained[expr,t,failexpr]设置时间上限,表示当计算表达式expr 花费的时间超过t 秒后,强制中止计算,返回表达式failexpr .例4 ln[2]=TimeConstrained[∑=100001][Pr 1k k ime ,2,0]Out[2]=0. 1.2 Matlab 软件Matlab 是“MA T rix Laboratory ”的缩写,是矩阵实验室的意思.70年代中期,美国的Cleve Morler 教授在给学生开设线性代数课程时,为了让学生能使用子程序又不至于在编程上花费过多的时间便为学生编写了使用子程序的接口程序,取名为Matlab.80年代初期,Cleve Morler教授采用C语言编写了Matlab的核心.1984年,Cleve Morle和John Little成立Math Works公司,正式把Matlab 推向市场.1992年MathWorks 公司于推出了Matlab4.0版本,1994年的4.2版本扩充了4.0版本的功能,尤其在图形界面设计方面更提供了新的方法.1997年推出的5.0版允许了更多的数据结构,如单元数据、多维矩阵、对象与类等,使其成为一种更方便编程的语言.1999年推出的Matlab 5.3版在很多方面又进一步改进了Matlab语言的功能.2000年10月底推出了其全新的Matlab6.0正式版,在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进.经过不断的改进与完善,在2007年秋季推出了Matlab的最新版本R2007b.Matlab是集数值计算、符号计算和图形处理等功能于一体的工程计算应用软件.Matlab不仅可以处理代数问题和数值分析问题,而且还具有强大的图形处理和仿真模拟等功能.他的图形功能既包括对二维和三维数据可视化、图形处理、动画制作等高层次的绘图命令,也包括可以完全修改图形局部及编制完整图形界面的低层次绘图命令.可以从线型、边界面、色彩、渲染、光线、视角等方面把数据的特征表现出来.它的图象处理工具包是由一系列支持图象处理操作的函数组成的,所支持的图象处理操作有:几何操作、区域操作和块操作、线性滤波和滤波器设计、变换、图象分析和增强、二值图象操作等.图象处理工具包的函数,按功能可以分为以下几类:图象显示、图象文件输入与输出、几何操作、象素值和统计、图象分析与增强、图象变换、领域和块操作、二值图象操作、颜色映射和颜色空间转换、图象类型和类型转换、工具包参数获取和设置等.现在,Matlab已经成为线性代数、数理统计、数值分析、优化技术、自动控制、数字信号处理、图像处理、动态系统仿真等高级课程的基本教学工具.1.2.1 Matlab在数值计算中的应用.Matlab语言中提供了丰富的统计函数,使用这些函数可以完成对数据的各种统计分析工作.例5 如下给出8个学生的英语、数学、物理和化学的成绩,求各科成绩总分和各科平均成绩score =90 97 98 97 7790 67 87 56 6789 99 76 67 7778 88 98 76 8956 66 75 45 8667 78 89 75 8588 78 89 75 8576 63 84 83 90>> score_sum=sum(score)score_sum =634 636 696 574 656 (各科成绩总分)>> score_avg=score_sum./8score_avg =79.2500 79.5000 87.0000 71.7500 82.0000 (各科平均成绩)1.3 Lingo软件美国芝加哥大学的Linus Schrage教授于1980年前后开发了一套专门用于求解优化问题的软件包,后来又经过多年的不断完善与扩充,并成立了Lindo系统公司.2006年初,Lindo系统公司在全球推出Lingo的最新版本LingoV10.0版.Lingo是英文Linear Interactive and General Optimizer字首的缩写形式,即“交互式的线性和通用优化求解器”,它除了可以用于求解线形规划和二次规划问题外,还可以用来求解非线形规划问题,也可以用于一些线形和非线形方程(组)的求解等等.Lingo 软件的最大特色在于可以允许优化模型中的决策变量是整数,即整数规划,而且执行速度快.Lingo还是最优化问题的一种建模语言,包括许多常用的数学函数可以让使用者在建立优化模型时调用,并且可以接受其他的数据文件,如:文本文件、数据库文件、Excel电子表格文件等,即使对优化方面的知识了解不多的使用者,也能方便地建模和输入、有效地求解和分析实际中遇到的大规模优化问题,并能快速得到复杂优化问题的高质量的解.2 常用数学软件的功能比较通过上面的介绍可以发现不同的数学软件之间既有相同点又有不同点,比如它们都可以进行简单的符号运算,数值计算和图形显示等,但在一些具体应用上也是有差别的.与同类软件相比,Matlab 是以数值计算为主,而Mathematica以符号运算为主.所谓符号运算是指它所处理的对象不仅仅是常见的数字(如12或3.14),而是一些带有代数符号的表达式(如2x+3y=b等).它还建立了输入各种数学符号和函数的专用模板,使输入数学公式和各种操作命令更加简便直观.Mathematica带有扩展的绘图软件包,使绘图功能更加完善,操作方面比Matlab手续也更为简便.另外,在数值计算方面,Mathematica注重计算精度,为精确计算的首选软件;Matlab是一种高度集成的科学计算软件,以矩阵为基本数据单位,复数或实数则可以理解为1×1的矩阵.Matlab的很多运算都是直接针对矩阵的,所以表示起来也就特别方便.例如,复数“A=3+2i”,在Matlab中表示就是“A=3+2i”.又如,要计算两个矩阵C、D的乘积,可以表示为“C×D”,而不像大多数计算机语言那样需要用户编写循环语句来实现等.下面仅就其中的某些方面加以比较.2.1 用Mathematica和Matlab作三维图形例6 作22x y +的三维图形 应用Mathematica 命令:>>Plot3D[Sqrt[x^2+y^2],{x,-4,4},{y,-4,4}] >>4-4-224024-4-22应用Matlab 命令: >> [X,Y]=meshgrid([-4:0.5:4]); >> Z=sqrt(X.^2+Y .^2); >> mesh(Z)注 从此例可以看出Mathematica 22x y +-4,4]*[-4,4]上的图象,其中,x y 为符号;而Matlab 作图是产生一个数值矩阵,然后作出图形,其中的,x y 不是符号而是数值向量.2.2 用Mathematica 和Matlab 作微积分计算 例7 求sin ny x =的二阶导数 应用Mathematica 命令: In[1]:= D[sin[x^n],{x,2}]Out[1]= (-1 + n) n x 2-n sin'[x n ] + n 2x 22-n sin''[x n ]应用Matlab 命令: >> n=sym('n'); >> x=sym('x'); >> diff(sin(x^n),2) Ans=(n-1)* n *x^(n-2)*cos(x^n)- n^2*x^(2*n-2)*sin (x^n)注 由上面例题可知Mathematica 和Matlab 软件都可以进行简单的符号微积分的运算,但Mathematica 用起来很方便,而Matlab 软件是将变量,n x 转化为符号变量才能计算的.2.3 用Mathematica 、Matlab 和Lingo 作线性规划问题例8 某企业生产甲、乙两种产品,需要用到A,B,C 三种设备,关于产品的盈利与使用设备的工时及限制如下表所示.问:该企业应如何安排生产,使得在计划期内总利润最大?生产产品使用设备的工时、限制和产品的盈利设甲、乙产品的产量分别为1x ,2x ,建立线性规划模型: Max z=200 1x +3002x ; s.t. 21x +22x ≤12, 41x ≤16, 52x ≤15, 1x ,2x ≥0.应用Mathematica 命令:In[1]:= ConstrainedMax[200 x 1+300 x 2,{2 x 1+2 x 2<=12,4 x 1<=16,5 x 2<=15},{ x 1, x 2}] Out[1]= {1500, { x 1 -> 3, x 2 -> 3}}应用Matlab 命令:f=[-200,-300];A=[2,2;4,0;0,5];b=[12,16,15];[x,f]=linprog(f,A,b,[],[],zeros(1,2));x,-fOptimization terminated successfully.x =3.00003.0000ans =1.5000e+003应用Lingo命令:max=200*x1+300*x2;2*x1+2*x2<=12;4*x1<=16;5*x2<=15;x1>=0;x2>=0;Global optimal solution found at iteration: 2Objective value: 1500.000Variable Value Reduced Cost X1 3.000000 0.000000 X2 3.000000 0.000000 Row Slack or Surplus Dual Price1 1500.000 1.0000002 0.000000 100.00003 4.000000 0.0000004 0.000000 20.000005 3.000000 0.0000006 3.000000 0.000000注 利用Mathematica 、Matlab 和Lingo 这三个软件均可以求出此题的最优解为1x =3,2x =3,z=1500.比较起来可知Mathematica 和Matlab 只能求出最优解,而Lingo 除了可以求出最优解还可以得到灵敏度分析结果,而且Lingo 更适用于求解整数线性规划.2.4 用Matlab 和Lingo 作二次规划问题例9 2212121122min (,)2622f x x x x x x x x =-+-+s.t. 1x +2x ≤2 -1x +22x ≤2 1x ≥0, 2x ≥0应用Matlab 命令: 首先写成标准形式:Min z=(x 1,x 2)⎪⎪⎭⎫ ⎝⎛--2111⎪⎪⎭⎫⎝⎛21x x +T⎪⎪⎭⎫⎝⎛--62⎪⎪⎭⎫⎝⎛21x x ⎪⎪⎭⎫ ⎝⎛--2111⎪⎪⎭⎫ ⎝⎛21x x ≤⎪⎪⎭⎫⎝⎛22 s.t. ⎪⎪⎭⎫ ⎝⎛≤⎪⎪⎭⎫ ⎝⎛2100x x输入命令: H=[1 -1; -1 2];c=[-2 ;-6];A=[1 1; -1 2];b=[2;2]; Aeq=[];beq=[]; VLB=[0;0];VUB=[]; [x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB) x =0.6667 1.3333 z = -8.2222应用Lingo 命令: x1+x2<=2;min=-2*x1-6*x2+x1^2-2*x1*x2+2*x2^2; -x1+2*x2<=2; x1>=0; x2>=0;Local optimal solution found at iteration: 42Objective value: -7.200000Variable Value Reduced Cost X1 0.8000001 0.8909355E-08 X2 1.200000 0.000000 Row Slack or Surplus Dual Price 1 0.000000 2.799999 2 -7.200000 -1.000000 3 0.4000002 0.000000 4 0.8000001 0.000000 5 1.200000 0.000000注 此题在运算过程方面体现了Matlab 以矩阵为基本数据单位,但求解过程较为复杂,而用Lingo求解过程则更简便;在运算结果方面,用Matlab 软件的运算结果精确到小数点后面第四位,而用Lingo 软件的运算结果精确到小数点后面第七位,由此可知Lingo 为求二次规划问题的首选软件.2.5 用Mathematica 和Matlab 作矩阵的特征值和特征向量例10 求方阵a=⎪⎪⎪⎭⎫⎝⎛122212221的特征值和特征向量应用Mathematica 命令: In[1]:= a={{1,2,2},{2,1,2},{2,2,1}}; In[2]:= MatrixForm[a]Out[2]//MatrixForm= 1 2 2 2 1 2 2 2 1 In[3]:= Eigenvalues[a] Out[3]= {5, -1, -1} In[4]:= Eigenvectors[a]Out[4]= {{1, 1, 1}, {-1, 0, 1}, {-1, 1, 0}} In[5]:= Eigensystem[a]Out[5]= {{5, -1, -1}, {{1, 1, 1}, {-1, 0, 1}, {-1, 1, 0}}}应用Matlab 命令: >>a=[1,2,2;2,1,2;2,2,1];>>[C,D]=eig(a)V=0.6015 0.5522 0.57740.1775 -0.7970 0.5774-0.7789 0.2448 0.5774D=-1.0000 0 00 -1.0000 00 0 5.0000注通过比较可知用Mathematica求矩阵的特征值和特征向量过程较为繁琐,而用Matlab则更为简便、直观,同时也体现了Matlab的强大功能之一即能直接处理向量或矩阵.通过上面的比较发现,常用的各种数学软件在其功能及应用上各有特点,解决不同领域方面的问题时也各有千秋.尤其是通过比较它们的功能特点我了解到如果要求计算精度、符号计算,应该选用Mathematica软件;如果要求进行矩阵方面或图形方面的处理则应该选择Matlab软件;而Lingo 是使建立和求解线性、非线性和整数最优化模型更快更简单更有效率的综合工具.参考文献:[1] 北京[大学项目组.青鸟师友[M].北京:地质出版社,1999[2] 云舟工作室.MATLAB 6数学建模基础教程[M].北京:人民邮电出版社,2001[3] 梁浩云.Mathematica软件与数学教学[M].广州:华南理工大学出版社.2001[4] 洪伟.Maple 6实用教程[M].北京:国防工业出版社,2001[5] 苏金明.MATLAB 6.1实用指南[M].北京:电子工业出版社,2002[6] 人民教育出版社中学数学室.常用数学软件[M].北京:人民教育出版社,2003[7] Winston W L. Introduction to Mathematical Programming.Fourthedition[M]. Californian Cole-Thomson Learning,2003[8] 徐安农.Mathematica数学实验[M].北京:电子工业出版社,2004[9] Scharge L.Optimization Modeling with LINGO.LINDO Systems Inc.,2004。
matlab程序与lingo求解的比较
原理:Matlab程序:对于表二中的数据,先按用户从1~1000把偏爱程度最大(为1)的DVD分给用户,再分偏爱程度次大(为2)的DVD,依次类推,知道分配完偏爱程度最小(为10)的DVD。
其中,如果用户需求量超出现有DVD数量时,则优先分配该用户订单数字大1的DVD。
Lingo程序:按照模型求解。
算法比较:Matlab程序:由于程序是按序号1~1000优先分配偏爱度最大的DVD给用户,故当对于第j种DVDj数量少时,序号大的用户就无法得到,于是出现用户满意度很小的情况且可能第i个用户(当i很大时)得到的DVD数量少于3张。
Lingo程序:由于由软件搜索所有的情况,故可得到全局最优解,则DVD分配情况较满意。
结果比较:Matlab程序得到的前30位用户得到的DVD号及用户满意度如下表:会员DVD号DVD号DVD号满意度会员DVD号DVD号DVD号满意度1 8 82 98 16 76 84 97 362 6 38 44 17 47 67 72 353 4 50 80 18 41 60 78 394 7 18 41 19 66 84 86 385 11 66 68 20 33 45 89 376 16 19 53 21 45 50 53 377 8 26 66 22 38 55 57 398 31 35 71 23 29 41 95 329 53 78 100 24 37 41 76 3810 18 55 60 25 9 23 69 3711 2 59 63 26 22 68 91 3712 2 31 98 27 50 58 60 3113 21 78 96 28 8 34 47 3614 23 52 89 29 26 30 55 3815 11 13 66 30 37 62 70 38结合前面lingo求得的结果(表?)可知,lingo给出的分配方案可使前三十位会员的用户满意度最更高,故采用lingo的求解方案。
运用lingo和matlab软件求解线性规划问题的比较研究
运用lingo和matlab软件求解线性规划问题的比较研究近年来,线性规划问题几乎在各个领域的广泛应用,如企业管理、生产调度、图像处理、军事规划、模型计算、资源配置和最优化规划等。
尽管线性规划问题的求解有很多的理论基础以及可以用数学方法求解的方法,但是当问题较大时,用传统的数学方法很难获得满意的结果。
因此,计算机软件用于求解线性规划问题变得越来越重要。
Lingo和Matlab是当今应用最为广泛的两个线性规划软件,它们都可以帮助我们快速准确求解线性规划问题。
本文就其原理及运用方法进行比较研究。
首先,对Lingo和Matlab软件简单介绍。
Lingo是一款有效的线性规划软件,具有易用的模型构建工具,可以根据简单的语法去构建复杂的线性规划模型,能够有效地用来解决线性规划问题。
Matlab是利用直接解法和迭代解法的应用程序,具有许多内置函数可以帮助我们解决线性规划问题,而且支持多变量版本的线性规划模型,可以更好地处理大规模的线性规划问题。
其次,分析Lingo和Matlab软件在求解线性规划问题时的优势和缺点。
Lingo软件比Matlab更容易构建线性规划模型,但Lingo的缺点在于,它的计算速度比Matlab要慢得多,另外,它的可靠性和可移植性也不如Matlab好,而Matlab的求解过程更加复杂,灵活性也不如Lingo好。
最后,本文根据实例,对Lingo和Matlab软件进行了比较研究,分析了它们在求解线性规划问题时的优缺点,发现Lingo有着更容易构建模型的优势,但计算速度较慢,而Matlab则相对灵活性较差,但它的求解过程更加复杂,计算速度更快。
本文的研究结果为选择合适的软件求解线性规划提供了一定的参考,以便更好地解决线性规划问题。
本文的研究为线性规划问题求解提供了一定的理论依据,同时还指出Lingo和Matlab两个软件各有特点,可以根据实际情况来选择合适的软件进行求解。
它们在求解大型线性规划问题时都有特殊的专业利用价值,能够帮助我们有效地解决实际问题,从而节约时间、提高效率。
基于Matlab和Lingo的线性规划问题求解过程对比分析
图1最小值的求解图在Matlab 中没有求最大值函数,因此需要先将目标转化为最小值问题:min (-f )=-3x 1-7x 2;s.tx 1≤7x 2≤6x 1,x 2>0x 1+2x 2≤17⎧⎩⏐⏐⏐⏐⏐⏐⎨⏐⏐⏐⏐⏐⏐,然后进行转换即可。
Matlab 中代码设计如下:>>f =[-3,-7];>>A =[1,0;0,1;1,2];>>b =[7,6,17];>>lb =[0,0];>>[x ,fval ]=linprog (f ,A ,b ,[],[],lb )Optimization terminated.可得到x =5.0000fval =-57.00006.0000可以发现x 1和x 2取值都符合要求,即maxf =fval*(-1),则maxf =57.0000。
2.2.2基于Lingo 求线性规划最优解图2最大值的求解图3结论通过以上的基于两种软件的求最优值的过程对比可以得出,不管是使用Matlab还是Lingo,两种方法一样,但求解的程序形式有着较大的差异。
Matlab中,需要用到数组(矩阵)的知识点,所以可能需要前期的学习过程作为铺垫。
同时,也可以明显知道,Matlab中的程序接口是已经写好的,即linprog的使用格式是固定的,就线性规划而言,在日常生活中,需要使用的整数性的线性规划时就会受到一定的限制,一般的情况下,整数情况可能较少,所以关于小数化整数的过程需要自己进行编译,因此,这一过程可能对初学者很不友善,受到一定的制约。
但Matlab在进行规模庞大的变量运算时具有很大的优势,在非线性(上接第33页)息融合NFE模型的研究及应用[J].电子与信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运用Lingo和Matlab软件求解线性规划问题比较运用Lingo和Matlab软件求解线性规划问题的比较研究摘要:本文就一个给定的线性规划模型,通过介绍优化软件lingo和科学计算软件matlab中求解线性规划问题的命令和函数,指出lingo软件在求解线性规划问题上占有一定优势。
关键词:线性规划 lingo软件 matlab软件最优解
线性规划由前苏联经济学家康托洛维奇提出,它主要研究的是在线性等式(或不等式)约束条件下,使某一线性目标函数取得最大值(或最小值)的问题。
随着计算机技术的发展,借助软件可以快速对线性规划问题进行求解和分析。
目前,能够求解规划问题的数学软件比较多,常见的有优化软件lingo和科学计算软件matlab。
本文以如下线性规划为例,分别利用这二种软件来求解,并就它们在求解线性规划上的差异进行对比分析。
minz=10.8x11+10.95x12+11.1x13+11.25x14+11.1x22+
11.25x23+11.4x24+11x33+11.15x34+11.3x44;
s.t.x11+x12+x13+x14”“x(3,1) 0.000000
x(3,2) 0.000000
x(3,3) 25.00000
x(3,4) 5.000000
x(4,1) 0.000000
x(4,2) 0.000000
x(4,3) 0.000000
x(4,4) 10.00000
显然最优解同上,只是输出格式不同而已。
2 matlab求解线性规划
2.1 matlab软件简介目前,matlab提供了四十多个工具箱,这些工具箱专门针对某些具体应用领域。
matlab优化工具箱中提供了linprog函数来求解线性规
划问题。
2.2 matlab求解线性规划的命令介绍 matlab中一般使用“[ ]”、“,”或空格以及“;”来创建数组,“[ ]”中给出数组的所有元素,同行间的元素用“,”或者空格隔开,不同行之间用分号“;”隔开,并且用符号“?”置于矩阵右上角表示矩阵的转置运算。
linprog函数的常见形式如下:
形式1:x=linprog(f,a,b)
用于求解目标函数为minf′*x ,约束条件为a*x?b的线性规划问题。
其中x
表示最优解,f 表示价值列向量,a表示约束不等式中的系数矩阵(二维数组),
b(列向量)表示约束不等式中右端资源常数向量。
形式2:[x,fval]=linprog(c,a,b,aeq,beq)
相比较上面的问题,增加了等式约束,即aeq*x=beq。
其中x、c、a、b含义同上,fval表示最优解对应的目标函数值。
若没有不等式存在,则令a=[]、b=[].
形式3:[x,fval]=linprog(c,a,b,aeq,beq,vlb,vub)
增加了决策变量的上下界约束,即vlb?x?vub,其中vlb、vub分别以列向量形式存储。
如果没有不等式约束,令a=[]和b=[];
若没有等式约束,则令aeq=[]、beq=[].
2.3 matlab求解上述线性规划的具体实现
matlab程序如下:
>> clear
c=[10.8 10.95 11.1 11.25;0 11.1 11.25 11.4;0 0 11 11.15;0 0 0 11.3];
a=[1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1];
b=[25;35;30;10];
aeq=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1];
beq=[10;15;25;20];
f=c(:); %把f变成列向量
vlb=zeros(16,1); %确定决策变量的下界
vub=[inf 0 0 0 inf inf 0 0 inf inf inf 0 inf inf inf inf]; %通过取上下界值都为0,保证决策变量x21=x31=x41
=x32=x42=x43=0
[x,fval]=linprog(f,a,b,aeq,beq,vlb,vub)
运行后,得结果:
x =10.0000
12.5784
2.4216
1.6173
1.5529
21.8299
0.8044
1.0255
8.1701
10.0000
fval =773.0000
即最优解为x11=10,x12=12.5784,x13=1.6173,x14=
0.8044,x22=2.4216,x23=1.5529,x24=1.0255,x33=21.8299,
x34=8.1701,x44=10,最优值为773。
3 小结
通过以上介绍,我们发现不管是使用lingo还是matlab软件,计算的最优值
都是一样的,但最优解有些差异,而且求解的程序在形式上有较大差异。
lingo程序中,第一种方法的结构形式简单,符合原规划问题中的书写习惯,初学者容易上手,但可拓展性不强,而且对于规模较大、变量数较多的问题编程比较费时费力,对于非线性规划问题使用更是不便。
第二种方法使用集合的概念,程序易于扩展,尤其在求解规模较大的问题时优势明显。
相比较而言,matlab中的矩阵(二维数组)的输入规律稍难理解些,而且输出结果也不如lingo那么直接明了。
另外,
linprog命令只能求一般的线性规划,而不能求整数线性规划,因为matlab没有
内置命令求解整数线性规划,如果要解,需要自己编算法实现。
这种算法的编制,对普通的软件使用者来说受到一定的约束。
总的来说,尽管matlab功能很强大,
但lingo在求解线性规划模型的计算上还是相对简便的,而且可以得到内容丰富的结果输出,在关于线性规划的实际问题分析中lingo应用得更为多些。
参考文献:
[1]田维.用matlab与lindo求解线性规划[j].德宏师范高等专科学校学报,2006,1:107-111.
[2]滕飞.应用sas/or与lingo求解优化问题的比较研究[j].吉林师范大学学报(自然科学版),2011,3:36-38.
[3]叶向.实用运筹学[m].北京:中国人民大学出版社,2006.
[4]王正林,刘明.精通matalb7[m].北京:电子工业出版社,2007.。