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类是杉数优化求解器模型相关操作的封装,提供了以下成员方法:
- Model::AddCone()
- Model::AddCone()
- Model::AddCone()
- Model::AddConstr()
- Model::AddConstr()
- Model::AddConstr()
- Model::AddConstr()
- Model::AddConstrs()
- Model::AddConstrs()
- Model::AddConstrs()
- Model::AddConstrs()
- Model::AddConstrs()
- Model::AddDenseMat()
- Model::AddDenseMat()
- Model::AddDiagMat()
- Model::AddDiagMat()
- Model::AddDiagMat()
- Model::AddDiagMat()
- Model::AddEyeMat()
- Model::AddGenConstrIndicator()
- Model::AddGenConstrIndicator()
- Model::AddGenConstrIndicator()
- 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::AddPsdVars()
- Model::AddQConstr()
- Model::AddQConstr()
- Model::AddQConstr()
- 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::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::GetCoeff()
- Model::GetCol()
- Model::GetColBasis()
- Model::GetCone()
- Model::GetConeBuilders()
- Model::GetConeBuilders()
- Model::GetCones()
- Model::GetConstr()
- Model::GetConstrBuilder()
- Model::GetConstrBuilders()
- Model::GetConstrByName()
- Model::GetConstrLowerIIS()
- Model::GetConstrs()
- Model::GetConstrUpperIIS()
- Model::GetDblAttr()
- Model::GetDblParam()
- Model::GetGenConstrIndicator()
- Model::GetIndicatorIIS()
- Model::GetIntAttr()
- Model::GetIntParam()
- Model::GetLmiCoeff()
- Model::GetLmiConstr()
- Model::GetLmiConstrByName()
- Model::GetLmiConstrs()
- Model::GetLmiRhs()
- Model::GetLmiRow()
- Model::GetLpSolution()
- Model::GetObjective()
- Model::GetParamAttrType()
- Model::GetParamInfo()
- Model::GetParamInfo()
- Model::GetPoolObjVal()
- Model::GetPoolSolution()
- Model::GetPsdCoeff()
- Model::GetPsdConstr()
- Model::GetPsdConstrBuilder()
- Model::GetPsdConstrBuilders()
- Model::GetPsdConstrByName()
- Model::GetPsdConstrs()
- Model::GetPsdObjective()
- Model::GetPsdRow()
- Model::GetPsdRow()
- Model::GetPsdVar()
- Model::GetPsdVarByName()
- Model::GetPsdVars()
- Model::GetQConstr()
- Model::GetQConstrBuilder()
- Model::GetQConstrBuilders()
- Model::GetQConstrByName()
- Model::GetQConstrs()
- Model::GetQuadObjective()
- Model::GetQuadRow()
- Model::GetQuadRow()
- Model::GetRow()
- Model::GetRowBasis()
- Model::GetSolution()
- Model::GetSos()
- Model::GetSosBuilders()
- Model::GetSosBuilders()
- Model::GetSOSIIS()
- Model::GetSoss()
- Model::GetSymMat()
- Model::GetVar()
- Model::GetVarByName()
- Model::GetVarLowerIIS()
- Model::GetVars()
- 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::Reset()
- Model::ResetAll()
- Model::ResetParam()
- Model::Set()
- Model::Set()
- Model::Set()
- Model::SetBasis()
- Model::SetCallback()
- Model::SetCoeff()
- Model::SetCoeffs()
- Model::SetDblParam()
- Model::SetIntParam()
- Model::SetLmiCoeff()
- Model::SetLmiRhs()
- Model::SetLpSolution()
- Model::SetMipStart()
- Model::SetMipStart()
- Model::SetMipStart()
- 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::SetSolverLogCallback()
- 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类¶
为方便用户对一组 Var类 对象进行操作,杉数优化求解器的 C++ 接口设计了VarArray类, 提供了以下成员方法:
Expr类¶
Expr类是杉数求解器中用于构建线性表达式时变量的相关组合操作,提供了以下成员方法:
- Expr::Expr()
- Expr::Expr()
- Expr::AddConstant()
- Expr::AddExpr()
- Expr::AddTerm()
- Expr::AddTerms()
- Expr::Clone()
- Expr::Evaluate()
- Expr::GetCoeff()
- Expr::GetConstant()
- Expr::GetVar()
- Expr::operator*=()
- Expr::operator*()
- Expr::operator*()
- Expr::operator*()
- Expr::operator+=()
- Expr::operator+()
- Expr::operator-=()
- Expr::operator-()
- Expr::Remove()
- Expr::Remove()
- Expr::Reserve()
- Expr::SetCoeff()
- Expr::SetConstant()
- Expr::Size()
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类,提供了以下成员方法:
QuadExpr类¶
COPT二次表达式包括一个线性表达式,一些二次项相关的变量和对应系数。QuadExpr类是杉数求解器中用于构建 二次表达式时对变量的相关组合操作,提供了以下成员方法:
- QuadExpr::QuadExpr()
- QuadExpr::QuadExpr()
- QuadExpr::QuadExpr()
- QuadExpr::QuadExpr()
- QuadExpr::QuadExpr()
- QuadExpr::AddConstant()
- QuadExpr::AddLinExpr()
- QuadExpr::AddQuadExpr()
- QuadExpr::AddTerm()
- QuadExpr::AddTerm()
- QuadExpr::AddTerms()
- QuadExpr::AddTerms()
- QuadExpr::Clone()
- QuadExpr::Evaluate()
- QuadExpr::GetCoeff()
- QuadExpr::GetConstant()
- QuadExpr::GetLinExpr()
- QuadExpr::GetVar1()
- QuadExpr::GetVar2()
- QuadExpr::operator*=()
- QuadExpr::operator*()
- QuadExpr::operator+=()
- QuadExpr::operator+()
- QuadExpr::operator-=()
- QuadExpr::operator-()
- QuadExpr::Remove()
- QuadExpr::Remove()
- QuadExpr::Reserve()
- 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::AddPsdExpr()
- PsdExpr::AddTerm()
- PsdExpr::AddTerm()
- PsdExpr::AddTerm()
- PsdExpr::AddTerms()
- PsdExpr::AddTerms()
- PsdExpr::Clone()
- PsdExpr::Evaluate()
- PsdExpr::GetCoeff()
- PsdExpr::GetConstant()
- PsdExpr::GetLinExpr()
- PsdExpr::GetPsdVar()
- PsdExpr::operator*=()
- PsdExpr::operator*()
- PsdExpr::operator+=()
- PsdExpr::operator+()
- PsdExpr::operator-=()
- PsdExpr::operator-()
- PsdExpr::Remove()
- PsdExpr::Remove()
- PsdExpr::Remove()
- PsdExpr::Reserve()
- 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::Clone()
- LmiExpr::GetCoeff()
- LmiExpr::GetConstant()
- LmiExpr::GetVar()
- LmiExpr::operator*=()
- LmiExpr::operator*()
- LmiExpr::operator+=()
- LmiExpr::operator+()
- LmiExpr::operator-=()
- LmiExpr::operator-()
- LmiExpr::Remove()
- LmiExpr::Remove()
- LmiExpr::Reserve()
- 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::Clone()
- SymMatExpr::GetCoeff()
- SymMatExpr::GetDim()
- SymMatExpr::GetSymMat()
- SymMatExpr::operator*=()
- SymMatExpr::operator*()
- SymMatExpr::operator+=()
- SymMatExpr::operator+()
- SymMatExpr::operator-=()
- SymMatExpr::operator-()
- SymMatExpr::Remove()
- SymMatExpr::Remove()
- SymMatExpr::Reserve()
- SymMatExpr::SetCoeff()
- SymMatExpr::Size()
CallbackBase类¶
CallbackBase类给用户提供了在求解过程中介入的接口。这个是抽象类,用户需要自己实现虚函数
virtual void CallbackBase::callback()
才能创建实例,用来作为
Model::SetCallback(ICallback* ptr, int cbctx)
方法的第一个参数传入。
CallbackBase类也提供了以下可以继承的成员方法:
- CallbackBase::AddLazyConstr()
- CallbackBase::AddLazyConstr()
- CallbackBase::AddLazyConstr()
- CallbackBase::AddLazyConstrs()
- CallbackBase::AddUserCut()
- CallbackBase::AddUserCut()
- CallbackBase::AddUserCut()
- CallbackBase::AddUserCuts()
- CallbackBase::GetDblInfo()
- CallbackBase::GetIncumbent()
- CallbackBase::GetIncumbent()
- CallbackBase::GetIncumbent()
- CallbackBase::GetIntInfo()
- CallbackBase::GetRelaxSol()
- CallbackBase::GetRelaxSol()
- CallbackBase::GetRelaxSol()
- CallbackBase::GetSolution()
- CallbackBase::GetSolution()
- CallbackBase::GetSolution()
- CallbackBase::Interrupt()
- CallbackBase::LoadSolution()
- CallbackBase::SetSolution()
- CallbackBase::SetSolution()
- CallbackBase::Where()
ProbBuffer类¶
ProbBuffer类是字符流缓冲区的封装,提供了以下成员方法: