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+cjxj0xj0xj=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={0j1j

于是可以构造新的目标函数和约束条件:
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=1m(kjyj+cjxj)s.t.:xjyjMj=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 三种服装,生产不同种类服装需要租用不同设备,设备租金、生产成本、销售价格等指标如下表所示。

服装种类设备租金材料成本销售价格人工工时设备工时设备可用工时
单位(元)(元/件)(元/件)(小时/件)(小时/件)(小时)
A500028040053300
B2000304010.5300
C200020030042300

如果各类服装的市场需求都足够大,服装厂每月可用人工时为 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={0i1ii=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+100y35000x12000x22000x3s.t.:5y1+y2+4y320003yPython小白的数学建模课-19.网络流优化问题

Python小白的数学建模课-A1.2021年数维杯C题(运动会优化比赛模式探索)探讨

Python小白的数学建模课-01.新手必读

Python小白的数学建模课-07 选址问题

Python小白的数学建模课-07 选址问题

Python小白的数学建模课-03.线性规划