




已阅读5页,还剩155页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
生产与服务运作管理中的优化问题 优化建模与LINDO LINGO软件 第5章 内容提要 5 1生产与销售计划问题 5 2有瓶颈设备的多级生产计划问题 5 3下料问题 5 4面试顺序与消防车调度问题 5 5飞机定位和飞行计划问题 5 1生产与销售计划问题 5 1 1问题实例 例5 1某公司用两种原油 A和B 混合加工成两种汽油 甲和乙 甲 乙两种汽油含原油A的最低比例分别为50 和60 每吨售价分别为4800元和5600元 该公司现有原油A和B的库存量分别为500吨和1000吨 还可以从市场上买到不超过1500吨的原油A 原油A的市场价为 购买量不超过500吨时的单价为10000元 吨 购买量超过500吨但不超过1000吨时 超过500吨的部分8000元 吨 购买量超过1000吨时 超过1000吨的部分6000元 吨 该公司应如何安排原油的采购和加工 5 1 2建立模型 问题分析安排原油采购 加工的目标是利润最大 题目中给出的是两种汽油的售价和原油A的采购价 利润为销售汽油的收入与购买原油A的支出之差 这里的难点在于原油A的采购价与购买量的关系比较复杂 是分段函数关系 能否及如何用线性规划 整数规划模型加以处理是关键所在 模型建立设原油A的购买量为x 吨 根据题目所给数据 采购的支出c x 可表为如下的分段线性函数 以下价格以千元 吨为单位 1 设原油A用于生产甲 乙两种汽油的数量分别为x11和x12 吨 原油B用于生产甲 乙两种汽油的数量分别为x21和x22 吨 则总的收入为4 8 x11 x21 5 6 x12 x22 千元 于是本例的目标函数 利润 为 2 约束条件包括加工两种汽油用的原油A 原油B库存量的限制 和原油A购买量的限制 以及两种汽油含原油A的比例限制 它们表示为 3 4 5 6 7 8 由于 1 式中的c x 不是线性函数 1 8 给出的是一个非线性规划 而且 对于这样用分段函数定义的c x 一般的非线性规划软件也难以输入和求解 能不能想办法将该模型化简 从而用现成的软件求解呢 5 1 3求解模型 3种解法 第1种解法将原油A的采购量x分解为三个量 即用x1 x2 x3分别表示以价格10 8 6千元 吨采购的原油A的吨数 总支出为c x 10 x1 8x2 6x3 且 9 这时目标函数 2 变为线性函数 10 应该注意到 只有当以10千元 吨的价格购买x1 500 吨 时 才能以8千元 吨的价格购买x2 0 这个条件可以表示为 11 同理 只有当以8千元 吨的价格购买x2 500 吨 时 才能以6千元 吨的价格购买x3 0 于是 12 此外 x1 x2 x3的取值范围是 13 由于有非线性约束 11 12 3 13 构成非线性规划模型 LINGO程序 Model Max 4 8 x11 4 8 x21 5 6 x12 5 6 x22 10 x1 8 x2 6 x3 x11 x120 0 4 x12 0 6 x22 0 x x1 x2 x3 x1 500 x2 0 x2 500 x3 0 bnd 0 x1 500 bnd 0 x2 500 bnd 0 x3 500 end 将文件存储并命名为exam0501a lg4 执行菜单命令 LINGO Solve 运行该程序得到 Localoptimalsolutionfound Objectivevalue 4800 000Totalsolveriterations 26 VariableValueReducedCostX11500 00000 000000X21500 00000 000000X120 0000000 000000X220 0000000 000000X10 0000000 000000X20 0000000 000000X30 0000000 000000X0 0000000 000000 最优解 用库存的500吨原油A 500吨原油B生产1000吨汽油甲 不购买新的原油A 利润为4800 千元 但是此时LINGO得到的结果只是一个局部最优解 可以用菜单命令 LINGO Options 在 GlobalSolver 选项卡上启动全局优化 UseGlobalSolver 选项 然后重新执行菜单命令 LINGO Solve 得到 Globaloptimalsolutionfound Objectivevalue 5000 002Extendedsolversteps 3Totalsolveriterations 187 VariableValueReducedCostX110 0000000 000000X210 0000000 000000X121500 0000 000000X221000 0000 000000X1500 00000 000000X2499 99900 000000X30 9536707E 030 000000X1000 0000 000000 此时LINGO得到的结果是一个全局最优解 Globaloptimalsolution 购买1000吨原油A 与库存的500吨原油A和1000吨原油B一起 共生产2500吨汽油乙 利润为5000 千元 高于刚刚得到的局部最优解对应的利润4800 千元 第2种解法 引入0 1变量将 11 和 12 转化为线性约束 令y1 1 y2 1 y3 1分别表示以10千元 吨 8千元 吨 6千元 吨的价格采购原油A 则约束 11 和 12 可以替换为 14 15 16 y1 y2 y3 0或1 17 3 10 13 17 构成混合整数线性规划模型 将它输入LINDO软件 Max4 8x11 4 8x21 5 6x12 5 6x22 10 x1 8x2 6x3stx x1 x2 x3 0 x11 x12 x00 4x12 0 6x22 0 x1 500y10 x2 500y3 0endinty1inty2inty3 运行该程序得到 OBJECTIVEFUNCTIONVALUE1 5000 000VARIABLEVALUEREDUCEDCOSTY11 0000000 000000Y21 0000002200 000000Y31 0000001200 000000X110 0000000 800000X210 0000000 800000X121500 0000000 000000X221000 0000000 000000X1500 0000000 000000X2500 0000000 000000X30 0000000 400000X1000 0000000 000000 这个结果与前面非线性规划模型用全局优化得到的结果相同 第3种解法直接处理分段线性函数c x 1 式表示的函数c x 如图5 1 记x轴上的分点为b1 0 b2 500 b3 1000 b4 1500 当x在第1个小区间 b1 b2 时 记x z1b1 z2b2 z1 z2 1 z1 z2 0 因为c x 在 b1 b2 是线性的 所以c x z1c b1 z2c b2 同样 当x在第2个小区间 b2 b3 时 x z2b2 z3b3 z2 z3 1 z2 z3 0 c x z2c b2 z3c b3 当x在第3个小区间 b3 b4 时 x z3b3 z4b4 z3 z4 1 z3 z4 0 c x z3c b3 z4c b4 为了表示x在哪个小区间 引入0 1变量yk k 1 2 3 当x在第k个小区间时 yk 1 否则 yk 0 这样 z1 z2 z3 z4 y1 y2 y3应满足 18 19 20 此时x和c x 可以统一地表示为 2 10 18 22 也构成一个混合整数线性规划模型 可以用LINDO求解 不过 我们还是将它输入LINGO软件 因为其扩展性更好 即当分段函数的分段数更多时 只需要对下面程序作很小的改动 输入的LINGO模型如下 22 输入的LINGO模型如下 Model SETS Points 1 4 b c y z 端点数为4 即分段数为3 ENDSETSDATA b 050010001500 c 05000900012000 y 0 增加的虚拟变量y 4 0 ENDDATA Max 4 8 x11 4 8 x21 5 6 x12 5 6 x22 sum Points c z x11 x120 0 4 x12 0 6 x22 0 sum Points b z x for Points i i eq 1 z i y i for Points i i ne 1 z i y i 1 y i sum Points y 1 sum Points z 1 for Points bin y end 求解 得到的结果如下 略去已知参数b和c的显示结果 Globaloptimalsolutionfound Objectivevalue 5000 000Extendedsolversteps 0Totalsolveriterations 28 VariableValueReducedCostX110 0000000 000000X210 0000001 600000X121500 0000 000000X221000 0000 000000X1000 0000 000000Y 1 0 000000 4600 000Y 2 0 000000 1200 000Y 3 1 0000000 000000Y 4 0 0000000 000000Z 1 0 0000000 000000Z 2 0 0000000 000000Z 3 1 0000000 000000Z 4 0 000000200 0000 可见 得到的最优解和最优值与第2种解法相同 备注这个问题的关键是处理分段线性函数 我们推荐化为整数线性规划模型的第2 3种解法 第3种解法更具一般性 其做法如下 设一个n段线性函数f x 的分点为 引入zk将x和f x 表示为 23 24 zk和0 1变量yk满足 25 26 27 5 2有瓶颈设备的多级生产计划问题 5 2 1问题实例 在给定的外部需求和生产能力等限制条件下 按照生产总费用最小编制未来若干个生产周期的最优生产计划 这种问题在文献上一般称为批量问题 LotsizingProblems 我们通过下面的具体例子来说明这种多级生产计划问题的优化模型 这里 多级 的意思是需要考虑产品是通过多个生产阶段 工艺过程 生产出来的 例5 2某工厂的主要任务是通过组装生产产品A 用于满足外部市场需求 A产品的产品构成与组装过程见图5 2 即D E F G是从外部采购的零件 先将零件D E组装成部件B 零件F G组装成部件C 然后将部件B C组装成产品A出售 图中弧上的数字表示的是组装时部件 或产品 中包含的零件 或部件 的数量 可以称为消耗系数 例如DB弧上的数字 9 表示组装1个部件B需要用到9个零件D BA弧上的数字 5 表示组装1件产品A需要用到5个部件B 依此类推 图5 2产品构成与组装过程图 表5 1生产计划的原始数据 假设该工厂每次生产计划的计划期为6周 即每次制定未来6周的生产计划 只有最终产品A有外部需求 目前收到的订单的需求件数按周的分布如表5 1第2行所示 部件B C是在该工厂最关键的设备 可以称为瓶颈设备 上组装出来的 瓶颈设备的生产能力非常紧张 具体可供能力如表5 1第3行所示 第2周设备检修 不能使用 B C的能力消耗系数分别为5和8 即生产1件B需要占用5个单位的能力 即生产1件C需要占用8个单位的能力 对于每种零部件或产品 如果工厂在某一周订购或者生产该零部件或产品 工厂需要付出一个与订购或生产数量无关的固定成本 称为生产准备费用 如果某一周结束时该零部件或产品有库存存在 则工厂必须付出一定的库存费用 与库存数量成正比 这些数据在表5 1第5 6行给出 按照工厂的信誉要求 目前接收的所有订单到期必须全部交货 不能有缺货发生 此外 不妨简单地假设目前该企业没有任何零部件或产品库存 也不希望第6周结束后留下没有任何零部件或产品库存 最后 假设不考虑生产提前期 即假设当周采购的零件马上就可用于组装 组装出来的部件也可以马上用于当周组装成品A 在上述假设和所给数据下 如何制定未来6周的生产计划 5 2 2建立模型问题分析这个例子考虑的是在有限的计划期内 给定产品结构 生产能力和相关费用及零部件或成品 以下统称为生产项目 在离散的时间段上 这里是周 也可以是天 月等 的外部需求之后 确定每一生产项目在每一时间段上的生产量 即批量 使总费用最小 由于每一生产项目在每一时间段上生产时必须经过生产准备 Setup 所以通常的讨论中总费用至少应考虑生产准备费用和库存费用 其实 细心的读者一定会问 是否需要考虑生产的直接成本 如原材料成本 人力成本 电力成本等 符号说明为了建立这类问题的一般模型 我们定义如下数学符号 N 生产项目总数 本例中N 7 T 计划期长度 本例中T 6 K 瓶颈资源种类数 本例中K 1 M 一个充分大的正数 在模型中起到使模型线性化的作用 项目i在t时段的外部需求 本例中只有产品A有外部需求 项目i在t时段的生产批量 项目i在t时段的库存量 项目i在t时段是否生产的标志 0 不生产 1 生产 产品结构中项目j对项目i的消耗系数 S i 产品结构中项目i的直接后继项目集合 项目i在t时段生产时的生产准备费用 项目i在t时段的单件库存费用 资源k在t时段的能力上限 项目i在t时段生产时 生产单个产品占用资源k的能力 x 这个函数当且仅当x 0时取值1 否则取值0 其余均为已知的计划参数 目标函数 这个问题的目标是使生产准备费用和库存费用的总和最小 因此 目标函数应该是每个项目在每个时段上的生产准备费用和库存费用的总和 即 28 约束条件 这个问题中的约束有这么几类 每个项目的物流应该守恒 资源能力限制应该满足 每时段生产某项目前必须经过生产准备和非负约束 对Yi j是0 1约束 29 资源能力限制比较容易理解 即 30 所谓物流守恒 假设Ii 0 0 31 每时段生产某项目前必须经过生产准备 也就是说当Xit 0时Yit 0 Xit 0时Yit 1 这本来是一个非线性约束 但是通过引入参数M 很大的正数 表示每个项目每个时段的最大产量 可以化成线性约束 即 总结 这个问题的优化模型就是在约束 29 30 31 下使目标函数 28 达到最小 5 2 3求解模型 本例生产项目总数N 7 A B C D E F G 计划期长度T 6 周 瓶颈资源种类数K 1 只有A有外部需求 所以di t中只有d1 t可以取非零需求 即表5 1中的第2行的数据 其他全部为零 参数si t hi t只与项目i有关 而不随时段t变化 所以可以略去下标t 其数值就是表5 1中的最后两行数据 由于只有一种资源 参数Ck t可以略去下标k 其数值就是表5 1中的第3行的数据 而ak I t只与项目i有关 而不随时段t变化 所以可以同时略去下标k和t 即a2 5 a3 8 其他ai为0 从图6 2中容易得到项目i的直接后继项目集合S i 和消耗系数 准备以下的数据文件 文本文件exam0502 LDT 可以看到其中也可以含有注释语句 项目集合 ABCDEFG 计划期集合 123456 需求 40010009010000000000000000000000000000000000000 能力 1000005000500010001000 生产准备费 4005001000300200400100 库存费 120 61 00 040 030 040 04 对能力的消耗系数 0580000 项目间的消耗系数 req i j 表示j用到多少i 0000000500000070000000900000011000000013000000150000 数据结束 对本例 A的外部总需求为240 所以任何项目的产量不会超过240 7 15 25000 从图6 2可以知道 这里7 15已经是每件产品A对任意一个项目的最大的消耗系数了 所以取M 25000就已经足够了 本例中的具体模型可以如下输入LINGO软件 MODEL TITLE瓶颈设备的多级生产计划 从文本文件exam0502 LDT中读取数据 SETS PART 项目集合 Setup 生产准备费 Hold 单件库存成本 A 对瓶颈资源的消耗系数 PART FILE exam0502 LDT Setup Hold A TIME 计划期集合 Capacity 瓶颈设备的能力 TIME FILE exam0502 LDT Capacity USES 项目结构关系 Req 项目之间的消耗系数 USES PART PART Req PXT 项目与时间的派生集合 Demand 外部需求 X 产量 批量 Y 0 1变量 INV 库存 PXT PART TIME Demand X Y Inv ENDSETS 目标函数 OBJ Min sum PXT i t setup i Y i t hold i Inv i t 物流平衡方程 FOR PXT i t t NE 1 Bal Inv i t 1 X i t Inv i t Demand i t SUM USES i j Req i j X j t FOR PXT i t t eq 1 Ba0 X i t Inv i t Demand i t SUM USES i j Req i j X j t 能力约束 FOR TIME t Cap SUM PART i A i X i t Capacity t 其他约束 M 25000 FOR PXT i t X i t M Y i t FOR PXT BIN Y DATA Demand FILE exam0502 LDT Capacity FILE exam0502 LDT Setup FILE exam0502 LDT Hold FILE exam0502 LDT A FILE exam0502 LDT Req FILE exam0502 LDT ENDDATAEND 注意 由于本例有42个0 1变量 LINGO演示版是无法求解的 表5 2生产计划的最后结果 LINDO求解 得到最优目标函数值为9245 结果如下 5 3下料问题 5 3下料问题 生产中常会遇到通过切割 剪裁 冲压等手段 将原材料加工成所需大小这种工艺过程 称为原料下料 cuttingstock 问题 按照进一步的工艺要求 确定下料方案 使用料最省 或利润最大 是典型的优化问题 本节通过两个实例讨论用数学规划模型解决这类问题的方法 5 3 1钢管下料问题 例5 3某钢管零售商从钢管厂进货 将钢管按照顾客的要求切割后售出 从钢管厂进货时得到的原料钢管都是19米长 1 现有一客户需要50根4米长 20根6米长和15根8米长的钢管 应如何下料最节省 2 零售商如果采用的不同切割模式太多 将会导致生产过程的复杂化 从而增加生产和管理成本 所以该零售商规定采用的不同切割模式不能超过3种 此外 该客户除需要1 中的三种钢管外 还需要10根5米长的钢管 应如何下料最节省 问题1 的求解 问题分析首先 应当确定哪些切割模式是可行的 所谓一个切割模式 是指按照客户需要在原料钢管上安排切割的一种组合 例如 我们可以将19米长的钢管切割成3根4米长的钢管 余料为7米显然 可行的切割模式是很多的 其次 应当确定哪些切割模式是合理的 通常假设一个合理的切割模式的余料不应该大于或等于客户需要的钢管的最小尺寸 在这种合理性假设下 切割模式一共有7种 如表5 3所示 表5 3钢管下料的合理切割模式 问题化为在满足客户需要的条件下 按照哪些种合理的模式 切割多少根原料钢管 最为节省 而所谓节省 可以有两种标准 一是切割后剩余的总余料量最小 二是切割原料钢管的总根数最少 下面将对这两个目标分别讨论 模型建立决策变量用xi表示按照第i种模式 i 1 2 7 切割的原料钢管的根数 显然它们应当是非负整数 决策目标以切割后剩余的总余料量最小为目标 则由表1可得 32 以切割原料钢管的总根数最少为目标 则有 33 下面分别在这两种目标下求解 约束条件为满足客户的需求 按照表1应有 模型求解 1 将 32 34 36 构成的整数线性规划模型 加上整数约束 输入LINDO如下 Title钢管下料 最小化余量 Min3x1 x2 3x3 3x4 x5 x6 3x7s t 4x1 3x2 2x3 x4 x5 50 x2 2x4 x5 3x6 20 x3 x5 2x7 15endgin7 求解可以得到最优解如下 OBJECTIVEFUNCTIONVALUE1 27 00000VARIABLEVALUEREDUCEDCOSTX10 0000003 000000X212 0000001 000000X30 0000003 000000X40 0000003 000000X515 0000001 000000X60 0000001 000000X70 0000003 000000 即按照模式2切割12根原料钢管 按照模式5切割15根原料钢管 共27根 总余料量为27米 显然 在总余料量最小的目标下 最优解将是使用余料尽可能小的切割模式 模式2和5的余料为1米 这会导致切割原料钢管的总根数较多 2 将 33 36 构成的整数线性规划模型 加上整数约束 输入LINDO Title钢管下料 最小化钢管根数Minx1 x2 x3 x4 x5 x6 x7s t 4x1 3x2 2x3 x4 x5 50 x2 2x4 x5 3x6 20 x3 x5 2x7 15endgin7 求解 可以得到最优解如下 OBJECTIVEFUNCTIONVALUE1 25 00000VARIABLEVALUEREDUCEDCOSTX10 0000001 000000X215 0000001 000000X30 0000001 000000X40 0000001 000000X55 0000001 000000X60 0000001 000000X75 0000001 000000 即按照模式2切割15根原料钢管 按模式5切割5根 按模式7切割5根 共27根 可算出总余料量为35米 与上面得到的结果相比 总余料量增加了8米 但是所用的原料钢管的总根数减少了2根 在余料没有什么用途的情况下 通常选择总根数最少为目标 问题2 的求解 问题分析按照解问题1 的思路 可以通过枚举法首先确定哪些切割模式是可行的 但由于需求的钢管规格增加到4种 所以枚举法的工作量较大 下面介绍的整数非线性规划模型 可以同时确定切割模式和切割计划 是带有普遍性的方法 同1 类似 一个合理的切割模式的余料不应该大于或等于客户需要的钢管的最小尺寸 本题中为4米 切割计划中只使用合理的切割模式 而由于本题中参数都是整数 所以合理的切割模式的余量不能大于3米 此外 这里我们仅选择总根数最少为目标进行求解 模型建立 决策变量由于不同切割模式不能超过3种 可以用xi表示按照第i种模式 i 1 2 3 切割的原料钢管的根数 显然它们应当是非负整数 设所使用的第i种切割模式下每根原料钢管生产4米长 5米长 6米长和8米长的钢管数量分别为r1i r2i r3i r4i 非负整数 决策目标以切割原料钢管的总根数最少为目标 即目标为 37 约束条件为满足客户的需求 应有 38 39 40 41 每一种切割模式必须可行 合理 所以每根原料钢管的成品量不能超过19米 也不能少于16米 余量不能大于3米 于是 42 43 44 模型求解 37 44 构成这个问题的优化模型 由于在 38 41 式中出现了决策变量的乘积 所以这是一个整数非线性规划模型 虽然用LINGO软件可以直接求解 但我们发现在较低版本的LINGO软件中需要运行很长时间也难以得到最优解 为了减少运行时间 可以增加一些显然的约束条件 从而缩小可行解的搜索范围 例如 由于3种切割模式的排列顺序是无关紧要的 所以不妨增加以下约束 45 又例如 我们注意到所需原料钢管的总根数有着明显的上界和下界 首先 无论如何 原料钢管的总根数不可能少于 根 其次 考虑一种非常特殊的生产计划 第一种切割模式下只生产4米钢管 一根原料钢管切割成4根4米钢管 为满足50根4米钢管的需求 需要13根原料钢管 第二种切割模式下只生产5米 6米钢管 一根原料钢管切割成1根5米钢管和2根6米钢管 为满足10根5米和20根6米钢管的需求 需要10根原料钢管 第三种切割模式下只生产8米钢管 一根原料钢管切割成2根8米钢管 为满足15根8米钢管的需求 需要8根原料钢管 于是满足要求的这种生产计划共需13 10 8 31根原料钢管 这就得到了最优解的一个上界 所以可增加以下约束 46 将 37 46 构成的模型输入LINGO如下 将 37 46 构成的模型输入LINGO如下 model Title钢管下料 最小化钢管根数的LINGO模型 min x1 x2 x3 x1 r11 x2 r12 x3 r13 50 x1 r21 x2 r22 x3 r23 10 x1 r31 x2 r32 x3 r33 20 x1 r41 x2 r42 x3 r43 15 4 r11 5 r21 6 r31 8 r41 16 4 r12 5 r22 6 r32 8 r42 16 4 r13 5 r23 6 r33 8 r43 16 x1 x2 x3 26 x1 x2 x3 x2 x2 x3 gin x1 gin x2 gin x3 gin r11 gin r12 gin r13 gin r21 gin r22 gin r23 gin r31 gin r32 gin r33 gin r41 gin r42 gin r43 end 经过LINGO求解 得到输出如下 Localoptimalsolutionfound Objectivevalue 28 00000Extendedsolversteps 72Totalsolveriterations 3404ModelTitle 钢管下料 最小化钢管根数的LINGO模型 VariableValueReducedCostX110 000001 000000X210 000001 000000X38 0000001 000000R112 0000000 000000R123 0000000 000000R130 0000000 000000R211 0000000 000000R220 0000000 000000R230 0000000 000000R311 0000000 000000R321 0000000 000000R330 0000000 000000R410 0000000 000000R420 0000000 000000R432 0000000 000000 即按照模式1 2 3分别切割10 10 8根原料钢管 使用原料钢管总根数为28根 第一种切割模式下一根原料钢管切割成3根4米钢管和1根6米钢管 第二种切割模式下一根原料钢管切割成2根4米钢管 1根5米钢管和1根6米钢管 第三种切割模式下一根原料钢管切割成2根8米钢管 如果充分利用LINGO建模语言的能力 使用集合和属性的概念 可以编写以下LINGO程序 这种方法更具有一般的通用性 并有利于输入更大规模的下料问题的优化模型 model Title钢管下料 最小化钢管根数的LINGO模型 SETS NEEDS 1 4 LENGTH NUM 定义基本集合NEEDS及其属性LENGTH NUM CUTS 1 3 X 定义基本集合CUTS及其属性X PATTERNS NEEDS CUTS R 定义派生集合PATTERNS 这是一个稠密集合 及其属性R ENDSETSDATA LENGTH 4568 NUM 50102015 CAPACITY 19 ENDDATAmin SUM CUTS I X I 目标函数 FOR NEEDS I SUM CUTS J X J R I J NUM I 满足需求约束 FOR CUTS J SUM NEEDS I LENGTH I R I J CAPACITY MIN NEEDS I LENGTH I 合理切割模式约束 SUM CUTS I X I 26 SUM CUTS I X I X I 1 人为增加约束 FOR CUTS J GIN X J FOR PATTERNS I J GIN R I J end求解这个模型 得到的结果与前面的结果完全相同 5 3 2易拉罐下料问题 例5 4某公司采用一套冲压设备生产一种罐装饮料的易拉罐 这种易拉罐是用镀锡板冲压制成的 参见图5 3 易拉罐为圆柱形 包括罐身 上盖和下底 罐身高10厘米 上盖和下底的直径均为5厘米 该公司使用两种不同规格的镀锡板原料 规格1的镀锡板为正方形 边长24厘米 规格2的镀锡板为长方形 长 宽分别为32和28厘米 由于生产设备和生产工艺的限制 对于规格1的镀镀锡板原料 只可以按照图2中的模式1 2或3进行冲压 对于规格2的镀锡板原料只能按照模式4进行冲压 使用模式1 2 3 4进行每次冲压所需要的时间分别为1 5 2 1 3 秒 模式4 图5 3易拉罐下料模式 该工厂每周工作40小时 每周可供使用的规格1 2的镀锡板原料分别为5万张和2万张 目前每只易拉罐的利润为0 10元 原料余料损失为0 001元 厘米2 如果周末有罐身 上盖或下底不能配套组装成易拉罐出售 也看作是原料余料损失 工厂应如何安排每周的生产 已知上盖和下底的直径d 5厘米 可得其面积为 19 6厘米2 表5 44种冲压模式的特征 问题的目标显然应是易拉罐的利润扣除原料余料损失后的净利润最大 约束条件除每周工作时间和原料数量外 还要考虑罐身和底 盖的配套组装 模型建立 决策变量用xi表示按照第i种模式的冲压次数 i 1 2 3 4 y1表示一周生产的易拉罐个数 为计算不能配套组装的罐身和底 盖造成的原料损失 用y2表示不配套的罐身个数 y3表示不配套的底 盖个数 虽然实际上xi和y1 y2 y3应该是整数 但是由于生产量相当大 可以把它们看成是实数 从而用线性规划模型处理 决策目标假设每周生产的易拉罐能够全部售出 公司每周的销售利润是0 1y1 原料余料损失包括两部分 4种冲压模式下的余料损失 和不配套的罐身和底 盖造成的原料损失 按照前面的计算及表2的结果 总损失为0 001 222 6x1 183 3x2 261 8x3 169 5x4 157 1y2 19 6y3 于是 决策目标为 47 约束条件 时间约束 每周工作时间不超过40小时 144000 秒 由表2最后一列得 48 原料约束 每周可供使用的规格1 2的镀锡板原料分别为50000张和20000张 即 49 50 配套约束 由表2一周生产的罐身个数为x1 2x2 4x4 一周生产的底 盖个数为10 x1 4x2 16x3 5x4 因为应尽可能将它们配套组装成易拉罐销售 所以y1满足 51 这时不配套的罐身个数y2 和不配套的底 盖个数y3应为 52 53 47 53 就是我们得到的模型 其中 51 是一个非线性关系 不易直接处理 但是它可以等价为以下两个线性不等式 54 55 模型求解 将模型 47 50 和 52 55 直接输入LINDO 输入LINGO也可以 求解时LINDO发出警告信息 程序和警告信息参见图5 4 图中错误编号 66 的含义 参见第4章的错误代码表 是 模型中数据不平衡 所以发出警告信息 注意 只是警告信息 所以仍然可以继续求解 求解结果是 OBJECTIVEFUNCTIONVALUE1 4298 337VARIABLEVALUEREDUCEDCOSTY1160250 0000000 000000X10 0000000 000050X240125 0000000 000000X33750 0000000 000000X420000 0000000 000000Y20 0000000 223331Y30 0000000 036484 图5 4模型中数据不平衡的警告信息 这个结果可靠吗 由于LINDO警告模型中数据之间的数量级差别太大 所以我们可以进行预处理 缩小数据之间的差别 实际上 约束 48 50 中右端项的数值过大 与左端的系数相比较 LINDO在计算中容易产生比较大的误差 所以出现此警告信息 为了解决这一问题 可以将所有决策变量扩大10000倍 相当于xi以万次为单位 yi以万件为单位 此时 目标 47 可以保持不变 记住得到的结果单位为万元就可以了 而约束 48 50 改为 56 57 58 将模型 47 和 52 58 输入LINDO 易拉罐下料 均衡数据 Max0 100y1 0 2226x1 0 1833x2 0 2618x3 0 1695x4 0 1571y2 0 0196y3s t 1 5x1 2 0 x2 1 0 x3 3 0 x4 010 x1 4x2 16x3 5x4 2y1 0 x1 2x2 4x4 y1 y2 010 x1 4x2 16x3 5x4 2y1 y3 0end 求解得到 OBJECTIVEFUNCTIONVALUE 1 0 4298337 VARIABLEVALUEREDUCEDCOSTY116 0250000 000000X10 0000000 000050X24 0125000 000000X30 3750000 000000X42 0000000 000000Y20 0000000 223331Y30 0000000 036484 即模式1不使用 模式2使用40125次 模式3使用3750次 模式4使用20000次 可生产易拉罐160250个 罐身和底 盖均无剩余 净利润为4298元 5 4面试顺序与消防车调度问题 面试顺序问题 例5 5有4名同学到一家公司参加三个阶段的面试 公司要求每个同学都必须首先找公司秘书初试 然后到部门主管处复试 最后到经理处参加面试 并且不允许插队 即在任何一个阶段4名同学的顺序是一样的 由于4名同学的专业背景不同 所以每人在三个阶段的面试时间也不同 如表5 5所示 单位 分钟 这4名同学约定他们全部面试完以后一起离开公司 假定现在时间是早晨8 00 请问他们最早何时能离开公司 表5 5面试时间要求 建立模型 实际上 这个问题就是要安排4名同学的面试顺序 使完成全部面试所花费的时间最少 记tij为第i名同学参加第j阶段面试需要的时间 已知 令xij表示第i名同学参加第j阶段面试的开始时刻 不妨记早上8 00面试开始为0时刻 i 1 2 3 4 j 1 2 3 T为完成全部面试所花费的最少时间 优化目标为 a 时间先后次序约束 每人只有参加完前一个阶段的面试后才能进入下一个阶段 xij tij xi j 1 i 1 2 3 4 j 1 2 b 每个阶段j同一时间只能面试1名同学 用0 1变量yik表示第k名同学是否排在第i名同学前面 1表示是 0表示否 则xij tij xkj Tyik i k 1 2 3 4 j 1 2 3 i k xkj tkj xij T 1 yik i k 1 2 3 4 j 1 2 3 i k 约束条件 可以将非线性的优化目标改写为如下线性优化目标 MinTs t T x13 t13T x23 t23T x33 t33T x43 t43 MinTs t xij tij xi j 1 i 1 2 3 4 j 1 2 xij tij xkj Tyik i k 1 2 3 4 j 1 2 3 i k xkj tkj xij T 1 yik i k 1 2 3 4 j 1 2 3 i k xi3 ti3 T i 1 2 3 4 这个问题的0 1非线性规划模型 当然所有变量还有非负约束 变量yik还有0 1约束 Model min T T x13 t13 T x23 t23 T x33 t33 T x43 t43 x11 t11 x12 x12 t12 x13 x21 t21 x22 x22 t22 x23 x31 t31 x32 x32 t32 x33 x41 t41 x42 x42 t42 x43 求解模型这个模型可以如下输入LINGO x11 t11 x21 T y12 x21 t21 x11 T 1 y12 x12 t12 x22 T y12 x22 t22 x12 T 1 y12 x13 t13 x23 T y12 x23 t23 x13 T 1 y12 x11 t11 x31 T y13 x31 t31 x11 T 1 y13 x12 t12 x32 T y12 x32 t32 x12 T 1 y13 x13 t13 x33 T y13 x33 t33 x13 T 1 y13 x11 t11 x41 T y14 x41 t41 x11 T 1 y14 x12 t12 x42 T y14 x42 t42 x12 T 1 y14 x13 t13 x43 T y14 x43 t43 x13 T 1 y14 x21 t21 x31 T y23 x31 t31 x21 T 1 y23 x22 t22 x32 T y23 x32 t32 x32 T 1 y23 x23 t23 x33 T y23 x33 t33 x23 T 1 y23 x21 t21 x41 T y24 x41 t41 x21 T 1 y24 x22 t22 x42 T y24 x42 t42 x22 T 1 y24 x23 t23 x43 T y24 x43 t43 x23 T 1 y24 x31 t31 x41 T y34 x41 t41 x31 T 1 y34 x32 t32 x42 T y34 x42 t42 x32 T 1 y34 x33 t33 x43 T y34 x43 t43 x33 T 1 y34 t11 13 t12 15 t13 20 t21 10 t22 20 t23 18 t31 20 t32 16 t33 10 t41 8 t42 10 t43 15 bin y12 bin y13 bin y14 bin y23 bin y24 bin y34 End 用LINGO求解得到 Localoptimalsolutionfoundatiteration 4357Objectivevalue 84 00000 VariableValueReducedCostT84 000000 000000X1336 000000 000000T1320 000000 000000X2356 000000 000000T2318 000000 000000X3374 000000 000000T3310 000000 000000X4321 000000 000000T4315 000000 000000X118 0000000 000000T1113 000000 000000X1221 000000 000000T1215 000000 000000 VariableValueReducedCostX2121 000000 000000T2110 000000 000000X2236 000000 000000T2220 000000 000000X3137 500000 000000T3120 000000 000000X3257 750000 000000T3216 000000 000000X410 0000000 9999970T418 0000000 000000X4211 000000 000000T4210 000000 000000Y120 000000 83 99950Y130 0000000 000000Y141 00000083 99950Y230 000000 83 99950Y241 0000000 000000Y341 0000000 000000 即所有面试完成至少需要84分钟 面试顺序为4 1 2 3 即丁 甲 乙 丙 早上8 00面试开始 最早9 24面试可以全部结束 同样 如果利用LINGO的建模语言 可以编写一个更一般的LINGO模型 先准备一个数据文件 文本文件exam0505 txt 其中的内容如下 被面试者集合 1234 面试阶段的集合 123 已知的面试所需要的时间 13152010201820161081015 数据结束 LINGO模型如下 Model Title面试问题 SETS Person 被面试者集合 Stage 面试阶段的集合 Person FILE exam0505 txt Stage FILE exam0505 txt T 已知的面试所需要的时间 X 面试开始时间 PXS Person Stage T X Y i k 1 k排在i前 0 否则 PXP Person Person ENDDATA obj min MAXT MAXT是面试的最后结束时间 MAXT max PXS i j j EQ size stage x i j t i j 只有参加完前一个阶段的面试后才能进入下一个阶段 for PXS i j j LT size stage ORDER x i j t i j x i j 1 同一时间只能面试1名同学 for Stage j for PXP i k SORT1 x i j t i j x k j MAXT Y i k for PXP i k SORT2 x k j t k j x i j MAXT 1 Y i k for PXP bin y End 求解这个模型 得到的结果与前面的完全相同 可以很清楚地看到 使用LINGO建模语言的集合和属性概念 得到的模型具有非常好的结构性 反映了相应的优化模型的本质 目标 决策变量 约束一清二楚 容易阅读和理解 而且还可以让数据与程序完全分离 这种优越性是LINDO软件无法与之相比的 消防车调度问题 例5 6某市消防中心同时接到了三处火警报告 根据当前的火势 三处火警地点分别需要2辆 2辆和3辆消防车前往灭火 三处火警地点的损失将依赖于消防车到达的及时程度 记tij为第j辆消防车到达火警地点i的时间 分钟 则三处火警地点的损失分别为 6t11 4t12 7t21 3t22 9t31 8t32 5t33 目前可供消防中心调度的消防车正好有7辆 分别属于三个消防站 可用消防车数量分别为3辆 2辆 2辆 消防车从三个消防站到三个火警地点所需要的时间如表5 6所示 该公司应如何调度消防车 才能使总损失最小 如果三处火警地点的损失分别为 4t11 6t12 3t21 7t22 5t31 8t32 9t33 调度方案是否需要改变 消防站到三个火警地点所需要的时间 问题分析本题考虑的是为每个火警地点分配消防车的问题 初步看来与线性规划中经典的运输问题有些类似 本题的问题可以看成是指派问题和运输问题的一种变形 我们下面首先把它变成一个运输问题建模求解 决策变量为了用运输问题建模求解 很自然地把3个消防站看成供应点 如果直接把3个火警地点看成需求点 我们却不能很方便地描述消防车到达的先后次序 因此难以确定损失的大小 下面我们把7辆车的需求分别看成7个需求点 分别对应于到达时间t11 t12
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 压铸铝合金模具制度细则
- 服装设计理念与方法总结
- 化妆品安全评估规范
- 职业教育教材选用委员会工作细则
- 传染病传播途径及风险分析
- 东北传统婚俗仪式总结
- 地产项目验收规程
- 垂直大模型数据分析方案
- 亲情和友情的重要性和价值
- 农业灌溉设施的建造与使用协议书
- 鱼道运行管理办法
- 急性喉炎护理课件
- 大学生职业规划大赛《智能焊接技术专业》生涯发展展示
- 2025新外研版初中英语七年级上全册课文翻译
- 检验科室内质控培训课件
- 桥梁拆除施工质量保证技术措施
- 人体工程学-第五章-人体工程学与室外环境设施设计
- 2025-2030年中国象棋行业发展分析及前景趋势与投资风险研究报告
- 2025-2030年中国冷链物流行业深度分析及发展前景与发展战略研究报告
- 抖音员工合同协议书模板
- 《王戎不取道旁李》教案
评论
0/150
提交评论