Python小白的数学建模课-06 固定费用问题
Posted youcans
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python小白的数学建模课-06 固定费用问题相关的知识,希望对你有一定的参考价值。
Python 实例介绍固定费用问题的建模与求解。
学习 PuLP工具包中处理复杂问题的快捷使用方式。
『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达人。
前文讲到几种典型的 0-1 规划问题,给出了 PuLP 求解的案例。由于 0-1 规划问题种类很多,又是数模竞赛热点,有必要再结合几个实例进行介绍。
1. 固定费用问题案例解析
1.1 固定费用问题(Fixed cost problem)
固定费用问题,是指求解生产成本最小问题时,总成本包括固定成本和变动成本,而选择不同生产方式会有不同的固定成本,因此总成本与选择的生产方式有关。
固定费用问题,实际上是互斥的目标函数问题,对于不同的生产方式具有多个互斥的目标函数,但只有一个起作用。固定费用问题不能用一般的线性规划模型求解。
一般地,设有 m 种生产方式可供选择,采用第 j 种方式时的固定成本为
K
j
K_j
Kj、变动成本为
c
j
c_j
cj、产量为
x
j
x_j
xj,则采用各种生产方式的总成本分别为:
m
i
n
P
j
=
{
k
j
+
c
j
x
j
,
x
j
≥
0
0
,
x
j
=
0
,
j
=
1
,
.
.
.
m
min\\;P_j = \\begin{cases} k_j + c_j x_j,&x_j \\geq 0\\\\ 0,&x_j = 0, j=1,...m \\end{cases}
minPj={kj+cjxj,0,xj≥0xj=0,j=1,...m
该类问题的建模方法,为了构造统一的目标函数,可以引入 m 个 0-1 变量 y_j 表示是否采用第 j 种生产方式:
y
j
=
{
0
,
不
采
用
第
j
种
生
产
方
式
1
,
采
用
第
j
种
生
产
方
式
y_j = \\begin{cases} 0,不采用第\\;j\\;种生产方式\\\\ 1,采用第\\;j\\; 种生产方式 \\end{cases}
yj={0,不采用第j种生产方式1,采用第j种生产方式
于是可以构造新的目标函数和约束条件:
m
i
n
f
(
x
)
=
∑
j
=
1
m
(
k
j
y
j
+
c
j
x
j
)
s
.
t
.
:
x
j
≤
y
j
M
,
j
=
1
,
.
.
.
m
min\\;f(x) = \\sum_{j=1} ^m (k_j y_j + c_j x_j)\\\\ s.t.:\\;x_j \\leq y_j M,j=1,...m
minf(x)=j=1∑m(kjyj+cjxj)s.t.:xj≤yjM,j=1,...m
M 是一个充分大的常数。
欢迎关注 『Python小白的数学建模课 @ Youcans』 系列,持续更新
Python小白的数学建模课-A1.国赛赛题类型分析
Python小白的数学建模课-A2.2021年数维杯C题探讨
Python小白的数学建模课-A3.新冠疫情数模竞赛赛题及短评
Python小白的数学建模课-01.新手必读
Python小白的数学建模课-02.数据导入
Python小白的数学建模课-03.线性规划
Python小白的数学建模课-04.整数规划
Python小白的数学建模课-05.0-1规划
Python小白的数学建模课-06.固定费用问题
1.2 案例问题描述
例题 1:
某服装厂可以生产 A、B、C 三种服装,生产不同种类服装需要租用不同设备,设备租金、生产成本、销售价格等指标如下表所示。
服装种类 | 设备租金 | 材料成本 | 销售价格 | 人工工时 | 设备工时 | 设备可用工时 |
---|---|---|---|---|---|---|
单位 | (元) | (元/件) | (元/件) | (小时/件) | (小时/件) | (小时) |
A | 5000 | 280 | 400 | 5 | 3 | 300 |
B | 2000 | 30 | 40 | 1 | 0.5 | 300 |
C | 2000 | 200 | 300 | 4 | 2 | 300 |
如果各类服装的市场需求都足够大,服装厂每月可用人工时为 2000h,那么应该如何安排生产计划使利润最大?
1.3 建模过程分析
首先要理解生产某种服装就会发生设备租金,租金只与是否生产该产品有关,而与生产数量无关,这就是固定成本。因此本题属于固定费用问题。
有些同学下意识地认为是从 3 种产品中选择一种,但题目中并没有限定必须或只能生产一种产品,因此决策结果可以是都不生产、选择 1 种或 2 种产品、3 种都生产。
决策结果会是什么都不生产吗?有可能的。
每种产品的利润:(销售价格 - 材料成本)× 生产数量 - 设备租金
本题中如果设备租金很高,决策结果就可能是什么都不做时利润最大,这是利润为 0,至少不亏。
现在可以用固定费用问题的数学模型来描述问题了:
设
x
i
x_i
xi 为是否生产第
i
i
i 种服装,
x
i
x_i
xi 是 0/1变量:
x
i
=
{
0
,
不
生
产
第
i
种
服
装
1
,
生
产
第
i
种
服
装
,
i
=
1
,
2
,
3
x_i = \\begin{cases} 0,不生产第\\;i\\;种服装\\\\ 1,生产第\\;i\\;种服装,i=1,2,3 \\end{cases}
xi={0,不生产第i种服装1,生产第i种服装,i=1,2,3
设 y i y_i yi 为生产第 i i i 种服装的数量, y i y_i yi 是整数类型。说 y i y_i yi 是实数变量的同学,你经常穿半条裤子吗?
根据条件确定决策变量的取值范围。例如,本例中的产量 y i y_i yi 显然要大于等于 0。进一步地,题目并没有直接给出 y i y_i yi 的取值上限,但可以从设备单件工时与设备可用工时的关系推导出取值上限为 [100, 600, 150],也可以从单位人工工时与人工可用工时的关系推导出上限 [400, 2000, 500],最后取较小者为 [100, 600, 150]。
数学模型就可以表达为:
m
a
x
z
=
120
y
1
+
10
y
2
+
100
y
3
−
5000
x
1
−
2000
x
2
−
2000
x
3
s
.
t
.
:
{
5
y
1
+
y
2
+
4
y
3
≤
2000
3
y
1
≤
300
x
1
0.5
y
2
≤
300
x
2
2
y
3
≤
300
x
3
0
≤
y
1
≤
100
0
≤
y
2
≤
600
0
≤
y
3
≤
150
max\\; z = 120 y_1 + 10 y_2 + 100 y_3 - 5000 x_1 - 2000 x_2 - 2000 x_3\\\\ s.t.:\\;\\begin{cases} 5 y_1 + y_2 + 4 y_3 \\leq 2000\\\\ 3 y_1 \\leq 300 x_1\\\\ 0.5 y_2 \\leq 300 x_2\\\\ 2 y_3 \\leq 300 x_3 \\\\ 0 \\leq y_1 \\leq 100\\\\ 0 \\leq y_2 \\leq 600\\\\ 0 \\leq y_3 \\leq 150\\\\ \\end{cases}
maxz=120y1+10y2+100y3−5000x1−2000x2−2000x3s.t.:⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧5y1+y2+4y3≤20003yPython小白的数学建模课-19.网络流优化问题