XPRESS 求解器 — FICO XPRESS


FICO XPRESS 是一款业界领先的高性能商业数学规划求解器,由 FICO(Fair Isaac Corporation)公司开发,专为解决大规模、复杂的优化问题而设计。XPRESS 支持线性规划(LP)、混合整数规划(MIP)、二次规划(QP)、二次约束规划(QCP)、非线性规划(NLP)等多种问题类型,以其卓越的求解速度和数值稳定性在全球范围内获得广泛认可。作为 GAMS 生态系统中的核心求解器之一,XPRESS 与 GAMS 建模环境实现无缝集成,使建模人员能够充分利用其强大的求解能力。

XPRESS 在供应链优化、生产与物流调度、金融投资组合优化、能源规划、石油化工、航空调度等领域拥有极为丰富的成功案例,是大规模工业化优化问题的理想选择。

目录


1. 介绍(Introduction)

FICO XPRESS 求解器是 FICO 公司开发的企业级数学优化引擎,自推出以来一直是全球优化领域的标杆产品,在性能基准测试中持续保持领先地位。XPRESS 的核心特点包括:

  • 多问题类型支持:可处理 LP、MIP、QP、QCP、NLP 以及多目标优化问题,覆盖广泛的优化应用场景。
  • 多种求解算法:提供原始单纯形法、对偶单纯形法、网络单纯形法、障碍法(内点法)以及非线性规划算法,自动选择最优求解策略。
  • 先进的 MIP 引擎:集成割平面生成、启发式算法、节点探测、分支策略、对称性检测等核心技术,大幅提升整数规划求解效率。
  • 强大的预处理能力:在求解前自动简化模型,消除冗余约束和变量,收紧边界,减少问题规模,提高求解速度。
  • 冲突分析(Infeasibility Analysis):在模型不可行时提供详细的不可行原因分析(IIS),帮助建模人员快速定位和修正问题。
  • 多线程与分布式并行:支持多核并行和跨机器的分布式求解,充分利用计算资源处理超大规模问题。
  • 数值稳定性:采用先进的数值线性代数技术,确保在广泛问题类型中保持高度稳定的求解性能。

2. 使用说明(Usage)

在 GAMS 中使用 XPRESS 求解器非常简单。以下是在 GAMS 模型中调用 XPRESS 的基本方法:

2.1 基本调用

在 GAMS 模型中,通过在 solve 语句中指定求解器名称即可调用 XPRESS:

Model mymodel /all/;
Solve mymodel using LP maximizing profit;

如需明确指定使用 XPRESS,可以在 GAMS 模型代码中使用 Option 语句设置:

Option LP = xpress;
Option MIP = xpress;
Option QCP = xpress;
Option NLP = xpress;

2.2 从命令行调用

在命令行中运行 GAMS 时,可以通过以下方式指定 XPRESS 求解器:

gams mymodel.gms lp=xpress
gams mymodel.gms mip=xpress

2.3 选项文件

XPRESS 求解器的选项可以通过选项文件(xpress.opt)进行配置。在 GAMS 模型中通过以下方式引用:

$onecho > xpress.opt
* XPRESS 选项文件示例
defaultalgs=4
mipalg=4
mipthreads=4
cputime=3600
outputlog=1
$offecho
mymodel.optfile = 1;

2.4 GAMS 示例模型

以下是一个完整的 GAMS 模型示例,演示如何使用 XPRESS 求解一个简单的混合整数规划问题:

Set
   i /1*5/
;
Variables
   x(i)    生产数量
   profit  总利润
;
Binary Variable x(i);
Parameters
   price(i) 产品单价 /1 100, 2 120, 3 150, 4 80, 5 200/
   cost(i)  生产成本 /1 60, 2 70, 3 85, 4 50, 5 110/
   cap(i)   产能限制 /1 100, 2 80, 3 60, 4 120, 5 50/
;
Equations
   obj      目标函数
   capcon(i) 产能约束
;
obj.. profit =e= sum(i, (price(i) - cost(i)) * x(i));
capcon(i).. x(i) =l= cap(i);
Model prodplan /all/;
Option MIP = xpress;
Solve prodplan using MIP maximizing profit;
Display profit.l, x.l;

3. 选项参数(Options)

XPRESS 提供了丰富且精细的选项参数,允许用户根据具体问题的特征调整求解行为。以下按分类列出最常用的选项参数:

3.1 算法控制选项

选项名 默认值 说明
DEFAULTALGS 4 LP 求解算法选择:1=原始单纯形法,2=对偶单纯形法,3=网络单纯形法,4=自动选择,5=障碍法(内点法)
BARALG 0 障碍法算法:0=自动,1=同伦法,2=不可行-不可行法,3=不可行-可行法,4=可行-不可行法
MIPALG 4 MIP 求解算法:4=自动选择
MIPTHREADS 0 MIP 并行求解线程数:0=自动(使用全部可用核心),正整数=指定线程数
THREADS 0 LP 及障碍法求解使用的线程数
CHOLESKYALG 0 Cholesky 分解算法:0=自动,1=外存模式,2=内存模式
PRESOLVE 1 预处理开关:0=关闭,1=开启(推荐),2=完全预处理
SCALING 1 模型缩放:0=关闭,1=平衡缩放,2=行缩放,3=列缩放,4=几何缩放

3.2 MIP 搜索策略选项

选项名 默认值 说明
MIPABSSTOP 0 MIP 绝对停止容差,当 MIP 间隙的绝对值小于此值时停止求解
MIPRELSTOP 1e-4 MIP 相对停止容差,当 (|bestbound-bestint|)/(|bestint|+1e-10) 小于此值时停止
MIPMAXTIME -1 MIP 求解最大时间限制(秒),-1 表示无限制
MIPMAXNODE -1 MIP 最大节点数限制
MIPMAXSOL -1 MIP 找到的最优解数量上限
CUTSTRATEGY 0 割平面生成策略:0=自动,1=保守,2=中等,3=激进
HEURSTRATEGY 0 启发式搜索策略:0=自动,1=关闭,2=基本,3=增强
MIPFOCUS 0 MIP 搜索侧重:0=自动,1=寻找可行解,2=证明最优性,3=同时兼顾
BRANCHSTRATEGY 0 分支策略:0=自动,1=向下分支优先,2=向上分支优先
NODESELECTION 3 节点选择策略:1=深度优先,2=广度优先,3=最佳优先
VARSELECTION 0 变量选择策略:0=自动,1=最大不可行性,2=伪代价,3=强分支
MIPADDCPUNODES 0 MIP 额外节点处理 CPU 时间限制

3.3 求解限制选项

选项名 默认值 说明
CPUTIME 1e8 CPU 时间限制(秒)
MAXTIME -1 求解总时间限制(秒),-1 表示无限制
ITERLIM 2e9 最大迭代次数限制
LPITERLIM 2e9 LP 求解的最大迭代次数限制
MIPABSCUTOFF -1e8 MIP 绝对截断值,目标函数低于此值的分支将被修剪
MIPRELCUTOFF 0 MIP 相对截断值

3.4 输出控制选项

选项名 默认值 说明
OUTPUTLOG 1 日志输出级别:0=无输出,1=正常输出,2=详细输出,3=调试输出
MIOLOG -1 MIP 日志显示频率,-1 表示自动计算 N 值
MIPTRACE -1 MIP 轨迹文件输出级别
SOLUTIONFILE 0 解文件输出:0=不输出,1=输出到文件

3.5 数值与精度选项

选项名 默认值 说明
FEASTOL 1e-6 LP 可行性容差
OPTIMALITYTOL 1e-6 LP 最优性容差
MIPADDCUTOFF 1e-6 MIP 整数可行性容差
ETOL 1e-6 数值计算精度容差
CONTRAINDICATE 0 指示矛盾约束的检测级别

4. 详细说明(Detailed Descriptions)

4.1 LP 求解算法

XPRESS 为线性规划问题提供了多种求解算法,用户可通过 DEFAULTALGS 选项选择:

  • 原始单纯形法(Primal Simplex - DEFAULTALGS=1):从原始可行解出发,逐步改进目标函数值。适合变量数量远多于约束数量的问题,以及热启动(Warm Start)场景。
  • 对偶单纯形法(Dual Simplex - DEFAULTALGS=2):从对偶可行解出发,是目前 XPRESS 默认且最稳健的 LP 求解算法。适合约束数量远多于变量数量的问题,以及 MIP 求解过程中的节点松弛求解。对偶单纯形法具有出色的数值稳定性和较快的迭代收敛速度。
  • 网络单纯形法(Network Simplex - DEFAULTALGS=3):专门针对网络流问题进行了深度优化,对于具有网络结构的问题速度极快。
  • 障碍法/内点法(Barrier/Interior Point - DEFAULTALGS=5):采用原-对偶路径跟踪算法(Primal-Dual Path Following),适合大规模稀疏 LP 问题,可利用多线程并行加速矩阵分解过程。对于超过数十万变量或约束的问题,障碍法通常是最快的选择。

XPRESS 的自动算法选择机制(DEFAULTALGS=4)会根据问题的结构特征(如行列比、稀疏模式、变量边界等)自动选择最适合的算法,对于绝大多数问题都能提供良好的性能。

4.2 MIP 求解策略

XPRESS 的 MIP 求解器集成了一系列先进的求解技术,使其在工业界和学术界 MIP 基准测试中持续保持领先:

  • 预处理(Presolve):在分支定界求解前自动简化模型,消除冗余约束和变量,收紧边界,固定某些变量的取值,检测不可行性。XPRESS 的预处理器在 MIP 求解中通常能减少 30%~70% 的问题规模。
  • 割平面生成(Cut Generation):自动生成各类割平面,包括 Gomory 割(Gomory Cuts)、混合整数舍入割(MIR Cuts)、覆盖割(Cover Cuts)、团割(Clique Cuts)、流覆盖割(Flow Cover Cuts)、GUB 割(Generalized Upper Bound Cuts)等。CUTSTRATEGY 选项控制割平面生成的激进程度。
  • 启发式算法(Heuristics):包括取整启发式(Rounding Heuristics)、RINS(Relaxation Induced Neighborhood Search)、局部分支(Local Branching)、引导改进(Guided Improvement)、可行性泵(Feasibility Pump)等。HEURSTRATEGY 选项控制启发式搜索的强度。
  • 分支策略(Branching):采用强分支(Strong Branching)、伪代价分支(Pseudocost Branching)和基于可靠性的分支(Reliability Branching)等多种策略的混合体,智能选择分支变量以最小化搜索树规模。
  • 节点探测(Node Probing):通过向前探测技术推断变量之间的逻辑关系,推导出额外的定界约束。
  • 对称性检测(Symmetry Detection):自动检测模型中的对称结构(如对称变量的置换对称性),并添加对称性打破约束(Symmetry Breaking Constraints),避免等价的重复搜索。

4.3 QP 与 QCP 求解

对于二次规划问题,XPRESS 支持凸二次目标函数(QP)和凸二次约束(QCP)。求解算法包括:

  • 扩展单纯形法(Extended Simplex):将对偶单纯形法和原始单纯形法扩展到二次规划,适用于中小规模的凸 QP 问题。
  • 障碍法(Barrier):对于大规模 QP 和 QCP 问题通常效率更高,能够充分利用问题的稀疏结构。
  • 序列二次规划(SQP):适用于更广泛的非线性凸优化问题,通过逐次求解二次近似来逼近原问题的最优解。

4.4 不可行性分析(Infeasibility Analysis)

当模型不可行时,XPRESS 提供强大的不可行性分析工具,帮助建模人员快速诊断和修复问题:

  • 冲突分析(Conflict Analysis - IIS):自动识别导致不可行的最小约束子集(IIS,Irreducible Inconsistent Subsystem)。IIS 是一个精简的约束集合,移除其中任意一个约束都会使剩余子问题可行,从而精准定位导致不可行的根源。
  • 可行松弛(Feasibility Relaxation):自动分析并推荐最小程度的约束松弛方案,计算出需要放宽哪些约束、放宽多少才能使模型变为可行。

在 GAMS 中启用不可行性分析的方式:

$onecho > xpress.opt
conflictanalysis=1
$offecho
mymodel.optfile = 1;

4.5 多线程与并行求解

XPRESS 支持多线程并行求解,可充分利用现代多核处理器的计算能力:

  • MIP 并行:通过 MIPTHREADS 选项控制 MIP 分支定界树搜索的并行线程数。不同线程同时探索不同的分支节点,通过负载均衡机制确保各线程的工作量分配合理。
  • 障碍法并行:通过 THREADS 选项控制障碍法中矩阵分解(Cholesky/LU 分解)的并行度,可显著加速大规模 LP/QP 问题的求解。
  • 分布式并行(XPRESS Distributed MIP):支持跨多台机器的分布式 MIP 求解,各节点通过网络通信共享边界信息和最优解,适合超大规模单一 MIP 问题的加速求解。

4.6 多目标优化

XPRESS 支持多目标优化(Multi-Objective Optimization),通过两种策略处理多个冲突的优化目标:

  • 加权和法(Weighted Sum):为每个目标分配权重,组合成单一目标函数进行优化,适用于各目标重要性明确且可量化比较的场景。
  • 分层法(Lexicographic / Priority Order):按用户指定的优先级逐层优化,高优先级目标的值被固定为最优值后,继续优化低优先级目标。适用于各目标优先级明确的场景。

XPRESS 可以自动生成帕累托最优前沿,帮助决策者理解不同目标之间的权衡关系。

5. 实用提示(Helpful Hints)

5.1 模型调试技巧

  • 求解不可行模型:启用冲突分析功能(CONFLICTANALYSIS=1),检查不可行约束子系统的定位结果。首先检查约束边界是否一致(如上限低于下限),变量边界是否合理,以及是否有输入数据错误。
  • 求解无界模型:检查目标函数系数方向是否正确,变量边界是否设置不当导致目标值无限增长。特别注意自由变量的边界设置。
  • 数值稳定性:避免在模型中使用极端的系数值(如 1e+10 或 1e-10 量级),对系数矩阵进行归一化处理可以显著提高数值稳定性。启用 SCALING 选项可自动进行模型缩放。

5.2 性能优化建议

  • 选择合适的算法:大部分 LP 问题使用默认的自动算法选择(DEFAULTALGS=4)即可获得良好性能。对于数值敏感的问题可尝试对偶单纯形法,对于大规模稀疏问题可尝试障碍法。
  • MIP 性能调优:如果求解时间过长,可以尝试调整 CUTSTRATEGY 和 HEURSTRATEGY 参数。若目标是快速获得可行解,可设置 MIPFOCUS=1;若需要严格证明最优性,可设置 MIPFOCUS=2。
  • 利用多线程:设置 MIPTHREADS 为实际可用的物理核心数(非逻辑线程数),过多的线程可能导致内存带宽竞争和收益递减。通常 4~8 线程的加速效果最明显。
  • 合理设置停止标准:如果实际业务不需要严格最优解,适当放宽 MIPRELSTOP(如设为 1e-3 或 1e-2)可以大幅缩短求解时间。
  • 模型规模控制:在建模时尽量使用紧缩的边界,减少不必要的变量,利用 GAMS 的建模特性减少模型中的对称性。
  • 热启动(Warm Start):在求解系列相似问题时,使用前一次求解的基解作为初始点可以显著加速 LP 求解过程。

5.3 常见问题排除

  • "Resource limit reached":求解器达到时间或迭代限制,增加 CPUTIME 或 ITERLIM 限制值。
  • MIP 间隙收敛缓慢:尝试提高 CUTSTRATEGY 级别(设为 2 或 3),或调整分支策略 NODESELECTION。
  • LP 求解出现数值警告:检查模型系数的数量级是否跨度过大,启用 SCALING 选项,或考虑对系数进行手工缩放。
  • XPRESS 未找到任何可行解:检查模型是否确实可行(可通过移除整数约束测试松弛问题),增加 HEURSTRATEGY 级别,或设置 MIPFOCUS=1 优先寻找可行解。
  • 求解结果不符合预期:检查模型的数学表达式是否正确,约束方向是否设置正确,目标函数系数符号是否与预期一致。

5.4 与其他求解器的配合

在 GAMS 环境中,XPRESS 可以与其他求解器配合使用,实现混合求解策略:

  • CONOPT / MINOS + XPRESS:先用 CONOPT 或 MINOS 求解连续 NLP 松弛问题得到初始解或可行点,然后将该解作为 XPRESS MIP 求解的起始点(热启动)。
  • XPRESS + BARON:对于含有非凸非线性约束的 MINLP 问题,可先用 XPRESS 求解 MIP 部分,再使用 BARON 进行全局优化。
  • XPRESS 多实例并行:在同一台机器上启动多个 XPRESS 求解器实例,以不同参数设置并行求解同一模型,采用最优结果。

5.5 性能基准参考

根据第三方基准测试(如 Mittelmann 和 Hans Mittelmann 的 LP/MIP 基准测试),XPRESS 在以下方面表现突出:

  • LP 求解速度在障碍法和大规模问题上与 CPLEX 和 Gurobi 并列第一梯队。
  • MIP 求解在复杂整数规划问题上具有业界领先的鲁棒性和求解速度。
  • 在 MIP 启动求解、热启动场景下,XPRESS 的对偶单纯形法具有显著优势。

6. 许可证设置(Setting Up License)

6.1 许可证文件

FICO XPRESS 求解器需要有效的许可证才能运行。许可证通常以文件形式提供:

  • xpauth.xpr:XPRESS 认证文件,包含许可证密钥信息。这是 XPRESS 许可证的核心文件。
  • Community 许可:FICO 提供免费的 XPRESS Community Edition,适用于小规模的非商业用途问题(通常限制变量数不超过 2,000 个,约束数不超过 10,000 个)。
  • 商业许可:完整的商业许可支持无限规模的问题,并提供全面的技术支持服务,包括单机许可证、并发网络许可证(Floating License)和分布式许可证等多种形式。

6.2 环境变量设置

为确保 XPRESS 能够正确找到许可证文件,需要设置以下环境变量:

XPRESSDIR=C:\xpress    (XPRESS 安装目录)
XPAUTH_PATH=C:\xpress\licenses\xpauth.xpr    (许可证文件完整路径)

在 Windows 系统中,可以通过"系统属性"→"高级"→"环境变量"进行设置;在 Linux 系统中,可以在 .bashrc 或 .profile 文件中添加以下行:

export XPRESSDIR=/opt/xpress
export XPAUTH_PATH=/opt/xpress/licenses/xpauth.xpr

6.3 许可证验证

安装完成后,可以通过以下方式验证许可证是否配置正确:

  • 在命令行中运行 xpress -vxpress -license 查看许可证信息,确认许可证类型、过期日期和可用功能。
  • 在 GAMS 中运行一个简单模型,检查求解日志中是否显示 XPRESS 许可证状态为有效。
  • 检查 XPRESS 日志输出中的许可证信息行,确认许可证类型(Community 或商业版)、过期日期和可用功能模块。

6.4 GAMS 中的许可证集成

当 XPRESS 与 GAMS 配合使用时,GAMS 会在求解过程中自动调用 XPRESS 并传递许可证信息。通常只需确保 XPRESS 本身的许可证配置正确即可。如果 GAMS 报告 XPRESS 许可证错误,请检查:

  • XPRESS 安装目录是否在系统 PATH 环境变量中。
  • XPAUTH_PATH 环境变量是否指向正确的许可证文件。
  • XPRESS 和 GAMS 的版本是否兼容。
  • 是否有足够的许可证可用(例如并发许可证是否已被其他用户占用)。
  • GAMS 的求解器配置文件(gamsinst.cmd)中 XPRESS 求解器是否已正确注册。

6.5 常见许可证问题

  • "No license found":检查 XPAUTH_PATH 环境变量和许可证文件是否存在,确认文件路径和文件名拼写正确。
  • "License expired":许可证已过期,请联系 FICO 或上海卡贝信息技术有限公司续期。
  • "License feature not available":当前许可证不包含所请求的功能模块,请确认许可证类型是否涵盖所需求解功能。
  • "Concurrent license checkout failed":并发许可证已满,请等待其他用户释放或购买更多许可证。
  • "Host ID mismatch":许可证绑定的主机信息与当前机器不符,请确认许可证与当前机器的 MAC 地址或主机名匹配。

如需获取 XPRESS 许可证或技术支持,请联系上海卡贝信息技术有限公司:

全文完

联系我们

 

微信公众号

咨询微信

企业店铺

400-621-1085

(节假日期间办公室座机如无人接听,请选择其他联系方式,感谢理解!祝您节日快乐!)

 

联系我们 快速链接 相关产品 上海卡贝信息技术有限公司

©2025  上海卡贝信息技术有限公司

产品中心

下载中心

站点地图

隐私政策

 

销售QQ咨询

产品QQ咨询

淘宝店铺

 

GAMS:概述

最近更新

相关文档

下载试用

购买咨询

Berkeley Madonna

iThink

Stella Architect

IBM SPSS Modeler

DecisionTools Suite

NeuralTools

Frontier Analyst

Vensim

RISKOptimizer

PrecisionTree

LINGO

LINDO API

What'sBest!

@RISK

BARON

BayesiaLab

Oracle Crystal Ball

GEMPACK

GTAP Database

TreeAge