限制条件优化
约束优化或
约束编程
(CP) 命名,用于从大量候选方案中确定可行的解决方案,问题可以建模
许多科学和工程学科中都存在 CP 问题。(“编程”一词有点不恰当,类似于“计算机”曾经表示“会计算的人”的意思)。此处的“编程”是指安排规划,而不是使用计算机语言进行编程。)
CP 基于可行性(找到可行的解决方案)而非优化(找出最佳解决方案),并且侧重于约束和变量,而非目标函数。事实上,CP 问题可能甚至没有目标函数 - 目标是通过为问题添加约束条件,将大量可能的解决方案缩小为更易于管理的子集。
一个非常适合 CP 的问题示例是员工调度。当持续运营的公司(例如工厂)需要为员工制定每周时间表时,就会出现这个问题。举一个非常简单的例子:某公司每天有三个班次,每班 8 小时,每天为四名员工中的三名安排不同的班次,同时给第四个员工休息日。即使在这样小的情况下,可能的时间表数量也非常庞大:每天可能有 4! = 4 * 3 * 2 * 1 = 24
名可能的员工班次,因此每周可以分配的员工数超过 4 亿。通常情况下,还有其他限制会减少可行解决方案的数量,例如,每位员工每周至少工作天数。当您添加新的约束条件时,CP 方法会跟踪哪些解决方案仍然可行,这使其成为解决大型实际调度问题的强大工具。
CP 在世界各地拥有一个非常活跃的广泛社区,这里有专门的科学期刊、各种会议以及各种不同的解析技术。CP 已成功应用于规划、调度以及众多具有异构约束的其他领域。
Google 提供了几种解决 CP 问题的方法:
如果您的问题可以使用线性目标和线性约束进行建模,则表示您的问题属于线性规划问题,应考虑使用 MPSolver。(不过,即使路线问题可以用线性模型表示,我们的车辆路线库通常也能妥善解决。)
示例
下一部分将介绍 CP-SAT 求解器,它是约束编程的主要 OR 工具求解器。(SAT 代表“可满足性”:求解器使用各种技术以及 CP 方法来解决 SAT 问题。)
以下是一些非常适合 CP-SAT 求解器的调度问题示例:
两个经典的 CP 问题是 N 皇后问题和密码谜题。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-08-09。
[null,null,["最后更新时间 (UTC):2024-08-09。"],[[["Constraint Programming (CP) helps find feasible solutions within a large set of possibilities by applying constraints to a problem."],["CP focuses on finding solutions that satisfy all constraints, rather than optimizing for a specific objective."],["Employee scheduling, where numerous possible shift combinations exist, is an example of a problem effectively addressed using CP."],["Google provides tools like the CP-SAT solver and the original CP solver to tackle constraint programming problems."],["CP is widely used in various fields, with dedicated research and applications in planning and scheduling."]]],["Constraint programming (CP) identifies feasible solutions from a vast set of candidates by modeling problems with constraints. CP focuses on feasibility, constraints, and variables rather than optimization. It's used in employee scheduling, where numerous constraints, such as shifts and days off, reduce the number of viable schedules. Tools like the CP-SAT solver and the original CP solver are available, and CP is applied to scheduling and planning problems, along with classic puzzles like N-queens and cryptarithmetic.\n"]]