新时代多目标优化【数学建模】领域的极致探索——数学规划模型

目录

例1

1.问题重述

2.基本模型

变量定义:

目标函数:

约束条件:

3.模型分析与假设

4.模型求解

5.LINGO代码实现

6.结果解释

[​编辑 7.敏感性分析](#编辑 7.敏感性分析)

8.结果解释

[例2 奶制品的销售计划](#例2 奶制品的销售计划)

1.问题重述

[​编辑 2.基本模型](#编辑 2.基本模型)

3.模型求解

4.结果解释

3.整数规划的实用模型

1.题目

2.分析

3.模型建立

​编辑4.模型求解

4.运输问题

例1.

1.题目

2.分析

3.模型建立

[​编辑 4.模型求解_Lingo](#编辑 4.模型求解_Lingo)

5.结果分析

最优目标值

变量值

约束条件

[冗余成本(Reduced Cost)](#冗余成本(Reduced Cost))

[对偶价格(Dual Price)](#对偶价格(Dual Price))

[例2 自来水的输送问题](#例2 自来水的输送问题)

1.题目

2.分析

[​编辑3. 模型建立](#编辑3. 模型建立)

4.模型求解

5.问题讨论

6.求解

[​编辑 总结](#编辑 总结)


专栏:数学建模学习笔记

生产与销售问题

企业生产计划 空间层次

工厂级:根据外部需求和内部设备、人力、原料等条件,以最大利润为目标制订产品生产计划;
车间级:根据生产计划、工艺流程、资源约束及费用参数等,以最小成本为目标制订生产批量划.

时间层次

若短时间内外部需求和内部资源等不随时间变化,可制订 单阶段生产计划。

例1

一奶制品加工厂用牛奶生产A1,A2 两种奶制品,1桶牛奶可以在设备甲上用12小时加工生产3公斤A1 或在设备乙上用8小时加工成4公斤A2 根据市场需要,生产的A1,A2 全部能售出, 且每公斤A1 获利24元, 每公斤A2 可获利16元. 现在加工厂每天能得到50桶牛奶的供应, 每天工人总的劳动时间为480小时, 并且设备甲每天至多能加工100公斤 A1设备乙的加工能力没有限制. 试为该厂制定一个生产计划, 使每天获利最大, 并进一步讨论以下3个附加问题:
⑴若用35元可以买到1桶牛奶, 应否作这项投资? 若投资, 每天最多购买多少桶牛奶?
⑵若可以聘用临时工人以增加劳动时间, 付给临时工人的工资最多是每小时几元?
⑶由于市场需求变化, 每公斤A1 的利润增加到30元,应否改变生产计划?

1.问题重述

例1 加工奶制品的生产计划

每天:50 桶牛奶 时间480 小时 至多加工100 公斤A 1
制订生产计划,使每天获利最大

• 35 元可买到1 桶牛奶,买吗?若买,每天最多买多少?

• 可聘用临时工人,付出的工资最多是每小时几元?

• A 1 的获利增加到 30 元/ 公斤,应否改变生产计划?

2.基本模型

每天 50 桶牛奶 时间48小时 至多加工100 公斤A 1

变量定义:

目标函数:

约束条件:

3.模型分析与假设

4.模型求解

5.LINGO代码实现

model:
max = 72*x1+64*x2;
[milk] x1 + x2<50;
[time]
12*x1+8*x2<480;
[cpct] 3*x1<100;
end

20 桶牛奶生产A 1 , 30 桶生产A 2 , 利润3360 元。

6.结果解释

7.敏感性分析

8.结果解释

例2 奶制品的销售计划

例1给出的 A1,A2两种奶制品的生产条件, 利润及工厂的资源限制不变, 为增加工厂的获利, 开发了奶制品的深加工技术: 用2小时和3元加工费, 可将1公斤 A1加工成0.8高级奶制品B1 也可将一公斤 A2加工成0.75公斤高级奶制品B2, 每公斤B1 能获利44元, 每公斤B2 能获利32元,试为该厂制定一个生产销售计划, 使获得的利润最大,并讨论以下问题:
⑴若投资32元可以增加供应一桶牛奶, 投资3元可以增加一小时劳动时间, 应否作这样的投资, 若每天投资150元, 可赚回多少?
⑵每公斤高级奶制品B1,B2 的获利经常有10%的波动,对制定计划有无影响, 若每公斤B1 的获利下降10%, 计划应该改变吗?

1.问题重述

例2 奶制品的生产销售计划 在例1基础上深加工

2.基本模型

3.模型求解

4.结果解释

奶制品的生产与销售

由于产品利润、加工时间等均为常数,可建立 线性规划模型.

• 线性规划模型的三要素: 决策变量、目标函数、约束条件.

• 建模时尽可能利用原始的数据信息,把尽量多的计算留给计算机去做(分析例2)

• 用LINGO 求解,输出丰富,利用 影子价格和 灵敏性分析 可对结果做进一步研究.

3.整数规划的实用模型

1.题目

例.银行人员安排某储蓄所每天的营业时间为上午9点到下午5点. 根据经验, 每天不同时间所需要的服务员数量为:

|-----|--------|---------|---------|--------|
| 时间段 | 9---10 | 10---11 | 11---12 | 12---1 |
| 数量 | 4 | 3 | 4 | 6 |
| 时间段 | 1---2 | 2---3 | 3---4 | 4---5 |
| 数量 | 5 | 6 | 8 | 8 |

储蓄所可以雇佣全时和半时两类服务员. 全时服务员每天报酬100元, 从上午9点到下午5点工作, 但中午12点到下午2点之间必须安排1小时的午餐时间.储蓄所每天可以不超过3名的半时服务员, 每个半时服务员必须连续工作4小时, 报酬40元, 问该储蓄所该如何雇佣全时和半时服务员?

如果不能雇佣半时服务员, 每天至少增加多少费用,如果雇佣半时服务员的数量没有限制, 每天可以减少多少费用?

2.分析

解决此问题的关键是确定聘用全时服务员及半时服务员的人数, 但还要考虑全时服务员有吃午餐的时间, 故把全时服务员分为两类: 午餐时间为12时至下午1时的及下午1时至下午2时的; 而半时服务员按上班时间进行划分.

3.模型建立

4.模型求解

4.运输问题

生产、生活物资从若干供应点运送到一些需求点,怎样安排输送方案使运费最小,或利润最大?
各种类型的货物装箱,由于受体积、重量等限制,如何搭配装载,使获利最高,或装箱数量最少?

例1.

1.题目

要从甲地调出物质2000吨, 从乙地调出物质1100吨, 分别供给A 地1700吨, B地1100吨, C地200吨和D地100吨, 已知每吨运费如表所示, 试建立一个使运费达到最小的调拨计划.

单位路程运费表

2.分析

3.模型建立

4.模型求解_Lingo

MODEL:
SETS:
    ORIG /1..2/: SUPPLY;
    DEST /1..4/: DEMAND;
    LINK(ORIG, DEST): COST, FLOW;
ENDSETS

DATA:
    SUPPLY = 2000 1100;
    DEMAND = 1700 1100 200 100;
    COST = 
    21 25  7 15
    51 51 37 15;
ENDDATA

! 目标函数:最小化总运输费用;
MIN = @SUM(LINK(I,J): COST(I,J) * FLOW(I,J));

! 供应约束:每个生产地的调运量不能超过其供应量;
@FOR(ORIG(I): 
    @SUM(DEST(J): FLOW(I, J)) <= SUPPLY(I)
);

! 需求约束:每个销售地的需求量必须得到满足;
@FOR(DEST(J):
    @SUM(ORIG(I): FLOW(I, J)) = DEMAND(J)
);

END

运行结果

Global optimal solution found.
Objective value: 92100.00
Infeasibilities: 0.000000
Total solver iterations: 1
Elapsed runtime seconds: 0.06

Model Class: LP

Total variables: 8
Nonlinear variables: 0
Integer variables: 0

Total constraints: 7
Nonlinear constraints: 0

Total nonzeros: 24
Nonlinear nonzeros: 0

Variable Value Reduced Cost
SUPPLY( 1) 2000.000 0.000000
SUPPLY( 2) 1100.000 0.000000
DEMAND( 1) 1700.000 0.000000
DEMAND( 2) 1100.000 0.000000
DEMAND( 3) 200.0000 0.000000
DEMAND( 4) 100.0000 0.000000
COST( 1, 1) 21.00000 0.000000
COST( 1, 2) 25.00000 0.000000
COST( 1, 3) 7.000000 0.000000
COST( 1, 4) 15.00000 0.000000
COST( 2, 1) 51.00000 0.000000
COST( 2, 2) 51.00000 0.000000
COST( 2, 3) 37.00000 0.000000
COST( 2, 4) 15.00000 0.000000
FLOW( 1, 1) 1700.000 0.000000
FLOW( 1, 2) 100.0000 0.000000
FLOW( 1, 3) 200.0000 0.000000
FLOW( 1, 4) 0.000000 26.00000
FLOW( 2, 1) 0.000000 4.000000
FLOW( 2, 2) 1000.000 0.000000
FLOW( 2, 3) 0.000000 4.000000
FLOW( 2, 4) 100.0000 0.000000

Row Slack or Surplus Dual Price
1 92100.00 -1.000000
2 0.000000 26.00000
3 0.000000 0.000000
4 0.000000 -47.00000
5 0.000000 -51.00000
6 0.000000 -33.00000
7 0.000000 -15.00000

5.结果分析

最优目标值

  • 目标值(Objective value):92100.00 这表示总运输费用最小化后的总费用为92100元。

变量值

  • FLOW(1, 1):1700.000 表示从甲地到A地调运1700吨。
  • FLOW(1, 2):100.0000 表示从甲地到B地调运100吨。
  • FLOW(1, 3):200.0000 表示从甲地到C地调运200吨。
  • FLOW(1, 4):0.000000 表示从甲地到D地没有调运。
  • FLOW(2, 1):0.000000 表示从乙地到A地没有调运。
  • FLOW(2, 2):1000.000 表示从乙地到B地调运1000吨。
  • FLOW(2, 3):0.000000 表示从乙地到C地没有调运。
  • FLOW(2, 4):100.0000 表示从乙地到D地调运100吨。

约束条件

所有约束条件都得到了满足(Slack or Surplus为0),没有违反任何约束:

  • 每个生产地的供应量约束得到了满足。
  • 每个销售地的需求量约束得到了满足。

冗余成本(Reduced Cost)

  • Reduced Cost 为0表示这些流量变量都在最优解中被有效利用,没有改进的空间。

对偶价格(Dual Price)

对偶价格反映了每增加一个单位的约束右端常数对目标函数的影响:

  • 第二行:26.00000 表示增加一个单位的供应量对总费用有正向影响。
  • 第三行:0.000000 表示增加一个单位的需求量对总费用没有影响。

例2 自来水的输送问题

1.题目

某市有甲、乙、丙、丁四个居民区, 自来水由A,B,C三个水库供应, 四个区每天必须得到保证的基本用水量分别为30,70,10,10 千吨, 但由于水源紧张, 三个水库每天最多只能分别供应 50,60,50千吨自来水, 由于地区位置的差别, 自来水公司从各水库向各区送水所需付出的引水管理费不同(见表), 其它管理费用都是450/千吨, 根据公司规定, 各区用户按统一标准 900/千吨收费, 此外, 四个区都向公司申请了额外用水量, 分 分别为每天50,70,20,40 千吨,

(1)该公司应如何分配供水量, 才能获利最多?

(2)为了增加供水量, 自来水公司正在考虑进行水库改造,随三个水库的供水量都提高一倍, 问此时供水方案应如何改变?公司利润可增加多少?

从水库向各区送水的净利润

(1)也可以基于利润表建立max模型.

2.分析

问题的关键是如何安排从各个水库向四个居民区供水,使得引水管理费用达到最小, 注意到其它费用与供水安排无关.

3. 模型建立

4.模型求解

5.问题讨论

6.求解

总结

数学规划模型是数学建模中用于描述和解决优化问题的一类模型。它通过构建目标函数和约束条件,将实际问题转化为数学形式,旨在寻找满足约束条件的最优解。数学规划模型广泛应用于各个领域,包括资源分配、生产计划、物流管理和金融投资等,通过线性规划、非线性规划、整数规划等方法,帮助决策者在复杂环境中做出最优选择。

相关推荐
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
dayouziei4 小时前
java的类加载机制的学习
java·学习
前端青山7 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
dsywws7 小时前
Linux学习笔记之vim入门
linux·笔记·学习
晨曦_子画8 小时前
3种最难学习和最容易学习的 3 种编程语言
学习
城南vision8 小时前
Docker学习—Docker核心概念总结
java·学习·docker
ctrey_9 小时前
2024-11-1 学习人工智能的Day20 openCV(2)
人工智能·opencv·学习
十年之少9 小时前
由中文乱码引来的一系列学习——Qt
学习
Jina AI9 小时前
RAG 系统的分块难题:小型语言模型如何找到最佳断点?
人工智能·语言模型·自然语言处理
-派神-9 小时前
大语言模型(LLM)量化基础知识(一)
人工智能·语言模型·自然语言处理