运筹学之线性规划与整数规划

1.线性规划

参考《Operations Research》第三章Introduction to Linear Programming

1.1线性规划定义

线性规划问题(LP)包括三个部分:

  • 目标函数(objective function):决策变量(decision variables)\left ( x_1.x_2...x_n \right )的线性函数,最大化或者最小化
  • 约束条件(constraints):每个约束条件都是线性等式或者线性不等式,用于限制决策变量可取值
  • 符号限制(sign restrictions):如果变量符号无限制,则为unrestricted in sign (urs).

目标函数中变量系数称为目标函数系数(objective function coeffificient);约束中的变量系数称为技术系数(technological coeffificient);每个约束的右端称为right-hand side (rhs)。

可行域(feasible region):所有满足LP约束条件和符号限制的点的集合

最优解(optimal solution):可行域里有最优目标函数值的点

线性规划有四大假设:

  • 比例假设(Proportionality Assumption):目标函数的值是单个变量的贡献总和
  • 可加性假设(Additivity Assumption):每个约束的左边都是每个变量的贡献总和
  • 可分性假设(Divisibility Assumption):允许每个变量取分值(反之为整数规划)
  • 确定性假设(Certainty Assumption):每个参数(目标函数系数,技术系数,rhs)都是确定性知道

1.2图解法(Graphical Solution)

任何LP的可行域都是凸集(convex set),如果一个LP有最优解,可行域中存在一个极值点(顶点)为LP的最优解。带有两个决策变量的最大化LP问题图解法如下:

(1)画出可行域

(2)画出等利润线(isoprofifit line )(目标函数)

(3)沿z值增加的方向平行移动等利润线,接触等利润线的可行域中最后一个点为LP最优解

1.3LP解:四种情况

(1)LP有唯一解

(2)LP有不止一个最优解(alternative optimal solutions):等利润线与可行域边界重合

(3)LP无可行解:可行域无点

(4)LP无边界:等利润线与可行域永远相交

1.4LP实例

A Diet Problem,A Work-Scheduling Problem,A Capital Budgeting Problem,Short-Term Financial Planning,Blending Problems,Production Process Models,Multiperiod Decision Problems: An Inventory Model,Multiperiod Financial Models,Multiperiod Work Scheduling

本文以多阶段工作调度为例

(1)问题描述:

CSL是一家连锁计算机服务商店。CSL接下来五个月要求的skilled repair time数字如下:

 一月开始,有50个技术工人为CSL工作,每个技术工人每月能工作160个小时,为了满足未来需求,需要训练新的技术工人。训练一名技术工人需要1个月。训练月期间,被训练则必须被有经验的技术工人监督管理50个小时。每个有经验的技术工人每月支付2000美元(即便没有工作满160个小时)。训练月期间,支付被训练者每月1000美元。每个月末,CSL经验技术工人的5%会跳槽去Plum Computers。建立LP模型要求CSL在满足未来5个月需求的前提下最小化劳动费用。

(2)求解:

  • 决策变量

t=1,2,3,4,5代表月,定义x_tt月需要训练的工人,y_tt月初已有的熟练技术工人

  • 目标函数

总劳务费=训练工人劳务费+熟练工人劳务费

  • 约束条件 

t月可用的技术时间>t月所需的技术时间 

t月初可用的技术工人数=t-1月初可用技术工人数+t-1月训练工人数-t-1月末离开的工人数

  •  完整模型:本例应该为整数规划问题,此处只是作为案例分析。

 线性规划常用求解方法:单纯形法

 2.整数规划

参考《Operations Research》第九章Integer Programming

2.1整数规划形式

纯整数规划(pure Integer Programming):所有变量都要求整数

混合整数规划(mixed Integer Programming):只有部分变量要求整数

(1)固定成本问题

活动i在任何正水平上都会产生一个固定费用,如建工厂和工厂生产规模问题

在约束中显示为x_i\leq My_i,M为足够大的数

(2)Either–Or Constraints

要求确保以下两个约束至少满足一个

约束条件被转换成

y为0/1变量,M足够大。当y=0时,第一个条件等于原来约束,第二个条件无约束效应;当y=1,第一个条件无约束效应,第二个条件等于原来约束。

(3)If–Then Constraints

如果f(x_1,x_2...x_n)> 0,那么g(x_1,x_2...x_n)\geq 0。M足够大

如果要求 f(x_1,x_2...x_n)> 0,则y=0,可以推出g(x_1,x_2...x_n)\geq 0

(4)带有0/1变量的分段整数规划

分段线性函数有断点b_1,b_2...b_n,用z_1f (b_1)  +z_2 f (b_2)  +...+z_n f (b_n)代替f(x),增加如下约束

2.2整数规划求解

2.2.1分枝定界法

选择合适的取值为分数的变量x_i生成子问题,如果i< x_i< i+1 

一个子问题不再分枝,称为fathomed。有三种情况:

(1)子问题无可行解,不能产生IP的最优解

(2)子问题产生一个最优解,其中所有变量取整数,如果最优解比之前找到的最优解更好,那么它就成为一个候选解(candidate solution),其z值成为IP最优z值的当前下界(LB)。

(3)当前子问题的最优z值没有超过当前LB(最大化问题),不再考虑

knapsack problem:先放单位价值最高的物品,接着下一个最高的,直到需要分割物品才能填满

job shop problem:分支决定最后一个加工的作业,总拖期为所有作业的延迟时间,依次向前

TSP:选一初始解,破圈处理

2.2.2割平面法

(1) 通过单纯形法找到IP松弛问题的最优解,如果所有的变量取值为整,则为IP的最优解,否则转(2),图为IP松弛问题求解结果

(2)选择rhs分数部分接近1/2的约束等式产生一个割集,rhs和变量分成\left [ x \right ]+f0<f<1

重写约束等式变为:整数系数的部分=分数系数的部分,增加约束即右端的分数部分小于0

(3)增加约束后使用对偶单纯形法求解问题,重复上述操作

2.3IP实例

用整数规划求解9*9数独问题,问题描述:在每行每列及每个3*3的格子中填入数字使其没有重复

思路:将9*9的二维矩阵转化成为9*9*9的三维矩阵,矩阵的每一个元素是一个0-1变量。比如在(3,5,2)取值为1,即在二维格子的第3行,第5列填入数字2。前面的两个数字确定填入数字的位置,后一个数字代表填入的数值。对应于三维的矩阵,则是在第3行,第5列,第2层的元素取值为1

前三个等式为三维约束即横纵竖只能有一个数字,第四个等式为3*3*3约束

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值