C# API 参考手册

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

C#常量类

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

一般常数

一般常数定义在 Consts 类里. 用户可以通过 Copt 命名空间的 前缀访问一般常数,如 Copt.Consts.XXXX

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

解状态

关于解状态的常数定义在 Status 类里. 用户可以通过 Copt 命名空间的 前缀访问解状态常数,如 Copt.Status.XXXX

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

属性

C# 属性常数中的内容,详见 属性章节

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

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

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

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

信息

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

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

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

Callback信息

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

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

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

参数

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

C# 参数常数中的内容,详见 参数章节

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

在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类

为方便用户对一组 C# 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约束的介绍请参考 特殊约束: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类是杉数优化求解器中对称矩阵表达式的封装,提供了以下成员方法:

CallbackBase类

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

ProbBuffer类

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

CoptException类

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