线性规划中的几种逻辑表达式

线性规划中的几种逻辑表达式

注意: 摘录字刘博士的《数学建模与数学规划》, 以便用时可查。

实际上Gurobi API 中自身放啊变的逻辑表达式函数,下面列出自定义的实现方式。

1 逻辑与

如果 x 1 = 1 x_1 = 1 x1=1, x 2 = 1 x_2 = 1 x2=1, 那么 y = 1 y=1 y=1

如果考虑N个变量的逻辑与,则:

2 逻辑或

如果 x 1 = 1 x_1 = 1 x1=1 或者 x 2 = 1 x_2 = 1 x2=1, 那么 y = 1 y=1 y=1

如果考虑 N个变量的逻辑或, 则:

3 逻辑异或

如果 x 1 = 1 x_1 = 1 x1=1 和 x 2 = 1 x_2 = 1 x2=1中, 当且仅当一个为真时, y = 1 y=1 y=1

如果考虑N个0-1变量的异或, 那么:

4 if-then 约束

当 x 1 > = x 2 x_1 >= x_2 x1>=x2 时 v=1;

当 x 1 < x 2 x_1 < x_2 x1<x2 时, v=0.

考虑上述两个推理的逆否命题。 第一个为 当 v=0 时,有 x 1 < x 2 x_1 < x_2 x1<x2, 进一步 x 1 − x 2 < 0 x_1 - x_2 < 0 x1−x2<0, 在数学规划中,一般使用 < = <= <= 或者 > = >= >=, 引入非常小的正数 ϵ \epsilon ϵ,使得 x 1 − x 2 + ϵ < = 0 x_1 - x_2 + \epsilon<= 0 x1−x2+ϵ<=0, 于是写为线性规划约束为:
x 1 − x 2 + ϵ − M v < = 0 x_1 - x_2 + \epsilon - Mv<= 0 x1−x2+ϵ−Mv<=0

第二个的逆否命题为 当 v=1时,有 x 1 > = x 2 x_1 >= x_2 x1>=x2, 进一步 x 2 − x 1 < = 0 x_2 - x_1 <= 0 x2−x1<=0,于是写为线性规划约束为:
x 2 − x 1 − M ( 1 − v ) < = 0 x_2 - x_1 - M(1-v)<= 0 x2−x1−M(1−v)<=0

其他的常见的建模方法:

相关推荐
从以前14 分钟前
Python 爱心代码实现动态爱心图案展示
python
旷野..22 分钟前
Python构造方法:对象的“开机启动程序”
开发语言·python
迅猛龙办公室25 分钟前
C语言——实现矩阵转置
c语言·算法·矩阵
觅远27 分钟前
python实现Excel转图片
开发语言·python·excel
Code_流苏28 分钟前
VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)
ide·vscode·python·python环境搭建·测试运行
带多刺的玫瑰34 分钟前
Leecode刷题C语言之k次乘运算后的数组②
c语言·数据结构·算法
口_天_光健38 分钟前
两款轻量级数据库SQLite 和 TinyDB,简单!实用!
数据库·python·sqlite·非关系型数据库
notfindjob38 分钟前
sqlite加密-QtCipherSqlitePlugin 下
数据库·算法·sqlite
凡人的AI工具箱39 分钟前
每天40分玩转Django:Django部署
数据库·后端·python·算法·django
ChoSeitaku1 小时前
图的基本概念|存储
算法·图论