C# API 参考手册
为了方便用户对复杂应用场景进行建模并调用求解器进行求解,杉数求解器设计并提供了 C# 接口, 本章节将对 C# 接口的常量和功能进行阐述。
C#常量类
常量类定义了使用 C# 接口建模时必要的常数,包括一般常数、解状态、属性、信息和参数五大类常量。 本节将依次阐述上述五类常量的内容与使用方法。
一般常数
一般常数定义在 Consts
类里. 用户可以通过 Copt
命名空间的
前缀访问一般常数,如 Copt.Consts.XXXX
。
一般常数类中的内容,详见 一般常数章节。
解状态
关于解状态的常数定义在 Status
类里. 用户可以通过 Copt
命名空间的
前缀访问解状态常数,如 Copt.Status.XXXX
。
解状态常数中的内容,详见 一般常数章节:求解状态。
属性
C# 属性常数中的内容,详见 属性章节。
在C# API中, COPT 属性定义在 DblAttr
和 IntAttr
类里。
用户可以通过 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优化参数定义在 DblParam
和 IntParam
类里。
用户可以通过 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类是杉数优化求解器模型相关操作的封装,提供了以下成员方法:
- Model.Model()
- Model.AddAffineCone()
- Model.AddAffineCone()
- Model.AddAffineCone()
- Model.AddCone()
- Model.AddCone()
- Model.AddCone()
- Model.AddCone()
- Model.AddConstr()
- Model.AddConstr()
- Model.AddConstr()
- Model.AddConstr()
- Model.AddConstr()
- Model.AddConstrs()
- Model.AddConstrs()
- Model.AddConstrs()
- Model.AddDenseMat()
- Model.AddDenseMat()
- Model.AddDiagMat()
- Model.AddDiagMat()
- Model.AddDiagMat()
- Model.AddDiagMat()
- Model.AddExpCone()
- Model.AddExpCone()
- Model.AddExpCone()
- Model.AddExpCone()
- Model.AddEyeMat()
- Model.AddGenConstrIndicator()
- Model.AddGenConstrIndicator()
- Model.AddGenConstrIndicator()
- Model.AddGenConstrIndicators()
- Model.AddLazyConstr()
- Model.AddLazyConstr()
- Model.AddLazyConstr()
- Model.AddLazyConstrs()
- Model.AddLmiConstr()
- Model.AddOnesMat()
- Model.AddPsdConstr()
- Model.AddPsdConstr()
- Model.AddPsdConstr()
- Model.AddPsdConstr()
- Model.AddPsdVar()
- Model.AddPsdVars()
- Model.AddQConstr()
- Model.AddQConstr()
- Model.AddQConstr()
- Model.AddSos()
- Model.AddSos()
- Model.AddSos()
- Model.AddSparseMat()
- Model.AddSymMat()
- Model.AddUserCut()
- Model.AddUserCut()
- Model.AddUserCut()
- Model.AddUserCuts()
- Model.AddVar()
- Model.AddVar()
- Model.AddVars()
- Model.AddVars()
- Model.AddVars()
- Model.AddVars()
- Model.AddVars()
- Model.Clear()
- Model.Clone()
- Model.ComputeIIS()
- Model.DelPsdObj()
- Model.DelQuadObj()
- Model.FeasRelax()
- Model.FeasRelax()
- Model.Get()
- Model.Get()
- Model.Get()
- Model.Get()
- Model.Get()
- Model.Get()
- Model.Get()
- Model.Get()
- Model.GetAffineCone()
- Model.GetAffineConeBuilder()
- Model.GetAffineConeBuilders()
- Model.GetAffineConeBuilders()
- Model.GetAffineConeBuilders()
- Model.GetAffineConeByName()
- Model.GetAffineCones()
- Model.GetCoeff()
- Model.GetCol()
- Model.GetColBasis()
- Model.GetCone()
- Model.GetConeBuilders()
- Model.GetConeBuilders()
- Model.GetConeBuilders()
- Model.GetCones()
- Model.GetConstr()
- Model.GetConstrBuilder()
- Model.GetConstrBuilders()
- Model.GetConstrByName()
- Model.GetConstrLowerIIS()
- Model.GetConstrLowerIIS()
- Model.GetConstrs()
- Model.GetConstrUpperIIS()
- Model.GetConstrUpperIIS()
- Model.GetDblAttr()
- Model.GetDblParam()
- Model.GetExpCone()
- Model.GetExpConeBuilders()
- Model.GetExpConeBuilders()
- Model.GetExpConeBuilders()
- Model.GetExpCones()
- Model.GetGenConstr()
- Model.GetGenConstrByName()
- Model.GetGenConstrIndicator()
- Model.GetGenConstrIndicators()
- Model.GetGenConstrs()
- Model.GetIndicatorIIS()
- Model.GetIndicatorIIS()
- Model.GetIntAttr()
- Model.GetIntParam()
- Model.GetLmiCoeff()
- Model.GetLmiConstr()
- Model.GetLmiConstrByName()
- Model.GetLmiConstrs()
- Model.GetLmiRhs()
- Model.GetLmiRow()
- Model.GetLpSolution()
- Model.GetObjective()
- Model.GetParamInfo()
- Model.GetParamInfo()
- Model.GetPoolObjVal()
- Model.GetPoolSolution()
- Model.GetPoolSolution()
- Model.GetPsdCoeff()
- Model.GetPsdConstr()
- Model.GetPsdConstrBuilder()
- Model.GetPsdConstrBuilders()
- Model.GetPsdConstrByName()
- Model.GetPsdConstrs()
- Model.GetPsdObjective()
- Model.GetPsdRow()
- Model.GetPsdSolution()
- Model.GetPsdVar()
- Model.GetPsdVarByName()
- Model.GetPsdVars()
- Model.GetQConstr()
- Model.GetQConstrBuilder()
- Model.GetQConstrBuilders()
- Model.GetQConstrByName()
- Model.GetQConstrs()
- Model.GetQuadObjective()
- Model.GetQuadRow()
- Model.GetRow()
- Model.GetRowBasis()
- Model.GetSolution()
- Model.GetSos()
- Model.GetSosBuilders()
- Model.GetSosBuilders()
- Model.GetSosBuilders()
- Model.GetSOSIIS()
- Model.GetSOSIIS()
- Model.GetSoss()
- Model.GetSymMat()
- Model.GetVar()
- Model.GetVarByName()
- Model.GetVarLowerIIS()
- Model.GetVarLowerIIS()
- Model.GetVars()
- Model.GetVarUpperIIS()
- Model.GetVarUpperIIS()
- Model.Interrupt()
- Model.LoadMipStart()
- Model.LoadTuneParam()
- Model.Read()
- Model.ReadBasis()
- Model.ReadBin()
- Model.ReadCbf()
- Model.ReadLp()
- Model.ReadMps()
- Model.ReadMst()
- Model.ReadParam()
- Model.ReadSdpa()
- Model.ReadSol()
- Model.ReadTune()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Remove()
- Model.Reset()
- Model.ResetAll()
- Model.ResetParam()
- Model.Set()
- Model.Set()
- Model.Set()
- Model.Set()
- Model.Set()
- Model.Set()
- Model.SetBasis()
- Model.SetCallback()
- Model.SetCoeff()
- Model.SetCoeffs()
- Model.SetCoeffs()
- Model.SetDblParam()
- Model.SetIntParam()
- Model.SetLmiCoeff()
- Model.SetLmiRhs()
- Model.SetLpSolution()
- Model.SetMipStart()
- Model.SetMipStart()
- Model.SetMipStart()
- Model.SetMipStart()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetNames()
- Model.SetObjConst()
- Model.SetObjective()
- Model.SetObjSense()
- Model.SetPsdCoeff()
- Model.SetPsdObjective()
- Model.SetQuadObjective()
- Model.SetSlackBasis()
- Model.SetSolverLogFile()
- Model.Solve()
- Model.SolveLp()
- Model.Tune()
- Model.Write()
- Model.WriteBasis()
- Model.WriteBin()
- Model.WriteIIS()
- Model.WriteLp()
- Model.WriteMps()
- Model.WriteMpsStr()
- Model.WriteMst()
- Model.WriteParam()
- Model.WritePoolSol()
- Model.WriteRelax()
- Model.WriteSol()
- Model.WriteTuneParam()
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类是杉数求解器中用于构建 二次表达式时对变量的相关组合操作,提供了以下成员方法:
- QuadExpr.QuadExpr()
- QuadExpr.QuadExpr()
- QuadExpr.QuadExpr()
- QuadExpr.QuadExpr()
- QuadExpr.QuadExpr()
- QuadExpr.AddConstant()
- QuadExpr.AddLinExpr()
- QuadExpr.AddLinExpr()
- QuadExpr.AddQuadExpr()
- QuadExpr.AddQuadExpr()
- QuadExpr.AddTerm()
- QuadExpr.AddTerm()
- QuadExpr.AddTerms()
- QuadExpr.AddTerms()
- QuadExpr.AddTerms()
- QuadExpr.AddTerms()
- QuadExpr.AddTerms()
- QuadExpr.AddTerms()
- QuadExpr.Clone()
- QuadExpr.Evaluate()
- QuadExpr.GetCoeff()
- QuadExpr.GetConstant()
- QuadExpr.GetLinExpr()
- QuadExpr.GetVar1()
- QuadExpr.GetVar2()
- QuadExpr.Remove()
- QuadExpr.Remove()
- QuadExpr.SetCoeff()
- QuadExpr.SetConstant()
- QuadExpr.Size()
QConstraint类
QConstraint类是杉数求解器对二次约束的相关操作的封装,提供了以下成员方法:
QConstrArray类
为方便用户对一组 C# QConstraint类 对象进行操作,杉数求解器的 C# 接口设计了QConstrArray类, 提供了以下成员方法:
QConstrBuilder类
QConstrBuilder类是杉数优化求解器中对构建二次约束的构建器的封装,提供了以下成员方法:
QConstrBuilderArray类
为方便用户对一组 C# QConstrBuilder类 对象进行操作,杉数优化求解器的 C# 接口设计了QConstrBuilderArray类,提供了以下成员方法:
PsdVar类
PsdVar类是杉数优化求解器对半定变量的相关操作的封装,提供了以下成员方法:
PsdVarArray类
为方便用户对一组 PsdVar类 对象进行操作,杉数优化求解器的 C# 接口设计了PsdVarArray类, 提供了以下成员方法:
PsdExpr类
COPT半定表达式包括一个线性表达式,一些半定变量和对应的系数矩阵。PsdExpr类是杉数求解器中用于构建 半定表达式时对半定变量的相关组合操作,提供了以下成员方法:
- PsdExpr.PsdExpr()
- PsdExpr.PsdExpr()
- PsdExpr.PsdExpr()
- PsdExpr.PsdExpr()
- PsdExpr.PsdExpr()
- PsdExpr.AddConstant()
- PsdExpr.AddLinExpr()
- PsdExpr.AddLinExpr()
- PsdExpr.AddPsdExpr()
- PsdExpr.AddPsdExpr()
- PsdExpr.AddTerm()
- PsdExpr.AddTerm()
- PsdExpr.AddTerm()
- PsdExpr.AddTerms()
- PsdExpr.AddTerms()
- PsdExpr.AddTerms()
- PsdExpr.AddTerms()
- PsdExpr.AddTerms()
- PsdExpr.AddTerms()
- PsdExpr.Clone()
- PsdExpr.Evaluate()
- PsdExpr.GetCoeff()
- PsdExpr.GetConstant()
- PsdExpr.GetLinExpr()
- PsdExpr.GetPsdVar()
- PsdExpr.Multiply()
- PsdExpr.Remove()
- PsdExpr.Remove()
- PsdExpr.Remove()
- PsdExpr.SetCoeff()
- PsdExpr.SetConstant()
- PsdExpr.Size()
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表达式时对变量和对称矩阵相关组合操作,提供了以下成员方法:
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.AddConstant()
- LmiExpr.AddLmiExpr()
- LmiExpr.AddTerm()
- LmiExpr.AddTerm()
- LmiExpr.AddTerms()
- LmiExpr.AddTerms()
- LmiExpr.Clone()
- LmiExpr.GetCoeff()
- LmiExpr.GetConstant()
- LmiExpr.GetVar()
- LmiExpr.Multiply()
- LmiExpr.Remove()
- LmiExpr.Remove()
- LmiExpr.SetCoeff()
- LmiExpr.SetConstant()
- LmiExpr.Size()
SymMatrix类
对称矩阵作为半定项中的系数矩阵,常用在半定表达式,半定约束和半定目标函数中。 SymMatrix类是杉数优化求解器中对称矩阵的封装,提供了以下成员方法:
SymMatrixArray类
为方便用户对一组 C# SymMatrix类 对象进行操作,杉数求解器的 C# 接口设计了SymMatrixArray类, 提供了以下成员方法:
SymMatExpr类
对称矩阵表达式对于对称矩阵的线性组合,其计算结果实际还是一个对称矩阵。 表达式的好处是可以延迟计算结果矩阵,直到设置半定约束或者半定目标函数时。 SymMatExpr类是杉数优化求解器中对称矩阵表达式的封装,提供了以下成员方法:
- SymMatExpr.SymMatExpr()
- SymMatExpr.SymMatExpr()
- SymMatExpr.AddSymMatExpr()
- SymMatExpr.AddTerm()
- SymMatExpr.AddTerms()
- SymMatExpr.AddTerms()
- SymMatExpr.AddTerms()
- SymMatExpr.Clone()
- SymMatExpr.GetCoeff()
- SymMatExpr.GetDim()
- SymMatExpr.GetSymMat()
- SymMatExpr.Multiply()
- SymMatExpr.Remove()
- SymMatExpr.Remove()
- SymMatExpr.Reserve()
- SymMatExpr.SetCoeff()
- SymMatExpr.Size()
CallbackBase类
CallbackBase类给用户提供了在求解过程中介入的接口。这个是抽象类,用户需要自己实现虚函数
virtual void CallbackBase::callback()
才能创建实例,用来作为
Model::SetCallback(CallbackBase cb, int cbctx)
方法的第一个参数传入。
CallbackBase类也提供了以下可以继承的成员方法:
- CallbackBase.CallbackBase()
- CallbackBase.AddLazyConstr()
- CallbackBase.AddLazyConstr()
- CallbackBase.AddLazyConstr()
- CallbackBase.AddLazyConstrs()
- CallbackBase.AddUserCut()
- CallbackBase.AddUserCut()
- CallbackBase.AddUserCut()
- CallbackBase.AddUserCuts()
- CallbackBase.callback()
- CallbackBase.GetDblInfo()
- CallbackBase.GetIncumbent()
- CallbackBase.GetIncumbent()
- CallbackBase.GetIncumbent()
- CallbackBase.GetIncumbent()
- CallbackBase.GetIntInfo()
- CallbackBase.GetRelaxSol()
- CallbackBase.GetRelaxSol()
- CallbackBase.GetRelaxSol()
- CallbackBase.GetRelaxSol()
- CallbackBase.GetSolution()
- CallbackBase.GetSolution()
- CallbackBase.GetSolution()
- CallbackBase.GetSolution()
- CallbackBase.Interrupt()
- CallbackBase.LoadSolution()
- CallbackBase.SetSolution()
- CallbackBase.SetSolution()
- CallbackBase.SetSolution()
- CallbackBase.Where()
ProbBuffer类
ProbBuffer类是字符流缓冲区的封装,提供了以下成员方法:
CoptException类
CoptException类是杉数优化求解器的错误处理相关操作的封装。当方法调用对应的杉数求解器底层接口发生错误时, 则抛出CoptException类的异常,提供了以下属性值访问相应的错误信息: