【数模学习笔记】【线性规划】巧用0-1变量

说明:本人是只挣扎在数模海洋里的小可怜,只是记录一下学习感悟。以下内容是在学习司守奎《数学建模算法与应用》(第三版)  P21-23时的笔记。 

1. 0-1变量的基本用法:0-1变量的特征就是仅能取0或者1,0表示不选、消去一项;1表示选中、保留一项。


2. 合并约束条件、目标函数中的 “或”、“分类讨论”、“分段”   
    先强调几个点,之后的例子会用到:
    a. \sum_{}^{}y_{i}=k,表示有k个变量取1、其余取0
    b. 1\times \bigcirc =\bigcirc
        若 \bigcirc =+\infty,则 \le 1\times \bigcirc \iff \le +\infty,可解除约束上限
        若 \bigcirc=-\infty,则 \ge 1\times \bigcirc \iff \ge -\infty,可解除约束下限
        若 \bigcirc =0^{+},则 \ge 1\times \bigcirc \iff >0,以0为下限
    c. 0\times \bigcirc =0
    d. 当双边不等式上下限相等时,双边不等式等价于一个等式

例1: x_1 =0 或 500\le x_1 \le 800  \Longrightarrow    \left\lbrace \begin{array}{ll} 500y\le x_1 \le 800y & \\ y=0\;\mathrm{or}\;1 & \end{array}\right.


分析:y=0时,双边不等式 500y\le x_1 \le 800y 双边都取0,则双边不等式等价于等式 x_1 =0y=1;时,1乘以任何数仍为其本身,则双边不等式等价于500\le x_1 \le 800


例2:如果有m个相互排斥的约束条件:

\sum_{j=1}^n a_{\mathrm{ij}} x_j \le b_i \;,i=1,2,\cdots ,m

使这m个约束条件仅有k个起作用,则引入m个0-1变量y_i 和一个充分大的常数M,将上述约束转化为:

\sum_{j=1}^n a_{\mathrm{ij}} x_j \le b_i +M\left(1-y_i \right)\;,i=1,2,\cdots ,m

\sum_{i=1}^m y_i =k


分析:y_i =1时, \sum_{j=1}^n a_{\mathrm{ij}} x_j \le b_i +M\left(1-y_i \right)\Longrightarrow \sum_{j=1}^n a_{\mathrm{ij}} x_j \le b_i 则该约束条件起作用
           y_i =0时, \sum_{j=1}^n a_{\mathrm{ij}} x_j \le b_i +M\left(1-y_i \right)\Longrightarrow \sum_{j=1}^n a_{\mathrm{ij}} x_j \le +\infty则该约束条件不起作用
           \sum_{i=1}^m y_i =k限制了仅有k个变量可以取1,即仅有k个约束条件起作用


例3:固定成本问题
某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高,则由于产量大分配到每件产品的变动成本就低;反之,如选定的生产方式投资低,则将来分配到每件产品的变动成本可能增加。因此需要全面考虑。今设三种方式可供选择,令
     j分别表示三种生产方式;
     x_{j}表示采用第j种方式时的产量;
     c_{j}表示采用第j种方式时每件产品的的变动成本;
     k_{j}表示采用第j种方式时的固定成本。


分析:由题,第j种生产方式的总成本为

P_j =\left\lbrace \begin{array}{ll} k_j +c_j x_j \;, & x_j >0\\ 0 & x_j =0 \end{array}\right.\;\;,j=1,2,3

使三种生产方式成本之和最小,则目标函数写为

min\;\;\sum_{j=1}^3 P_j

这时候我们便注意到一个问题,由于固定成本k_j的存在,P_j是一个分段函数,因此目标函数的表达式不便于进一步明晰。故在决策变量x_j基础上再引入0-1变量y_j,则目标函数写为

min\;\;\sum_{j=1}^3 y_j \left(k_j +c_j x_j \right)

注意两套决策变量x_jy_j 间是有联系的,y_j =1表示采用第j种方式生产,则x_j >0y_j =0表示不采用第j种方式生产,则x_j =0,故需再添加约束条件描述这种联系:

\left\lbrace \begin{array}{ll} y_j \varepsilon \le x_j \le y_j M\;, & j=1,2,3\\ y_j =0\;\;\mathrm{or}\;1\;, & j=1,2,3 \end{array}\right.

式中,\varepsilon是个充分小的正常数,M是个充分大的正常数。
( 解释一下这个约束条件,y_j=1时,y_j \varepsilon \le x_j \le y_j M\Longrightarrow 0^+ \le x_j \le +\infty \Longrightarrow x_j >0y_j =0时,y_j \varepsilon \le x_j \le y_j M\Longrightarrow 0\le x_j \le 0\Longrightarrow x_j =0

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值