知方号

知方号

python gurobi求解混合整数规划模型 混合整数规划求解思路

02. 整数规划定义

规划中的变量 (部分或全部) 限制为整数时,称为整数规划。

若在线性规划模型中变量限制为整数,则称为整数线性规划。

分类:

变量全限制为整数时,称纯 (完全) 整数规划;变量部分限制为整数时,称混合整数规划。求解方法分枝定界法

思路:将可行解空间分割为越来越小的子集,对每个子集内的解集计算目标下界,超出已知可行解集目标值的子集不再进一步分枝。

步骤**分枝:**在问题中任选一个不符合整数条件的变量 ,取小于 的最大整数和大于 的最小整数,构造新的约束条件 将约束条件加入原问题,构造两个新问题;**定界:**对于新问题的解,从符合整数条件的分枝中,找出目标函数值最大作为新的下界;**比较与剪枝:**若分枝的解小于下界,则去除该分枝;若分枝的解大于下界且不符合整数条件,重复步骤 1,直到解等于下界。例子

1. 求解与定界

记问题 ,首先不考虑整数限制,得

而 时 ,则为 的下界,记 。

2. 分枝再求解

对 任选一个进行分枝,设选 分枝,有:

对于 ,构成新的约束条件,记问题 : 解得 对于 ,构成新的约束条件,记问题 : 解得

3. 再定界

的解均不满足整数条件,下界不变,即

两个问题的解均不等于下界,继续分枝。

4. 再分枝再求解

对问题 再分枝,由于 满足整数条件,选 : 分别构成问题 。

最优解分别为:

同样对问题 再分枝,有:

无可行解5. 再定界

中, 满足整数条件,作为下界,即 其余分枝解均小于下界,被剪枝,保留 。

而 满足整数条件,无需继续分枝,作为最终解,即

过滤隐枚举法

思路:排除掉不可能的变量取值集合,只检查变量取值组合的一部分,就能求到问题的最优解。

过滤隐枚举法是解 0-1 型整数规划的一种解法。

步骤试探求一个可行解 ,代入得 ;增加约束条件 ;继续试探求解并更新约束条件,从而抬高过滤门槛,减少计算量。蒙特卡洛法

对可行解集进行随机取样,选取部分解集代入计算。

Python 代码

利用 cvxpy 包可以直接进行整数规划的求解。

对于问题:

代码如下:

# %%import numpy as npimport cvxpy as cp# %%# 目标函数形如 min c^T·xc = np.array([40, 90])# 约束形如 a·x

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。