数学建模非线性规划模型用MATLAB++LINGO
- 格式:ppt
- 大小:2.02 MB
- 文档页数:68
一、Lingo 能做什么——Lingo 的简单模型1、简单线性规划求解(目标函数)2134maxx x z += s.t.(约束条件)⎪⎪⎩⎪⎪⎨⎧≥≤≤+≤+0,781022122121x x x x x x x(决策变量) x 1,x 2手工计算的方法注:Lingo 中“<”代表“<=”,“>”代表“>=”,Lingo 中默认的变量都是大于等于0的,不用显式给出。
求解结果:z=26,x1=2,x2=62、整数规划求解219040Max x x z += ⎪⎩⎪⎨⎧≥≤+≤+0,702075679212121x x x x x xLingo 程序求解3、0-1规划求解Max 432215.18.04.0x x x x f +++=10106234321≤+++x x x x10,,,4321或=x x x x12344、非线性规划求解||4||3||2||min 4321x x x x z +−−=s.t. ⎪⎪⎩⎪⎪⎨⎧−=+−−=−+−=+−−2132130432143214321x x x x x x x x x x x x12345、背包问题一个旅行者的背包最多只能装 6kg 物品,现有4 件物品的重量和价值分别为 2 kg ,3 kg ,3 kg ,4 kg ;1 元,1.2元,0.9元,1.1元。
问应怎样携带那些物品使得携带物品的价值最大?建模:记j x 为旅行者携带第j 件物品的件数, 取值只能为 0 或 1。
求目标函数43211.19.02.1x x x x f +++=在约束条件643324321≤+++x x x x 下的最大值.用Lingo 软件求解0-1规划计算结果6、指派问题有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表: 问指派哪个人去完成哪项工作,可使总的消耗时间为最小? 设:第i 个工人做第j 项工作用时ij t ,标志变量ij f 定义如下:变量名 取值⎩⎨⎧=其他件工作个工人去做第指派第01j i f ijmin∑∑==×4141i j ij ijt fs.t. 141=∑=i ijf()4,3,2,1=j 每份工作都有一人做∑==411j ijf()4,3,2,1=i 每人都只做一项工作(1) 集合定义部分(从“SETS :”到“ENDSET ”):定义集合及其属性,语句“work/A,B,C,D/”其结果正是定义了4个集合元素,没有定义变量名。
LINGO是一种用于线性规划、整数规划、非线性规划、混合整数规划等数学建模和优化问题的软件工具。
它可以用于解决各种实际问题,包括生产计划、物流、资源分配、网络设计等。
以下是一个简单的LINGO案例,以帮助您了解如何使用LINGO进行优化建模和求解问题:**问题描述:**假设有一家制造公司,他们生产两种产品:A和B。
公司有两个工厂,每个工厂都有不同的生产能力和成本。
公司希望确定每个工厂应该生产多少产品A和B,以最大化利润,同时满足生产能力和市场需求的限制。
**问题数据:**- 工厂1的生产能力:最多生产500个A和300个B- 工厂2的生产能力:最多生产400个A和600个B- 产品A的利润:每个A产品的利润为30美元- 产品B的利润:每个B产品的利润为40美元- 生产一个A产品的成本:工厂1为10美元,工厂2为15美元- 生产一个B产品的成本:工厂1为12美元,工厂2为10美元- 市场需求:产品A的市场需求为600个,产品B的市场需求为800个**LINGO建模和求解:**在LINGO中,可以使用数学表达式来建立优化模型。
以下是一个LINGO模型的示例:```SETS:FACTORIES = 1..2;ENDSETSDATA:CAPACITY(FACTORIES) = 500 300400 600;PROFIT = 30 40;COST(FACTORIES) = 10 1512 10;DEMAND = 600 800;ENDDATAVARIABLES:X(FACTORIES) = 0;ENDVARIABLESMAX = @SUM(FACTORIES, PROFIT(FACTORIES) * X(FACTORIES))SUBJECT TOCAPACITY_CONSTRAINT(F)$(FACTORIES): @SUM(FACTORIES, COST(F, FACTORIES) * X(FACTORIES)) <= CAPACITY(F);DEMAND_CONSTRAINT(I)$(FACTORIES): @SUM(FACTORIES,X(FACTORIES)) >= DEMAND(I);POSITIVE_X(F)$(FACTORIES): X(F) >= 0;ENDSUBMODEL:MAX;SOLVE;```上述LINGO模型首先定义了SETS、DATA、VARIABLES和MAX,然后使用SUBJECT TO部分定义了约束条件,最后使用MODEL和SOLVE命令求解优化问题。
⾮线性整数规划模型(LINGO代码实现)⾮线性整数规划模型LINGO讲解分析:第⼀步:确定决策变量问题是确定调运⽅案,使得总运输费⽤最⼩。
⽽总运输费⽤=货物运量*货物单价,题⽬给了货物单价了,我们求货物运量即可,这⾥的货物运量则是我们的决策变量。
第⼆步:确定⽬标函数和约束条件上图第⼀⾏就是我们的⽬标函数,下⾯三⾏是我们的约束条件,在满⾜约束条件的前提下,软件会不断遍历Xij所有可能的值,然后z也会根据Xij的变化⽽产⽣不同的值,这个时候⽤⼀个min函数取所有可能值当中的最⼩值,即可。
第三步:⽤LINGO代码实现model:title 最少运费问题;sets:!集合的定义,WH是集合的名字,W1..W6是集合的长度,⼀般写成1..6,相当于创建了⼀个能放六个元素的容器WH,是抽象的,是虚⽆的,是⼀种声明,告诉我们“:”后⾯的变量是⼀个什么类型的变量,显然,后⾯的AI是⼀个确确实实有六个数的数组,是具体的,是实在WH/W1..W6/:AI;!集合的名称、集合内的成员、集合的属性(可以看成是与改集合有关的变量或常量,相当与数组);VD/V1..V8/:DJ;links(WH,VD):C,X;!以WH和VD为基础,衍⽣集合。
相当于把两个向量结合在⼀起,形成⼀个⼆维数组,有⾏和列,C和X这两个变量是实在的具体的⼆维数组,只不过后⾯C我们赋值了,X是通过系统根据约束条件和⽬标函数⾃⼰赋值的;endsetsdata:!数据段;AI=60,55,51,43,41,52;DJ=35,37,22,32,41,32,43,38;C=6,2,6,7,4,2,5,94,9,5,3,8,5,8,25,2,1,9,7,4,3,37,6,7,3,9,2,7,12,3,9,5,7,2,6,55,5,2,2,8,1,4,3;enddatamin=@sum(links(I,J):c(i,j)*x(i,j)); !⽬标函数.links我们上线提到了,是⼀个6X8的集合名;@for(WH(i):@sum(VD(j):x(i,j))<=AI(I));!约束条件.@for⼀出,你就要知道这⼀⾏写的就是约束条件了;@for(vd(j):@sum(WH(i):x(i,j))=DJ(j));!约束条件.;end。
数学建模实验报告班级:_____计算机科学与技术1班___学号:______11403070137___________姓名:_____ _鄢良康 ___________教师:_______黄正刚 __________计算机科学与工程学院实验一线性规划模型一、实验学时:2H二、实验类型:计算三、实验目的1、掌握建立线性规划数学模型的方法;2、用LINDO求解线性规划问题并进行灵敏度分析;3、对计算结果进行分析。
四、实验所需仪器与设备微机和LINDO软件。
五、实验内容,方法和步骤1、建立数学模型;2、用LINDO软件计算;3、输出计算结果;4、结果分析。
实验一问题内容:某厂生产A、B、C三种产品,其所需劳动力、材料等有关数据见表,要求(1)确定获得最大的产品生产计划;(2)产品A的利润在什么范围内变动时,上述计划不变;(3)如果原材料数量不增加,劳动力不足时可从市场购买,为1.8元/h。
问:该厂要不要招收劳动力扩大生产,以购多少为宜?建立数学模型:如截图所示用LINDO软件计算;输出结果:(1)确定获利最大的产品生产计划从数据中可以得出:追求的最大利润为2700元。
其中生产X1数量的50,X2数量的0,X3数量的30。
(2)产品A的利润在什么范围内变动时,上述最优计划不变?30+18=4830-6=24故波动范围在24-48之间。
(4)如果原材料的数量不增,劳动力不足时可从市场购买,伟1.8/h。
问:该厂要不要招收劳动力扩大生产,以购买多少为宜?答:选择购买150个单位。
根据影子价格分析,对于劳动力的购买,每增加1小时,总利润增长为2元大于购买力1.8元,所以选择购买,最大为150个劳动力。
实验二非线性规划模型一、实验学时:1H二、实验类型:计算三、实验目的掌握LINGO求解非线性规划的方法。
四、实验所需仪器与设备微机、LINGO软件。
五、实验内容,方法和步骤1、把非线性规划模型输入LINGO软件计算;2、输出计算结果。
Lindo 和Lingo 数学软件的简单使用方法一、Lindo最新版本:6.1版(注册版)限制:4000个约束、8000个变量、800个整型变量功能:可以求解线性规划、整数规划、混合整数规划、二次规划、目标规划。
我们主要用它来求解整数规划或混合整数规划。
特点:执行速度非常快 例1:求解整数规划问题12121212max 58..65945,0z x x s t x x x x x x =++≤+≤≥且整解:在lindo 的运行窗口中输入 max 5x1+8x2 stx1+x2<6 5x1+9x2<45 end gin 2然后按Solve 菜单或快捷键得运行结果。
OBJECTIVE FUNCTION V ALUE (目标函数最优值) 1) 40.00000VARIABLE V ALUE REDUCED COST (变量增加1时目标函数改变量) X1 0.000000 -5.000000 X2 5.000000 -8.000000ROW SLACK OR SURPLUS DUAL PRICES (行) (松弛变量值) (对偶价格,表示约束右边常数增加1时目标函数改变量)) 2) 1.000000 0.000000 3) 0.000000 0.000000RANGES IN WHICH THE BASIS IS UNCHANGED (灵敏度分析) OBJ COEFFICIENT RANGES (目标函数中变量的系数的变动范围,在此范围内最优解不变) V ARIABLE CURRENT ALLOWABLE ALLOWABLECOEF (当前系数) INCREASE (增加量) DECREASE (减少量) X1 5.000000 0.000000 INFINITY X2 8.000000 0.000000 INFINITYRIGHTHAND SIDE RANGES (约束条件右边常数的变化范围,在此范围内最优基不变) ROW CURRENT ALLOWABLE ALLOWABLERHS (当前系数)INCREASE (增加量) DECREASE (减少量) 2 6.000000 INFINITY 1.000000 (第一个约束) 3 45.000000 INFINITY 0.000000 (第二个约束)注意:1. 软件中已经假设所以的变量是非负的,所以非负约束不必输入; 2. 可以用 FREE 变量 来取消变量的非负限制; 3. 不区分大小写; 4. 约束条件“<=”、“>=”可以用“<”、“>”代替; 5. 变量名不能超过8个字符;6. 变量与系数间可以有空格,但不能有任何运算符号(如*等); 7. 不允许变量出现在一个约束条件的右端; 8. 输入中不能有“()”和“,”;比如4(x1+x2)应写成4x1+4x2等;9. 在一个式中同一变量不能出现一次以上,比如2x1+3x2-x1应简化为x1+3x2;gin 变量 变量为整数变量 gin nint n 模型中的前n 个变量为0/1整数变量,关于变量的顺序可由输出结果查证! 整数变量申明须放在最后(即end 后)例2:集合覆盖问题设有一集合S={1,2,3,4,5},及S 的一个子集簇P={{1,2},{1,3,5},{2,4,5},{3},{1},{4,5}},假设选择P 中各个元素的费用为1、1.5、1.5、0.8、0.8、1,试从P 中选一些元素使之覆盖S 且所选元素费用之和最小。
lingo数学模型
"lingo"是一种用于数学建模和优化的软件工具。
它提供了一个
直观的界面,用于建立和求解复杂的数学模型,包括线性规划、整
数规划、非线性规划、多目标规划等。
lingo的使用可以帮助分析
师和决策者在面临复杂的决策问题时进行优化决策。
在数学建模方面,lingo可以用来建立数学模型,包括定义决
策变量、约束条件和目标函数。
用户可以通过lingo的界面直观地
输入模型的各个部分,而无需深入了解数学建模的具体语法和规则。
这使得非专业的用户也能够快速地建立数学模型。
在优化方面,lingo提供了强大的求解算法,可以对各种类型
的数学模型进行求解,以找到最优的决策方案。
lingo支持对模型
进行灵敏度分析,帮助用户了解参数变化对最优解的影响,从而更
好地进行决策。
除了数学建模和优化外,lingo还具有数据可视化功能,可以
直观地展示模型的结果和决策方案。
这有助于用户向决策者传达模
型分析的结果,从而更好地支持决策过程。
总的来说,lingo作为数学建模和优化工具,为用户提供了一
个方便、强大的平台,帮助他们解决复杂的决策问题。
通过lingo,用户可以更好地理解问题、制定决策,并得到最优的解决方案。
Lingo介绍Lingo是美国LINDO系统公司(Lindo Symtem Inc)开发的求解数学规划系列软件中的一个(其他软件为LINGDO,GINO,What’s Best等),它的主要功能是求解大型线性、非线性和整数规划问题,目前的版本是lingo11.0。
lingo分为Demo、solve suite、hyper、industrial、extended等六类不同版本,只有Demo版本是免费的,其他版本需要向LINDO系统公司(在中国的代理商)购买,Lingo的不同版本对模型的变量总数、非线性变量个数、整型变量个数和约束条件的数量做出不同的限制(其中extended版本无限制)。
Lingo的主要功能特色为:(1)既能求解线性规划,也有较强的求解非线性规划的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强;(4)内置建模语言,提供几十种内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为Lingo语言;(6)能方便地与excel、数据库等其他软件交换数据。
学校图书馆40本《lingo和excel在数学建模中的应用》,袁新生、邵大宏、郁时炼主编,科学出版社Lingo程序设计简要说明在数学建模中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。
在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。
一般我们用LINGO来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。
LINGO只是一个求解工具,我们主要的任务还是模型的建立!当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model –LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。
数学建模实验报告1.解析:此题属于0-1模型问题。
设队员序号为i ,泳姿为j ,记c ij 为队员i 第j 种泳姿的百米成绩,若选择队员i 参加泳姿j 的比赛,记x ij =1, 否则记xij =0;则有,目标函数为∑∑===4151j i ij ij x c Z Min ,每个人最多选泳姿为1,则有5,1,141=≤∑=i xj ij,每种泳姿有且仅有1人,则有4,1,151==∑=j xi ij。
若丁的蛙泳成绩退步及戊的自由泳成绩进步,则将c43的值和c54的值改变即可。
实验过程及运行结果如下:若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,计算结果如下:通过计算结果可知,在原数据的情况下,队伍的选择应该是甲参加自由泳,乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊不参加任何比赛,且最好的时间是253.2秒。
若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,则组成接力的比赛队伍调整为乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊参加自由泳,甲不参加任何比赛。
2.解析:此题属于线性规划问题。
已知某工厂用1A 、2A 两台机床加工1B 、2B 、3B 三种不同的零件,设1A 生产1B 、2B 、3B 的个数分别为1x 、2x 、3x ,2A 生产1B 、2B 、3B 的个数分别为4x 、5x 、6x ,则目标函数为min=1*2*1x +2*3*2x +3*5*3x +1*3*4x +1*3*5x +3*6*6x ;1A 加工的工时小于80小时,2A 加工的工时小于100小时,生产1B 、2B 、3B 的总数分别为70个、50个、20个。
实验过程及运行结果如下:通过计算结果可知,当1A 生产1B 、2B 、3B 的个数分别为68个、0个、4个,2A 生产1B 、2B 、3B 的个数分别为2个、50个、16个的时候,才能得到最低的成本640元。