SOL 文件格式:解法文件

SOL 文件格式支持解法文件。

CPLEX 针对所有应用程序编程接口 (API) 读写所有问题类型的 XML 格式的解法文件。 这些解法文件(称为 SOL 文件)具有文件扩展名 .sol。 XML 解法文件格式使您能够在大多数浏览器中显示并查看这些解法文件,以及将解法传递到 XML 感知应用程序。 CPLEX 还在 yourCplexinstallation/include/ilcplex 中提供样式表和模式以便于您在应用程序中使用此格式。

  • solution.xsl 样式表

  • solution.xsd 模式

注:

浏览器可能具有关于访问扩展名不为 .xml 的远程样式表和 XML 文件的特定约定。 例如,您的浏览器可能无法读取扩展名为 .SOL 文件的页眉。sol,或者可能不参考指定的样式表;因此,浏览器可能会以原始 XML 代码显示此类文件,而不是您所期望的格式化显示。 在此类情况下,请尝试将 SOL 文件复制到浏览器正确识别并处理的扩展名为 .xml 的文件。

缺省情况下,SOL 文件格式的编码为 UTF-8。

CPLEX 还可读取 SOL 文件作为高级启动。 SOL 文件包含基状态(如果可用)和解法值。 基状态可用于单纯形法优化器的高级启动;解法值可通过内点解法用于交叉引用或者通过混合整数解法用作 MIP 启动。 混合整数解法可以来自传统 MIP 优化或者来自解法池成员。

与 MST 文件一样,SOL 文件也包含 XML 格式化信息。 与 MST 文件不同,在缺省写详细级别,SOL 文件包含所有变量而不仅是定义整数可行解法的变量的解法值。 因此,SOL 文件更大,进行输入的时间更长,并且(在数字上困难的模型的异常情况下)更不大可能提供可行起点。 因此,通常理想做法是使用 MST 文件重新启动优化而不是 SOL 文件。 但是,如果已将 SOL 文件用于其它用途,那么还可将其用于提供可行起点。

SOL 文件还具有可选名称属性,这在问题具有名称时很有用。 SOL 文件还包含与问题的约束索引或变量索引对应的索引。

SOL 标头提供有关解法状态的信息。 例如,优化状态显示为 CPLEX 符号常量的字符串和数字值。

SOL 质量提供有关解法质量的信息。 例如,在此部分中出现最大初始不可行性、优化期间有效的容错参数值及其他质量信息。

当然,有相应的方法和例程来读写 SOL 文件。

  • 在 Concert Technology 中,使用以下方法:

    • 在 C++ API 中,请参阅方法 IloCplex::readSolutionIloCplex::writeSolution

    • 在 Java API 中,请参阅方法 IloCplex.readSolutionIloCplex.writeSolution

    • 在 .NET API 中,请参阅方法 Cplex.ReadSolutionCplex.WriteSolution

  • 在可调用库中,使用例程 CPXreadcopysol读取 SOL 文件,使用例程 "CPXsolwrite写入 SOL 文件。

以下是 SOL 文件的示例。


<?xml version = "1.0" standalone="yes"?>
<?xml-stylesheet href="https://www.ilog.com/products/cplex/xmlv1.0/solution.xsl" type="text/xsl"?>
<CPLEXSolution version="1.2">
 <header
   problemName="../../../examples/data/mexample.mps"
   solutionName="incumbent"
   solutionIndex="-1"
   objectiveValue="-122.5"
   solutionTypeValue="3"
   solutionTypeString="primal"
   solutionStatusValue="101"
   solutionStatusString="integer optimal solution"
   solutionMethodString="mip"
   primalFeasible="1"
   dualFeasible="1"
   MIPNodes="0"
   MIPIterations="3"/>
 <quality
   epInt="1e-05"
   epRHS="1e-06"
   maxIntInfeas="0"
   maxPrimalInfeas="0"
   maxX="40"
   maxSlack="2"/>
 <linearConstraints>
  <constraint name="c1" index="0" slack="0"/>
  <constraint name="c2" index="1" slack="2"/>
  <constraint name="c3" index="2" slack="0"/>
 </linearConstraints>
 <variables>
  <variable name="x1" index="0" value="40"/>
  <variable name="x2" index="1" value="10.5"/>
  <variable name="x3" index="2" value="19.5"/>
  <variable name="x4" index="3" value="3"/>
 </variables>
</CPLEXSolution>
提示:创建 SOL 文件时,最好使用 XML 识别验证器根据样式表和模式验证文件。 此安全做法将验证此类文件的所有必需部分是否存在并且语法正确。