Java API 参考手册

为了方便用户对复杂应用场景进行建模并调用求解器进行求解,杉数求解器设计并提供了 Java 接口, 本章节将对 Java 接口的常量和功能进行阐述。

Java常量类

常量类定义了使用 Java 接口建模时必要的常数,包括一般常数、解状态、属性、信息和参数五大类常量。 本节将依次阐述上述五类常量的内容与使用方法。

一般常数

一般常数定义在 Consts 类里. 用户可以通过 copt 导入包名作为 前缀访问一般常数,如 copt.Consts.XXXX

一般常数中的内容,详见 一般常数章节

解状态

关于解状态的常数定义在 Status 类里. 用户可以通过 copt 导入包名的 前缀访问解状态常数,如 copt.Status.XXXX

解状态常数中的内容,详见 一般常数章节:求解状态

属性

Java API属性常数中的内容,详见 属性章节

在Java API中,COPT 属性定义在 DblAttrIntAttr 类里。 用户可以通过 copt.DblAttr 访问 COPT 浮点型属性;通过 copt.IntAttr 访问 COPT 整型属性。

在Java API中,通过指定属性名称获取属性取值,提供的函数如下,具体请参考 Java Model类

  • Model.getIntAttr() :获取整数型属性取值

  • Model.getDblAttr() :获取浮点型属性取值

信息

Java API信息常数中的内容,详见 信息章节

在Java API中,信息常数定义在 DblInfo 类里。用户可以通过命名空间中的前缀 copt (通常可以省略) copt.DblInfo. 访问信息常数。

例如, copt.DblInfo.Obj 表示变量在目标函数中系数。

Callback信息

Java API Callback信息常数中的内容,详见 信息章节:Callback相关信息

在Java API中,Callback相关的信息常数定义在 CbInfo 类里, 用户可以通过命名空间中的前缀 copt (通常可以省略) copt.CbInfo. 访问Callback信息常数。

例如, copt.CbInfo.BestObj 表示当前最优目标函数值。

参数

优化参数控制COPT求解器优化算法的行为。

Java API参数常数中的内容,详见 参数章节

在Java API中,COPT优化参数定义在 DblParamIntParam 类里。 用户可以通过 copt.DblParam 访问 COPT 浮点型参数;通过 copt.IntParam 访问 COPT 整型参数。

在Java API中,通过指定参数名称获取和设置参数取值。提供的函数如下,具体请参考 Java Model类

  • 获取指定参数的详细信息(当前值/最大值/最小值): Model.getParamInfo()

  • 获取指定整数型/浮点型参数当前取值: Model.getIntParam() / Model.getDblParam()

  • 设置指定整数型/浮点型参数值: Model.setIntParam() / Model.setDblParam()

Java建模类

本章节详细描述杉数优化求解器的 Java 接口的优化建模类,方便用户在快速构建复杂 场景下的优化模型时对其功能和使用的查询。

Envr类

创建求解环境对象是每个求解过程中必不可少的第一步。而每个求解模型都和一个 Envr 类关联。用户 必须首先创建一个求解环境,才能在此基础上创建一个或者多个求解模型。

EnvrConfig类

如果用户通过连接远程服务的方式启动杉数优化求解器,可以创建环境配置类来设置COPT作为客户端的配置。

Model类

Model类是杉数优化求解器模型相关操作的封装,提供了以下成员方法:

Var类

Var类是杉数优化求解器变量的相关操作的封装,提供了以下成员方法:

VarArray类

为方便用户对一组 Java Var类 对象进行操作,杉数优化求解器的 Java 接口设计了VarArray类, 提供了以下成员方法:

Expr类

Expr类是杉数求解器中用于构建线性表达式时变量的相关组合操作,提供了以下成员方法:

Constraint类

Constraint类是杉数求解器线性约束的相关操作的封装,提供了以下成员方法:

ConstraArray类

为方便用户对一组 Java Constraint类 对象进行操作,杉数求解器的 Java 接口设计了ConstrArray类, 提供了以下成员方法:

ConstraBuilder类

ConstrBuilder类是杉数优化求解器中构建线性约束时的构建器的封装,提供了以下成员方法:

ConstrBuilderArray类

为方便用户对一组 Java ConstraBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了ConstrBuilderArray类, 提供了以下成员方法:

Column类

为了方便用户采用按列建模的方式,杉数优化求解器的 Java 接口设计了Column类,提供了以下成员方法:

ColumnArray类

为方便用户对一组 Java Column类 对象进行操作,杉数优化求解器的 Java 接口设计了ColumnArray类, 提供了以下成员方法:

Sos类

SOS类是杉数求解器的SOS约束的相关操作的封装,目前提供了以下成员方法:

关于SOS约束的介绍请参考 特殊约束:SOS约束 章节

SosArray类

为方便用户对一组 Java Sos类 对象进行操作,杉数求解器的 Java 接口设计了SosArray类, 提供了以下成员方法:

SosBuilder类

SOSBuilder类是杉数优化求解器中构建SOS约束的构建器的封装,提供了以下成员方法:

关于SOS约束的介绍请参考 特殊约束:SOS约束 章节

SosBuilderArray类

为方便用户对一组 Java SosBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了SosBuilderArray类,提供了以下成员方法:

GenConstr类

GenConstr类是杉数优化求解器的Indicator约束的相关操作的封装,提供了以下成员方法:

关于Indicator约束的介绍请参考 特殊约束:Indicator约束 章节

GenConstrArray类

为方便用户对一组 Java GenConstr类 对象进行操作,杉数优化求解器的 Java 接口设计了 GenConstrArray类,提供了以下成员方法:

GenConstrBuilder类

GenConstrBuilder类是杉数优化求解器中构建Indicator约束时的构建器的封装,提供了以下成员方法:

关于Indicator约束的介绍请参考 特殊约束:Indicator约束 章节

GenConstrBuilderArray类

为方便用户对一组 Java GenConstrBuilder类 对象进行操作,杉数优化求解器的 Java 接口 设计了GenConstrBuilderArray类,提供了以下成员方法:

Cone类

Cone类是杉数求解器的二阶锥约束的相关操作的封装,目前提供了以下成员方法:

ConeArray类

为方便用户对一组 Java Cone类 对象进行操作,杉数求解器的 Java 接口设计了ConeArray类, 提供了以下成员方法:

ConeBuilder类

ConeBuilder类是杉数优化求解器中构建二阶锥约束的构建器的封装,提供了以下成员方法:

ConeBuilderArray类

为方便用户对一组 Java ConeBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了ConeBuilderArray类,提供了以下成员方法:

ExpCone类

ExpCone类是杉数求解器的指数锥约束的相关操作的封装,目前提供了以下成员方法:

ExpConeArray类

为方便用户对一组 Java ExpCone类 对象进行操作,杉数求解器的 Java 接口设计了ExpConeArray类, 提供了以下成员方法:

ExpConeBuilder类

ExpConeBuilder类是杉数优化求解器中构建指数锥约束的构建器的封装,提供了以下成员方法:

ExpConeBuilderArray类

为方便用户对一组 Java ExpConeBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了ExpConeBuilderArray类,提供了以下成员方法:

AffineCone类

AffineCone类是杉数求解器的仿射锥约束的相关操作的封装,目前提供了以下成员方法:

AffineConeArray类

为方便用户对一组Java AffineCone类 对象进行操作,杉数求解器的Java接口设计了AffineConeArray类, 提供了以下成员方法:

AffineConeBuilder类

AffineConeBuilder类是杉数优化求解器中构建仿射锥约束的构建器的封装,提供了以下成员方法:

AffineConeBuilderArray类

为方便用户对一组Java AffineConeBuilder类 对象进行操作,杉数优化求解器的 Java接口设计了AffineConeBuilderArray类,提供了以下成员方法:

QuadExpr类

COPT二次表达式包括一个线性表达式,一些二次项相关的变量和对应系数。QuadExpr类是杉数求解器中用于构建 二次表达式时对变量的相关组合操作,提供了以下成员方法:

QConstraint类

QConstraint类是杉数求解器对二次约束的相关操作的封装,提供了以下成员方法:

QConstrArray类

为方便用户对一组 Java QConstraint类 对象进行操作,杉数求解器的 Java 接口设计了QConstrArray类, 提供了以下成员方法:

QConstrBuilder类

QConstrBuilder类是杉数优化求解器中对构建二次约束的构建器的封装,提供了以下成员方法:

QConstrBuilderArray类

为方便用户对一组 Java QConstrBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了QConstrBuilderArray类,提供了以下成员方法:

PsdVar类

PsdVar类是杉数优化求解器对半定变量的相关操作的封装,提供了以下成员方法:

PsdVarArray类

为方便用户对一组 PsdVar类 对象进行操作,杉数优化求解器的 Java 接口设计了PsdVarArray类, 提供了以下成员方法:

PsdExpr类

COPT半定表达式包括一个线性表达式,一些半定变量和对应的系数矩阵。PsdExpr类是杉数求解器中用于构建 半定表达式时对半定变量的相关组合操作,提供了以下成员方法:

PsdConstraint类

PsdConstraint类是杉数求解器对半定约束的相关操作的封装,提供了以下成员方法:

PsdConstrArray类

为方便用户对一组 Java PsdConstraint类 对象进行操作,杉数求解器的 Java 接口设计了PsdConstrArray类, 提供了以下成员方法:

PsdConstrBuilder类

PsdConstrBuilder类是杉数优化求解器中对构建半定约束的构建器的封装,提供了以下成员方法:

PsdConstrBuilderArray类

为方便用户对一组 Java PsdConstrBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了PsdConstrBuilderArray类,提供了以下成员方法:

LmiConstraint类

LmiConstraint类是杉数求解器对LMI约束的相关操作的封装,提供了以下成员方法:

LmiConstrArray类

为方便用户对一组 Java LmiConstraint类 对象进行操作,杉数求解器的 Java 接口设计了LmiConstrArray类,提供了以下成员方法:

LmiExpr类

COPT的LMI表达式包括对称矩阵和标量变量相乘。LmiExpr类是杉数求解器中用于构建 LMI表达式时对变量和对称矩阵相关组合操作,提供了以下成员方法:

SymMatrix类

对称矩阵作为半定项中的系数矩阵,常用在半定表达式,半定约束和半定目标函数中。 SymMatrix类是杉数优化求解器中对称矩阵的封装,提供了以下成员方法:

SymMatrixArray类

为方便用户对一组 Java SymMatrix类 对象进行操作,杉数求解器的 Java 接口设计了SymMatrixArray类, 提供了以下成员方法:

SymMatExpr类

对称矩阵表达式对于对称矩阵的线性组合,其计算结果实际还是一个对称矩阵。 表达式的好处是可以延迟计算结果矩阵,直到设置半定约束或者半定目标函数时。 SymMatExpr类是杉数优化求解器中对称矩阵表达式的封装,提供了以下成员方法:

CallbackBase类

CallbackBase类给用户提供了在求解过程中介入的接口。这个是抽象类,用户需要自己实现虚函数 virtual void CallbackBase::callback() 才能创建实例,用来作为 Model::SetCallback(CallbackBase cb, int cbctx) 方法的第一个参数传入。 CallbackBase类也提供了以下可以继承的成员方法:

ProbBuffer类

ProbBuffer类是字符流缓冲区的封装,提供了以下成员方法:

CoptException类

CoptException类是杉数优化求解器的错误处理相关操作的封装。当方法调用对应的杉数求解器底层接口发生错误时, 则抛出CoptException类的异常,提供了以下属性值访问相应的错误信息: