max函数的线性化方法
线性化步骤
参考知乎回答。
最大值约束式如下(假设 x,yx,yx,y 中的 xxx 为较大值):
z=max{x,y}z = \max \{ x,y\} z=max{x,y}
该约束可等价为以下两个约束:
z≥max{x,y}(1)z \ge \max \{ x,y\} \tag {1}z≥max{x,y}(1)
z≤max{x,y}(2)z \le \max \{ x,y\} \tag {2}z≤max{x,y}(2)
其中约束(1)(1)(1)显然可用如下约束式等价:
z≥xz \ge xz≥xz≥yz \ge y z≥y
约束(2)(2)(2)可用如下约束式等价:
z≤x+M(1−u1)(3)z \le x + M(1 - {u_1}) \tag {3}z≤x+M(1−u1)(3)z≤y+M(1−u2)(4)z \le y + M(1 - {u_2}) \tag {4}z≤y+M(1−u2)(4)u1+u2≥1(5){u_1} + {u_2} \ge 1\tag {5}u1+u2≥1(5)u1,u2∈{0,1}(6){u_1},{u_2} \in \{ 0,1\}\tag {6}u1,u2∈{0,1}(6)
其中MMM为较大常数。
解释如下:
式(3)(3)(3)、式(4)(4)(4)在u=1u=1u=1时分别等价为z≤xz \le xz≤x 、 z≤yz \le yz≤y,在u=0u=0u=0时被松弛。
因此针对uuu的不同取值,式(3)(3)(3)、式(4)(4)(4)等价为4种可能的情形:
- z≤xz \le xz≤x、z≤yz \le yz≤y 同时成立,即 z≤min{x,y}z \le \min \{ x,y\}z≤min{x,y} —— u1=1,u2=1{u_1}=1,{u_2}=1u1=1,u2=1
- z≤xz \le xz≤x,即 z≤max{x,y}z \le \max \{ x,y\}z≤max{x,y} —— u1=1,u2=0{u_1}=1,{u_2}=0u1=1,u2=0
- z≤yz \le yz≤y —— u1=0,u2=1{u_1}=0,{u_2}=1u1=0,u2=1
- 无约束 —— u1=0,u2=0{u_1}=0,{u_2}=0u1=0,u2=0
由于已有约束(1)(1)(1)的限制,情形1、2、3中只有2可能成立(注意前面已经假设xxx为较大值),1、3均与约束(1)(1)(1)矛盾。
同时注意到情形4会导致我们得不到z=max{x,y}z = \max \{ x,y\}z=max{x,y}的整体约束效果,而且该种情形和约束(1)(1)(1)不矛盾,也就意味着无法通过约束(1)(1)(1)的限制作用来消除,因此我们需要进一步添加约束避免情形4的出现。
进一步添加约束(5)(5)(5)、(6)(6)(6),保证u1,u2{u_1},{u_2}u1,u2必须至少有一个为111,即不可能出现情形4。
综上,最大值约束可通过如下线性约束等价:
z≥xz \ge x z≥xz≥yz \ge y z≥y z≤x+M(1−u1)z \le x + M(1 - {u_1}) z≤x+M(1−u1)z≤y+M(1−u2)z \le y + M(1 - {u_2}) z≤y+M(1−u2)u1+u2≥1{u_1} + {u_2} \ge 1u1+u2≥1u1,u2∈{0,1}{u_1},{u_2} \in \{ 0,1\} u1,u2∈{0,1}
其中MMM为较大常数。
总结
maxmaxmax 函数体现的是一种选择性,如果a大于b,就选a;反之选b。这类选择性一般都可以通过大M法的思路(0-1变量配合大M)加以解决。没有特别的理论深度,可以称之为小技巧。
max函数的线性化方法相关推荐
- matlab中max函数的使用方法详细介绍(附matlab代码)
一.语句 max 数组的最大元素 1.M = max(A) 返回数组的最大元素. 如果 A 是向量,则 max(A) 返回 A 的最大值. 如果 A 为矩阵,则 max(A) 是包含每一列的最大值的行 ...
- 非线性函数线性化方法总结
非线性函数线性化方法总结 1.增量线性化模型 增量线性化模型又称为分段线性方法.具体过程: 增量线性化模型在我理解看来就相当于泰勒展开式,你必须要知道X1-Xn的具体数值,才能进行线性化. 2.McC ...
- oracle工资在3000到5000,Oracle查询部门工资最高员工的两种方法 1、MAX()函数 2、RANK()函数...
本文以SCOTT用户下初始的EMP表为参考.代码可直接使用. 查询EMP表结构的语句如下,[代码1]: DESC EMP; EMP表结构如下:[结果1]: SQL> DESC EMP; 名称 是 ...
- Oracle查询部门工资最高员工的两种方法 1、MAX()函数 2、RANK()函数
本文以SCOTT用户下初始的EMP表为参考.代码可直接使用. 查询EMP表结构的语句如下,[代码1]: DESC EMP; EMP表结构如下:[结果1]: SQL> DESC EMP ...
- Python pandas.DataFrame.max函数方法的使用
Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速 ...
- mysql的min函数的使用方法_MySQL中MIN()函数的使用教程
MySQL的MIN函数是用来找出一个记录集最小值的记录. 要了解MIN函数考虑的EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...
- python中max函数用法_Python中max函数用法实例分析
Python中max函数用法实例分析 更新时间:2015年07月17日 15:45:09 作者:优雅先生 这篇文章主要介绍了Python中max函数用法,实例分析了Python中max函数的功能与使用 ...
- MySQL max()函数
转载自 MySQL max()函数 MySQL MAX函数介绍 MySQL MAX()函数返回一组值中的最大值.MAX()函数在许多查询中非常方便,例如查找最大数量,最昂贵的产品以及客户的最大付款. ...
- java调用wvsc.exe_c语言 函数的调用方法
欢迎加入 编程爱好者 QQ群 群号 57616770 中都只有一个主函数main(), 但实用程序往往由多个函数组成.函数是C源程序的基本模块,通过对函数模块的调在第一章中已经介绍过,C源程序是由函数 ...
- java min 函数的使用方法_【Python】Java程序员学习Python(五)— 函数的定义和使用...
不想做一个待宰的羔羊!!!!要自己变得强大.... 函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍, ...
最新文章
- 职称计算机考试题纲,2017年职称计算机考试大纲
- 15-07-08 数组-- 手机号抽奖、福利彩票随机生成
- js通过classname来获取元素
- 输入参数的数目不足_机器学习算法—KMEANS算法原理及阿里云PAI平台算法模块参数说明...
- 兰州财经大学JAVA期末考什么_兰州财经大学大学国文下答案
- C++ 下一代标准库 tr1中默认的哈希 FNV hash
- adc采集出来一段波形 如何求周期与频率_DMA+ADC快速采集直流无刷电机电流
- SmartDial - 简单你的生活
- 判断一个文件是否可以使用
- 用curl自动登录HTTPS站点
- 易语言-万挂作坊4.X下载,有图有真相
- Flutter使用阿里矢量图库管理项目svg图片
- oracle sqldeveloper 115网盘 提取码
- 概率论考点之二项式定理与组合数证明
- 如何做到域名防红成为微信防封域名
- 自学编程和计算机科班出身的差别在哪里?
- 计算机有文件无法删除,w7文件夹删不掉如何删掉_win7电脑有的文件夹删不掉怎么办...
- The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities.
- Six提供了Python 2和Python 3的兼容库
- 清华大学计算机科学与技术系黄必胜,都来看看,我们广西优秀学子在清华大学都读什么专业(2012年)...
热门文章
- 环洋市场咨询:全球OLED收入预计2028年达到502.4亿美元
- surfer10 地学计算机制图 pdf,Surfer 10地学计算机制图
- 快速掌握Python的捷径-Python基础前传(1) 1
- Install JD-GUI on Mac OSX
- 数据运营是什么?该如何做?
- 马克思对“货币之谜”的 历史唯物主义解答
- 【网络】路由器和交换机区别,什么是网关
- Python爬取必应壁纸
- 论文阅读《SHINE: Signed Heterogeneous Information Network Embedding for Sentiment Link Prediction》
- 北京年内首现二手房连续三日成交破450套