0基础运筹学超详细列生成(Column Generation)

Posted ymzhu385

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0基础运筹学超详细列生成(Column Generation)相关的知识,希望对你有一定的参考价值。

目录

列生成(Column generation)是一种解决大型线性程序的有效算法。

相关教程

相关文献

前言

之前一直想跟大家分享一下列生成(Column generation),也全网搜了许多文档、视频、论文等。大部分教程抽象程度较高,需要具备大量的基础知识才能看明白,于是写一篇尽可能0基础上手的分享,希望能帮到也在从事相关行业的你。

一定有人会问,有没有行生成算法?当然有啦!!!有机会之后给大家分享!!!——@小猪快跑

从一个例子出发:Cutting Stock Problem

问题描述

卖家有3种长度的木材:9cm(5元),14cm(9元),16cm(10元)。
买家需要木材:4cm(30根),5cm(20根),7cm(40根)。
于是卖家需要通过切割木材满足买家的需求,而且卖家希望成本最低从而达到受益最大。

分析

首先我们来简单思考下,一根9cm的木材能有多少种切法满足买家需要的4cm,5cm,7cm

cost(元)切前木材长度(cm)4cm木材数量5cm木材数量7cm木材数量
59100
59200
59010
59110
59001

本着不浪费的中华传统美德,显然第二行的切法比第一行更好一些哟(^U^)ノ~YO
我们一般习惯称一种切割方法为cutting pattern
好啦,之后就非常easy的搞定之后的(只保留比较好的pattern)。

All Cutting Pattern:

cost(元)切前木材长度(cm)4cm木材数量5cm木材数量7cm木材数量符号
59200 x 1 x_1 x1
59110 x 2 x_2 x2
59001 x 3 x_3 x3
914300 x 4 x_4 x4
914210 x 5 x_5 x5
914120 x 6 x_6 x6
914101 x 7 x_7 x7
914011 x 8 x_8 x8
914002 x 9 x_9 x9
1016400 x 10 x_10 x10
1016201 x 11 x_11 x11
1016111 x 12 x_12 x12
1016030 x 13 x_13 x13

于是我们只需要从All Cutting Pattern里面确定每个Pattern需要几次就行了。(举个例子:比如 x 1 = 30 \\bmx_1=30 x1=30代表我们使用第1种切法切了30根9cm长度的木材)。

我们目标是用最少的钱完成买家的需求,也就是每个Pattern的 c o s t × 数量 \\bmcost\\times \\textbf数量 cost×数量的总和。

5 x 1 + 5 x 2 + 5 x 3 + 9 x 4 + 9 x 5 + 9 x 6 + 9 x 7 + 9 x 8 + 9 x 9 + 10 x 10 + 10 x 11 + 10 x 12 + 10 x 13 5x_1+5x_2+5x_3+9x_4+9x_5+9x_6+9x_7+9x_8+9x_9+10x_10+10x_11+10x_12+10x_13 5x1+5x2+5x3+9x4+9x5+9x6+9x7+9x8+9x9+10x10+10x11+10x12+10x13

另外呢我们需要满足买家数量上的要求
4cm要超过30根:

2 x 1 + x 2 + 0 x 3 + 3 x 4 + 2 x 5 + x 6 + x 7 + 0 x 8 + 0 x 9 + 4 x 10 + 2 x 11 + x 12 + 0 x 13 ≥ 30 2x_1+x_2+0x_3+3x_4+2x_5+x_6+x_7+0x_8+0x_9+4x_10+2x_11+x_12+0x_13\\geq 30 2x1+x2+0x3+3x4+2x5+x6+x7+0x8+0x9+4x10+2x11+x12+0x1330

5cm要超过20根:

0 x 1 + x 2 + 0 x 3 + 0 x 4 + x 5 + 2 x 6 + 0 x 7 + x 8 + 0 x 9 + 0 x 10 + 0 x 11 + x 12 + 3 x 13 ≥ 20 0x_1+x_2+0x_3+0x_4+x_5+2x_6+0x_7+x_8+0x_9+0x_10+0x_11+x_12+3x_13\\geq 20 0x1+x2+0x3+0x4+x5+2x6+0x7+x8+0x9+0x10+0x11+x12+3x1320

7cm要超过70根:

0 x 1 + 0 x 2 + x 3 + 0 x 4 + 0 x 5 + 0 x 6 + x 7 + x 8 + 2 x 9 + 0 x 10 + x 11 + x 12 + 0 x 13 ≥ 40 0x_1+0x_2+x_3+0x_4+0x_5+0x_6+x_7+x_8+2x_9+0x_10+x_11+x_12+0x_13\\geq 40 0大数据分析-零基础学Tableau+超详细讲解+示例练习

ASP.NET GridView[编辑]列如何超链接

0基础也看得懂的 I/O 多路复用解析(超详细案例)

应用运筹学基础:线性规划

【理论】运筹学-线性规划及标准形式

mysql8.0主从复制配置(超详细)