C++ API 参考手册

杉数优化求解器提供了 C++ API 库函数,适用于基于 COPT 的 C++ 应用程序。 本章节描述了 C++ 方面的常量、类、参数、属性。

常量

所有的 C++ 常量都和 C API 里描述的一样。请参考 C API参考手册:常量章节

属性

所有的 C++ 属性都和 C API 里描述的一样。请参考 C API参考手册:属性章节

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

  • Model::GetIntAttr() :获取整数属性取值

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

信息

所有的 C++ 信息都和 C API 里描述的一样。请参考 C API参考手册:信息章节

在C++ API中,通过指定信息名称获取或设置信息取值。提供函数如下,具体请参考 C++ Model类 。变量或约束的信息也可以通过各自类提供 Get()/Set() 函数获取或修改。

  • Model::Get() :获取与变量或约束相关的信息取值。

  • Model::Set() :设置与变量或约束相关的信息取值。

参数

所有的 C++ 参数都和 C API 里描述的一样。请参考 C API参考手册:参数章节

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

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

  • 获取指定整数型/浮点型参数当前取值: Model::GetIntParam() / Model::GetDblParam()

  • 设置指定整数型/浮点型参数值: Model::SetIntParam() / Model::SetDblParam()

C++优化建模类

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

Envr类

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

EnvrConfig类

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

Model类

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

Var类

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

VarArray类

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

Expr类

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

Constraint类

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

ConstrArray类

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

ConstrBuilder类

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

ConstrBuilderArray类

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

Column类

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

ColumnArray类

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

Sos类

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

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

SosArray类

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

SosBuilder类

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

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

SosBuilderArray类

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

GenConstr类

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

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

GenConstrArray类

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

GenConstrBuilder类

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

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

GenConstrBuilderArray类

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

Cone类

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

ConeArray类

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

ConeBuilder类

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

ConeBuilderArray类

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

ExpCone类

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

ExpConeArray类

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

ExpConeBuilder类

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

ExpConeBuilderArray类

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

AffineCone类

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

AffineConeArray类

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

AffineConeBuilder类

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

AffineConeBuilderArray类

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

QuadExpr类

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

QConstraint类

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

QConstrArray类

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

QConstrBuilder类

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

QConstrBuilderArray类

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

PsdVar类

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

PsdVarArray类

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

PsdExpr类

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

PsdConstraint类

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

PsdConstrArray类

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

PsdConstrBuilder类

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

PsdConstrBuilderArray类

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

LmiConstraint类

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

LmiConstrArray类

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

LmiExpr类

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

SymMatrix类

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

SymMatrixArray类

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

SymMatExpr类

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

MVar类

MVar类是COPT中用于构建多维变量的类,它支持和COPT中内置的多维数组 NdArray类 进行运算。 可以通过 Model类 的方法 addMVar 来创建。提供了以下成员方法:

MConstr类

MConstr类是COPT中多维线性约束的类,可以通过 Model类 的方法 addMConstr 来创建。提供了以下成员方法:

MConstrBuilder类

MConstrBuilder类是COPT中多维线性约束的构建器,它用于生成多维线性约束并支持和内置多维数组 NdArray类 进行运算。 MConstrBuilder类对象可以通过两个对象之间的比较运算来生成,其中一个对象可以是 MVar类 对象或 MLinExpr类 对象。 提供了以下成员方法:

MExpression类

MExpression类是COPT中 Expr类 的通用版本,可以用于表示线性表达式并支持 Expr类 中的大多数方法。 另外,它支持多维数组对象,例如 MVar类 对象和 NdArray类 对象的线性组合。 提供了以下成员方法:

MLinExpr类

MLinExpr类是COPT中多维线性表达式的类。它用于构造多维线性表达式并与COPT中内置的多维数组 NdArray类 进行运算。 其中的元素为 MExpression类 类对象,可以通过对 MVar类 对象的线性组合来生成。 提供了以下成员方法:

MPsdExpr类

MPsdExpr类是COPT中多维半定表达式的类。它用于构造多维半定表达式并与COPT中内置的多维数组 NdArray类 进行运算。 其中的元素为 PsdExpr类 类对象或其多维线性组合。 提供了以下成员方法:

MPsdConstr类

MPsdConstr类是COPT中多维半定约束的类。需要通过 Model类 的方法 addConstrs 或者 addConstr 来生成。提供了以下成员方法:

MPsdConstrBuilder类

MPsdConstrBuilder类是COPT中多维半定约束的构建器,它用于生成多维半定约束并支持和内置多维数组 NdArray类 进行运算。 MPsdConstrBuilder类对象可以通过两个对象之间的比较运算来生成,其中一个对象可以是 MPsdExpr类 对象。 提供了以下成员方法:

MQExpression类

MExpression类是COPT中 QuadExpr类 的通用版本,可以用于表示二次表达式并支持 QuadExpr类 中的大多数方法。 另外,它支持多维对象,例如 MVar类 对象和 MLinExpr类 对象的二次组合。 提供了以下成员方法:

MQuadExpr类

MQuadExpr类是COPT中多维二次表达式的类。它用于构造多维二次表达式并支持与COPT中内置的多维数组 NdArray类 进行运算。 其中的元素为 MQExpression类 类对象,可以通过对 MVar类 对象的二次组合来生成。 提供了以下成员方法:

MQConstr类

MQConstr类是COPT中多维二次约束的类,需要通过 Model类 的方法 addMQConstr 来生成。 提供了以下成员方法:

MQConstrBuilder类

MConstrBuilder类是COPT中多维二次约束的构建器,它用于生成多维二次约束并支持和内置多维数组 NdArray类 进行运算。 MConstrBuilder类对象可以通过两个对象之间的比较运算来生成,其中一个对象可以是 MQuadExpr类 对象。 提供了以下成员方法:

NdArray类

NdArray类是COPT中内置的多维数组类,由相同类型的元素构成并且通过整数元组索引。提供了以下成员方法:

Shape类

Shape类封装了一个整数元组,用于表示数组对象沿着每个维度的大小, 即COPT内置多维数组 NdArray类 对象的大小。提供了以下成员方法:

View类

View类是COPT中对多维数组进行切片操作的类。提供了以下成员方法:

CallbackBase类

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

ProbBuffer类

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