1.实验6-1 原油采购与加工——解法1(非线性规划NLP,用LINGO求解)

合集下载

原油采购与加工的优化问题

原油采购与加工的优化问题

原油采购与加工的优化问题原油采购与加工的优化问题摘要:汽油公司的原油采购和加工问题是一个优化问题,它的存在关键是解决了大多数汽油公司所面临的原油采购和加工问题,如何在准确的原油比例的搭配和原油数量的采购问题是实现一个汽油公司利润最大化。

解决问题我们可以采用LINGO软件,这是一款通过交互式的线性和通用优化求解器,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。

通过这款软件解决了原油比例和采购的问题,得出一套利润最大化的方案。

问题重述:某公司用两种原油(A和B)混合加工成两种汽油(甲和乙)。

甲、乙两种汽油含原油A的最低比例分别为50%和60%,每吨售价分别为4800元和5600元。

该公司现有原油A和B的库存量分别为500吨和1000吨,还可以从市场上买到不超过1500吨的原油A。

原油A的市场价为:购买量不超过500吨时的单价为10000元/吨;购买量超过500吨但不超过1000吨时,超过500吨的部分8000元/吨;购买量超过1000吨时,超过1000吨的部分6000元/吨。

该公司应如何安排原油的采购和加工。

问题分析:问题中关系到公司原油A和B的混合加工问题,如何进行原油采购和加工,目标是实现公司利润最大化,两种汽油的售价分别按照原油A的最低比比例进行定价,这里关系到了原油A和B的分配量和价格的问题。

问题的重点要分析原油A的采购价和购买量的关系是服从分段函数的关系,可以通过线性规划处理问题。

问题假设:由于问题只考虑到原油价的价格及购买量的问题,所以我们可以对原油B不给予考虑,而对于原油A的假设有以下几种情况:(1) 混合加工的原油A在汽油甲乙里所占有的比例都大于50%、60%,甚至可以达到100%;(2) 排除一切加工运输原油A之中造成的原油损耗问题;(3) 1000吨的原油B在假设中无成本;(4) 原油A的市场价格应保持;(5) 购买原油A的超过量包括购买原油A的等于量;定义与符号说明:x 原油A的购买量C(x) 采购的支出x11 原油A用于生产甲的数量x12 原油A用于生产乙的数量x21 原油B用于生产甲的数量x22 原油B用于生产乙的数量Max z 目标函数(利润) 模型的建立:设原油A的购买量为x(吨),根据题意,采购价c(x)可列为如下的分段线性函数(单位:千元/吨)10x (0,x,500),,c(x),1000,8x (500,x,1000),,3000,6x (1000,x,1500),。

lingo使用教程解析

lingo使用教程解析
• LINDO 中包含了建模语言和许多常用的数学函数(包 括大量概论函数),可供使用者建立规划问题时调用。
• 一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划
• 最大规模的模型的非零系数可以达到1,000,000个,
• 最大变量个数可以达到100,000个,最大目标函数和约束 条件个数可以达到32000个,
给模型加注标题和行号
TITLE "This is a maximum profit problem"
MAX
4 X1 + X2 - X3 + 2 X4
ST
RESOURCE) X1 - X2 + X3 - X4 < 30
SALE) 3 X1 + X2 - X3 + 2 X4 < 36
STORAGE) X1 + 2 X2 + X3 - 2 X4 < 20
练习:混合泳接力队员选择问题
cij
i=1
i=2
i=3
i=4
i=5
j=1
66.8
57.2
78
70
67.4
j=2
75.6
66
67.8
74.2
71
j=3
87
66.4
84.6
69.6
83.8
j=4
58.6
53
59.4
57.2
62.4
若选择队员i参加泳姿j 的比赛,记xij=1, 否则记xij=0
目标 函数
• 不等号用"<"表示"≤",用">"表示"≥"。要注意的是 当模型(用 LOOK 命令)输出(到屏幕或打印机)时,不 等号分别写成"<="和">="。

用LINGO解决非线性规划问题

用LINGO解决非线性规划问题

8
二、用LINGO解决基本的线性规划问题
我们编辑程序并求解后,得到LINGO Model窗口、 Solution report窗口和Solver status窗口划问题
通过此例我们对LINGO有了一个基本的认识,下 面我们来总结一下LINGO语法规定: 1. 求目标函数的最大值或最小值分别用MAX=…… 或MIN=……来表示; 2. 每个语句必须以分号“;”结束,每行可以有多 个语句,语句可以跨行; 3. 变量名称必须以字母(A-Z)开头,由字母、数 字(0-9)和下划线所组成,长度不超过32个字符,不 区分大小写;
11
二、用LINGO解决基本的线性规划问题
8. 变量界定函数: @BND(L,x,U),即L<=x<=U; 注意:没有想象中的的@SLB函数与@SUB函数; @BIN(x),限制x仅取整数0或1; 注意:不是@INT(x)函数; @FREE(x),取消对x的符号限制;
@GIN(x),限制x仅取非负整数。
16
三、用LINGO解决非线性规划问题
17
三、用LINGO解决非线性规划问题
18
三、用LINGO解决非线性规划问题
例4 求解二次规划问题:
直接使用LINGO最大化过程:
max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1 + x2 <= 100; x1 <= 2*x2; @gin(x1);@gin(x2);
12
三、用LINGO解决非线性规划问题
例2 求解二次规划问题:
MODEL: MIN=x^2+y^2-2*x-4*y; !目标函数; x+y<=1; !x,y为决策变量; y<=0.5; !第二、三行均为约束条件; end

实验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解决非线性规划问题
3
一、LINGO介绍
LP QP ILP IQP PILP
PIQP
NLP INLP PINLP
LINGOV12.0版可用于求以下各类最优化数学模型: Linear Program 线性规划 Quadratic Program 二次规划 Integer Linear Program 整数线性规划 Integer Quadratic Program 整数二次规划
X1+ 3*X2<=18;
!X1,X2为决策变量;
2*X1+ X2<=16;
4*X2<=20; !第二到四行均为约束条件
8
二、用LINGO解决基本的线性规划问题 我们编辑程序并求解后,得到LINGO Model窗口、Solution report窗口和Solver status窗口如下:
9
二、用LINGO解决基本的线性规划问题 通过此例我们对LINGO有了一个基本的认识,下面我们来总结一下LINGO语法规定: 1. 求目标函数的最大值或最小值分别用MAX=……或MIN=……来表示; 2. 每个语句必须以分号“;”结束,每行可以有多个语句,语句可以跨行; 3. 变量名称必须以字母(A-Z)开头,由字母、数字(0-9)和下划线所组成,长度不超过32个字符,不
三、用LINGO解决非线性规划问题
例4 求解二次规划问题:
直接使用LINGO最大化过程: max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1 + x2 <= 100; x1 <= 2*x2; @gin(x1);@gin(x2); 19
三、用LINGO解决非线性规划问题 20
6
二、用LINGO解决基本的线性规划问题

LINGO是用来求解线性和非线性优化问题的简易工具

LINGO是用来求解线性和非线性优化问题的简易工具

LINGO 是用来求解线性和非线性优化问题的简易工具。

LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。

§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。

下面举两个例子。

例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。

model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=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;enddataend然后点击工具条上的按钮即可。

原油问题数学建模

原油问题数学建模

原油问题数学建模
对于原油问题,建立一个数学模型首先需要了解具体的问题背景和目标。

不过,我可以提供一个基础的数学模型框架,然后根据具体问题再进行调整。

假设我们考虑一个简单的原油供应链问题,包括原油的开采、运输、加工和销售等环节。

以下是一个简单的数学模型:
1. 需求预测:
使用时间序列分析或回归分析方法预测未来一段时间内的原油需求。

2. 原油开采:
根据预测的需求和当前库存决定开采量。

考虑开采成本、环境影响等因素。

3. 运输:
确定运输方式(例如,管道、油轮等)和运输成本。

考虑运输过程中的损耗和不确定性。

4. **加工和存储**:
考虑加工成本和能加工的原油种类。

存储成本和容量限制。

5. 销售:
确定销售价格和销售策略。

考虑市场需求和竞争情况。

6. 利润计算:
基于收入和成本的差值计算利润。

7. 优化与决策:
基于利润或其他目标函数,优化各环节的决策。

考虑长期和短期决策的平衡。

8.模型参数:
根据历史数据和市场信息估计或验证模型参数。

9. 模型验证与改进:
使用实际数据验证模型的预测能力。

根据验证结果调整和改进模型。

10. 不确定性分析:
考虑各种不确定性因素(如价格波动、政策变化等)对决策的影响。

使用蒙特卡洛模拟等方法进行不确定性分析。

运用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
线性规划定义
线性规划是数学优化技术的一种,它通过将问 题抽象为数学模型,利用数学方法来寻找最优 解。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北大学《数学模型》实验 实验报告
一、实验目的
学会利用LINGO 进行实验,熟练掌握用LINGO 求解简单的非线性规划问题以及整数规划问题。

二、实验要求
1.原油采购与加工——解法1(非线性规划NLP ,用LINGO 求解)
1. 输入非线性规划模型(参考教材 p103)。

2.另存,文件扩展名为.lg4,用 LINGO 语法。

3. 运行,结果与 p103-104 的结果比较。

2.原油采购与加工——解法2(整数规划IP ,用LINGO 求解)
1. 输入整数规划模型(参考教材 p104)并运行。

2. 结果与 p106 的结果比较。

3.原油采购与加工——解法3(整数规划IP ,用LINDO 求解)
1. 输入整数规划模型并运行。

2. 结果与 p105 的结果比较。

三、实验内容
1.原油采购与加工——解法1(非线性规划NLP ,用LINGO 求解)
(参考教材 p104-106)
模型:
⎧ 10x (0 ≤ x ≤ 500) c (x ) = ⎪ (500 ≤ x ≤1000) 已知 ⎨1000 + 8x ⎪3000 + 6x (1000 ≤ x ≤1500)

Max z = 4.8(x 11 + x 21) + 5.6 (x 12 + x 22 ) - c (x )
x 11 + x 12 ≤ 500 + x
x 21 + x 22 ≤1000
x ≤1500
x 11 ≥ 0.5
x + x 21 11
x 12 ≥ 0.6
x + x
22
12
x11, x12, x21, x22, x ≥0
变换为以下的非线性规划模型:
Max z =4.8(x11+ x21)+5.6 (x12+ x22)-(10x1+8x2+6x3)
x11+ x12≤500+ x
x21+ x22≤1000
x
11
≥ 0.5
x + x
21
11
x
12
≥ 0.6
x + x
22
12
x = x1+ x2+ x3
(x1- 500)x2= 0 (x2- 500)x3= 0
0 ≤x1 , x2 , x3≤ 500
x11, x12, x21, x22, x ≥0
在模型窗口中输入以下模型:
1.Model:
2.Max= 4.8*x11 + 4.8*x21 + 5.6*x12 + 5.6*x22 - 10*x1 - 8*x2 - 6*x3;
3.x11+x12 < x + 500;
4.x21+x22 < 1000;
5.x11 - x21 > 0;
6.2*x12 - 3*x22 > 0;
7.x=x1+x2+x3;
8.(x1 - 500) * x2=0;
9.(x2 - 500) * x3=0;
10.x1 < 500;
11.x2 < 500;
12.x3 < 500;
13.end
2.原油采购与加工——解法2(整数规划IP,用LINGO求解)
(参考教材p106-107)
模型同实验 04-06。

变换为以下的整数规划模型:
Max z =4.8(x11+ x21)+5.6 (x12+ x22)-(10x1+8x2+6x3)
x11+ x12≤500+ x x21+ x22≤1000
x
11
≥ 0.5
x + x
11
21
x
12
≥ 0.6
x + x
22
12
x = x1+ x2+ x3
500 y2≤x1≤ 500 y1 500 y3≤x2≤ 500 y2x3≤500 y3
y1, y2, y3=0或10 ≤x1 , x2 , x3≤ 500
x11, x12, x21, x22, x ≥0
在模型窗口中输入以下编程语言:
MODEL:
MAX=4.8*X11+4.8*X21+5.6*X12+5.6*X22-10*X1-8*X2-6*X3;
X11+X12<X+500;
X21+X22<1000;
0.5*X11-0.5*X21>0;
0.4*X12-0.6*X22>0;
X=X1+X2+X3;
X1<500*Y1;
X2<500*Y2;
X3<500*Y3;
X1>500*Y2;
X2>500*Y3;
@BIN(Y1);@BIN(Y2);@BIN(Y3);
END
3.原油采购与加工——解法3(整数规划IP,用LINDO求解)
(参考教材p107-108)
模型同实验 04-06。

变换为以下的整数规划模型:
Max z =4.8( x11+ x21)+5.6 ( x12+ x22)- c ( x)
x11+ x12≤500+ x x21+ x22≤1000
x
11
≥ 0.5
x + x
11 21
x
12
≥ 0.6
x + x
12 22
x11, x12, x21, x22, x ≥0
z1≤ y1, z 2≤ y1+ y 2, z 3≤ y 2+ y3, z 4≤ y3 z1+ z 2+ z 3+ z 4=1, z k≥0 ( k =1, 2, 3, 4) y1+ y 2+ y3=1, y k =0或1 ( k =1, 2, 3)
x =500 z2+1000 z3+1500z4
c ( x )=5000 z 2+9000 z 3+12000z4
在模型窗口中输入以下编程语言:
model:
max= 4.8*x11 + 4.8*x21 +5.6*x12 + 5.6*x22 - (5000*z2 + 9000*z3 +12000*z4);
x11+x12 < x + 500;
x21+x22 < 1000;
0.5*x11-0.5*x21>0;
0.4*x12-0.6*x22>0;
z1<y1;
z2<y1+y2;
z3<y2+y3;
z4<y3;
z1+z2+z3+z4=1;
y1+y2+y3=1;
x=500*z2+1000*z3+1500*z4;
@bin(y1);
@bin(y2);
@bin(y3);
end
四、实验结果及其分析
选择LINGO->OPTIONS->GLOBAL SOLVER->勾选GLOBAL SOLVER,显示全局最优解。

1.原油采购与加工——解法1(非线性规划NLP,用LINGO求解)
Global optimal solution found.提示表明线性规划问题的最优解已经被找到。

Objective value: 5000表示线性规划问题的最优解是5000。

Total solver iterations: 368表明迭代的此时是368次。

Variable:对应的是变量,分别是x11,x21,x12,x22,x1,x2,x3,x。

Value:线性规划问题取得最优值是对应的最优解。

即x11=0,x21=0,x12=1500,x22=1000,x1=500,x2=499.998,x=1000。

2.原油采购与加工——解法2(整数规划IP,用LINGO求解)
Global optimal solution found.提示表明线性规划问题的最优解已经被找到。

Objective value: 5000表示线性规划问题的最优解是5000。

Total solver iterations: 12表明迭代的此时是12次。

Variable:对应的是变量,分别是x11,x21,x12,x22,x1,x2,x3,x,y1,y2,y3。

Value:线性规划问题取得最优值是对应的最优解。

即x11=0,x21=0,x21=1500,x22=1000,x1=500,x2=500,x3=0,x=1000,y1=1000,y2=1000,y3=0。

3.原油采购与加工——解法3(整数规划IP,用LINDO求解)
Global optimal solution found.提示表明线性规划问题的最优解已经被找到。

Objective value: 5000表示线性规划问题的最优解是5000。

Total solver iterations: 16表明迭代的此时是16次。

Variable:对应的是变量,分别是x11,x21,x12,x22,x,y1,y2,y3,z1,z2,z3,z4。

Value:线性规划问题取得最优值是对应的最优解。

即x11=0,x21=0,x21=1500,x22=1000,x=1000,y1=0,y2=1,y3=0,z1=0,z2=0,z3=1,z4=0。

相关文档
最新文档