Java API 参考手册
为了方便用户对复杂应用场景进行建模并调用求解器进行求解,杉数求解器设计并提供了 Java 接口, 本章节将对 Java 接口的常量和功能进行阐述。
Java常量类
常量类定义了使用 Java 接口建模时必要的常数,包括一般常数、解状态、属性、信息和参数五大类常量。 本节将依次阐述上述五类常量的内容与使用方法。
一般常数
一般常数定义在 Consts
类里. 用户可以通过 copt
导入包名作为
前缀访问一般常数,如 copt.Consts.XXXX
。
一般常数中的内容,详见 一般常数章节。
解状态
关于解状态的常数定义在 Status
类里. 用户可以通过 copt
导入包名的
前缀访问解状态常数,如 copt.Status.XXXX
。
解状态常数中的内容,详见 一般常数章节:求解状态。
属性
Java API属性常数中的内容,详见 属性章节。
在Java API中,COPT 属性定义在 DblAttr
和 IntAttr
类里。
用户可以通过 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优化参数定义在 DblParam
和 IntParam
类里。
用户可以通过 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类是杉数优化求解器模型相关操作的封装,提供了以下成员方法:
- Model.Model()
- 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.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.getDblParamInfo()
- 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.getIntParamInfo()
- Model.getLmiCoeff()
- Model.getLmiConstr()
- Model.getLmiConstrByName()
- Model.getLmiConstrs()
- Model.getLmiRhs()
- Model.getLmiRow()
- Model.getLmiSolution()
- Model.getLpSolution()
- Model.getObjective()
- 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.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.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类
为方便用户对一组 Java Var类 对象进行操作,杉数优化求解器的 Java 接口设计了VarArray类, 提供了以下成员方法:
Expr类
Expr类是杉数求解器中用于构建线性表达式时变量的相关组合操作,提供了以下成员方法:
- Expr.Expr()
- Expr.Expr()
- Expr.Expr()
- Expr.Expr()
- Expr.addConstant()
- Expr.addExpr()
- Expr.addExpr()
- Expr.addTerm()
- Expr.addTerms()
- Expr.addTerms()
- Expr.addTerms()
- Expr.addTerms()
- Expr.clone()
- Expr.evaluate()
- Expr.getCoeff()
- Expr.getConstant()
- Expr.getVar()
- Expr.remove()
- Expr.remove()
- Expr.setCoeff()
- Expr.setConstant()
- Expr.size()
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类,提供了以下成员方法:
QuadExpr类
COPT二次表达式包括一个线性表达式,一些二次项相关的变量和对应系数。QuadExpr类是杉数求解器中用于构建 二次表达式时对变量的相关组合操作,提供了以下成员方法:
- QuadExpr.QuadExpr()
- QuadExpr.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类
为方便用户对一组 Java QConstraint类 对象进行操作,杉数求解器的 Java 接口设计了QConstrArray类, 提供了以下成员方法:
QConstrBuilder类
QConstrBuilder类是杉数优化求解器中对构建二次约束的构建器的封装,提供了以下成员方法:
QConstrBuilderArray类
为方便用户对一组 Java QConstrBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了QConstrBuilderArray类,提供了以下成员方法:
PsdVar类
PsdVar类是杉数优化求解器对半定变量的相关操作的封装,提供了以下成员方法:
PsdVarArray类
为方便用户对一组 PsdVar类 对象进行操作,杉数优化求解器的 Java 接口设计了PsdVarArray类, 提供了以下成员方法:
PsdExpr类
COPT半定表达式包括一个线性表达式,一些半定变量和对应的系数矩阵。PsdExpr类是杉数求解器中用于构建 半定表达式时对半定变量的相关组合操作,提供了以下成员方法:
- PsdExpr.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类
为方便用户对一组 Java PsdConstraint类 对象进行操作,杉数求解器的 Java 接口设计了PsdConstrArray类, 提供了以下成员方法:
PsdConstrBuilder类
PsdConstrBuilder类是杉数优化求解器中对构建半定约束的构建器的封装,提供了以下成员方法:
PsdConstrBuilderArray类
为方便用户对一组 Java PsdConstrBuilder类 对象进行操作,杉数优化求解器的 Java 接口设计了PsdConstrBuilderArray类,提供了以下成员方法:
LmiConstraint类
LmiConstraint类是杉数求解器对LMI约束的相关操作的封装,提供了以下成员方法:
LmiConstrArray类
为方便用户对一组 Java LmiConstraint类 对象进行操作,杉数求解器的 Java 接口设计了LmiConstrArray类,提供了以下成员方法:
LmiExpr类
COPT的LMI表达式包括对称矩阵和标量变量相乘。LmiExpr类是杉数求解器中用于构建 LMI表达式时对变量和对称矩阵相关组合操作,提供了以下成员方法:
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.LmiExpr()
- LmiExpr.addConstant()
- LmiExpr.addLmiExpr()
- 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类
为方便用户对一组 Java SymMatrix类 对象进行操作,杉数求解器的 Java 接口设计了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类的异常,提供了以下属性值访问相应的错误信息: