LINGO软件在线性规划中的运用

合集下载

最优化方法(线性规划)——用Lingo对线性规划进行灵敏度分析

最优化方法(线性规划)——用Lingo对线性规划进行灵敏度分析

lingo 软件求解线性规划及灵敏度分析注:以目标函数最大化为例进行讨论,对求最小的问题,有类似的分析方法!所有程序运行环境为lingo10。

一、用lingo 软件求解线性规划例1:m a x 23..43103512,0z x ys t x y x y x y =++≤+≤≥在模型窗口输入:model:max=2*x+3*y;4*x+3*y<=10;3*x+5*y<12;! the optimal value is :7.454545 ;End如图所示:运行结果如下(点击 工具栏上的‘solve ’或点击菜单‘lingo ’下的‘solve ’即可):Global optimal solution found. Objective value: 7.454545(最优解函数值)Infeasibilities: 0.000000Total solver iterations: 2(迭代次数)Variable (最优解) Value Reduced CostX 1.272727 0.000000Y 1.636364 0.000000Row Slack or Surplus Dual Price1 7.454545 1.0000002 0.000000 0.9090909E-013 0.000000 0.5454545例2:12123124125m a x 54..39028045z x x s t x x x x x x x x x x =+++=++=++=≥在模型窗口输入:model:max=5*x1+4*x2;x1+3*x2+x3=90;2*x1+x2+x4=80;x1+x2+x5=45;end运行(solve )结果如下:Global optimal solution found.Objective value: 215.0000Infeasibilities: 0.000000Total solver iterations: 3Variable Value Reduced CostX1 35.00000 0.000000X2 10.00000 0.000000X3 25.00000 0.000000X4 0.000000 1.000000X5 0.000000 3.000000Row Slack or Surplus Dual Price1 215.0000 1.0000002 0.000000 0.0000003 0.000000 1.0000004 0.000000 3.000000例323123234235m in 2..22312z x x s t x x x x x x x x x x =-+-+=-+=-+=≥在模型窗口输入:model:min=-x2+2*x3;x1-2*x2+x3=2;x2-3*x3+x4=1;x2-x3+x5=2;end运行结果如下:Global optimal solution found.Objective value: -1.500000Infeasibilities: 0.000000Total solver iterations: 2Variable Value Reduced CostX2 2.500000 0.000000X3 0.5000000 0.000000X1 6.500000 0.000000X4 0.000000 0.5000000X5 0.000000 0.5000000Row Slack or Surplus Dual Price1 -1.500000 -1.0000002 0.000000 0.0000003 0.000000 0.50000004 0.000000 0.5000000例4:(非线性)m in ..124x y zs t x y x z +++≤+= 在模型窗口输入:model :min =@abs (x)+@abs (y)+@abs (z);x+y<=1;2*x+z=4;@free (x);@free (y);@free(z);End求解器状态如下:(可看出是非线性模型!)运行结果为:Linearization components added:Constraints: 12Variables: 12Integers: 3Global optimal solution found.Objective value:(最优解函数值) 3.000000Objective bound: 3.000000 Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 3Variable(最优解) Value Reduced Cost X 2.000000 0.000000Y -1.000000 0.000000 Z 0.000000 0.000000Row Slack or Surplus Dual Price1 3.000000 -1.0000002 0.000000 1.0000003 0.000000 -1.000000二、用lingo软件进行灵敏度分析实例例5:m a x 603020864842 1.5202 1.50.585,,0S x y zx y z x y z x y z y x y z =++++≤++≤++≤≤≥ 在模型窗口输入:Lingo 模型:model:max=60*x+30*y+20*z;8*x+6*y+z<48;4*x+2*y+1.5*z<20;2*x+1.5*y+0.5*z<8;y<5;end(一)求解报告(solution report )通过菜单Lingo →Solve 可以得到求解报告(solution report )如下:Global optimal solution found at iteration: 0Infeasibilities: 0.000000Objective value: 280.0000Total solver iterations: 2Variable Value Reduced CostX 2.000000 0.000000Y 0.000000 5.000000Z 8.000000 0.000000Row Slack or Surplus Dual Price1 280.0000 1.0000002 24.00000 0.0000003 0.000000 10.000004 0.000000 10.000005 5.000000 0.000000分析Value,Reduced Cost ,Slack or Surplus ,Dual Price 的意义如下:1、最优解和基变量的确定Value 所在列给出了问题的最优解。

实验1 利用Lingo求解线性规划

实验1 利用Lingo求解线性规划

实验一:利用Lingo 软件求解线性规划问题实验一 利用Lingo 软件求解线性规划问题1、 实验目的和任务1.1. 进一步掌握Lingo 编程操作;1.2通过实验进一步掌握运筹学线性规划问题的建模以及求解过程,提高学生分析问题和解决问题能力。

2、 实验仪器、设备及材料计算机、Lingo3、 实验内容料场选址问题P10某公司有6个建筑工地要开工,每个工地的位置(用平面坐标a,b 表示,距离单位:km )及水泥日用量d(单位:t)由下表给出,目前有两个临时料场位于P (5,1),Q (2,7),日储量各有20t.请回答以下问题: 假设从料场到工地之间有直线道路相连,试制定每天的供应计划,即从P,Q 两料场分别向各工地运送多少吨水泥,使总的吨公量数最小。

工地的位置(a,b )及水泥日用量d建模 设工地的位置为(,)i i a b ,水泥日用量为i d ,i=1,2,…,6;料场位置为(,)j j x y ,日储量为j e ,j=1,2; 从料场j 向工地i 的运送量为ij c 。

决策变量:在问题(1)中,决策变量就是料场j 向工地i 的运送量为ij c ;在问题(2)中,决策变量除了料场j 向工地i 的运送量为ij c 外,新建料场位置(,)j j x y 也是决策变量。

目标函数:这个优化问题的目标函数f 是总砘公量数(运量乘以运输距离),所以优化目标可表为2611min j i f c ===∑∑约束条件:各工地的日用量必须满足,所以21,1,2, (6)ij ijc d i ===∑各料场的运送量不能超过日储量,所以61,1,2. ij jic e j =≤=∑求解过程编写模型程序:(介绍集合的定义及应用)model:sets:!确定变量a(1),a(2),a(3),a(4),a(5),a(6);demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(demand,supply):c;endsetsdata:!分割数据的空格与逗号或回车的作用是等价的;a=1.25 8.75 0.5 5.75 3 7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11;e=20,20;!a=enddatainit:!lingo对数据是按列赋值的,而不是按行;x,y=5,1,2,7;endinit[OBJ] min=@sum(link(i,j):c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));@for(demand(i):[demand_con] @sum(supply(j):c(i,j))=d(i););@for(supply(i):[supply_con] @sum(demand(j):c(j,i))<=e(i););@for(supply(i):@bnd(0.5,x(i),8.75);@bnd(0.75,y(i),7.75););End计算结果:(如果你使用的是试用版软件,则可能不能用全局求解器求解本例,因为问题规模太大了,激活全局最优求解程序的方法,是用“lingo|Options”菜单命令打开选项对话框,在“Global Solver”选项卡上选择“Use Global Solver”)Local optimal solution found.Objective value: 85.26604Total solver iterations: 61Variable Value Reduced CostA( 1) 1.250000 0.000000A( 2) 8.750000 0.000000A( 3) 0.5000000 0.000000A( 4) 5.750000 0.000000A( 5) 3.000000 0.000000A( 6) 7.250000 0.000000B( 1) 1.250000 0.000000B( 2) 0.7500000 0.000000B( 3) 4.750000 0.000000B( 4) 5.000000 0.000000B( 5) 6.500000 0.000000B( 6) 7.750000 0.000000D( 1) 3.000000 0.000000D( 2) 5.000000 0.000000D( 3) 4.000000 0.000000D( 4) 7.000000 0.000000D( 5) 6.000000 0.000000D( 6) 11.00000 0.000000X( 1) 3.254883 0.000000X( 2) 7.250000 0.6335133E-06 Y( 1) 5.652332 0.000000Y( 2) 7.750000 0.5438639E-06 E( 1) 20.00000 0.000000E( 2) 20.00000 0.000000C( 1, 1) 3.000000 0.000000C( 1, 2) 0.000000 4.008540C( 2, 1) 0.000000 0.2051358C( 2, 2) 5.000000 0.000000C( 3, 1) 4.000000 0.000000C( 3, 2) 0.000000 4.487750C( 4, 1) 7.000000 0.000000C( 4, 2) 0.000000 0.5535090C( 5, 1) 6.000000 0.000000C( 5, 2) 0.000000 3.544853C( 6, 1) 0.000000 4.512336C( 6, 2) 11.00000 0.000000Row Slack or Surplus Dual PriceOBJ 85.26604 -1.000000DEMAND_CON( 1) 0.000000 -4.837363DEMAND_CON( 2) 0.000000 -7.158911DEMAND_CON( 3) 0.000000 -2.898893DEMAND_CON( 4) 0.000000 -2.578982DEMAND_CON( 5) 0.000000 -0.8851584DEMAND_CON( 6) 0.000000 0.000000SUPPLY_CON( 1) 0.000000 0.000000SUPPLY_CON( 2) 4.000000 0.000000如果把料厂P,Q的位置看成是已知并且固定的,这时是LP模型,只需把上面的程序中初始段的语句移到数据段就可以了。

线性规划问题的Lingo求解

线性规划问题的Lingo求解

Lingo中参数设置与调整
01
参数设置
02
调整策略
Lingo允许用户设置求解器的参数, 如求解方法、迭代次数、收敛精度等 。这些参数可以通过`@option`进行 设置。
如果求解过程中遇到问题,如无解、 解不唯一等,可以通过调整参数或修 改模型来尝试解决。常见的调整策略 包括放松约束条件、改变目标函数权 重等。
02
比较不同方案
03
验证求解结果
如果存在多个可行解,需要对不 同方案进行比较,选择最优方案。
可以通过将求解结果代入原问题 进行验证,确保求解结果的正确 性和合理性。
感谢您的观看
THANKS
问题,后面跟随线性表达式。
02 03
约束条件表示
约束条件使用`subject to`或简写为`s.t.`来引入,后面列出所有约束条 件,每个约束条件以线性表达式和关系运算符(如`<=`, `>=`, `=`, `<`, `>`)表示。
非负约束
默认情况下,Lingo中的变量是非负的,如果变量可以为负,需要使用 `@free`进行声明。
问题的解通常出现在约束条件的边界上 。
变量通常是连续的。
特点 目标函数和约束条件都是线性的。
线性规划问题应用场景
生产计划
确定各种产品的最优生产量, 以最大化利润或最小化成本。
资源分配
在有限资源下,如何最优地分 配给不同的项目或任务。
运输问题
如何最低成本地将物品从一个 地点运输到另一个地点。
金融投资
03
求解结果
通过Lingo求解,得到使得总加工时间最短的生产计划安 排。
运输问题优化案例
问题描述
某物流公司需要将一批货物从A地运往B地,可以选择不同的运输方式和路径,每种方式和路径的运输时间和成本不 同。公司需要在满足货物送达时间要求的前提下,选择最优的运输方式和路径,使得总成本最低。

lingo解决线性规划问题的程序(经典)

lingo解决线性规划问题的程序(经典)

lingo解决线性规划问题的程序(经典)•线性规划问题概述•Lingo软件介绍•使用Lingo解决线性规划问题步目录骤•经典线性规划问题案例解析•Lingo在解决线性规划问题中的优势•总结与展望01线性规划问题概述定义:线性规划(Linear Programming,简称LP)是数学规划的一个分支,它研究的是在一组线性约束条件下,一个线性目标函数的最大或最小值问题。

特点目标函数和约束条件都是线性的。

可行域是凸集,即对于任意两个可行解,它们的凸组合仍然是可行解。

最优解如果存在,则一定在可行域的某个顶点上达到。

定义与特点生产计划资源分配运输问题金融投资01020304企业如何安排生产,使得在满足市场需求和资源限制的前提下,成本最低或利润最大。

如何合理分配有限的资源(如资金、人力、时间等),以达到最佳的效果。

如何安排货物的运输路线和数量,使得在满足供需关系的前提下,总运费最低。

投资者如何在一定的风险水平下,使得投资收益最大。

决策变量表示问题的未知量,通常用$x_1, x_2, ldots, x_n$表示。

目标函数表示问题的优化目标,通常是决策变量的线性函数,形如$z = c_1x_1 + c_2x_2 + ldots + c_nx_n$。

约束条件表示问题的限制条件,通常是决策变量的线性不等式或等式,形如$a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1$。

01$begin{aligned}02& text{max} quad z = c_1x_1 + c_2x_2 + ldots +c_nx_n03& text{s.t.} quad a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1& quadquadquad vdots& quadquadquad a_{m1}x_1 + a_{m2}x_2 + ldots + a_{mn}x_n leq (=, geq) b_m•& \quad\quad\quad x_i \geq 0, i = 1, 2, \ldots, n线性规划问题数学模型end{aligned}$其中,“s.t.”表示“subject to”,即“满足……的条件下”。

lingo软件的使用具体例子

lingo软件的使用具体例子

1
4
0
0
3
2
3
1
0
1
3
2
0
1
3
4
1
2
0
3
5
1
1
1
1
6
0
3
0
1
7
0
0
2
3
需求
50
20
15
约束 满足需求
4 x13 x22 x3x4x550 整数约束:
x22x4x53x620
x3x52x715
xi 为整数
钢管下料问题1
当余料没有用处时,通常以总根数最少为目标
目标2(总根数) M Z 2 i x 1 n x 2 x 3 x 4 x 5 x 6 x 7
客户需求
原料钢管:每根19米
4米50根
6米20根
8米15根
问题1. 如何下料最节省 ? 节省的标准是什么?
问题2. 客户增加需求:
5米10根
由于采用不同切割模式太多,会增加生产和管理成本, 规定切割模式不能超过3种。如何下料最节省?
钢管下料
切割模式
按照客户需要在一根原料钢管上安排切割的一种组合。
4米1根 6米1根
切割多少根原料钢管,最为节省?
两种 标准
1. 原料钢管剩余总余量最小 2. 所用原料钢管总根数最少
决策变量 xi ~按第i 种模式切割的原料钢管根数(i=1,2,…7)
目标1(总余量) M Z 1 3 i x 1 n x 2 3 x 3 3 x 4 x 5 x 6 3 x 7
模式 4米根数 6米根数 8米根数 余料
vk(xk,uk)gk(uk)
资源分配问题

用lingo解线性规划问题

用lingo解线性规划问题

2. 所用原料钢管总根数最少
决策变量 xi ~按第i 种模式切割的原料钢管根数(i=1,2,…7)
目标1(总余量) Min Z1 3x1 x2 3x3 3x4 x5 x6 3x7
模 式 1 2 3 4 5 6 7 需 求 4米 根数 4 3 2 1 1 0 0 50 6米 根数 0 1 0 2 1 3 0 20 8米 根数 0 0 1 0 1 0 2 15 余 料 3 1 3 3 1 1 3
x1 x2 50
12x1 8x2 480
约束条件
劳动时间 加工能力 非负约束
3x1 100 x1 , x2 0
线性 规划 模型 (LP)
模型求解
20桶牛奶生产A1, 30桶生产A2,利润3360元。
结果解释
Max= 72x1+64x2
2)x1+x2<50 3)12x1+8x2<480
解:直接在LINGO的模型窗口中输 入程序
LINDO/LINGO软件的求解过程
1. 确定常数
2. 识别类型
LINDO/LINGO预处理程序
LP QP NLP IP 全局优化(选) 分枝定界管理程序
ILP
线性优化求解程序 1. 单纯形算法 2. 内点算法(选)
IQP
INLP
非线性优化求解程序
LINDO和LINGO软件能求解的优化模型
钢管下料问题1
模式 1 2 3 4 5 6 7 4米钢管根数 4 3 2 1 1 0 0
合理切割模式
8米钢管根数 0 0 1 0 1 0 2 余料(米) 3 1 3 3 1 1 3
6米钢管根数 0 1 0 2 1 3 0
为满足客户需要,按照哪些种合理模式,每种模式 切割多少根原料钢管,最为节省? 两种 标准 1. 原料钢管剩余总余量最小

用LINGO求解线性规划的例子

用LINGO求解线性规划的例子

附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A1,或者在设备乙上用8小时加工成4公斤A2。

根据市场需求,生产的A1、A2能全部售出,且每公斤A1获利24元,每公斤A2获利16元。

现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为480小时,并且设备甲每天至多能加工100公斤A1,设备乙的加工能力没有限制。

试为该厂制定一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以购买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶?2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?数学模型:设每天用x1桶牛奶生产A1 ,用x2桶牛奶生产A2目标函数:设每天获利为z元。

x1桶牛奶可生产3x1公斤A1,获利24*3x1,x2桶牛奶可生产4*x2公斤A2,获利16*4x2,故z=72x1+64x2约束条件:原料供应:生产A1、A2的原料(牛奶)总量不超过每天的供应50桶,即x1+x2≤50劳动时间:生产A1、A2的总加工时间不超过每天正式工人总的劳动时间480小时,即12x1+8x2≤480设备能力:A1的产量不得超过设备甲每天的加工能力100小时,即3x1≤100非负约束:x1、x2均不能为负值,即x1≥0,x2≥0综上所述可得max z=72x1+64x2s.t.x1+x2≤5012x1+8x2≤4803x1≤100x1≥0,x2≥0显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。

LINGO求解线性规划用LINGO求解线性规划时,首先在LINGO软件的模型窗口输入一个LP模型,模型以MAX或MIN 开始,按线性规划问题的自然形式输入(见下面例子所示)。

运用Lingo进行线性规划求解(实例)

运用Lingo进行线性规划求解(实例)
要点一
LINGO
支持多种线性规划算法,包括单纯形法、网络算法等。
要点二
Gurobi
主要采用高级优化算法,如分支定界法、动态规划等。
LINGO与Gurobi的比较
LINGO
支持各种类型的约束条件,包括整数约束、非线性约束 等。
Gurobi
特别擅长处理大规模、非线性问题,但对线性问题的处 理能力稍弱。
LINGO
界面简洁,建模语言直观,易于学习和掌握。
Excel
需要结合多个函数和工具进行建模,对于复杂问题操作相对繁琐。
LINGO与Excel的比较
LINGO
针对优化问题进行了优化,求解速度 较快,精度较高。
Excel
求解速度较慢,对于大规模问题可能 无法得到满意的结果。
LINGO与Gurobi的比较
LINGO软件特点
高效求解
LINGO采用先进的求解算法,能够快速求解大规 模线性规划问题。
灵活建模
LINGO支持多种建模语言,用户可以根据需要选 择合适的语言进行建模。
图形界面
LINGO提供直观的图形界面,方便用户进行模型 设计和结果查看。
LINGO软件应用领域
生产计划
LINGO可用于制定生产计划,优化资源配置, 提高生产效率。
金融投资
LINGO可以用于金融投资组合优化,帮助投 资者实现风险和收益的平衡。
物流优化
LINGO可以帮助企业优化物流配送路线,降 低运输成本。
资源分配
LINGO可用于资源分配问题,如人员、设备、 资金的分配,以达到最优效果。
2023
PART 02
线性规划基本概念
REPORTING
线性规划定义
线性规划是数学优化技术的一种,它通过将问 题抽象为数学模型,利用数学方法来寻找最优 解。

LINGO的基本用法2

LINGO的基本用法2

LINGO的基本用法我们遇到的许多优化问题都可以归结为规划问题,如线性规划、非线性规划、二次规划、整数规划、动态规划、多目标规划等,当遇到变量比较多或者约束条件比较复杂情况时,想用手工计算来求解这类问题几乎是不可能的,编程计算虽然可行,但工作量大、程序长而繁琐,稍不小心就会出错.可行的办法是利用现成的软件求解,LINGO是专门用来求解各种规划问题的软件包,其功能十分强大,是求解优化模型的最佳选择.1.1LINGO入门1.1.1 概况LINGO是美国LINDO系统公司开发的求解数学线性规划系列软件中的一个,它主要功能是求解大型线性、非线性和整数规划问题.LINGO的主要功能特色为:(1)既能求解线性规划问题,也有较强的求解非线性规划问题的能力;(2)输入模型简练直观;(3)运行速度快、计算能力强;(4)内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;(5)将集合的概念引入编程语言,很容易将实际问题转换为LINGO模型;(6)能方便地与Excel、数据库等其它软件交换数据.1.1.2 LINGO的基本用法启动LINGO后,在主窗口上弹出标题为“LINGO Model-LINGO1”的窗口,称为模型窗口(通常称为LINGO程序为“模型”),如图1.1.1所示,用于输入模型,可以在该窗口内用基本类似于数学公式的形式输入小型规划模型.通常,一个优化模型由以下三部分所组成:(1)目标函数.一般表示成求某个数学表达式的最大值或最小值.(2)决策变量.目标函数值取决于哪些变量.(3)约束条件.对变量附加一些条件限制(通常用等式或不等式表示).例1.1.1某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M产品需要1个劳动日(1个工人工作8小时称为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其它条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解 设两种产品的生产量分别为12,x x ,则该问题的数学模型为 目标函数 12max z 200300x x =+.约束条件 1212100,120,2160,0,1,2.j x x x x x j ≤⎧⎪≤⎪⎨+≤⎪⎪≥=⎩(1.1.1)在Model 窗口输入如下模型: MAX =200*X1+300*X2; X1<=100; X2<=120;X1+2*X2<=160;注 LINGO 默认所有决策变量都是非负,因而变量非负条件可以不必输入. 选菜单File|Save As (或按F5)将模型存盘,默认文件格式的扩展名为.lg4. 选菜单File|Print (或按F7)可以在打印机上输出该模型. LINGO 的语法规定:(1) 求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;(2) 每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行;(3) 变量名称必须以字母(A ~Z )开头,由字母、数字和下划线所组成,长度不超过32个字符,不区分大小写;(4) 可以给语句加上标号,例如[OBJ] MAX =200*X1+300*X2; (5) 以!开头,以“;”号结束的语句是注释语句;(6) 如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;(7) LINGO 模型以语句“MODEL:”开头,以“END ”结束,对于比较简单的模型,这两个语句可以心省略.选菜单LINGO|Solve (或按Ctrl+S ),或用鼠标点击“求解”按钮,如果模型有语法错误,则弹出一个标题为“LINGO Error Message ”(错误信息)的窗口,指出在哪一行,有怎样的错误,每种错误都有一个编号.如果语法通过,LINGO 用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGO Solver Status ”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、非零变量个数、耗费内存、所花时间等信息,点击Close 关闭该窗口,屏幕上出现标题为“Solution Report ”(解的报告)的信息窗口,显示优化计算的步数、优化后的目标函数值、列出各变量的计算结果,本例的具体内容如下: Global optimal solution found.Objective value: 29000.00 Total solver iterations: 0Variable Value Reduced CostX1 100.0000 0.000000 X2 30.00000 0.000000Row Slack or Surplus Dual Price 1 29000.00 1.000000 2 0.000000 50.00000 3 90.00000 0.0000004 0.000000 150.0000该报告说明:目标函数值为29000,变量值分别为X1=100,X2=30.“Reduced Cost ”的含义是缩减成本系数(最优解中变量的Reduced Cost 值自动取零),“Row ”是输入模型中的行号,“Slack or Surplus ”的意思为松弛或剩余,即约束条件左边与右边的差值,对于“<=”不等式,右边减左边的差值称为Slack(松弛),对于“>=”不等式,左边减右边的差值称为Surplus (剩余),当约束条件的左右两边相等时,松弛或剩余的值为零,如果约束条件无法满足,即没有可行解,则松弛或剩余的值为负.“Dual Price ”的意思是影子价格,上面报告中Row 2的松弛值为0,意思是说第二行的约束条件,即第一条生产线最大生产能力已达到饱和状态(100个),影子价格为50,含义是:如果该生产线最大生产能力增加1,能使目标函数值,即利润增加50;报告中Row 3的松弛值为90,表示按照最优解安排生产(X2=30),则第三行的约束条件,即第二条生产线的最大生产能力120剩余了90,因此增加该生产线的最大生产能力对目标函数的最优值不起作用,故影子价格为0;以上结果可以保存到文件中(扩展名为.lgr ).例1.1.2 基金的优化使用(2001年建模数学竟赛C 题).假设某校基金会得到了一笔数额为M 万元的基金,打算将其存入银行,校基金会计划在n 年内每年用部分本息奖励优秀师生,要求每年的奖金额相同,且在n 年仍保留原基金数额.银行存款税后年利率见表1.1.2.表1.1.2 银行存款税后利率表存期 1年 2年 3年 5年 税后年利率%1.82.162.5922.88校基金会获得最佳的基金使用计划,以提高每年的奖金额,请在5000M =万元、5n =年的情况下设计具体存款方案.1.2 用LINGO 编程语言建立模型1.1节介绍了LINGO 的基本用法,其优点是输入模型较直观,一般的数学表达式无须作大的变换即可直接输入.对于规模较少的规划模型,用直接输入方式是有利的,但是,如果模型的变量和约束条件个数都比较多,若仍然用直接输入方式,虽然也能求解并得出结果,但是这种做法有明显不足之处:模型的编幅很长,不便于分析修改和扩展,例如,目标函数中有求和表达式102011ij iji j c x==∑∑,若直接输入的方式,将有200个ij c 和200个ij x 相乘再相加.1.2.1 LINGO 模型的基本组成LINGO 建模语言引入了集合的概念,为建立大规模数学规划模型提供了方便.用LINGO 语言编写程序来表达一个实际优化问题,称为LINGO 模型.例1.2.1 某公司有6个供货栈(仓库),现有8个客户各要一批货,各供货栈到8个客户处的单位货物运输价见表1.2.1.解 引入决策变量ij x ,表示从第i 个货栈到第j 个客户的货物运量.用符号ij c 表示从第i 个货栈到第j 个客户的单位货物运价,i a 表示第i 个货栈的最大供货量,j d 表示第j 个客户的需求量.则本问题的数学模型为:6811min ij ij i j z c x ===∑∑,8161,1,2,,6..,1,2,,80,1,2,,6,1,2,,8ij i j ij j i ij x a i s t x d j x i j ==⎧≤=⎪⎪⎪==⎨⎪⎪≥==⎪⎩∑∑ (1.2.1)1.集合定义部分LINGO 将集合(SET)的概念引入建模语言,集合是一组相关对象构成的组合,代表模型中的实际事物,并与数学变量及常量联系起来,是实际问题到数学的抽象.例1.2.1中的6个仓库可以看成是一个集合,8个客户可以看成另一个集合.每个集合在使用之前需要预先给出定义,定义集合时要明确三方面内容:集合的名称、集合内的成员(组成集合的个体,也称元素)、集合的属性(可以看成是与该集合有关的变量或常量,相关于数组).定义仓库集合:WH/w1..w6/:AI;其中WH 是集合的名称,w1..w6是集合内成员,“..”是特定的省略号(如果不用该省略号,也可以把成员一一列举出来,成员之间用逗号或空格分开),表明该集合有6个成员,分别对应6个货栈,AI 是集合的属性,它可以看成一个一维数组,有6个分量,分别表示各货栈现有货物的总数.集合、成员、属性的命名规则与变量相同,可按自己的意愿,用有一定意义的字母数字串来表示,式中“/”和“/:”是规定的语法规则.定义客户集合:VD/v1..v8/:DJ;该集合有8个成员,DJ 是集合的属性(有8个分量)表示各客户的需求量. 定义表示运输关系(路线)的集合:LINKS(WH,VD):C,X;该集合以初始集合WH 和DJ 为基础,称为衍生集合(或称派生集合),C 和X 是该衍生集合的两个属性.衍生集合的定义语句有如下要素组成:(1) 集合的名称; (2) 对应的初始集合;(3) 集合的成员(可以省略不写明); (4) 集合的属性(可以没有).定义衍生集合时可以用罗列的方式将衍生集合的成员一一列举出来,如果省略不写,则默认衍生集合的成员取它的所对应初始集合的所有可能的组合,上述衍生集合LINKS 的定义中没有指明成员,而它对应的初始集合WH 有6个成员,VD 有8个成员,因此LINKS 成员取WH 和VD 的所有可能组合,即集合LINKS 有48个成员,48个成员可以排列成一个矩阵,其行数与集合WH 的成员个数相等,列数与集合VD 的成员个数相等.相应地,集合LINKS 的属性C 和X 都相当于二维数组,各有48个分量,C 表示货栈i w 到客户j v 的单位货物运价,X 表示货栈i w 到客户j v 的货物运量.本模型完整的集合定义为:SETS :WH/W1..W6/:AI; VD/V1..V8/:DJ; LINKS(WH,VD):C:X; ENDSETS注 集合定义部分以语句SETS :开始,以语句ENDSETS 结束,这两个语句必须单独成一行. ENDSETS 后面不加标点符号.2.数据初始化(数据段)LINGO 建模语言通过对数据初始化部分来实现对已知属性赋以初始值,格式为: DATA :AI=60,55,51,43,41,52;DJ=35,37,22,32,41,32,43,38; C=6,2,6,7,4,2,5,9 4,9,5,3,8,5,8,2 5,2,1,9,7,4,3,3 7,6,7,3,9,2,7,1 2,3,9,5,7,2,6,5 5,5,2,2,8,1,4,3;ENDDATA3.目标函数和约束条件目标函数表达式 6811min ij iji j z c x===∑∑用LINGO 语句表示为:MIN =@SUM (LINKS(I,J):C(I,J)*X(I,J));式中,@SUM 是LINGO 提供的内部函数,其作用是对某个集合的所有成员,求指定表达式的和,该函数需要两个参数,第一个参数是集合名称,指定对该集合所有成员求和,如果此集合是一个初始集合,它有m 个成员,则求和运算对这m 个成员进行,相当于求1mi =∑,第二参数是一个表达式,表示求和运算对该表达式进行.此处@SUM 的第一个参数是LINKS(I,J),表示求和运算对衍生集合LINKS 进行,该集合的维数是2,共有48个成员,运算规则是:选对48个成员分别求表达式C(I,J)*X(I,J)的值,然后求和,相当于求6811ij iji j c x==∑∑,表达式中的C 和X 是集合LINKS 的两个属性,它们各有48个分量.注 如果表达式中参与运算的属性属于同一个集合,则@SUM 语句中索引(相当于矩阵或数组的下标)可以省略,假如表达式中参与运算的属性属于不同的集合,则不能省略属性的索引.本例的目标函数可以表示成:MIN =@SUM (LINKS:C*X);约束条件81,1,2,,6iji j xa i =≤=∑实际上表示了6个不等式,用LINGO 语言表示该约束条件,语句为:@FOR (WH(I):@SUM (VD(J):X(I,J))<=AI(I));语句中的@FOR 是LINGO 提供的内部函数,它的作用是对某个集合的所有成员分别生成一个约束表达式,它有两个参数,第一个参数是集合名称,表示对该集合的所有成员生成对应的约束表达式,上述@FOR 的第一个参数是WH ,它表示货栈,共6个成员,故应生成6个约束表达式,@FOR 的第二个参数是约束表达式的具体内容,此处再调用@SUM 函数,表示约束表达式的左边是求和,是对集合VD 的8个成员,并且对表达式X(I,J)中的第二维J 求和,即81ijj x=∑,约束表达式的右边是集合WH 的属性AI ,它有6个分量,与6个约束表达式一一对应.本语句中的属性分别属于不同的集合,所以不能省略索引I ,J.注 @SUM 和@FOR 函数可以嵌套使用.同样地,约束条件61,1,2,,8ijj i cd j ===∑用LINGO 语句表示为:@FOR (VD(J):@SUM (WH(I):X(I,J))=DJ(J)); 目标函数及约束条件的模型为:MIN =@SUM (LINKS(I,J):C(I,J)*X(I,J)); @FOR (WH(I):@SUM (VD(J):X(I,J))<=AI(I));@FOR(VD(J):@SUM(WH(I):X(I,J))=DJ(J));4.完整的模型MODEL:SETS:WH/W1..W6/:AI;VD/V1..V8/:DJ;LINKS(WH,VD):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));@FOR(WH(I):@SUM(VD(J):X(I,J))<=AI(I));@FOR(VD(J):@SUM(WH(I):X(I,J))=DJ(J));END注 LINGO模型以语句MODEL:开始,以语句END结束,这两个语句单独成一行.完整的模型由集合定义、数据段、目标函数和约束条件等部分组成,这几个部分的先后次序无关紧要,!开头语句是注释语句(可有可无).选择菜单LINGO|Solve(或按Ctrl+S),或用鼠标点击“求解”按钮,在“Solution Report”信息窗口中,看到具体求解结果.最优运输方案1.3 LINGO的运算符和函数1.3.1 LINGO的常用运算符1.算术运算符^乘方﹡乘/除﹢加﹣减LINGO唯一的一元算术运算符是取反函数“﹣”.算术运算术的优先级别为:单目“-”最高,其余依次为^,*和/,+和-,同级自左至右,加括号可改变运算次序.2.逻辑运算符在LINGO中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥.在创建稀疏集时用在成员资格过滤器中.LINGO具有9种逻辑运算符:3.关系运算符关系运算符通常用在约束条件表达式中,用来指定约束条件表达式左边与右边必须满足的关系,有以下三种:= <= >= LINGO中没有单独的“<”和“>”关系.1.3.2 LINGO函数在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。

Lingo与线性规划

Lingo与线性规划

Lingo 与线性规划线性规划的标准形式是1111111..0,1,2,,n n m mn n m i a x a x b s t a x a x b x i n+≤⎧⎪⎪⎨+≤⎪⎪≥=⎩(1) 其中11n n z c x c x =++称为目标函数,自变量i x 称为决策变量,不等式组(1)称为约束条件.满足不等式组(1)的所有1(,,)n x x 的集合称为可行域,在可行域里面使得z 取最小值的**1(,,)n x x 称为最优解,最优解对应的函数值称为最优值。

求解优化模型的主要软件有Lingo 、Matlab 、Excel 等。

其中Lingo 是一款专业求解优化模型的软件,有其他软件不可替代的方便功能。

本文将简要介绍其在线性规划领域的应用。

一、基本规定1、目标函数输入格式max=函数解析式;或者min=函数解析式; 2、约束条件输入格式利用:>、<、>=、<=等符号。

但是>与>=没有区别。

Lingo 软件默认所以自变量都大于等于0.3、运算加(+),减(-),乘(*),除(/),乘方(x^a),要注意乘号(*)不能省略。

4、变量名不区分大小写字母,不超过32个字符,必须以字母开头。

5、标点符号每个语句以分号“;”结束,感叹号“!”开始的是说明语句(说明语句也需要以分号“;”结束)。

但是,model ,sets ,data 以“:”结尾。

endsets ,enddata ,end 尾部不加任何符号。

6、命令不考虑先后次序7、MODEL 语句一般程序必须先输入MODEL :表示开始输入模型,以“END”结束。

对简单的模型,这两个语句也可以省略。

8、改变变量的取值范围@bin(变量名);限制该变量为0或1.@bnd(a,变量名,b );限制该变量介于a,b 之间. @free(变量名);允许该变量为负数. @gin(变量名);限制该变量为整数.例1求目标函数1223z x x =+的最小值,约束条件为 输入Lingo 程序: min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 有两种运行方式:1、点击工具条上的按钮即可。

LINGO软件在线性规划案例教学中的应用

LINGO软件在线性规划案例教学中的应用

2 案例 分 析
丁学 L 学习线性 规划时 . 遍 感觉 公式 多 . 定碑 多 , 运 弹 复
R ■ i
, ● ,口 日 1l  ̄ 05 00 0. 0
∞嘲 ,n ● i.O 0 0OO O

, ●
0 . 0 0 0 0 0 0
e t * ‘ bil ^t^ t ■: f 辨 # l■ e t e *● 《{ 蝴 :
■ n 曲 1● Xj
嘲 1r 蚺
■●● 州 0.咐
C哪 OO 0
1 50. O o。 a
, 口。 o0 瑚
口. O oo O
科技・ 探索・ 争鸣
S c 科 i e n c e N 技 F e c h 视 n o l o g  ̄ 界 V i s i o n
妇国题
L I N GO软件在线性规划案例教学中的应用
梁 彩霞 ( 肇庆学 院 数 学与 统计 学院 , 广东 肇庆 5 2 6 0 6 1 )
鼹u 劳再 0 l ・ l u 脯 G o ’ M 函 o - G a 射嘲
鲰≯
…一 …
一j— —
鼾 耘

2‘ l
角 一 ■ 璺』
- l jO0;
旦』 剧
剧 里 j
3・ l ■ ・ . 5tO
I 2 0 虹 + 2 蝴 ‘ ¨ i l . 2 + . ‘ ■ 2 ‘ - 3 0 0 ;
受川广 t 欢迎 …
从I J N G O浆 I t 『 l 选抒 i h e按钮 . 僻

《 触 {

e ‘
抬 m 篓 ~ 一

旦 l l f j — 』 曼l 』 垒 睦l :【 . i l 霹 l 星捷

lingo解决线性规划问题的程序(经典)

lingo解决线性规划问题的程序(经典)

Lingo12软件培训教案Lingo 主要用于求解线性规划,整数规划,非线性规划,V10以上版本可编程。

例1 一个简单的线性规划问题0 ,600 2100350 st.3 2max >=<=+=<<=++=y x y x x y x y x z !exam_1.lg4 源程序max = 2*x+3*y;[st_1] x+y<350;[st_2] x<100;2*x+y<600; !决策变量黙认为非负; <相当于<=; 大小写不区分当规划问题的规模很大时,需要定义数组(或称为矩阵),以及下标集(set) 下面定义下标集和对应数组的三种方法,效果相同::r1 = r2 = r3, a = b = c. sets :r1/1..3/:a;r2 : b;r3 : c;link2(r1,r2): x;link3(r1,r2,r3): y;endsetsdata :ALPHA = 0.7;a=11 12 13 ;r2 = 1..3;b = 11 12 13;c = 11 12 13;enddata例2 运输问题解: 设决策变量ij x = 第i 个发点到第j 个售点的运货量,i =1,2,…m; j =1,2,…n; 记为ij c =第i 个发点到第j 个售点的运输单价,i =1,2,…m; j =1,2,…n 记i s =第i 个发点的产量, i =1,2,…m; 记j d =第j 个售点的需求量, j =1,2,…n. 其中,m = 6; n = 8.设目标函数为总成本,约束条件为(1)产量约束;(2)需求约束。

于是形成如下规划问题:nj m i x n j d xm i s x x c ij j n i ij i mj ij m i nj ij ij ,...,2,1,,...,2,1,0 ,...,2,1,,...,2,1, st.z min 1111==>=<==<==∑∑∑∑====把上述程序翻译成LINGO 语言,编制程序如下:!exam_2.lg4 源程序model : !6发点8收点运输问题;sets :rows/1..6/: s; !发点的产量限制;cols/1..8/: d; !售点的需求限制;links(rows,cols): c, x; !运输单价,决策运输量;endsets!-------------------------------------;data:s = 60,55,51,43,41,52;d = 35 37 22 32 41 32 43 38;c = 6 2 6 7 4 2 9 54 95 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;enddata!------------------------------------;min = @sum(links: c*x); !目标函数=运输总成本;@for(rows(i):@sum(cols(j): x(i,j))<=s(i) ); ! 产量约束;@for(cols(j):@sum(rows(i): x(i,j))=d(j) ); !需求约束;end例3把上述程序进行改进,引进运行子模块和打印运算结果的语句:!exam_3.lg4 源程序model: !6发点8收点运输问题;sets:rows/1..6/: s; !发点的产量限制;cols/1..8/: d; !售点的需求限制;links(rows,cols): c, x; !运输单价,决策运输量; endsets!==================================;data:s = 60,55,51,43,41,52;d = 35 37 22 32 41 32 43 38;c = 6 2 6 7 4 2 9 54 95 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;enddata!==================================;submodel transfer:min = cost; ! 目标函数极小化;cost = @sum(links: c*x); !目标函数:运输总成本;@for(rows(i):@sum(cols(j): x(i,j)) < s(i) ); ! 产量约束;@for(cols(j):@sum(rows(i): x(i,j)) > d(j) ); !需求约束;endsubmodel!==================================;calc:@solve(transfer); !运行子模块(解线性规划);@divert('transfer_out.txt');!向.txt文件按自定格式输出数据;@write('最小运输成本=',cost,@newline(1),'最优运输方案x=');@for(rows(i):@write(@newline(1));@writefor(cols(j): ' ',@format(x(i,j),'3.0f') ) );@divert(); !关闭输出文件;endcalcend打开transfer_out.txt文件,内容为:最小运输成本=664最优运输方案x=0 19 0 0 41 0 0 01 0 0 32 0 0 0 00 11 0 0 0 0 40 00 0 0 0 0 5 0 3834 7 0 0 0 0 0 00 0 22 0 0 27 3 0例4data段的编写技巧(1):从txt文件中读取原始数据!exam_3.lg4 源程序中的data也可以写为:data:s = @file('transfer_data.txt');d = @file('transfer_data.txt');c = @file('transfer_data.txt');enddata其中,transfer_data.txt的内容为:!transfer.lg4程序的数据;!产量约束s= ;60,55,51,43,41,52 ~!需求约束d= ;35 37 22 32 41 32 43 38 ~!运输单价c= ;6 2 67 4 2 9 54 95 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 ~!注:字符~是数据分割符,若无此符,视所有数据为一个数据块,只赋给一个变量;例5lingo程序的的3种输入和3种输出方法;!exam_5.lg4的源程序;sets:rows/1..3/: ;cols/1..4/: ;link(rows,cols): a, b, mat1, mat2;endsetsdata:b = 1,2,3,45,6,7,89,10,11,12; !程序内输入;a = @file('a.txt'); !外部txt文件输入;mat1 = @ole('d:\lingo12\data.xls',mat1); !EXcel文件输入;enddatacalc:@text('a_out.txt') = a; !列向量形式输出数据;@for(link: mat2 = 2*mat1);@ole('d:\lingo12\data.xls') = mat2 ;!把mat2输出到xls文件中的同名数据块;!向.txt文件按自定格式输出数据(参照前例);Endcalc例6程序段中的循环和选择结构举例!exam_6.lg4的源程序;sets:rows/1..5/:;cols/1..3/:;links(rows,cols):d;endsetsdata:d=0 2 34 3 21 3 24 7 22 1 6;enddatacalc:i=1;@while(i#le#5:a = d(i,1);b = d(i,2);c = d(i,3);@ifc(a#eq#0:@write('infeasible!',@newline(1));@elsedelta = b^2-4*a*c;sqrt = @sqrt(@if(delta#ge#0, delta,-delta));@ifc(delta#ge#0:@write('x1=',(-b+sqrt)/2/a,'x2=',(-b-sqrt)/2/a,@newline(1));@else@write('x1=',-b/2/a,'+',sqrt/2/a,'i','x2=',-b/2/a,'-',sqrt/2/a,'i',@newline(1));););i=i+1;);endcalc本程序中的循环结构也可以用@for(rows(i): 程序体);进行计算。

用lingo求解线性规划问题

用lingo求解线性规划问题

用lingo求解线性规划问题中国石油大学胜利学院程兵兵摘要食物营养搭配问题是现代社会中常见的问题,其最终的目的是节省总费用.本文通过对营养问题的具体剖析.构建了一般的线性规划模型。

并通过实例应用Lingo数学软件求解该问题.并给出了价值系数灵敏度分析,得出蔬菜价格的变动对模型的影响.关键词线性规划,lingo,灵敏度分析。

一、问题重述与分析营养师要为某些特殊病人拟订一周的菜单,可供选择的蔬菜及其费用和所含营养成分的数量以及这类病人每周所需各种营养成分的最低数量如下表1所示。

有以下规定:一周内所用卷心菜不多于2份,其他蔬菜不多于4份。

问题一:若病人每周需要14份蔬菜,问选用每种蔬菜各多少份,可使生活费用最小.问题二:当市场蔬菜价格发生怎样波动时,所建模型的适用性。

表 1 所需营养和费用营养搭配是一个线性规划问题,在给定蔬菜的情况下,要求菜单所需的营养成分必须达到要求,并在此条件下求出什么样的搭配所花费的费用最少.第一个要求是满足各类营养的充足,根据表中数据列出不等式。

第二要求为问题一中,蔬菜的份数必须为14,第三要求为在一周内,卷心菜不多于2份,其他不多于4份,根据以上条件列出各类蔬菜份数的限定条件,并可表示出费用的表达式.对于第二问,就是价值系数的变化对总费用的影响,模型的适用范围。

三、模型假设第一,假设各蔬菜营养成分保持稳定,满足题干要求。

第二,假设各蔬菜价格在一定时间内保持相对稳定。

第三,假设各类蔬菜供应全部到位,满足所需要求量. 第四,假设所求出最优解时不要求一定为整数。

四、符号约定(1)Z 代表目标函数,此题即为费用。

(2)i c 为价值系数,此题即为每份蔬菜的价格。

下标i 代表蔬菜的种类。

(3)i x 为决策变量,表示各种蔬菜的数量。

(4)i b 为最低限定条件,表示蔬菜最低营养需要。

五、模型建立根据以上各种假设和符号约定,建立模型如下。

所求的值就是min,也就是最优化结果.s 。

数学建模:运用Lindolingo软件求解线性规划

数学建模:运用Lindolingo软件求解线性规划

数学建模:运用L i n d o l i n g o软件求解线性规划-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN1、实验内容:对下面是实际问题建立相应的数学模型,并用数学软件包Lindo/lingo 对模型进行求解。

某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:1)若投资0.8万元可增加原料1千克,问应否作这项投资.2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划.数学建模论文运用lindo/lingo软件求解线性规划运用lindo/lingo软件求解线性规划一、摘要本文要解决的问题是如何安排生产计划,即两种饮料各生产多少使获利最大。

首先,对问题进行重述明确题目的中心思想,做出合理的假设,对符号做简要的说明。

然后,对问题进行分析,根据题目的要求,建立合适的数学模型。

最后,运用lindo/lingo软件求出题目的解。

【关键词】最优解 lindo/lingo软件第二、问题的重述某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:1)若投资0.8万元可增加原料1千克,问应否作这项投资。

2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划。

第三、模型的基本假设1、每一箱饮料消耗的人力、物力相同。

2、每个人的能力相等。

3、生产设备对生产没有影响。

第四、符号说明1、x.....甲饮料2、y.....乙饮料3、z.....增加的原材料第五、问题分析根据题目要求:如何安排生产计划,即两种饮料各生产多少使获利最大,可知本题所求的是利润的最大值。

实验1用LINGO求解线性规划问题

实验1用LINGO求解线性规划问题

实验用LINDO或LINGO求解线性规划问题实验目的1.对于给定的实际应用问题,正确的建立线性规划问题数学模型,并用LINDO或LINGO 求解;2.掌握灵敏度分析以及资源的影子价格的相关分析方法.问题1某工厂在计划期内要安排生产A、B两种产品,已知生产单位产品所需设备台时及对甲、乙两种原材料的消耗,有关数据如表1.1.问:应如何安排生产计划,使工厂获利最大?.LINDO输入语句:max 2x1+3x2stx1+2x2<=84x1<=164x2<=12end在LINGO的MODEL窗口内输入如下模型:model:max=2*x1+3*x2;x1+2*x2<=8;4*x1<=16;4*x2<=12;end选菜单Lingo|Solve(或按Ctrl+S),或用鼠标点击“求解”按纽,如果模型有语法错误,则弹出一个标题为“LINGO Error Message”(错误信息)的窗口,指出在哪一行有怎样的错误,每一种错误都有一个编号(具体含义可查阅相关文献或LINGO的Help).改正错误以后再求解,如果语法通过,LINGO用内部所带的求解程序求出模型的解,然后弹出一个标题为“LINGO Solver Status”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、耗费内存、所花时间等信息,点击Close关闭窗口,屏幕上出现标题为“Solution Report”(解的报告)的信息窗口,显示优化计算(线性规划中换基迭代)的步数、优化后的目标函数值、列出各变量的计算结果.求解结果:Global optimal solution found at iteration: 5 Objective value: 14.00000Variable Value Reduced Cost X1 4.000000 0.000000 X2 2.000000 0.000000 Row Slack or Surplus Dual Price 1 14.00000 1.000000 2 0.000000 1.500000 3 0.000000 0.1250000 4 4.000000 0.000000该报告说明:运行5步找到全局最优解,目标函数值为14,变量值分别为124,2==x x .“Reduced Cost ”的含义是需缩减成本系数或需增加利润系数(最优解中取值非零的决策变量的Reduced Cost 值等于零).“Row ”是输入模型中的行号,目标函数是第一行;“Slack or Surplus ”的意思是松弛或剩余,即约束条件左边与右边的差值,对于“≤”的不等式,右边减左边的差值为Slack (松弛),对于“≥”的不等式,左边减的右边差值为Surplus (剩余),当约束条件两边相等时,松弛或剩余的值等于零.“Dual Price ”的意思是对偶价格(或称为影子价格),上述报告中Row2的松弛值为0,表明生产甲产品4单位、乙产品2单位,所需设备8台时已经饱和,对偶价格1.5的含义是:如果设备增加1台时,能使目标函数值增加1.5.报告中Row4的松弛值为4,表明生产甲产品4单位、乙产品2单位,所需原材料乙8公斤还剩余4公斤,因此增加原材料乙不会使目标函数值增加,所以对偶价格为0.对于目标函数系数和约束条件右端常数项的灵敏度分析,可以通过LINGO 软件求解的灵敏度分析给出.如果要看灵敏度分析结果,必须激活灵敏度计算功能才会在求解时给出灵敏度分析结果,默认情况下这项功能是关闭的.想要激活它,必须运行LINGO|Options …命令,选择Gengral Solver ,在Dual Computation 列表框中,选择Prices and Ranges 选项并确定. 法一:打开command window ,输入range ;法二:LINGO ——options ——General Solver ——DualComputations ——Prices&Ranges , 运行一遍,然后关掉,然后lingo-----range问题2 某公司饲养实验用的动物以供出售,已知这些动物的生长对饲料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需要蛋白质60g ,矿物质3g ,维生素8mg ,该公司能买到5种不同的饲料,每种饲料1kg 所含各种营养成分和成本如表1.2所示,如果每个小动物每周食用饲料不超过52kg ,求既能满足动物生长需要,又使总成本最低的饲料配方.问题3 设有四个化肥厂供应四个地区的农用化肥,假定等量的化肥在这些地区使用效果相同.已知各化肥厂年产量(单位:吨)、各地区年需要量以及从各化肥厂到各地区单位化肥的运价如表3.2.1所示(表中运价中“—”表示不适合).试决定总的运费最节省的化肥调运方案.表3.2.1 化肥供应的平衡表与运价表问题4 某公司计划在东、西、南、北四个市区建立销售门市部,拟议中有10个位置(1,2,,10)j A j =可供选择,考虑到各地区居民的消费水平及居民居住密集度,在东区由123,,A A A 三个点至多选择两个;在西区由45,A A 两个点中至少选一个;在南区由67,A A 两个点中至少选一个;在北区由8910,,A A A 三个点中至少选两个.j A 各点的设备投资及每年可获利润情况见表3.2.2所示 (单位:万元).但投资总额不能超过72万元,问应选择哪几个销售点,可使年利润为最大?建立整数规划问题的数学模型,并用LINGO 求解.表3.2.2 四个市区的10个位置设备投资及每年利润表问题5 求解整数线性规划问题 12121212max 2535..436,0,379z x x x x s t x x x x =≤≤≥++⎧⎪+⎨⎪⎩全部为整数 思考题1.(1988年美国大学生数学建模竞赛试题)有七种规格的包装箱要装到两辆铁路平板车上去.包装箱的宽和高是一样的,但厚度(t,以厘米计)及重量(w ,以公斤计)是不同的.表3.2.4给出了每种包装箱的厚度、重量以及数量.每辆平板车有10.2米长的地方可用来装包装箱(像面包片那样),载重为40吨.由于当地货运的限制,对567,,C C C 类的包装箱的总数有一个特别的限制:这类箱子在两辆平板车上所占的总空间(厚度)不能超过302.7厘米.试把包装箱(见表3.2.4)装到平板车上去使得浪费的空间最小.。

2024版lingo解决线性规划问题的程序经典要点

2024版lingo解决线性规划问题的程序经典要点

资源分配问题案例
01
问题描述
资源分配问题涉及如何将有限的资源分配给不同的项目或部 门,以实现整体效益最大化的目标。
02 03
Lingo模型构建
在资源分配问题中,决策变量通常表示分配给不同项目或部 门的资源数量。目标函数可以是最大化整体效益或满足特定 目标下的资源分配,约束条件则包括资源总量的限制、项目 或部门的需求限制等。
数据处理能力
Excel在数据处理和表格计算方面 非常强大,而Lingo则更适合处理 复杂的优化问题。
求解规模
对于较小规模的线性规划问题, Excel的规划求解工具可以胜任, 但对于大规模问题,Lingo更具优 势。
扩展性
Lingo可以通过编写程序来解决各 种复杂的优化问题,而Excel则受 限于其内置的函数和工具。
对偶单纯形法
内点法
启发式算法
单纯形法是求解线性规 划问题的经典方法,它 通过迭代的方式在可行 域的顶点上寻找最优解。
对偶单纯形法是单纯形 法的一种改进,它通过 对偶问题的求解来得到 原问题的最优解,适用 于初始基可行解不易找 到的情况。
内点法是一种适用于大 规模线性规划问题的求 解方法,它通过在可行 域内部寻找最优解来避 免单纯形法在迭代过程 中可能出现的退化情况。
Lingo程序编写注意事项
变量命名规范 变量命名应具有描述性,避免使用无意 义的字符或数字组合,以提高代码可读
性和可维护性。 避免重复计算
在循环或迭代过程中,避免重复计算 相同的表达式或值,以减小计算量和
时间复杂度。
注释清晰明了 在关键代码处添加注释,解释代码功 能和实现思路,便于他人理解和修改。
Lingo软件功能与特点
功能丰富
Lingo软件提供了丰富的数学规划求解功能,包括 线性规划、非线性规划、整数规划、二次规划等。 用户可以根据实际问题需求选择合适的求解方法。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Southwestuniversityofscienceandtechnology
实验报告LINGO软件在线性规划中的运用
学院名称环境与资源学院
专业名称采矿工程
学生姓名
学号
指导教师
二〇一五年十一月
实验LINGO软件在线性规划中的运用1.实验目的
掌握LINGO软件求解线性规划问题的基本步骤,了解LINGO软件解决线性规划问题的基本原理,熟悉常用的线性规划计算代码,理解线性规划问题的迭代关系。

2.实验仪器、设备或软件
电脑,LINGO软件
3.实验内容
(1)LINGO软件求解线性规划问题的基本原理;
(2)编写并调试LINGO软件求解线性规划问题的计算代码;
4.实验步骤
(1)使用LINGO计算并求解线性规划问题;
(2)写出实验报告,并浅谈学习心得体会(线性规划的基本求解思路与方法及求解过程中出现的问题及解决方法)。

5.题目
有一艘货轮,分前、中、后三个舱位,它们的容积与最大允许载重量如表1所示。

现有三种货物待运,已知有关数据列于表2中。

又为了航运安全,要求前、中、后舱在实际载重量上大体保持各舱最大允许载重量的比例关系。

具体要求前、后舱分别与中舱之间载重量比例上偏差不超过15%,前、后舱之间不超过10%。

问该货轮应装载A、B、C各多少件,运费收入为最大?要求写出建模分析,数学模型建立,并分别用lingo和matlab编写程序代码,并计算出结果和分析结果。

前舱中舱后舱
最大允许载重量(t) 2000 3000 1500
容积(m3) 4000 5400 1500
商品数量(件) 每件体积(m3/件) 每件重量(t/件) 运价(元/件)
A 600 10 8 1000
B 1000 5 6 700
C 800 7 5 600
6.实验过程
!设前舱运A为x11,运B:x12,运C:x13;
!设中舱运A为x21,运B:x22,运C:x23;
!设后舱运A为x31,运B:x32,运C:x33;!单位:件;
!目标函数;
max=1000*(x11+x21+x31)+700*(x12+x22+x32)+600*(x13+x23+x33);
!数量约束;
x11+x21+x31<=600;
x12+x22+x32<=1000;
x13+x23+x33<=800;
!容量约束;
x11*10+x12*5+x13*7<=4000;
x21*10+x22*5+x23*7<=5400;
x31*10+x32*5+x33*7<=1500;
!重量约束;
x11*8+x12*6+x13*5<=2000;
x21*8+x22*6+x23*5<=3000;
x31*8+x32*6+x33*5<=1500;
!平衡约束;
x11*8+x12*6+x13*5<=1.15*(x21*8+x22*6+x23*5);
x21*8+x22*6+x23*5<=1.15*(x11*8+x12*6+x13*5);
x31*8+x32*6+x33*5<=1.15*(x21*8+x22*6+x23*5);
x21*8+x22*6+x23*5<=1.15*(x31*8+x32*6+x33*5);
x11*8+x12*6+x13*5<=1.1*(x21*8+x22*6+x23*5);
x21*8+x22*6+x23*5<=1.1*(x11*8+x12*6+x13*5);
!整数约束;
@gin(x11);@gin(x12);@gin(x13);
@gin(x21);@gin(x22);@gin(x23);
@gin(x31);@gin(x32);@gin(x33);
7.心得体会
运筹学是近几十年发展起来的一门新兴学科。

它的目的是为管理人员在做决议是提供科学的依据,它是实现现代化管理的有力工具。

应用运筹学处理问题是,有两个重要特点:一是从全局观点出发;二是通过建模,对于要求解的问题得到最合理的决策。

我国拥有的资源量,从人均来看,是一个资源相对贫乏的国家。

因此,如何合理、有效、经济的利用资源,是相当重要的。

提高管理工作的效能和效益,是
人尽其才,物尽其用,将运筹的方法应用于实践,运筹学拥有广阔的前景。

管理工作者、科学工作者和从事工程科学管理的人们都需要学习和掌握这门科学。

在运筹学上机实验中我自学了应用LINGO软件来实现用计算机的建模和对规划问题的求解。

通过学习,我学会了使用软件对线性规划等运筹学问题。

总之我感觉运筹学是一门很神奇的学科,他对我们有很大的帮助。

相关文档
最新文档