跳转至
1.2.2

求解器支持矩阵

按接口对照四条求解路径。点击方法名查看参数,展开“适用条件”了解输入域、表达式形式和后端限制。

支持 条件支持 不支持

条件支持不等于任意模型都能求解。 子表达式、数值范围和有限展开规模也必须满足要求;MATHOPT 的能力还取决于 solver_type。

SEARCH、CPSAT、MATHOPT、OPTX 分别对应 solve()、solve_cpsat()、solve_mathopt()、solve_optx()。具体用法见选择求解路径。

建模接口
接口SEARCHCPSATMATHOPTOPTX
布尔变量 支持 支持 支持 支持
适用条件

布尔变量可用于四条求解路径;完整模型仍须满足各路径的表达式限制。

整数变量 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT 与 OPTX 的有限展开要求整数有限界及安全数值范围;OPTX 保留普通仿射模型的无界整数支持,不会为展开静默收紧变量域。

浮点变量 支持 不支持 支持 支持
适用条件

CPSAT 不支持浮点决策变量。MATHOPT 与 OPTX 可接受连续变量,表达式仍须满足对应后端限制。

常量 支持 条件支持 条件支持 条件支持
适用条件

CPSAT 要求数值可按整数表示;MATHOPT、OPTX 可展开受支持的复合常量,并保留无效值语义。

复合变量 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 将有限集合、序列和整数区间展开为辅助变量与约束,受有限域及展开规模限制;返回时重建原始复合值。

约束与目标 支持 条件支持 条件支持 条件支持
适用条件

支持取决于所有根表达式。OPTX 支持可精确展开的 MILP,另支持显式标量连续凸二次最小化或凹二次最大化目标及线性约束;QP 不允许未固定的整数变量,且只能位于最后目标优先级。

线性算术 支持 条件支持 条件支持 条件支持
适用条件

CPSAT 要求整数值与整数系数。MATHOPT、OPTX 支持有限集合与符号 Lambda 聚合,受展开限制;OPTX 条件连续贡献须能证明有限界。加减及负号遵循相同限制。

乘积 支持 条件支持 条件支持 条件支持
适用条件

CPSAT 支持有界整数乘积;MATHOPT 的一般变量乘积需要 GSCIP 或 GUROBI。OPTX 支持常数倍、Bool 或有界 Int 乘有界数值及有限 prod;连续乘积仅在可识别的连续凸 QP 目标中支持,一般双线性约束不支持。

极值与绝对值 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT 通过辅助变量与约束转换;CPSAT 还要求整数值。OPTX 在可证明有限界时用分支选择保持完整等式语义,不依赖目标优化方向。

除法 支持 条件支持 条件支持 条件支持
适用条件

CPSAT 不支持变量除数,常量除数也须满足整数要求。MATHOPT 的变量除数域不能包含零且需要 GSCIP 或 GUROBI。OPTX 支持非零常数及域不含零的有限整数除数,后者要求商有可靠有限界;一般连续变量除数不支持。

取模 支持 条件支持 条件支持 条件支持
适用条件

Exact 路径要求可转换的有界整数运算。MATHOPT、OPTX 用小有限域表支持变量整除和取模,零除保留无效性;整除向下取整,余数沿用 C++ 符号规则,不等同 Python 的负数 %。

幂 支持 条件支持 条件支持 条件支持
适用条件

Exact 路径要求固定指数。OPTX 支持常量、0/1 次幂及受限有限整数域幂,连续平方可进入显式连续凸 QP 目标;一般连续高次幂关系不支持。CPSAT 还要求整数值,MATHOPT 的非线性乘积需要 GSCIP 或 GUROBI。

非严格比较 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 支持可转换的整数及复合值比较,受有限展开限制。OPTX 保留顶层连续仿射 ==、>=、<=;一般嵌套连续比较仍不支持。

严格比较 支持 条件支持 条件支持 条件支持
适用条件

Exact 路径的严格比较要求可转换的整数语义,不支持一般连续变量的严格不等式。OPTX 同时支持有限整数比较的布尔化与组合。

不等比较 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 可转换有界整数及受支持复合类型的不等比较;一般连续变量的不等关系不支持。

逻辑与条件 支持 条件支持 条件支持 条件支持
适用条件

Exact 路径转换布尔逻辑、条件分支及有效性;子表达式必须可转换。OPTX 条件行须可推得有限 Big-M,无法证明界时明确拒绝,不人为指定大数。

集合关系 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 支持有限域中的关系与集合展开,受辅助变量和展开规模限制;区间交集需要可转换的整数边界。

数组与索引 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 支持有限数组、序列及动态索引,范围与长度须可有界展开;元素及索引表达式也须受支持,保留活动槽与索引有效性。

阶梯数组 支持 条件支持 条件支持 条件支持
适用条件

Exact 路径要求断点为常量,输出与查询表达式可转换,且受有限展开规模限制。CPSAT 还要求整数值;OPTX 条件行须有可靠有限界。

平方根 支持 条件支持 条件支持 条件支持
适用条件

CPSAT 仅可处理固定值或小有限整数域,结果须可按整数表示。MATHOPT 可通过 GSCIP 或 GUROBI 二次约束转换非负输入。OPTX 支持常量及小有限整数输入表,允许浮点输出;一般连续 sqrt 不支持。

超越函数 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 仅处理固定值或小有限整数输入域,不支持一般连续输入。OPTX 允许表输出为浮点数,但须满足系数安全范围;CPSAT 还要求结果可按整数表示。

取整 支持 条件支持 条件支持 条件支持
适用条件

Exact 路径支持整数输入的恒等转换及固定输入;不支持一般连续变量输入的取整。CPSAT 仍要求编译中间值为整数。

区间属性 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 支持可有界展开的整数区间及其存在性语义,子表达式也须可转换;缺席区间的属性有效性按源模型保留。

符号函数 支持 条件支持 条件支持 条件支持
适用条件

CPSAT、MATHOPT、OPTX 可展开符号 Lambda,其函数体、参数及展开规模必须满足转换限制;call 调用外部回调不支持。OPTX 原生 QP 目标暂要求显式标量展开。

分段函数 支持 条件支持 条件支持 条件支持
适用条件

Exact 路径仅支持可转换的分段表达式;连续插值要求常量且严格递增的断点,并覆盖整个查询域。CPSAT 还要求整数值与系数;OPTX 用有限分支线性等式编码,须通过数值与展开预算检查。

外部回调 支持 不支持 不支持 不支持
适用条件

外部回调可由 SEARCH 求值。CPSAT、MATHOPT、OPTX 无法把任意回调转换成约束;仅注册但未调用回调,不代表该后端支持回调。

求解入口
接口SEARCHCPSATMATHOPTOPTX
SEARCH 求解入口 求解入口 不适用 不适用 不适用
适用条件

此方法选择 SEARCH 求解路径;模型中各接口的支持条件仍适用。

CPSAT 求解入口 不适用 求解入口 不适用 不适用
适用条件

此方法选择 CPSAT 求解路径;模型中各接口的支持条件仍适用。

MATHOPT 求解入口 不适用 不适用 求解入口 不适用
适用条件

此方法选择 MATHOPT 求解路径;模型中各接口的支持条件仍适用。

OPTX 求解入口 不适用 不适用 不适用 求解入口
适用条件

此方法选择 OPTX 求解路径;模型中各接口的支持条件仍适用。