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

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

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

实际上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

其他的常见的建模方法:

相关推荐
ZH15455891313 分钟前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同7654 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子9 分钟前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
团子的二进制世界16 分钟前
G1垃圾收集器是如何工作的?
java·jvm·算法
白日做梦Q19 分钟前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
吃杠碰小鸡20 分钟前
高中数学-数列-导数证明
前端·数学·算法
故事不长丨20 分钟前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
long31620 分钟前
Aho-Corasick 模式搜索算法
java·数据结构·spring boot·后端·算法·排序算法
近津薪荼21 分钟前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先
熊文豪30 分钟前
探索CANN ops-nn:高性能哈希算子技术解读
算法·哈希算法·cann