Integer Programming
Integer Programming
Model 1(Linearization of nonlinear integer programming problem)
When there is a product of k 0-1 variables , we call the problem is nonlinear problem. So we deal with the problem with following methods:
-
Introduce 0-1 variable y to replace product and add two constraint conditions:
-
Introduce non-negative variables to replace the product term ,and we add limit constraint conditions:
Model2 (Linearization of nonlinear integer programming problem)
problem describe
we get
The Cutting Plane Method of Pure Integer Programming
The Geometric Characteristics of Cutting Plane Method
Mark the integer programming as AIP, it's feasible region is marked as . If we get rid of the constraint condition that variables have to be integers, then we get a linear problem (LP), it's feasible region is .
The cutting plane method essentially use the same method of solving linear programming to solve integer programming. It's basic idea is:
When we solve the problem (LP), if the best solve is an integer result, then is of course the best result of AIP; if not, we try to add a linear constraint condition (call it cutting plane) to split a set out that does not include integer results from (LP)'s feasible region , then we try to get the best result of new linear programming. If is still not the optimal solution of (AIP), then repeat the above process.
The Comory Cut
The key point of the cutting plane method is to find an appropriate cut constraint condition. Let's discuss it.
We import some signs:
represents the largest integer that does not exceed x, represents the smallest integer that does not less than x.
Say B is a base of (LP), X is a feasible solution of (AIP), as , so X is also a feasible solution of (LP), then X satisfy the equation set:
As , so
As left side is always an integer, so
So
This is the necessary condition for every feasible solution in (AIP), we call it the Comory cut.
Assume B is the optimal base of (LP), X* is the optimal solution about base B of (LP) and X* is not an integer solution. Now then, , and at least one of is not an integer.
Now, we choose for inequation(5-20), it's left side equal to 0, and the right side is not. In another word, it definitely does not satisfy the Comory cut, so we need to split the X* out. Then we import a slack variable and get a new constraint condition:
The Comory Cutting Plane Method
Assume the feasible region of (LP) that corresponds to (AIP) is not null and bounded, we give the following calculation steps:
- Solve (LP) with simplex method, get basic optimal solution X*, optimal base B and optimal table T(B)
- If X* is not an integer solution, let , add the new constraint condition to (LP) to get a new (LP). Then solve this new (LP).
- If we get the best integer solution, done. If not, repeat the above process.
- Tip: When we find a slack variable become basic variable again after the spinning the spindle, delete the row and the column corresponding to the may be a better option.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)