地理决策系统的发展与前景

Download Report

Transcript 地理决策系统的发展与前景

第九讲:决策方法与辅助决策之二
北京大学环境工程系
2006年5月
多准则决策



当今我们所处的社会、技术和经济环境发生了巨大的变化。因此在更
多的情况下,我们不得不放弃这个念头 ---- 用单个目标进行决策。我
们总是关于“多个准则(目标/属性)”对事物进行比较、排列和排序。
仅在非常简单的、明确的或日常情况下,我们才认为“单一的选择准
则”令人满意。
多准则决策问题(MCDM)广义上可分为两类:多属性决策(MADM)
和多目标决策(MODM)。在实际中,这种分类非常符合问题求解的
两个方面:多属性决策用于选择(评价),多目标决策用于设计。这
种分类得到了多数学者的认可。
MADM 问题的研究可追溯到1957年,当时Churchman等人首次用简
单加权和法处理了企业投资方针的选择问题。至今不过40年的历史,
其理论、方法与应用研究有待加强。尽管这门学科比较年轻,但在实
际中越来越体现出它的重要应用价值(如用于商品选择,设施 选址,
人/人事选择,项目选择,公共设施选择等)。这就促使我们进一步研
究它。
相关软件
Solver 线性规划软件
 Lindo 线性规划软件
 Lingo 非线性规划软件
 Data Tree 决策树软件
 Tree Plan 决策树软件
 Expert Choice 层次分析软件
 Premium
定量决策分析方法
早期的决策分析推荐经验科学的研究方法,把观
测、实验、对比、抽样、案例、访谈、调查等方
法,作为主要方法。20世纪40年代以后,开始引
入运筹学,控制论,系统工程、系统分析、损益
分析,计算机模拟等定量分析方法辅助决策。
 定量决策分析:借助于经济学,数学,计算机科
学、统计学,概率论以及帮助决策的决策理论来
进行逻辑分析和推论。

定量分析方法的分类



1、克朗依据决策类型的不同把定量分析技术分为两类:
确定型的分析技术和随机型的分析技术。
2、S.S.那格尔和M。K。米尔斯把系统分析方法分为:
数学最优化方法,计量经济学方法,准实验方法,行为过
程方法,多元标准决策方法等。
3、教科书的分类方法。谭跃进主编的《定量分析方法》
一书中的分类方法。分为:社会调查与统计分析方法、预
测分析方法,投入产出分析法,层次分析法,最优化方法,
对策与决策方法,管理系统模拟方法,网络计划方法。
不同定量方法的大概描述



1、社会调查方法是收集,处理和研究社会信息的基本方法。
通过这个方法人们可以认识到社会现象和社会问题。有普遍
调查,典型调查,重点调查,抽样调查和个案调查。
2、统计分析方法指主要运用于抽样调查方法中,包括两方
面的内容:统计描述和统计推论。统计描述可分为单变量统
计描述和多变量统计描述。统计推论方法是概率分析法。
3、预测分析方法可分为定量分析法和定性分析法。定量分
析法中又可分为时间序列法和因果关系分析法。



4、投入产出分析法。就是对一个系统中的生产与消耗的
依存关系进行综合考察和数量分析。
5、指标评价方法。由于决策问题十分复杂,涉及到多方
群体的利益,因而在评价时有两个问题,指标难以数量
化,不同方案难以取舍。所以先要评价指标数量化,方
法有:专家打分法,两两比较法等。接着综合评价指标
采用:加权平均法,功效系数法等。
6、层次分析法简称AHP,是萨泰教授开发的一种综合
定量与定性分析,模拟人的决策思维过程,以解决多因
素复杂系统,特别是难以描述的社会系统的分析方法。
AHP适用于多目标,多准则的复杂的公共问题。

7、最优化方法也称做运筹学方法,主要运用数学方法研
究各种系统的优化途径及方案,为决策者提供科学决策
的依据。最优化方法的目的在于针对所研究的系统求得
一个合理运用人力物力和财力的最佳方案,发挥和提高
系统的效能和效益,最终达到系统的最优目标。最优化
方法研究和解决问题的核心是正确建立和使用模型。
最优化方法几种常见的问题和模型
1 )线性规划问题及其数学模型:单纯形解法和运输
问题
2 )动态规划:解决多阶段决策过程最优化
3 )资源分配问题:将数量一定的资源恰当的分配给
若干个使用者,使总的目标函数最优

8、对策与对策方法
1) 矩阵对策问题
 2) 风险型决策方法:决策矩阵法,决策树法,贝
叶斯决策方法(情报的价值)
 3) 多目标决策方法:化多为少法,分层序列法

9、模拟方法
模拟就是利用模型对实际系统进行实验研究的过程。
在这个过程中,通过对模拟运行过程的观察和统计,
得到被模拟系统的模拟输出参数和基本特征,从而来
估计和推断实际系统的真实参数和真实性能,为真实
系统问题的决策提供科学依据。
1) 蒙特卡洛模拟方法是充分利用计算机能力的随机实
验方法。
2)排队模型:单服务台排队模型,多服务台排队模型,
排队系统模拟
3) 系统动力学模拟(SD),是研究信息反馈系统动
态行为的计算机模拟方法
10、网络计划方法
主要应用于大型复杂系统和工程项目计划管理和时
间的有效控制,对于一次性或重复较少的工程项目有
明显的优越性。主要有:用于时间的计划管理,用于
成本的计划管理,用于资源的调配,用于生产的调度。
1 网络图的绘制
2 作业时间的确定
3 网络图的参数与计算
4 任务按期完成的概率分析与计算
5 网络图的调整与优化
计算机辅助决策系统



具有环境空间数据处理, 空间分析与模拟, 决策分析能力的
交互式计算机系统
又称辅助空间决策系统 (spatial decision support systems
or SDSS)
是环境信息系统 (GIS) 与计算机辅助模拟和决策分析技术
相结合的产物

空间模拟 (spatial modelling): 模拟环境过程的数学模型
• 自然环境过程 (physical process), 社会经济过程 (human process)

运筹学 (operations research): 解决规划和管理决策问题的数学方
法
• 多标准决策分析 (multi-criteria decision analysis)
• 多目标规划 (multi-objective programming)

人工智能
• 专家系统 (expert systems), 基因算法 (genetic algorithms)
Physical
Process
Models
GIS
Toolbox
GIS
Geospatial
Data
SDSS =
SDSS
Human
Process
Models
Computer-Aided
Modelling &
Decision Analysis
DecisionMaking
Models
RuleBased
Models
Geospatial Data
&
Data Manipulation + Models
and Spatial Analysis
辅助环境决策系统的特点
 使用环境空间数据和模型获取有助决策的
信息
 交互式, 允许用户灵活探索决策问题的求解
空间, 以及制定, 分析, 评价多种决策方案
 用户界面易用, 其主要用户为没有GIS和模
型知识的管理和规划人员
 大多使用专业模型, 为特定用途而设计

水资源管理, 城市交通规划, 农业土地利用规划,
购物中心选址 …
辅助环境决策系统的种类
基于空间模型的辅助环境决策系统
 基于知识的(knowledge-based)辅助环境决策
系统
 多准则分析(multi-criteria analysis)辅助环境决
策系统
 多目标优化(multi-objective optimisation)辅助
环境决策系统
 集成(integrated)辅助环境决策系统
 群(collaborative)辅助环境决策系统

基于空间模型的辅助环境决策系统
User
User Interface
GIS Tools
Database
Spatial
Models
Accessibility Analyst – 通达性评价系统
用于城市土地利用和交通规划中通达性分析评价
 一个地点的通达性: 运用一定的交通工具, 从该地
点出发到达其它地点以从事某种活动的方便程度



评价交通系统的有效性, 制订交通系统规划方案, 设置
公用服务设施, 规划与开发住宅区等的重要指标
Accessibility Analyst 将多种通达性分析模型和工
具结合起来建立模型库, 并与GIS相连结

ArcView GIS 软件系统的附加模块
Potential Models – 位能模型
Mj
Pi   
j Cij
地点i 的通达性
位于地点j 某种活动的规模
从地点i 到地点j 的距离, 或
旅行的时间, 或旅行的费用
基于知识的辅助环境决策系统
User
User Interface
GIS Tools
Database
Expert
System
Problem Domain
Expert System
Expertise
(Explanations
& conclusions)
Knowledge
Engineering
Human
Expert
Knowledge Base
User
Facts
Inference Engine
User Interface
Expert System Environment
Query Processing Subsystem
Query
Result
Display
Modelling Subsystem
Help
Knowledge
Acquisition
User-assisted
Modelling
Automatic
Modelling
Problem Processor
Knowledge Base
Domain
Knowledge
Module
Model
Knowledge
Module
Utility Program
Knowledge
Module
Process
Knowledge
Module
Meta-data
Knowledge
Module
Interface to the Back-End Subsystem
Back-End Subsystem
Expert System
(Rule Bases)
GIS
(Database + GIS Analysis
Functions)
Figure 6.3 Architecture for KBSDSS systems
Analytical Procedures and
Utility Programs
基于知识的辅助环境决策系统的特点
包含多种知识
1.

某领域专业知识,模型知识,数据知识,数据处理工具知识,过
程知识
能运用知识和一定的推理机制引导用户解决决策问
题
2.




建立表达决策问题的模型
根据问题模型设计解答问题的过程
选择和调用合适模型, 数据和数据处理计算机程序, 运行这
些模型和程序求得问题的答案
评价所得的结果
Proximity
to Lakes
Spatial
Influence
Diagram –
空间要素关
联图
Proximity
to Roads
Lakes
Roads
Sites for
Housing
Development
NAME
Sites for Housing Development
TYPE
value
PREDECESSORS
Proximity to Lakes, Proximity
to Roads, Slope, Aspect
SUCCESSORS
nil
FUNCTIONAL_MODEL
SuitabilityForHousing
GIS_MODEL
overlay
ASSOCIATED_DATA
nil
Aspect
Slope
Elevation
基于知识的辅助环境决策系统的特点
3.
4.
5.
综合了环境信息系统(GIS)和专家系统技术
系统控制GIS和模型的运行, 用户无需掌握
操作GIS和模型的具体知识
具有解释功能, 用户可以理解,检查整个问
题的解决过程
ILUDSS – Islay 土地利用辅助决策系统




Islay: 苏格兰西
海岸附近的小
岛
目的: 评价土地
利用潜力
用户: Scottish
Natural
Heritage 的规
划人员
具备基于知识
的辅助环境决
策系统的主要
功能
User
ILUDSS
– Islay 土地利用辅助决策系统
HARDY
Graphical User Interface


CLIPS 苏格兰西海岸附近
Islay:
的小岛
Query Processing Subsystem
评价土地利用潜力
Modelling Subsystem
Knowledge
Base
Process knowledge
base module
Domain knowledge
base module
Tools knowledge
base module
Metadata knowledge base module
Problem Processor
Rule-based
Models
Control flow
Data or knowledge flow
ARC/INFO
GIS, Analytical
Models and Utility
Programs
Data Base
Proximity
Roads
to Roads
Sites of Special
Potential Sites
Proximity
for
to SSSI
Afforestation
Areas
Scientific Interest
Altitude
Physical Land
Suitability for
Forestry
Land
Capability
for Forestry
Land
Capability for
Agriculture
多准则分析辅助环境决策系统
User
User Interface
GIS Tools
Database
Multi-Criteria
Models
一个多准则决策分析问题
Identify an optimal site
Slope
Aspect
Site 1
Transport
Site 2
Land use
Site 3
Price
多准则决策分析
(Multi-Criteria Decision Analysis)


多准则决策分析是一套用于辅助决策人员从一系列决策方
案中选择最佳方案的技术
多准则决策分析的过程





在资源管理, 城市与区域规划中有广泛应用


制定决策的目标(objectives)
选择评价决策方案(alternatives)的准则 (criteria)
确定评价准则的权重
对决策方案进行评价和排序, 选择最佳方案
水资源规划, 交通规划, 政策评价, 资源开发和环境规划项目的选取,
土地利用选址, 污水处理场的选址等等
常用的多准则决策分析技术

Analytical Hierarchy Process (AHP), Multi-Attribute Utility Model,
ELECTRE, Ideal Point
JavaAHP - 多准则分析辅助决策系统
多目标优化辅助环境决策系统
User
User Interface
GIS Tools
Database
Multi-Objective
Optimisation Models
多目标优化


多目标优化: 在一定的限制条件下, 解决资源的最优配置或
最佳利用问题
多目标优化问题: 规划土地利用以增加就业率

土地利用现状:
• 8200公顷森林地, 4520公顷农田, 1050公顷城市用地

4 个目标:
•
•
•
•


就业: 增加500个就业机会
环境: 保留70%以上的现有森林地
投资: 用于改变现有土地利用类型的投资为一亿元
城市化: 新增城市用地面积不超过400公顷
如何合理安排土地利用布局才能实现这4个目标?
多目标优化技术

线性规划(linear programming),目标规划(goal programming), 基
因算法(genetic algorithms), 等等
基因算法

建立在达尔文生物进化论基础上的机器学习 (machine
learning) 模型


一群随机产生的个体经过一个模拟的进化过程, 能适应生存条件的
具有竞争力的个体继续生存下去,繁殖后代, 不能适应生存条件的
个体则被淘汰
基因算法的基本要素




基因 (genes): 个体的最基本的结构单位, 或问题的参数. 如: 土地
利用分配中, 一个基因代表一个土地单元及其属性
染色体 (chromosomes): 由一组基因组成的个体, 或问题可行解区
域 (solution space) 中的一点. 如:一种可行的土地利用布局
目标函数 (fitness function): 计算染色体或个体的竞争力 (fitness),
用于判断一个染色体是否能生存下去, 也是衡量目标是否优化的尺
度. 如: 产量, 利润, 费用.
群体 (population): 所有在基因算法中不断进化的染色体
基因算法 (续)

基因算法的基本算子 (operators)

竞争力评价计算 (fitness evaluation)
• 运用目标函数确定染色体的竞争力

选择 (selection)
• 比较染色体的竞争力, 选择较具竞争力的染色体以便将他们的
基因传到下一代

对换 (crossover)
• 一旦选择了一对父母染色体后, 随机地将他们的基因交换, 组成
一对新的染色体

变异 (mutation)
• 随机地修改一个染色体

插入 (insertion)
• 将新产生的染色体加入群体, 并将不具竞争力的染色体除去
基因算法的工作流程
Define
Problem
Create a
Random
Population
Evaluate
Fitness of
Individuals
Select
Individuals
for Mating
Mate
Individuals
to Produce
Offspring via
Crossover
Mutate
Individuals
to Produce
Offspring
Convergence?
No
Yes
Insert Offspring into
Population
Stop
运用基因算法于土地利用分配
 土地利用分配涉及的要素

土地单元, 待分配的土地利用种类, 每一土地单
元对各种土地利用类型的适宜性, 需优化的目
标, …
 基因:

土地单元及其属性
地点, 分配的土地利用, 土地利用的适宜性, …
 染色体:
构成某一种土地利用布局的一系列
土地单元
土地利用布局的基因表达
Genes基因
GENE 2
GENE n-1
UMA#: 2
Assigned Land use:
Pasture草场
Land suitability:
pasture–Class 1
sugarcane–Class 2
…
UMA#: n-1
Assigned Land use:
Sugarcane
Land suitability:
pasture–Class 3
sugarcane–Class 4
…
1
1
Chromosomes
1
2
2
2
3
3
3
4
4
4
5
5
5
6
n-1
6
n-1
n-1
n
6
染色体
1
Land use
patterns
2
16
4
9
34
5
3
20
6
n-1
n
28
n
n
LUOS - 土地利用优化系统
LUOS 应用实例




实验地: 澳大利亚 Noosa 郡
待分配的土地利用: 果园,蔬菜和草地
假设的经济数据: ($/ha.)
草地
Class 1
果园
320.1
蔬菜
280.0
222.0
Class 2
280.0
245.2
210.0
Class 3
230.0
235.2
200.5
Class 4
180.0
200.0
190.0
目标: 在今后12年内获取最佳的净收入 ( net present
value)
Create a set of land use
plans by randomly
assigning land uses
to land parcels
Evaluate each land use
plan by calculating the
net present value (NPV)
Select the land use
plans with the highest
NPVs
No
Form a new set of land
use plans from these
subsets
Good
enough
Yes
Stop
Randomly select subsets
of land parcels from the
selected land use plans
NPV =
$67,323,920
NPV =
$66,575,596
NPV =
$67,296,272
VegMan – 集成辅助环境决策系统
Server Machine
Rule
Base
HTML
Client Machine
Java Web Server
RuleBased System
(JESS)
Web Browser
HTML/
Java Applets
Internet
Multi-Criteria
Analysis Tool
(JavaAHP)
Java
Servlets
Internet Mapping
Tool (WebMap)
Map
Image
(HTML — Hypertext Markup Language)
GIS
Database
GIS
(ArcView)
WebMap
Server Machine
Client Machine
Web Browser
HTML/
Java Applets




Rule
Base
HTML
map generation
map browsing
spatial query Java Web Server
classification
Internet
operations
Java
RuleBased System
(JESS)
Multi-Criteria
Analysis Tool
(JavaAHP)
Servlets
Internet Mapping
Mapping
Internet
Tool (WebMap)
(WebMap)
Tool
Map
Image
(HTML — Hypertext Markup Language)
GIS
Database
GIS
(ArcView)
JESS
Server Machine
Rule
Base
HTML
Client Machine
Java Web Server
RuleBased System
(JESS)
Web Browser
HTML/
Java Applets
Internet
Multi-Criteria
Analysis Tool
(JavaAHP)
Java
Servlets
RuleInternet Mapping
Based System
Tool (WebMap)
(JESS)
 Deliver the Central
Highlands
Regional
(HTML — Hypertext
Markup Language)
Vegetation Strategy
Map
Image
GIS
Database
GIS
(ArcView)
 Regional Vegetation
Regional
Strategy
Rule
Base
Strategy as rules
 Basic features of each
vegetation community
Client Machine
Server Machine
Rule
Base
HTML
Java Web Server
RuleBased System
(JESS)
Web Browser
HTML/
Java Applets
Internet
Multi-Criteria
Analysis Tool
(JavaAHP)
Java
Servlets
Internet Mapping
Tool (WebMap)
Map
Image
(HTML — Hypertext Markup Language)
GIS
Database
GIS
(ArcView)
JavaAHP
Server Machine
Rule
Base
HTML
Client Machine
Java Web Server
RuleBased System
(JESS)
Web Browser
HTML/
Java Applets
Internet
Multi-Criteria
Analysis Tool
(JavaAHP)
Java
Servlets
Internet Mapping
Tool (WebMap)
 Combine best available
information and DM’s
value judgements
 Evaluate and prioritise
(HTML — Hypertext
Markup Language)
management
options
Map
Image
GIS
Database
GIS
(ArcView)
数学建模
线性规划模型
dx
 rx
dt
优化模型
 优化:在一定条件下,使目标最大的决策。
 优化问题是经常遇到的问题,如:结构设
计,资源分配,生产计划,运输方案等。
 全国大学生数模竞赛题一半以上与优化有
关,并且需用软件求解。
无约束优化
 给定一个函数f(x),寻找x使得f(x)最小,其
中x=(x1,x2,…,xn)。

最优值出现在定义区间端点,不可导点,
稳定点。
有约束优化
min f ( x)
st.hi ( x)  0, i  1,
,m
 如果f(x)和hi(x)可导,则可以用拉格
朗日方法化为无约束优化问题:
m
L( x)  f ( x)   i hi ( x)
i 1
L( x)
0
x
规划问题
min f ( x)
st.hi ( x)  0, i  1,
,m
最优解在定义域的边界上达到。
 线性规划:目标和约束均为线性函数。
 非线性规划:目标和约束存在非线性函数。



二次规划:目标为二次函数,约束为线性
整数规划:决策变量为整数。

0-1规划:决策变量只为0或者是1
例1 加工奶制品的生产计划
1桶
牛奶 或
12小时
3公斤A1
获利24元/公斤
8小时
4公斤A2
获利16元/公斤
每天: 50桶牛奶
时间480小时 至多加工100公斤A1
制订生产计划,使每天获利最大
• 35元可买到1桶牛奶,买吗?若买,每天最多买多少?
• 可聘用临时工人,付出的工资最多是每小时几元?
• A1的获利增加到 30元/公斤,应否改变生产计划?
1桶
牛奶 或
12小时
3公斤A1
获利24元/公斤
4公斤A2
获利16元/公斤
8小时
每天 50桶牛奶 时间480小时 至多加工100公斤A1
决策变量
x1桶牛奶生产A1
目标函数
获利 24×3x1
获利 16×4 x2
每天获利 Max z  72 x1  64 x2
约束条件
x2桶牛奶生产A2
原料供应
x1  x2  50
劳动时间
加工能力
非负约束
12 x1  8x2  480
3x1  100
x1 , x2  0
线性
规划
模型
(LP)
模型分析与假设
比 xi对目标函数的
例 “贡献”与xi取值
性 成正比
xi对约束条件的
“贡献”与xi取值
成正比
xi对目标函数的
可
“贡献”与xj取值
加
性 无关
xi对约束条件的
“贡献”与xj取值
无关
连续性 xi取值连续
线性规划模型
A1,A2每公斤的获利是与各
自产量无关的常数
每桶牛奶加工出A1,A2的数量
和时间是与各自产量无关的常
数
A1,A2每公斤的获利是与相
互产量无关的常数
每桶牛奶加工出A1,A2的数量和
时间是与相互产量无关的常数
加工A1,A2的牛奶桶数是实数
模型求解
x1  x2  50
图解法
x2
A
l1 : x1  x2  50
约
l2 : 12 x1  8x2  480
束 12 x1  8x2  480
l4
条 3x  100
l3 : 3x1  100
1
件
c
l
:
x

0
,
l
:
x

0
x1 , x2  0
4
1
5
2
目标
函数
Max z  72 x1  64 x2
z=c (常数) ~等值线
目标函数和约束条件是线性函数
可行域为直线段围成的凸多边形
目标函数的等值线为直线
0
l1
B
l2
l5
C Z=3600
l3
x1
D
Z=0
Z=2400
在B(20,30)点得到最优解
最优解一定在凸多边
形的某个顶点取得。
模型求解
软件实现
LINDO 6.1
max 72x1+64x2
OBJECTIVE FUNCTION VALUE
st
1)
2)x1+x2<50
3360.000
VARIABLE
VALUE
REDUCED COST
3)12x1+8x2<480
X1
20.000000
0.000000
4)3x1<100
X2
30.000000
0.000000
ROW SLACK OR SURPLUS DUAL PRICES
end
DO RANGE
(SENSITIVITY)
ANALYSIS? No
2)
0.000000
48.000000
3)
0.000000
2.000000
4)
40.000000
0.000000
NO. ITERATIONS=
2
20桶牛奶生产A1, 30桶生产A2,利润3360元。
结果解释
max 72x1+64x2
OBJECTIVE FUNCTION VALUE
1)
st
2)x1+x2<50
3)12x1+8x2<480
4)3x1<100
3360.000
VARIABLE
VALUE
REDUCED COST
X1
20.000000
0.000000
X2
30.000000
0.000000
ROW SLACK OR SURPLUS DUAL PRICES
end
原料无剩余
三
种
时间无剩余
资
源 加工能力剩余40
2)
0.000000
48.000000
3)
0.000000
2.000000
4)
40.000000
0.000000
NO. ITERATIONS=
2
“资源” 剩余为零的约束为紧约束(有效约束)
OBJECTIVE FUNCTION VALUE
1)
结果解释
3360.000
VARIABLE
VALUE
REDUCED COST
X1
20.000000
0.000000
X2
30.000000
0.000000
ROW SLACK OR SURPLUS
DUAL PRICES
影子价格
2)
0.000000
48.000000
原料增加1单位, 利润增长48
3)
0.000000
2.000000
时间增加1单位, 利润增长2
4)
40.000000
0.000000
加工能力增长不影响利润
NO. ITERATIONS=
2
• 35元可买到1桶牛奶,要买吗?
35 <48, 应该买!
• 聘用临时工人付出的工资最多每小时几元? 2元!
DO RANGE(SENSITIVITY) ANALYSIS?
最优解不变时目标函
RANGES IN WHICH THE BASIS IS UNCHANGED: 数系数允许变化范围
Yes
OBJ COEFFICIENT RANGES
VARIABLE CURRENT ALLOWABLE ALLOWABLE
COEF
INCREASE
DECREASE
X1
X2
ROW
72.000000
24.000000
8.000000
(约束条件不变)
x1系数范围(64,96)
64.000000
8.000000
16.000000
x2系数范围(48,72)
RIGHTHAND SIDE RANGES
CURRENT ALLOWABLE ALLOWABLE
RHS
INCREASE
DECREASE
2
50.000000
10.000000
6.666667
3
480.000000
53.333332
80.000000
4
100.000000
INFINITY
40.000000
x1系数由24 3=72
增加为303=90,
在允许范围内
• A1获利增加到 30元/千克,应否改变生产计划
不变!
结果解释 影子价格有意义时约束右端的允许变化范围
RANGES IN WHICH THE BASIS IS UNCHANGED:
OBJ COEFFICIENT RANGES
VARIABLE CURRENT ALLOWABLE ALLOWABLE
COEF
INCREASE
DECREASE
X1
72.000000
X2
64.000000
8.000000
16.000000
RIGHTHAND SIDE RANGES
CURRENT ALLOWABLE ALLOWABLE
RHS
INCREASE
DECREASE
ROW
24.000000
(目标函数不变)
8.000000
2
50.000000
10.000000
6.666667
原料最多增加10
3
480.000000
53.333332
80.000000
时间最多增加53
4
100.000000
INFINITY
40.000000
• 35元可买到1桶牛奶,每天最多买多少? 最多买10桶!
使用Lindo的一些注意事项
1.
2.
3.
4.
5.
6.
7.
8.
“>”与“>=”功能相同
变量与系数间可有空格(甚至回车),但无运算符
变量以字母开头,不能超过8个字符
变量名不区分大小写(包括关键字)
目标函数所在行是第一行,第二行起为约束条件
行号自动产生或人为定义,以“)”结束
“!”后为注释。
在模型任何地方都可以用“TITLE”对模型命名
使用Lindo的一些注意事项
9.
10.
11.
12.
13.
14.
15.
变量不能出现在一个约束条件的右端
表达式中不接受括号和逗号等符号
表达式应化简,如2x1+3x2-4x1应写成-2x1+3x2
缺省假定所有变量非负,可在模型“END”语句后
用“FREE name”将变量name的非负假定取消
可在“END”后用“SUB”或“SLB”设定变量上下界。
例如:“sub x1 10”表示“x1<=10”
“END”后对0-1变量说明:INT n或INT name
“END”后对整数变量说明:GIN n或GIN name
运输问题:自来水输送
甲:30;50
A:50
乙:70;70
B:60
(
C:50
)
支出 引水管理费
其他费用:450元/千吨
元/千吨
A
B
C
甲
160
140
190
乙
130
130
200
丙
220
190
230
)
收入:900元/千吨
丁:10;40
)
(以天计)
小
区
额
外
用
水
量
千
吨
(
丙:10;20
(
水
库
供
水
量
千
吨
小
区
基
本
用
水
量
千
吨
丁
170
150
/
• 应如何分配水库供水量,公司才能获利最多?
• 若水库供水量都提高一倍,公司利润可增加到多少?
问题
分析
乙:70;70
B:60
丙:10;20
C:50
丁:10;40
总供水量:160
收入:900元/千吨
支出
甲:30;50
A:50
< 总需求量:120+180=300
总收入900160=144,000(元)
引水管理费
其他费用:450元/千吨 其他支出450160=72,000(元)
确定送水方案使利润最大
使引水管理费最小
模型建立
决策变量
确定3个水库向4个小区的供水量
水库i 向j 区的日供水量为 xij(x34=0)
目标 Min Z  160 x11  130 x12  220 x13  170 x14
函数  140 x21  130 x22  190 x23  150 x24  190 x31  200 x32  230 x33
供应
限制
x11  x12  x13  x14  50
x21  x22  x23  x24  60
x31  x32  x33
约束
条件
 50
30  x11  x21  x31  80
需求
限制
70  x12  x22  x32  140
10  x13  x23  x33  30
10  x14  x24  50
线性
规划
模型
(LP)
模型求解
A(50)
B(60)
C(50)
50 40
50
甲(30;50)
乙(70;70)
OBJECTIVE FUNCTION VALUE
1)
24400.00
VARIABLE VALUE REDUCED COST
X11
0.000000
30.000000
10 丙(10;20)
X12
50.000000
0.000000
10
X13
0.000000
50.000000
X14
0.000000
20.000000
X21
0.000000
10.000000
X22
50.000000
0.000000
X23
0.000000
20.000000
X24
10.000000
0.000000
X31
40.000000
0.000000
X32
0.000000
10.000000
X33
10.000000
0.000000
丁(10;40)
引水管理费 24400(元)
利润=总收入-其它费
用 - 引 水 管 理 费
=144000-72000-24400
= 47600(元)
问题讨论
每个水库最大供水量都提高一
总供水量(320) > 总需求量(300) 倍
确定送水方案使利润最大
利润 = 收入(900) –其它费用(450) –引水管理费
利润(元/千吨)
A
B
C
甲
290
310
260
乙
320
320
250
丙
230
260
220
丁
280
300
/
目标 Max Z  290 x11  320 x12  230 x13  280 x14
函数  310 x21  320 x22  260 x23  300 x24  260 x31  250 x32  220 x33
x11  x12  x13  x14  100
供应 A : x11  x12  x13  x14  50
限制
需求约束可以不变
B, C 类似处理
求解
A(100) 100
甲(30;50)
30
乙(70;70)
B(120) 40
30 丙(10;20)
50
C(100)
50 丁(10;40)
OBJECTIVE FUNCTION VALUE
1)
88700.00
VARIABLE VALUE REDUCED COST
X11
0.000000
20.000000
X12
100.000000
0.000000
X13
0.000000
40.000000
X14
0.000000
20.000000
总利润 88700(元)
X21
30.000000
0.000000
X22
40.000000
0.000000
这类问题一般称为
“运输问题”
(Transportation
Problem)
X23
0.000000
10.000000
X24
50.000000
0.000000
X31
50.000000
0.000000
X32
0.000000
20.000000
X33
30.000000
0.000000
整数规划:汽车厂生产计划
汽车厂生产三种类型的汽车,已知各类型每辆车对钢
材、劳动时间的需求,利润及工厂每月的现有量。
小型
中型
大型
现有量
钢材(吨)
1.5
3
5
600
劳动时间(小时)
280
250
400
60000
2
3
4
利润(万元)
• 制订月生产计划,使工厂的利润最大。
• 如果生产某一类型汽车,则至少要生产80辆,
那么最优的生产计划应作何改变?
汽车厂生产计划
模型建立
设每月生产小、中、大型
汽车的数量分别为x1, x2, x3
小型
中型
大型
现有量
钢材
1.5
3
5
600
时间
280
250
400
60000
利润
2
3
4
Max z  2 x1  3x2  4 x3
s. t. 1.5 x1  3x2  5 x3  600
280 x1  250 x2  400 x3  60000
x1 , x2 , x3  0
线性
规划
模型
(LP)
模型
求解
结果为小数,
怎么办?
OBJECTIVE FUNCTION VALUE
1)
632.2581
VARIABLE VALUE
REDUCED COST
X1
64.516129
0.000000
X2 167.741928
0.000000
X3
0.000000
0.946237
ROW SLACK OR SURPLUS DUAL PRICES
2)
0.000000
0.731183
3)
0.000000
0.003226
1)舍去小数:取x1=64,x2=167,算出目标函数值z=629,与
LP最优值632.2581相差不大。
2)试探:如取x1=65,x2=167;x1=64,x2=168等,计算函数
值z,通过比较可能得到更优的解。
• 但必须检验它们是否满足约束条件。为什么?
3) 模型中增加条件:x1, x2, x3 均为整数,重新求解。
模型求解
整数规划(Integer Programming,简记IP)
Max z  2 x1  3x2  4 x3
IP可用LINDO直接求解
max 2x1+3x2+4x3
s. t. 1.5 x1  3x2  5 x3  600
st
280 x1  250 x2  400 x3  60000 1.5x1+3x2+5x3<600
280x1+250x2+400x3<60000
x1 , x2 , x3为非负整数
end
IP 结果输出
gin 3
OBJECTIVE FUNCTION VALUE
1)
632.0000
VARIABLE VALUE REDUCED COST
X1
64.000000
-2.000000
X2
168.000000
-3.000000
X3
0.000000
-4.000000
“gin 3”表示“前3个变量
为整数”,等价于:
gin x1
gin x2
gin x3
IP 的最优解x1=64,x2=168,x3=0,最优值z=632
汽车厂生产计划
• 若生产某类汽车,则至少生产80辆,求生产计划。
Max z  2 x1  3x2  4 x3
s. t. 1.5x1  3x2  5x3  600
280 x1  250 x2  400 x3  60000
x1,x2,, x3=0 或 80
x1  0, x2  0, x3  80
x1  0, x2  80, x3  0
x1  0, x2  80, x3  80 
x1  80, x2  0, x3  0
方法1:分解为8个LP子模型
x1  80, x2  80, x3  0
其中3个子模型应去掉,然后
逐一求解,比较目标函数值,
再加上整数约束,得最优解:
x1  80, x2  0, x3  80

x1 , x 2 , x3  0 
x1  80, x2  80, x3  80
x1=80,x2= 150,x3=0,最优值z=610
• 若生产某类汽车,则至少生产80辆,求生产计划。
方法2:引入0-1变量,化为整数规划
x2=0 或 80
x1  My1 , x1  80 y1 , y1 {0,1} M为大的正数,
x2  My2 , x2  80 y2 , y2 {0,1} 可取1000
x3=0 或 80
x3  My3 , x3  80 y3 , y3 {0,1}
x1=0 或 80
LINDO 中 对 01变量的限定:
int y1
int y2
int y3
OBJECTIVE FUNCTION VALUE
1)
610.0000
VARIABLE VALUE REDUCED COST
X1
80.000000
-2.000000
X2 150.000000
-3.000000 最优解同前
X3
0.000000
-4.000000
Y1
1.000000
0.000000
Y2
1.000000
0.000000
Y3
0.000000
0.000000
• 若生产某类汽车,则至少生产80辆,求生产计划。
方法3:化为非线性规划
x1=0 或 80
x1 ( x1  80)  0
x2=0 或 80
x2 ( x2  80)  0
x3=0 或 80
x3 ( x3  80)  0
非线性规划(Non- Linear Programming,简记NLP)
NLP 虽 然 可 用 现 成 的 数 学 软 件 求 解 ( 如 LINGO,
MATLAB),但是其结果常依赖于初值的选择。
实践表明,本例仅当初值非常接近上面方法算出
的最优解时,才能得到正确的结果。
0-1规划
分配问题:混合泳接力队的选拔
5名候选人的百米成绩
蝶泳
仰泳
蛙泳
自由泳
甲
1’06”8
1’15”6
1’27”
58”6
乙
57”2
1’06”
1’06”4
53”
丙
1’18”
1’07”8
1’24”6
59”4
丁
1’10”
1’14”2
1’09”6
57”2
戊
1’07”4
1’11”
1’23”8
1’02”4
如何选拔队员组成4100米混合泳接力队?
丁的蛙泳成绩退步到1’15”2;戊的自由泳成绩进
步到57”5, 组成接力队的方案是否应该调整?
穷举法:组成接力队的方案共有5!=120种。
cij(秒)~队员i 第j 种泳姿的百米成绩
0-1规划模型
cij
j=1
j=2
j=3
j=4
i=1
66.8
75.6
87
58.6
i=2
57.2
66
66.4
53
i=3
78
67.8
84.6
59.4
i=4
70
74.2
69.6
57.2
i=5
67.4
71
83.8
62.4
若选择队员i参加泳姿j 的比赛,记xij=1, 否则记xij=0
4
目标
函数
Min
5
Z   cij xij
j 1 i 1
每人最多入选泳姿之一
约束
4
条件
x
j 1
ij
 1, i  1,5
每种泳姿有且只有1人
5
x
i 1
ij
 1, j  1,  4
模型求解
输入LINDO求解
MIN 66.8x11+75.6x12+87x13+58.6x14
+… …
+67.4x51+71 x52+83.8x53+62.4x54
SUBJECT TO
x11+x12+x13+x14 <=1
……
x41+x42+x43+x44 <=1
x11+x21+x31+x41+x51 =1
……
x14+x24+x34+x44+x54 =1
END
INT 20
蝶泳
仰泳
蛙泳
自由泳
甲
1’06”8
1’15”6
1’27”
58”6
乙
57”2
1’06”
1’06”4
53”
最优解:x14 = x21 = x32 =
x43 = 1, 其它变量为0;
成绩为253.2(秒)=4’13”2
甲~ 自由泳、乙~ 蝶泳、
丙~ 仰泳、丁~ 蛙泳.
丙
1’18”
1’07”8
1’24”6
59”4
丁
1’10”
1’14”2
1’09”6
57”2
戊
1’07”4
1’11”
1’23”8
1’02”4
讨论 丁蛙泳c43 =69.675.2,戊自由泳c54=62.4 
57.5, 方案是否调整? 敏感性分析?
IP规划一般没有与LP规划相类似的理论,LINDO
输出的敏感性分析结果通常是没有意义的。
c43, c54 的新数据重新输入模型,用LINDO求解
最优解:x21 = x32 = x43 = x51 = 1, 成绩为4’17”7
乙~ 蝶泳、丙~ 仰泳、
丁~ 蛙泳、戊~ 自由泳
原 甲~ 自由泳、乙~ 蝶泳、
方
案 丙~ 仰泳、丁~ 蛙泳.
指派(Assignment)问题:每项任务有且只有一人承担,
每人只能承担一项,效益不同,怎样分派使总效益最大.
多目标规划:选课策略
课号
课名
学分
所属类别
1
2
3
4
5
6
7
8
9
微积分
线性代数
最优化方法
数据结构
应用统计
计算机模拟
计算机编程
预测理论
数学实验
5
4
4
3
4
3
2
2
3
数学
数学
数学;运筹学
数学;计算机
数学;运筹学
计算机;运筹学
计算机
运筹学
运筹学;计算机
先修课要求
微积分;线性代数
计算机编程
微积分;线性代数
计算机编程
应用统计
微积分;线性代数
要求至少选两门数学课、三门运筹学课和两门计算机课
为了选修课程门数最少,应学习哪些课程 ?
选修课程最少,且学分尽量多,应学习哪些课程 ?
0-1规划模型
决策变量
课号
课名
所属类别
1
2
3
4
5
6
7
8
9
微积分
线性代数
最优化方法
数据结构
应用统计
计算机模拟
计算机编程
预测理论
数学实验
数学
数学
数学;运筹学
数学;计算机
数学;运筹学
计算机;运筹学
计算机
运筹学
运筹学;计算机
约束条件
最少2门数学课,
3门运筹学课,
2门计算机课。
xi=1 ~选修课号i 的
课程(xi=0 ~不选)
目标函数
选修课程总数最少
9
Min
Z   xi
i 1
x1  x2  x3  x4  x5  2
x3  x5  x6  x8  x9  3
x 4  x 6  x 7  x9  2
0-1规划模型
课号
 1
 2
 3
4
5
 6
 7
8
 9
课名
微积分
线性代数
最优化方法
数据结构
应用统计
计算机模拟
计算机编程
预测理论
数学实验
约束条件
先修课要求
先修课程要求
x3=1必有x1 = x2 =1
微积分;线性代数
计算机编程
微积分;线性代数
计算机编程
x3  x1 , x3  x2
应用统计
微积分;线性代数
模型求解(LINDO)
最优解: x1 = x2 = x3 = x6 = x7 = x9
=1, 其它为0;6门课程,总学分21
2 x3  x1  x2  0
x 4  x7
x4  x7  0
2 x5  x1  x2  0
x6  x7  0
x8  x5  0
2 x9  x1  x2  0
讨论:选修课程最少,学分尽量多,应学习哪些课程?
学分最多
课程最少
9
Min
Z   xi
Max W  5 x1  4 x2  4 x3  3x4  4 x5
i 1
两目标(多目标)规划
 3x6  2 x7  2 x8  3x9
Min {Z ,  W }
多目标优化的处理方法:化成单目标优化。
• 以课程最少为目标,
不管学分多少。
最优解如上,6门课
程,总学分21 。
• 以学分最多为目标,
不管课程多少。
最优解显然是选修所
有9门课程 。
多目标规划
9
• 在课程最少的前提下
以学分最多为目标。
课号
课名
学分
1 
2 
3 
微积分
线性代数
最优化方法
数据结构
应用统计
计算机模拟
计算机编程
预测理论
数学实验
5
4
4
3
4
3
2
2
3
4
5 
6
7 
8
9 
增加约束
x
i 1
i
 6,
以学分最多为目标求解。
最优解: x1 = x2 = x3 = x5
= x7 = x9 =1, 其它为0;总
学分由21增至22。
注意:最优解不唯一!
可将x9 =1 易为x6 =1
LINDO无法告诉优化
问题的解是否唯一。
多目标规划
• 对学分数和课程数加权形成一个目标,如三七开。
Min Y  1Z  2W  0.7Z  0.3W
课号
1
2
3
4
5
6
7
8
9








课名
学分
微积分
线性代数
最优化方法
数据结构
应用统计
计算机模拟
计算机编程
预测理论
数学实验
5
4
4
3
4
3
2
2
3
9
Z   xi
i 1
W  5 x1  4 x2  4 x3  3x4  4 x5
 3x6  2 x7  2 x8  3x9
最优解: x1 = x2 = x3 = x4
= x5 = x6 = x7 = x9 =1,
其它为0;总学分28。
多目标规划
讨论与思考
Min Y  1 Z  2W
1  2  1, 0  1 , 2  1
9
W  5 x1  4 x2  4 x3  3x4  4 x5
i 1
 3x6  2 x7  2 x8  3x9
Z   xi
1  2 / 3
最优解与1=0,2=1的结果相同——学分最多
1  3 / 4
最优解与1=1,2=0的结果相同——课程最少
4.5
饮料厂的生产与检修
• 企业生产计划
单阶段生产计划
外部需求和内部
资源随时间变化
多阶段生产计划
• 生产批量问题
考虑与产量无关的固定费用
给优化模型求解带来新的困难
例1 饮料厂的生产与检修计划
某种饮料4周的需求量、生产能力和成本
周次
1
2
3
4
合计
需求量(千箱)
15
25
35
25
100
生产能力(千箱)
30
40
45
20
135
成本(千元/千箱)
5.0
5.1
5.4
5.5
存贮费:每周每千箱饮料 0.2千元。
• 安排生产计划, 满足每周的需求, 使4周总费用最小。
• 在4周内安排一次设备检修,占用当周15千箱生产能
力,能使检修后每周增产5千箱,检修应排在哪一周?
问题分析
周次
1
2
3
4
合计
模
型
假
设
需求
15
25
35
25
100
能力
30
40
45
20
135
成本
5.0
5.1
5.4
5.5
• 除第4周外每周的生产
能力超过每周的需求;
• 生产成本逐周上升;
•前几周应多生产一些。
• 饮料厂在第1周开始时没有库存;
• 从费用最小考虑, 第4周末不能有库存;
• 周末有库存时需支出一周的存贮费;
• 每周末的库存量等于下周初的库存量。
模型建立
周次
1
2
3
4
需求
15
25
35
25
决策变量
能力
30
40
45
20
成本
5.0
5.1
5.4
5.5
x1~ x4:第1~4周的生产量
y1~ y3:第1~3周末库存量
存贮费:0.2 (千元/周•千箱)
目标 Min z  5.0 x  5.1x  5.4 x  5.5x  0.2( y  y  y )
1
2
3
4
1
2
3
函数
约束
条件
产量、库存与需求平衡
能力限制
x1  y1  15
x1  30, x2  40
x2  y1  y2  25
x3  45, x4  20
x3  y 2  y3  35
非负限制
x4  y3  25
x1 , x2 , x3 , x4 , y1 , y 2 , y3  0
模型求解
LINDO求解
最优解: x1~ x4:15,40,25,20;
y1~ y3: 0,15,5 .
周次
1
2
3
4
需求
15
25
35
25
产量
15
40
25
20
库存
0
15
5
0
能力
30
40
45
20
成本
5.0
5.1
5.4
5.5
4周生产计划的总费用为528 (千元)
检修计划
• 在4周内安排一次设备检修,占用当周15千箱生产能力,能使
检修后每周增产5千箱,检修应排在哪一周?
周次
1
2
3
4
需求
15
25
35
25
约束条件
产量、库存
与需求平衡
条件不变
能力
30
40
45
20
能
力
限
制
成本
5.0
5.1
5.4
5.5
检修安排在任一周均可
0-1变量wt :wt=1~ 检修安排
在第t周(t=1,2,3,4)
x1  30
x1  15w1  30
x2  40
x2  15w2  40  5w1
x3  45
x3  15w3  45  5w2  5w1
x4  20
x4  15w4  20  5w1  5w2  5w3
检修计划
目标函数不变
0-1变量wt :wt=1~ 检修
安排在第t周(t=1,2,3,4)
增加约束条件:检修1次
w1  w2  w3  w4  1
LINDO求解 最优解: w1=1, w2 , w3, w4=0;
x1~ x4:15,45,15,25;
y1~ y3:0,20,0 .
总费用由528千元降为527千元
检修所导致的生产能力提高的作用,
需要更长的时间才能得到充分体现。
例2 饮料的生产批量问题
饮料厂使用同一条生产线轮流生产多种饮料。
若某周开工生产某种饮料, 需支出生产准备费8千元。
某种饮料4周的需求量、生产能力和成本
周次
1
2
3
4
合计
需求量(千箱)
15
25
35
25
100
生产能力(千箱)
30
40
45
20
135
成本(千元/千箱)
5.0
5.1
5.4
5.5
存贮费:每周每千箱饮料 0.2千元。
• 安排生产计划, 满足每周的需求, 使4周总费用最小。
生产批量问题的一般提法
假设初始库存为0
ct ~时段t 生产费用(元/件);
ht ~时段t (末)库存费(元/件);
制订生产计划, 满
st ~时段t 生产准备费(元);
足需求,并使T个时
dt ~时段t 市场需求(件);
段的总费用最小。
Mt ~时段t 生产能力(件)。
T
min z   ( st wt  ct xt  ht yt )
目标
决策变量
t 1
xt ~时段t 生产量;
约束
yt ~时段t (末)库存量;
wt =1 ~时段t 开工生产
(wt =0 ~不开工)。
yt 1  xt  yt  dt
1, xt  0,
wt  
xt  M t
0, xt  0,
y0  yT  0, xt , yt  0
生产批量问题的一般提法
T
min z   ( st wt  ct xt  ht yt )
t 1
s.t. yt 1  xt  yt  dt
1, xt  0,
wt  
xt  M t
0, xt  0,
y0  yT  0, xt , yt  0
t  1,2,T
xt  M t wt  0
混合0-1规划模型
将所给参数代入模型,用LINDO求解
最优解:x1~ x4:15,40,45,0;总费用:554.0(千元)
§6 钢管和易拉罐下料
原料下料问题
生产中通过切割、剪裁、冲压等
手段,将原材料加工成所需大小
按照工艺要求,确定下料方案,
使所用材料最省,或利润最大
例1 钢管下料
原料钢管:每根19米
客户需求
4米50根
6米20根
问题1. 如何下料最节省 ?
问题2. 客户增加需求:
8米15根
节省的标准是什么?
5米10根
由于采用不同切割模式太多,会增加生产和管理成本,
规定切割模式不能超过3种。如何下料最节省?
钢管下料
切割模式
按照客户需要在一根原料钢管上安排切割的一种组合。
4米1根
6米1根
8米1根
余料1米
4米1根
6米1根
6米1根
余料3米
8米1根
余料3米
8米1根
合理切割模式的余料应小于客户需要钢管的最小尺寸
钢管下料问题1
模式
1
2
3
4
5
6
7
4米钢管根数
4
3
2
1
1
0
0
合理切割模式
6米钢管根数
0
1
0
2
1
3
0
8米钢管根数
0
0
1
0
1
0
2
余料(米)
3
1
3
3
1
1
3
为满足客户需要,按照哪些种合理模式,每种模式
切割多少根原料钢管,最为节省?
两种
标准
1. 原料钢管剩余总余量最小
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
6米
根数
0
1
0
2
1
3
0
8米
根数
0
0
1
0
1
0
2
需
求
50
20
15
余
料
3
1
3
3
1
1
3
约束
满足需求
4 x1  3x2  2 x3  x4  x5  50
x2  2 x4  x5  3x6  20
x3  x5  2 x7  15
整数约束: xi 为整数
最优解:x2=12, x5=15,
其余为0;
最优值:27。
按模式2切割12根,按模式5切割15根,余料27米
钢管下料问题1
目标2(总根数) Min Z 2  x1  x2  x3  x4  x5  x6  x7
约束条 4 x1  3x2  2 x3  x4  x5  50
件不变 x2  2 x4  x5  3x6  20
x3  x5  2 x7  15
xi 为整数
按模式2切割15根,
按模式5切割5根,
按模式7切割5根,
共25根,余料35米
最优解:x2=15,
x5=5, x7=5,
其余为0;
最优值:25。
与目标1的结果“共切割
27根,余料27米” 相比
虽余料增加8米,但减少了2根
当余料没有用处时,通常以总根数最少为目标
钢管下料问题2
增加一种需求:5米10根;切割模式不超过3种。
现有4种需求:4米50根,5米10根,6米20根,8米
15根,用枚举法确定合理切割模式,过于复杂。
对大规模问题,用模型的约束条件界定合理模式
决策变量
xi ~按第i 种模式切割的原料钢管根数(i=1,2,3)
r1i, r2i, r3i, r4i ~ 第i 种切割模式下,每根原料钢管
生产4米、5米、6米和8米长的钢管的数量
钢管下料问题2
目标函数(总根数)
约束
条件
满足需求
r11 x1  r12 x2  r13 x3  50
r21 x1  r22 x2  r23 x3  10
Min x1  x2  x3
模式合理:每根
余料不超过3米
16  4r11  5r21  6r31  8r41  19
16  4r12  5r22  6r32  8r42  19
r31 x1  r32 x2  r33 x3  20
16  4r13  5r23  6r33  8r43  19
r41 x1  r42 x2  r43 x3  15
整数约束: xi ,r1i, r2i,
r3i, r4i (i=1,2,3)为整数
整数非线性规划模型
钢管下料问题2
增加约束,缩小可行域,便于求解
需求:4米50根,5米10
根,6米20根,8米15根
每根原料钢管长19米
 4  50  5  10  6  20  8  15 
 26

原料钢管总根数下界: 
19

特殊生产计划:对每根原料钢管
模式1:切割成4根4米钢管,需13根;
模式2:切割成1根5米和2根6米钢管,需10根;
模式3:切割成2根8米钢管,需8根。
原料钢管总根数上界:13+10+8=31
26  x1  x2  x3  31
模式排列顺序可任定
x1  x2  x3
LINGO求解整数非线性规划模型
Local optimal solution found at
iteration:
12211
Objective value:
28.00000
Variable Value Reduced Cost
X1
10.00000
0.000000
X2
10.00000
2.000000
X3
8.000000
1.000000
R11
3.000000
0.000000
R12
2.000000
0.000000
R13
0.000000
0.000000
R21
0.000000
0.000000
R22
1.000000
0.000000
R23
0.000000
0.000000
R31
1.000000
0.000000
R32
1.000000
0.000000
R33
0.000000
0.000000
R41
0.000000
0.000000
R42
0.000000
0.000000
R43
2.000000
0.000000
模式1:每根原料钢管切割成3
根4米和1根6米钢管,共10根;
模式2:每根原料钢管切割成2
根4米、1根5米和1根6米钢管,
共10根;
模式3:每根原料钢管切割成2
根8米钢管,共8根。
原料钢管总根数为28根。
例2 易拉罐下料
板材规格1:
正方形,边长
24cm,5万张。
模式1:1.5秒 模式2:2秒
板材规格2:
长方形,
3228cm,
2万张。
上盖
罐
身
下底
模式3:1秒
罐身高10cm,
上盖、下底直
径均5cm。
模式4:3秒
每周工作40小时,每只易拉罐利润0.10元,原料余料损失0.001元
/ cm2(不能装配的罐身、盖、底也是余料) 如何安排每周生产?
问题分析
计算各种模式下的余料损失
模式1:
正方形
边长24cm
上、下底直径d=5cm,
罐身高h=10cm。
模式1 余料损失 242-10d2/4 - dh=222.6 cm2
罐身个数
模式1
模式2
模式3
模式4
1
2
0
4
底、盖
个数
10
4
16
5
余料损失
(cm2)
222.6
183.3
261.8
169.5
冲压时间
(秒)
1.5
2
1
3
问题分析
目标:易拉罐利润扣除原料余料损失后的净利润最大
注意:不能装配的罐身、上下底也是余料
约束:每周工作时间不超过40小时;
原料数量:规格1(模式1 ~3)5万张,
规格2(模式4)2万张;
罐身和底、盖的配套组装 。
模型建立 xi ~ 按照第i 种模式的生产张数(i=1,2,3,4);
决策
变量
y1 ~ 一周生产的易拉罐个数;
y2 ~ 不配套的罐身个数;
y3 ~ 不配套的底、盖个数。
y1 ~ 易拉罐个数;y2 ~ 不配套的罐身;
y3 ~ 不配套的底、盖。
余料
时间
每只易拉罐利润0.10元,
222.6
1.5
余料损失0.001元 / cm2
模型建立
产量
x1
x2
x3
x4
目标
约束
条件
183.3
261.8
169.5
2
1
3
罐身面积dh=157.1 cm2
底盖面积d2/4=19.6 cm2
Max 0.1y1  0.001(222.6 x1  183.3x2
 261.8 x3  169.5 x4  157.1y2  19.6 y3 )
时间约束 1.5x1  2 x2  x3  3x4  144000 (40小时)
原料约束
x1  x2  x3  50000, x4  20000
约束
条件
产量
x1
x2
x3
x4
y1 ~ 易拉罐个数;y2 ~ 不配套的罐身;
y3 ~ 不配套的底、盖。
罐身
1
2
0
4
底、盖
10
4
16
5
配套约束
y2  x1  2 x2  4 x4  y1
y3  10 x1  4 x2  16 x3  5x4  2 y1
y1  min{ x1  2 x2  4 x4 , (10 x1  4 x2  16 x3  5x4 ) / 2}
y1  x1  2 x2  4 x4 , y1  (10 x1  4 x2  16 x3  5x4 ) / 2
虽然xi和y1,y2,y3应是整数,但是因生产量很大,
可以把它们看成实数,从而用线性规划模型处理 。
模型求解
LINDO发出警告信息:“数据之间的数量级差别太
大,建议进行预处理,缩小数据之间的差别”
将所有决策变量扩大10000倍(xi ~万张,yi ~万件)
1.5x1  2 x2  x3  3x4  14.4, x1  x2  x3  5, x4  2
OBJECTIVE FUNCTION VALUE
1)
0.4298337
VARIABLE VALUE REDUCED COST
Y1
16.025000
0.000000
X1
0.000000
0.000050
X2
4.012500
0.000000
X3
0.375000
0.000000
X4
2.000000
0.000000
Y2
0.000000
0.223331
Y3
0.000000
0.036484
模式2生产40125张,
模式3生产3750张,
模式4生产20000张,
共产易拉罐160250个
(罐身和底、盖无剩余),
净利润为4298元
下料问题的建模
• 确定下料模式
• 构造优化模型
一维问题(如钢管下料)
规格不太多,可枚举下料模式,建立整数线性规划模型,
否则要构造整数非线性规划模型,求解困难,可用缩小
可行域的方法进行化简,但要保证最优解的存在。
二维问题(如易拉罐下料)
具体问题具体分析(比较复杂 )
例:运输问题

使用LINGO软件计算6个发点8个收点的最小费
用运输问题。产销单位运价如下表:
B1
B2
B3
B4
B5
B6
B7
B8
产
量
A1
6
2
6
7
4
2
5
9
60
A2
4
9
5
3
8
5
8
2
55
A3
5
2
1
9
7
4
3
3
51
A4
7
6
7
3
9
2
7
1
43
A5
2
3
9
5
7
2
6
5
41
A6
5
5
2
2
8
1
4
3
52
销量
35
37
22
32
41
32
43
38
销地
产地
model:
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets
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 5
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;
enddata
min=@sum(links(I,J):
min  costi , j * volumei , j
cost(I,J)*volume(I,J)); i , jlinks
@for(vendors(J):
volumei , j  demand j

@sum(warehouses(I):
iwarehouses
volume(I,J))=demand(J));
j  vendors
volumei , j  capacityi

@for(warehouses(I):
jvendors
@sum(vendors(J):
i  warehouses
volume(I,J))<=capacity(I));
end
Lingo中的集
 借助于集,能够用一个单一的、长的、
简明的复合公式表示一系列相似的约束
从而可以快速方便地表达规模较大的模
型。
 集部分以关键字“sets:”开始,以
“endsets”结束。
定义集的方法
 可以显式定义一个名(结构类型)为
students的原始集,它具有成员变量John、
Jill、Rose和Mike,属性(结构类型的变量)
有sex和age:
sets:
students/John Jill Rose
endsets
Mike/:sex, age;
 也可以如下隐式定义:
warehouses/wh1..wh6/: capacity;
结构类型名为warehouses,结构变量是
capacity,每个变量都有成员
wh1,wh2,wh3,wh4,wh5,wh6。
派生集
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets
links类型有48个成员变量:
(wh1,v1), (wh1,v2), … , (wh1,v8),
(wh2,v1), (wh2,v2), … , (wh2,v8),
… ,
(wh6,v1), (wh6,v2), … , (wh6,v8)
数据部分
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 5
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;
enddata
 数据按行依次分配给变量的(1,1),
(1,2), … ,(1,n), (2,1),…(2,n),…(m,n)
位置。
模型的初始化
init:
X, Y = 0, .1;
endinit
Y=@log(X);
X^2+Y^2<=1;

好的初始点会减少模型的求解时间。而在非线
性规划之中,初始点的选择还影响结果的最优
性。
逻辑运算符










#not#
非
#eq#
相等
#ne#
不相等
#gt#
大于
#ge#
大于或等于
#lt#
小于
#le#
小于或等于
#and# 仅当两个参数都为true时,结果为true;
#or#
仅当两个参数都为false时,结果为false;
例:(2 #gt# 3) #and# (4 #gt# 2)
关系运算符
三种关系运算符 :“=”、“<=”和“>=”
 “<” 和“<=”一样。A要严格小于B,可以A+e<B。
 在LINGO中,关系运算符主要是被用在模型中,来指
定一个表达式的左边是否等于、小于等于、或者大
于等于右边,形成模型的一个约束条件。
 关系运算符与逻辑运算符#eq#、#le#、#ge#截然不
同:



关系运算符是模型中所指定关系的为真描述,即只有真的
情况。用于模型的约束条件。
而逻辑运算符仅仅判断一个该关系是否被满足:满足为真,
不满足为假。可以有真假两种情况。用于条件语句中。
集循环函数
四个集循环函数:@for,@sum,@min,@max
 min=@sum(links(I,J):cost(I,J)*volume(I,J));

min

i , jlinks
costi , j * volumei , j
@for(vendors(J):
@sum(warehouses(I):
volume(I,J))=demand(J));
@for(vendors(J)|J #gt# 1:
@sum(warehouses(I):
volume(I,J))=demand(J));

iwarehouses
volumei , j  demand j
j  vendors

iwarehouses
volumei , j  demand j
j  vendors且j  1
if函数
@if(logical_condition,true_result,false_result)
 @if函数将评价一个逻辑表达式logical_condition,如果为
真,返回true_ result,否则返回false_result。

min
s.t.
f ( x)  g ( y )
100  2 x,
f ( x)  
 2 x,
60  3 y,
g ( y)  
 2 y,
x  y  30
x, y  0
model:
min=fx+fy;
x0
x  0 fx=@if(x #gt# 0, 100,0)+2*x;
y  0 fy=@if(y #gt# 0,60,0)+3*y;
y  0 x+y>=30;
end
变量界定函数
变量界定函数实现对变量取值范围的附加限制:
@bin(x)
限制x为0或1
@bnd(L,x,U)
限制L≤x≤U
@free(x)
取消对变量x的默认下界为0的限制
@gin(x)
限制x为整数

所有的volume变量都是0-1变量:
@for(links(i,j): @bin(volume(i,j)));

分配问题:混合泳接力队的选拔
5名候选人的百米成绩
cij
j=1
j=2
j=3
j=4
i=1
66.8
75.6
87
58.6
i=2
57.2
66
66.4
53
i=3
78
67.8
84.6
59.4
i=4
70
74.2
69.6
57.2
4
Z   cij xij
Min
如何选拔队员组
成4100米混合泳
接力队?
4
x
j 1
ij
5
x
i 1
5
ij
j 1 i 1
 1, i  1,5
 1, j  1,  4
i=5
67.4
71
83.8
62.4
model:
sets:
workers/w1..w5/;
jobs/j1..j4/;
links(workers,jobs): cost,volume;
endsets
min=@sum(links: cost*volume);
@for(workers(I): @sum(jobs(J): volume(I,J))<=1);
@for(jobs(J): @sum(workers(I): volume(I,J))=1);
@for(links(i,j): @bin(volume(i,j)));
data:
cost= 66.8 57.2 78 70 67.4
75.6 66 67.8 74.2 71
87 66.4 84.6 69.6 83.8
58.6 53 59.4 57.2 62.4;
enddata
end
最短路径问题
 给定N个点组成集合{P1,P2,…,PN},由集
合中任一点Pi到另一点Pj的距离用cij表示。
指定一个终点PN,要求从Pi点出发到PN
的最短路线。
 如果f(j)是由点Pj出发至终点PN的最短路
程,则f(i)到PN的最短路应该是:
 f (i )  min{ f ( j )  ci , j }, i  1, 2,..., N  1

 f ( N )  0 model:
data:
n=10;
enddata
sets:
cities/1..n/: F; !10个城市;
roads(cities,cities)/ 1,2 1,3 2,4 2,5 2,6 3,4 3,5
3,6 4,7 4,8 5,7 5,8 5,9 6,8 6,9 7,10 8,10
9,10 /: D, P;
endsets
data:
D= 6 5, 3 6 9 , 7 5 11, 9 1, 8 7 5, 4 10, 5, 7,
9;
F(n)=0;
@for(cities(i) | i #lt# n:
F(i)=@min(roads(i,j): D(i,j)+F(j));
);
 f (i )  min{ f ( j )  ci , j }, i  1, 2,..., N  1
!
 f ( N )  0 !如果f(i)=cij+f(j),则从Pi到PN的最短路径肯定经过Pj。
@for(roads(i,j):
P(i,j)=@if(F(i) #eq# D(i,j)+F(j),1,0)
);
end
05年B题问题2:DVD的分配
 会员每次租赁3张DVD,现在给出网站手
上的100种DVD的现有张数和当前需要处
理的1000位会员的在线订单,如何对这
些DVD进行分配,才能使会员获得最大
的满意度?
DVD编号
D001
D002
D003
D004
…
DVD现有数量
10
40
15
20
…
C0001
6
0
0
0
…
C0002
0
0
0
0
…
C0003
0
0
0
3
…
C0004
0
0
0
0
…
…
…
…
…
…
…
会员
在线
订单
0-1规划模型
1000 100
max z    ci , j * xi , j
i 1 j 1
 1000
  xi , j  N j , j  1, 2, ,100
 i 1
 100
st :   xi , j  3, j  1, 2, ,1000
 j 1
 x  0或1,
i, j  1, 2, , n
i, j


 cij是偏爱指数,其中0改成-1,其他数字
如果是c,则用11-c代替。