GRB模型#
- GRBModel#
Gurobi 模型对象。常用的方法包括
AddVar(向模型添加一个新的决策变量),AddConstr(向模型添加一个新的约束),优化(优化当前模型),以及Get(检索属性的值)。此类的对象具有与之关联的非托管资源。该类实现了
IDisposable接口。虽然 .NET 垃圾收集器最终会收集未使用的
GRBModel对象,但与模型相关的大部分内存存储在 .NET 堆之外。因此,垃圾 收集器无法看到这种内存使用情况,因此在决定是否需要收集时无法考虑这一 数量。我们建议您在使用完模型后调用GRBModel.Dispose(或使用 .NET 的using语句)。- GRBModel GRBModel(GRBEnv env)#
GRBModel的构造函数,用于创建一个空模型。然后您可以调用AddVar和AddConstr来向模型中添加变量和约束。- Parameters:
env – 新模型的环境。
- Returns:
新模型对象。模型最初不包含任何变量或约束。
- Example:
// Create environment GRBEnv env = new GRBEnv(); // Create model and attach it to environment GRBModel model = new GRBModel(env);
' Create environment Dim env As GRBEnv = New GRBEnv() ' Create model and attach it to environment Dim model As GRBModel = New GRBModel(env)
- GRBModel GRBModel(GRBEnv env, string filename)#
GRBModel的构造函数,用于从文件中读取模型。请注意,文件类型由文件名后缀编码。有效的后缀包括.mps、.rew、.lp、.rlp、.dua、.dlp、.ilp或.opb。文件可以被压缩,因此还接受.zip、.gz、.bz2、.7z或.xz等附加后缀。- Parameters:
env – 新模型的环境。
modelname – 包含模型的文件名称。
- Returns:
新模型对象。
- Example:
// Create environment GRBEnv env = new GRBEnv(); // Create model from file myModel.mps and attach it to environment GRBModel model = new GRBModel(env, "myModel.mps");
' Create environment Dim env As GRBEnv = New GRBEnv() ' Create model from file myModel.mps and attach it to environment Dim model As GRBModel = New GRBModel(env, "myModel.mps")
- GRBModel GRBModel(GRBModel model)#
GRBModel的构造函数,用于创建现有模型的副本。请注意,由于Gurobi中的延迟更新方法,您必须在复制之前调用Update。- Parameters:
model – 要复制的模型。
- Returns:
新模型对象。模型是原始模型的克隆。
- Example:
// Create environment GRBEnv env = new GRBEnv(); // Create model1 and attach it to environment GRBModel model1 = new GRBModel(env); // ... // Update model before copying model1.Update(); // Copy model GRBModel model2 = new GRBModel(model1);
' Create environment Dim env As GRBEnv = New GRBEnv() ' Create model and attach it to environment Dim model As GRBModel = New GRBModel(env) ' ... ' Update model before copying model1.Update() ' Copy model Dim model2 As GRBModel = New GRBModel(model1)
- GRBModel GRBModel(GRBModel model, GRBEnv targetenv)#
GRBModel的构造函数。将现有模型复制到不同的环境。多个线程不能在同一环境中同时工作。因此,模型的副本必须位于不同的环境中,以便多个线程可以同时操作它们。
请注意,此方法本身不是线程安全的,因此您应该从主线程调用它或使用锁保护对其的访问。
请注意,待处理的更新将不会应用于模型,因此如果您希望这些更新包含在副本中,应在复制之前调用
update。对于Compute Server用户,请注意您可以将模型从客户端复制到Compute Server环境,但无法将模型从一个Compute Server环境复制到另一个(客户端或Compute Server)环境。
- Parameters:
model – 要复制的模型。
targetenv – 将模型复制到的环境。
- Returns:
新模型对象。模型是原始模型的克隆。
- Example:
// Create environment GRBEnv env = new GRBEnv(); // Create model1 and attach it to environment GRBModel model1 = new GRBModel(env); // ... // Update model before copying model1.Update(); // Copy model and attach it to env GRBModel model2 = new GRBModel(model1, env2);
' Create environment Dim env As GRBEnv = New GRBEnv() ' Create model1 and attach it to environment Dim model1 As GRBModel = New GRBModel(env) ' ... ' Update model before copying model1.Update() ' Copy model and attach it to env Dim model2 As GRBModel = New GRBModel(model1, env2)
- GRBConstr AddConstr(GRBLinExpr lhsExpr, char sense, GRBLinExpr rhsExpr, string name)#
向模型添加单个线性约束。
- Parameters:
lhsExpr – 新线性约束的左侧表达式。
sense – 新线性约束的意义(
GRB.LESS_EQUAL,GRB.EQUAL,或GRB.GREATER_EQUAL)。rhsExpr – 新线性约束的右侧表达式。
name – 新约束的名称。
- Returns:
新的约束对象。
- Example:
// Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create linear expression x + y GRBLinExpr lexpr = new GRBLinExpr(0); lexpr.AddTerm(1.0, x); lexpr.AddTerm(1.0, y); // Add linear constraint x + y = 0 with name c1 GRBConstr constr = model.AddConstr(lexpr, GRB.EQUAL, 0.0, "c1");
' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create linear expression x + y Dim lexpr As GRBLinExpr = New GRBLinExpr(0) lexpr.AddTerm(1.0, x) lexpr.AddTerm(1.0, y) ' Add linear constraint x + y = 0 with name c1 Dim constr As GRBConstr = model.AddConstr(lexpr, GRB.EQUAL, 0.0, "c1")
- GRBConstr AddConstr(GRBTempConstr tempConstr, string name)#
向模型添加单个线性约束。
- Parameters:
tempConstr – 临时约束对象,由重载的比较运算符创建。有关更多信息,请参见
GRBTempConstr。name – 新约束的名称。
- Returns:
新的约束对象。
- Example:
// Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add linear constraint x + y = 0 with name c1 GRBConstr constr = model.AddConstr(x + y == 0, "c1");
' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add linear constraint x + y = 0 with name c1 Dim constr As GRBConstr = model.AddConstr(x + y == 0, "c1")
- GRBConstr[] AddConstrs(int count)#
向模型添加
count个新的线性约束。新约束的形式均为0 <= 0。我们建议您一次构建一个约束的模型(使用
AddConstr),因为它不会引入显著的额外开销,并且我们发现这样可以生成更简单的代码。如果您不同意,尽管使用这些方法。- Parameters:
count – 要添加的约束数量。
- Returns:
新的约束对象数组。
- Example:
// Add 10 trivial linear constraints to model GRBConstr[] constrs = model.AddConstrs(10);
' Add 10 trivial linear constraints to model Dim constrs As GRBConstr() = model.AddConstrs(10)
- GRBConstr[] AddConstrs(GRBLinExpr[] lhsExprs, char[] senses, double[] rhsVals, string[] names)#
向模型添加新的线性约束。添加的约束数量由输入数组的长度决定(所有参数必须一致)。
我们建议您一次构建一个约束的模型(使用
AddConstr),因为它不会引入显著的额外开销,并且我们发现这样可以生成更简单的代码。如果您不同意,尽管使用这些方法。- Parameters:
lhsExprs – 新线性约束的左侧表达式。
senses – 新线性约束的感知类型 (
GRB.LESS_EQUAL,GRB.EQUAL, 或GRB.GREATER_EQUAL).rhsVals – 新线性约束的右侧值。
names – 新约束的名称。
- Returns:
新的约束对象数组。
- Example:
// Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create linear expressions x + y and x - 2.0 * y GRBLinExpr lexpr1 = new GRBLinExpr(0); lexpr1.AddTerm(1.0, x); lexpr1.AddTerm(1.0, y); GRBLinExpr lexpr2 = new GRBLinExpr(0); lexpr2.AddTerm(1.0, x); lexpr2.AddTerm(-2.0, y); // Create arrays holding constraint data GRBLinExpr[] lexprs = {lexpr1, lexpr2}; char[] senses = {GRB.LESS_EQUAL, GRB.GREATER_EQUAL}; double[] rhsVals = {0.0, 1.0}; string[] names = {"c1", "c2"}; // Add constraints x + y <= 0.0 and x - 2.0 * y >= 1.0 GRBConstr[] constrs = model.AddConstrs(lexprs, senses, rhsVals, names);
' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create linear expressions x + y and x - 2.0 * y Dim lexpr1 As GRBLinExpr = New GRBLinExpr(0) lexpr1.AddTerm(1.0, x) lexpr1.AddTerm(1.0, y) Dim lexpr2 As GRBLinExpr = New GRBLinExpr(0) lexpr2.AddTerm(1.0, x) lexpr2.AddTerm(-2.0, y) ' Create arrays holding constraint data Dim lexprs As GRBLinExpr() = New GRBLinExpr() {lexpr1, lexpr2} Dim senes As Char() = New Char() {GRB.LESS_EQUAL, GRB.GREATER_EQUAL} Dim rhsVals As Double() = New Double() {0.0, 1.0} Dim names As String() = New String() {"c1", "c2"} ' Add constraints x + y <= 0.0 and x - 2.0 * y >= 1.0 Dim constrs As GRBConstr() = model.AddConstrs(lexprs, senses, rhsVals, names)
- GRBConstr[] AddConstrs(GRBLinExpr[] lhsExprs, char[] senses, GRBLinExpr[] rhsExprs, int start, int len, string[] names)#
向模型添加新的线性约束。此签名允许您使用数组来保存各种约束属性(左侧、方向等),而不强制您为数组中的每个条目添加一个约束。
start和len参数允许您指定要添加的约束。我们建议您一次构建一个约束的模型(使用
AddConstr),因为它不会引入显著的额外开销,并且我们发现这样可以生成更简单的代码。如果您不同意,尽管使用这些方法。- Parameters:
lhsExprs – 新线性约束的左侧表达式。
senses – 新线性约束的感知类型 (
GRB.LESS_EQUAL,GRB.EQUAL, 或GRB.GREATER_EQUAL).rhs – 新线性约束的右侧表达式。
start – 要添加的列表中的第一个约束。
len – 要添加的约束数量。
names – 新约束的名称。
- Returns:
新的约束对象数组。
- Example:
// Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create linear expressions x + y and x - 2.0 * y GRBLinExpr lexpr1 = new GRBLinExpr(0); lexpr1.AddTerm(1.0, x); lexpr1.AddTerm(1.0, y); GRBLinExpr lexpr2 = new GRBLinExpr(0); lexpr2.AddTerm(1.0, x); lexpr2.AddTerm(-2.0, y); // Create arrays holding constraint data GRBLinExpr[] lexprs = {lexpr1, lexpr2}; char[] senses = {GRB.LESS_EQUAL, GRB.GREATER_EQUAL}; double[] rhsVals = {0.0, 1.0}; string[] names = {"c1", "c2"}; // Add constraints x + y <= 0.0 and x - 2.0 * y >= 1.0 model.AddConstrs(lexprs, senses, rhsVals, 0, 2, names);
' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create linear expressions x + y and x - 2.0 * y Dim lexpr1 As GRBLinExpr = New GRBLinExpr(0) lexpr1.AddTerm(1.0, x) lexpr1.AddTerm(1.0, y) Dim lexpr2 As GRBLinExpr = New GRBLinExpr(0) lexpr2.AddTerm(1.0, x) lexpr2.AddTerm(-2.0, y) ' Create arrays holding constraint data Dim lexprs As GRBLinExpr() = New GRBLinExpr() {lexpr1, lexpr2} Dim senes As Char() = New Char() {GRB.LESS_EQUAL, GRB.GREATER_EQUAL} Dim rhsVals As Double() = New Double() {0.0, 1.0} Dim names As String() = New String() {"c1", "c2"} ' Add constraints x + y <= 0.0 and x - 2.0 * y >= 1.0 Dim constrs As GRBConstr() = model.AddConstrs(lexprs, senses, rhsVals, 0, 2 names)
- GRBGenConstr AddGenConstrMax(GRBVar resvar, GRBVar[] vars, double constant, string name)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_MAX。一个MAX约束\(r = \max\{x_1,\ldots,x_n,c\}\)表示结果变量\(r\)应等于操作变量\(x_1,\ldots,x_n\)和常数\(c\)的最大值。
- Parameters:
resvar – 新约束的结果变量。
vars – 作为新约束操作数的变量数组。
constant – 新约束的附加常数操作数。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create variables GRBVar resvar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar"); double[] ub = { 10.0, 10.0, 10.0 }; GRBVar[] x = model.AddVars(null, ub, null, null, null); // Add constraint resvar = max{x[0], x[1], x[2], 2.0} GRBGenConstr gc = model.AddGenConstrMax(resvar, x, 2.0, "maxconstr");
' Create variables Dim resvar As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar") Dim ub As Double() = New Double() { 10.0, 10.0, 10.0 } Dim x As GRBVar() = model.AddVars(Nothing, ub, Nothing, Nothing, Nothing) ' Add constraint resvar = max{x[0], x[1], x[2], 2.0} Dim gc As GRBGenConstr = model.AddGenConstrMax(resvar, x, 2.0, "maxconstr")
- GRBGenConstr AddGenConstrMin(GRBVar resvar, GRBVar[] vars, double constant, string name)#
向模型添加一个类型为
GRB.GENCONSTR_MIN的新一般约束。一个MIN约束 \(r = \min\{x_1,\ldots,x_n,c\}\) 表示结果变量 \(r\) 应该等于操作变量 \(x_1,\ldots,x_n\) 和常数 \(c\) 的最小值。
- Parameters:
resvar – 新约束的结果变量。
vars – 作为新约束操作数的变量数组。
constant – 新约束的附加常数操作数。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create variables GRBVar resvar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar"); double[] lb = { -10.0, -10.0, -10.0 }; double[] ub = { 0.0, 0.0, 0.0 }; GRBVar[] x = model.AddVars(lb, ub, null, null, null); // Add constraint resvar = min{x[0], x[1], x[2], -2.0} GRBGenConstr gc = model.AddGenConstrMin(resvar, x, -2.0, "minconstr");
' Create variables Dim resvar As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar") Dim lb As Double() = New Double() { -10.0, -10.0, -10.0 } Dim ub As Double() = New Double() { 0.0, 0.0, 0.0 } Dim x As GRBVar() = model.AddVars(lb, ub, Nothing, Nothing, Nothing) ' Add constraint resvar = min{x[0], x[1], x[2], -2.0} Dim gc As GRBGenConstr = model.AddGenConstrMin(resvar, x, -2.0, "minconstr")
- GRBGenConstr AddGenConstrAbs(GRBVar resvar, GRBVar argvar, string name)#
向模型添加一个类型为
GRB.GENCONSTR_ABS的新一般约束。一个ABS约束 \(r = \mbox{abs}\{x\}\) 表示结果变量 \(r\) 应该等于参数变量 \(x\) 的绝对值。
- Parameters:
resvar – 新约束的结果变量。
argvar – 新约束的参数变量。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create variables GRBVar resvar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar"); GRBVar x = model.AddVar(-2.0, 2.0, 0.0, GRB.CONTINUOUS, "x"); // Add constraint resvar = |x| GRBGenConstr gc = model.AddGenConstrAbs(resvar, x, "absconstr");
' Create variables Dim resvar As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar") Dim x As GRBVar = model.AddVar(-2.0, 2.0, 0.0, GRB.CONTINUOUS, "x") ' Add constraint resvar = |x| Dim gc As GRBGenConstr = model.AddGenConstrAbs(resvar, x, "absconstr")
- GRBGenConstr AddGenConstrAnd(GRBVar resvar, GRBVar[] vars, string name)#
向模型添加一个新的通用约束,类型为
GRB.GENCONSTR_AND。一个AND约束\(r = \mbox{and}\{x_1,\ldots,x_n\}\)表示 二进制结果变量\(r\)应该为\(1\)当且仅当 所有操作数变量\(x_1,\ldots,x_n\)都等于 \(1\)。如果任何一个操作数变量是\(0\),那么 结果也应该是\(0\)。
请注意,参与此类约束的所有变量将被强制为二进制,无论它们是如何创建的。
- Parameters:
resvar – 新约束的结果变量。
vars – 作为新约束操作数的变量数组。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create binary variables GRBVar resvar = model.AddVar(0.0, 1.0, 0.0, GRB.BINARY, "resvar"); GRBVar[] x = model.AddVars(3, GRB.BINARY); // Add constraint resvar = AND{x[0], x[1], x[2]} GRBGenConstr gc = model.AddGenConstrAnd(resvar, x, "andconstr");
' Create variables Dim resvar As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar") Dim x As GRBVar() = model.AddVars(3, GRB.BINARY) ' Add constraint resvar = AND{x[0], x[1], x[2]} Dim gc As GRBGenConstr = model.AddGenConstrAnd(resvar, x, "andconstr")
- GRBGenConstr AddGenConstrOr(GRBVar resvar, GRBVar[] vars, string name)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_OR。一个OR约束\(r = \mbox{or}\{x_1,\ldots,x_n\}\)表示,当且仅当任何一个操作数变量\(x_1,\ldots,x_n\)等于\(1\)时,二进制结果变量\(r\)应为\(1\)。如果所有操作数变量都是\(0\),那么结果也应为\(0\)。
请注意,参与此类约束的所有变量将被强制为二进制,无论它们是如何创建的。
- Parameters:
resvar – 新约束的结果变量。
vars – 作为新约束操作数的变量数组。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create binary variables GRBVar resvar = model.AddVar(0.0, 1.0, 0.0, GRB.BINARY, "resvar"); GRBVar[] x = model.AddVars(3, GRB.BINARY); // Add constraint resvar = OR{x[0], x[1], x[2]} GRBGenConstr gc = model.AddGenConstrOr(resvar, x, "orconstr");
' Create variables Dim resvar As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar") Dim x As GRBVar() = model.AddVars(3, GRB.BINARY) ' Add constraint resvar = OR{x[0], x[1], x[2]} Dim gc As GRBGenConstr = model.AddGenConstrOr(resvar, x, "orconstr")
- GRBGenConstr AddGenConstrNorm(GRBVar resvar, GRBVar[] vars, double which, string name)#
向模型添加一个类型为
GRB.GENCONSTR_NORM的新一般约束。一个NORM约束\(r = \mbox{norm}\{x_1,\ldots,x_n\}\)表示 结果变量\(r\)应该等于参数向量\(x_1,\ldots,x_n\)的向量范数。
- Parameters:
resvar – 新约束的结果变量。
vars – 作为新约束操作数的变量数组。请注意,此数组不能包含重复项。
which – 使用哪种范数。选项有 0、1、2 和 GRB.INFINITY。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create variables GRBVar resvar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar"); double[] lb = { -10.0, -10.0, -10.0 }; double[] ub = { 10.0, 10.0, 10.0 }; GRBVar[] x = model.AddVars(lb, ub, null, null, null); // Add constraint resvar = (x_0^2 + x_1^2 + x_2^2)^(0.5) GRBGenConstr gc = model.AddGenConstrNorm(resvar, x, 2, "2normconstr");
' Create variables Dim resvar As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "resvar") Dim lb As Double() = New Double() { -10.0, -10.0, -10.0 } Dim ub As Double() = New Double() { 0.0, 0.0, 0.0 } Dim x As GRBVar() = model.AddVars(lb, ub, Nothing, Nothing, Nothing) ' Add constraint resvar = (x_0^2 + x_1^2 + x_2^2)^(0.5) Dim gc As GRBGenConstr = model.AddGenConstrNorm(resvar, x, 2, "2normconstr")
- GRBGenConstr AddGenConstrNL(GRBVar resvar, int[] opcode, double[] data, int[] parent, string name)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_NL。一个非线性约束 \(r = f(x)\) 表示结果变量 \(r\) 应等于给定函数 \(f\) 的函数值 \(f(x)\),该函数以表达式树的形式描述在 非线性约束 中。
- Parameters:
resvar – 新约束的结果变量。
opcode – 一个包含节点操作码的数组。
data – 包含每个节点辅助数据的数组。
parent – 一个提供节点父索引的数组
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Add nonlinear constraint x0 = sin(2.5 * x1) + x2 to the model GRBVar x0 = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "x0"); GRBVar x1 = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "x1"); GRBVar x2 = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "x2"); // Initialize data for expression tree int[] opcode = new int[] {GRB.OPCODE_PLUS, GRB.OPCODE_SIN, GRB.OPCODE_MULTIPLY, GRB.OPCODE_CONSTANT, GRB.OPCODE_VARIABLE, GRB.OPCODE_VARIABLE}; double[] data = new double[] {-1.0, -1.0, -1.0, 2.5, 1.0, 2.0}; int[] parent = new int[] {-1, 0, 1, 2, 2, 0}; // Add nonlinear constraint model.AddGenConstrNL(x0, opcode, data, parent, "nlconstr");
' Add nonlinear constraint x0 = sin(2.5 * x1) + x2 to the model Dim x0 As GRBVar = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "x0") Dim x1 As GRBVar = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "x1") Dim x2 As GRBVar = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "x2") ' Initialize data for expression tree Dim opcode As Integer() = New Integer() {GRB.OPCODE_PLUS, GRB.OPCODE_SIN, GRB.OPCODE_MULTIPLY, GRB.OPCODE_CONSTANT, GRB.OPCODE_VARIABLE, GRB.OPCODE_VARIABLE} Dim data As Double() = New Double() {-1.0, -1.0, -1.0, 2.5, 1.0, 2.0} Dim parent As Integer() = New Integer() {-1, 0, 1, 2, 2, 0} ' Add nonlinear constraint model.AddGenConstrNL(x0, opcode, data, parent, "nlconstr")
- GRBGenConstr AddGenConstrIndicator(GRBVar binvar, int binval, GRBLinExpr expr, char sense, double rhs, string name)#
向模型添加一个类型为
GRB.GENCONSTR_INDICATOR的新一般约束。一个INDICATOR约束\(z = f \rightarrow a^Tx \leq b\)表示 如果二进制指示变量\(z\)等于\(f\), 其中\(f \in \{0,1\}\),那么线性约束 \(a^Tx \leq b\)应该成立。另一方面,如果\(z = 1-f\), 线性约束可能被违反。线性约束的方向也可以指定为\(=\)或\(\geq\)。
请注意,约束的指示变量 \(z\) 将被强制为二进制,无论它是如何创建的。
- Parameters:
binvar – 二进制指示变量。
binval – 二进制指示变量的值,该值将强制满足线性约束条件(\(0\) 或 \(1\))。
expr – 由指示器触发的线性约束的左侧表达式。
sense – 线性约束的意义。选项是
GRB.LESS_EQUAL,GRB.EQUAL, 或GRB.GREATER_EQUAL。rhs – 线性约束的右侧值。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create binary indicator variable GRBVar z = model.AddVar(0.0, 1.0, 0.0, GRB.BINARY, "z"); // Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create linear expression x + y GRBLinExpr lexpr1 = new GRBLinExpr(0); lexpr1.AddTerm(1.0, x); lexpr1.AddTerm(1.0, y); // Add constraint if z = 1 then x + y <= 2 GRBGenConstr gc = model.AddGenConstrIndicator(z, 1, lexpr, GRB.LESS_EQUAL, 2.0, "indicatorconstr");
' Create binary indicator variable Dim z As GRBVar = model.AddVar(0.0, 1.0, 0.0, GRB.BINARY, "z") ' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create linear expression x + y Dim lexpr1 As GRBLinExpr = New GRBLinExpr(0) lexpr1.AddTerm(1.0, x) lexpr1.AddTerm(1.0, y) ' Add constraint if z = 1 then x + y <= 2 Dim gc As GRBGenConstr = model.AddGenConstrIndicator(z, 1, lexpr, GRB.LESS_EQUAL, 2.0, "indicatorconstr")
- GRBGenConstr AddGenConstrIndicator(GRBVar binvar, int binval, GRBTempConstr constr, string name)#
向模型添加一个类型为
GRB.GENCONSTR_INDICATOR的新一般约束。一个INDICATOR约束\(z = f \rightarrow a^Tx \leq b\)表示 如果二进制指示变量\(z\)等于\(f\), 其中\(f \in \{0,1\}\),那么线性约束 \(a^Tx \leq b\)应该成立。另一方面,如果\(z = 1-f\), 线性约束可能被违反。线性约束的方向也可以指定为\(=\)或\(\geq\)。
请注意,约束的指示变量 \(z\) 将被强制为二进制,无论它是如何创建的。
- Parameters:
binvar – 二进制指示变量。
binval – 二进制指示变量的值,该值将强制满足线性约束条件(\(0\) 或 \(1\))。
constr – 定义由指示器触发的线性约束的临时约束对象。临时约束对象是通过重载的比较运算符创建的。有关更多信息,请参见
GRBTempConstr。name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create binary indicator variable GRBVar z = model.AddVar(0.0, 1.0, 0.0, GRB.BINARY, "z"); // Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint if z = 1 then x + y <= 2 GRBGenConstr gc = model.AddGenConstrIndicator(z, 1, x + y <= 2.0, "indicatorconstr");
' Create binary indicator variable Dim z As GRBVar = model.AddVar(0.0, 1.0, 0.0, GRB.BINARY, "z") ' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint if z = 1 then x + y <= 2 Dim gc As GRBGenConstr = model.AddGenConstrIndicator(z, 1, lexpr, GRB.LESS_EQUAL, 2.0, "indicatorconstr")
- GRBGenConstr AddGenConstrPWL(GRBVar xvar, GRBVar yvar, double[] xpts, double[] ypts, string name)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_PWL。分段线性(PWL)约束规定变量 \(x\) 和 \(y\) 之间的关系必须满足 \(y = f(x)\),其中 \(f\) 是一个分段线性函数。\(f\) 的断点作为参数提供。有关分段线性函数如何定义的详细信息,请参阅分段线性目标的描述。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
xpts – 定义分段线性函数的点的 \(x\) 值。必须按非递减顺序排列。
ypts – 定义分段线性函数的点的 \(y\) 值。
name – 新的一般约束的名称。
- Returns:
新的通用约束。
- Example:
// Create variables GRBVar x = model.AddVar(-1.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create point pairs for the PWL function double[] xpts = {-1, 0, 0, 0, 1}; double[] ypts = {2, 1, 0, 1, 2}; // Add PWL constraint y = PWL(x) GRBGenConstr gc = model.AddGenConstrPWL(x, y, xpts, ypts, "pwlconstr");
' Create variables Dim x As GRBVar = model.AddVar(-1.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create point pairs for the PWL function Dim xpts As Double() = New Double() {-1, 0, 0, 0, 1} Dim ypts As Double() = New Double() {2, 1, 0, 1, 2} ' Add PWL constraint y = PWL(x) Dim gc As GRBGenConstr = model.AddGenConstrPWL(x, y, xpts, ypts, "pwlconstr")
- GRBGenConstr AddGenConstrPoly(GRBVar xvar, GRBVar yvar, double[] p, string name, string options)#
多项式函数约束声明了变量\(x\)和\(y\)之间的关系应满足\(y = p_0 x^d + p_1 x^{d-1} + ... + p_{d-1} x + p_{d}\)。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
p – 多项式函数的系数(从最高次幂的系数开始)。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应以空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create array holding coefficients double[] p = {3.0, 2.0, 0.0, 1.0}; // Add constraint y = 3.0 * x^3 + 2.0 * x^2 + 1.0 GRBGenConstr gc = model.AddGenConstrPoly(x, y, p, "polyconstr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create array holding coefficients Dim p As Double() = New Double() {3.0, 2.0, 0.0, 1.0} ' Add constraint y = 3.0 * x^3 + 2.0 * x^2 + 1.0 Dim gc As GRBGenConstr = model.AddGenConstrPoly(x, y, p, "polyconstr", "")
- GRBGenConstr AddGenConstrExp(GRBVar xvar, GRBVar yvar, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_EXP。自然指数函数约束表明,变量 \(x\) 和 \(y\) 之间的关系应满足 \(y = \exp(x)\)。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = exp(x) GRBGenConstr gc = model.AddGenConstrExp(x, y, "expconstr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = exp(x) Dim gc As GRBGenConstr = model.AddGenConstrExp(x, y, "expconstr", "")
- GRBGenConstr AddGenConstrExpA(GRBVar xvar, GRBVar yvar, double a, string name, string options)#
向模型添加一个类型为
GRB.GENCONSTR_EXPA的新一般约束。指数函数约束表明,变量\(x\)和\(y\)之间的关系应满足\(y = a^x\),其中\(a > 0\)是(常数)底数。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
a – 函数的基数,\(a > 0\)。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(1.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = 2.0^x GRBGenConstr gc = model.AddGenConstrExpA(x, y, 2.0, "exp2constr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(1.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = 2.0^x Dim gc As GRBGenConstr = model.AddGenConstrExpA(x, y, 2.0, "exp2constr", "")
- GRBGenConstr AddGenConstrLog(GRBVar xvar, GRBVar yvar, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_LOG。自然对数函数约束规定,变量 \(x\) 和 \(y\) 之间的关系应满足 \(y = log(x)\)。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(1.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = log(x) GRBGenConstr gc = model.AddGenConstrLog(x, y, "logconstr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(1.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = log(x) Dim gc As GRBGenConstr = model.AddGenConstrLog(x, y, "logconstr", "")
- GRBGenConstr AddGenConstrLogA(GRBVar xvar, GRBVar yvar, double a, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_LOGA。对数函数约束表明,变量\(x\)和\(y\)之间的关系应满足\(y = log_a(x)\),其中\(a > 0\)是(常数)底数。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
a – 函数的基数,\(a > 0\)。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(1.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = log_2(x) GRBGenConstr gc = model.AddGenConstrLogA(x, y, 2.0, "log2constr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(1.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = log_2(x) Dim gc As GRBGenConstr = model.AddGenConstrLogA(x, y, 2.0, "log2constr", "")
- GRBGenConstr AddGenConstrLogistic(GRBVar xvar, GRBVar yvar, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_LOGISTIC。逻辑函数约束表明,变量 \(x\) 和 \(y\) 之间的关系应满足 \(y = \frac{1}{1 + e^{-x}}\)。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = logistic(x) = 1.0 / (1.0 + exp(-x)) GRBGenConstr gc = model.AddGenConstrLogistic(x, y, "logisticconstr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = logistic(x) = 1.0 / (1.0 + exp(-x)) Dim gc As GRBGenConstr = model.AddGenConstrLogistic(x, y, "logisticconstr", "")
- GRBGenConstr AddGenConstrPow(GRBVar xvar, GRBVar yvar, double a, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_POW。幂函数约束表明,变量 \(x\) 和 \(y\) 之间的关系 \(y = x^a\) 应该成立,其中 \(a\) 是(常数)指数。
如果指数 \(a\) 是负数,\(x\) 的下界必须严格为正。如果指数不是整数,\(x\) 的下界必须为非负数。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
a – 函数的指数。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = x^3 GRBGenConstr gc = model.AddGenConstrPow(x, y, 3, "pow3constr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = x^3 Dim gc As GRBGenConstr = model.AddGenConstrPow(x, y, 3, "pow3constr", "")
- GRBGenConstr AddGenConstrSin(GRBVar xvar, GRBVar yvar, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_SIN。正弦函数约束表明,变量 \(x\) 和 \(y\) 之间的关系应满足 \(y = sin(x)\)。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = sin(x) GRBGenConstr gc = model.AddGenConstrSin(x, y, "sinconstr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = sin(x) Dim gc As GRBGenConstr = model.AddGenConstrSin(x, y, "sinconstr", "")
- GRBGenConstr AddGenConstrCos(GRBVar xvar, GRBVar yvar, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_COS。余弦函数约束规定变量 \(x\) 和 \(y\) 之间的关系应满足 \(y = cos(x)\)。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = cos(x) GRBGenConstr gc = model.AddGenConstrCos(x, y, "cosconstr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = cos(x) Dim gc As GRBGenConstr = model.AddGenConstrCos(x, y, "cosconstr", "")
- GRBGenConstr AddGenConstrTan(GRBVar xvar, GRBVar yvar, string name, string options)#
向模型添加一个新的一般约束,类型为
GRB.GENCONSTR_TAN。一个正切函数约束声明了变量 \(x\) 和 \(y\) 之间的关系应满足 \(y = tan(x)\)。
函数的分段线性近似被添加到模型中。近似的细节通过以下四个属性(或使用相同名称的参数)控制:FuncPieces、FuncPieceError、FuncPieceLength 和 FuncPieceRatio。或者,通过设置属性 FuncNonlinear,可以将函数视为非线性约束。详情请参阅 一般约束 讨论。
- Parameters:
xvar – \(x\) 变量。
yvar – \(y\) 变量。
name – 新的一般约束的名称。
options – 一个字符串,可用于设置控制此函数约束的分段线性近似的属性。要为属性赋值,请在属性名称后加上等号和所需的值(无空格)。不同属性的赋值应通过空格分隔(例如“FuncPieces=-1 FuncPieceError=0.001”)。
- Returns:
新的通用约束。
- Example:
// Create argument variable GRBVar x = model.AddVar(-1.0, 1.0, 0.0, GRB.CONTINUOUS, "x"); // Create resultant variable GRBVar y = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Add constraint y = tan(x) GRBGenConstr gc = model.AddGenConstrTan(x, y, "tanconstr", "");
' Create argument variable Dim x As GRBVar = model.AddVar(-5.0, 5.0, 0.0, GRB.CONTINUOUS, "x") ' Create resultant variable Dim y As GRBVar = model.AddVar(-GRB.INFINITY, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Add constraint y = tan(x) Dim gc As GRBGenConstr = model.AddGenConstrTan(x, y, "tanconstr", "")
- GRBQConstr AddQConstr(GRBQuadExpr lhsExpr, char sense, GRBQuadExpr rhsExpr, string name)#
向模型添加一个二次约束。
重要
Gurobi 可以处理凸和非凸二次约束。它们之间的差异可能既重要又微妙。有关更多信息,请参阅此讨论。
- Parameters:
lhsExpr – 新二次约束的左侧表达式。
sense – 新二次约束的意义(
GRB.LESS_EQUAL,GRB.EQUAL,或GRB.GREATER_EQUAL)。rhsExpr – 新二次约束的右侧表达式。
name – 新约束的名称。
- Returns:
新的二次约束对象。
- Example:
// Create variables GRBVar x = model.AddVar(-2.0, 2.0, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, 3.0, 0.0, GRB.CONTINUOUS, "y"); // Create quadratric expression x^2 + x*y + y GRBQuadExpr qexpr = new GRBQuadExpr(0); qexpr.AddTerm(1.0, x, x); qexpr.AddTerm(1.0, x, y); qexpr.AddTerm(1.0, y); // Add quadratic constraint x^2 + x*y + y = 0 with name c1 GRBQConstr constr = model.AddQConstr(qexpr, GRB.EQUAL, 0.0, "c1");
' Create variables Dim x As GRBVar = model.AddVar(-2.0, 2.0, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, 3.0, 0.0, GRB.CONTINUOUS, "y") ' Create quadratric expression x^2 + x*y + y Dim qexpr As GRBQuadExpr = New GRBQuadExpr(0) qexpr.AddTerm(1.0, x, x) qexpr.AddTerm(1.0, x, y) qexpr.AddTerm(1.0, y) ' Add quadratic constraint x^2 + x*y + y = 0 with name c1 Dim constr As GRBQConstr = model.AddQConstr(qexpr, GRB.EQUAL, 0.0, "c1")
- GRBQConstr AddQConstr(GRBTempConstr tempConstr, string name)#
向模型添加一个二次约束。
重要
Gurobi 可以处理凸和非凸二次约束。它们之间的差异可能既重要又微妙。有关更多信息,请参阅此讨论。
- Parameters:
tempConstr – 临时约束对象,由重载的比较运算符创建。有关更多信息,请参见
GRBTempConstr。name – 新约束的名称。
- Returns:
新的二次约束对象。
- Example:
// Create variables GRBVar x = model.AddVar(-2.0, 2.0, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, 3.0, 0.0, GRB.CONTINUOUS, "y"); // Add quadratic constraint x^2 + x*y + y = 0 with name c1 GRBQConstr constr = model.AddQConstr(x*x + x*y + y == 0, "c1");
' Create variables Dim x As GRBVar = model.AddVar(-2.0, 2.0, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, 3.0, 0.0, GRB.CONTINUOUS, "y") ' Add quadratic constraint x^2 + x*y + y = 0 with name c1 Dim constr As GRBQConstr = model.AddQConstr(x*x + x*y + y == 0, "c1")
- GRBConstr AddRange(GRBLinExpr expr, double lower, double upper, string name)#
向模型添加单个范围约束。范围约束规定输入表达式的值必须在任何解决方案中位于指定的
lower和upper界限之间。请注意,范围约束在内部存储为等式约束。我们向模型添加一个额外的变量来捕获范围信息。因此,范围约束上的感知属性将始终为
GRB.EQUAL。特别是引入一个范围约束\[L \leq a^T x \leq U\]等同于添加一个松弛变量 \(s\) 和以下约束条件
\[\begin{split}\begin{array}{rl} a^T x - s & = L \\ 0 \leq s & \leq U - L. \end{array}\end{split}\]- Parameters:
expr – 新范围约束的线性表达式。
lower – 线性表达式的下限。
upper – 线性表达式的上限。
name – 新约束的名称。
- Returns:
新的约束对象。
- Example:
// Create variables GRBVar x = model.AddVar(0.0, 10.0, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(-10.0, 3.0, 0.0, GRB.CONTINUOUS, "y"); // Create linear expression x + y GRBLinExpr lexpr = new GRBLinExpr(0); lexpr.AddTerm(1.0, x); lexpr.AddTerm(1.0, y); // Add range constraints -3 <= x + y <= 2 with name c1 GRBConstr constr = model.AddRange(lexpr, -3.0, 2.0, "c1");
' Create variables Dim x As GRBVar = model.AddVar(0.0, 10.0, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(-10.0, 3.0, 0.0, GRB.CONTINUOUS, "y") ' Create linear expression x + y Dim lexpr As GRBLinExpr = new GRBLinExpr(0) lexpr.AddTerm(1.0, x) lexpr.AddTerm(1.0, y) ' Add range constraints -3 <= x + y <= 2 with name c1 Dim constr As GRBConstr = model.AddRange(lexpr, -3.0, 2.0, "c1")
- GRBConstr[] AddRanges(GRBLinExpr[] exprs, double[] lower, double[] upper, string[] names)#
向模型添加新的范围约束。范围约束声明输入表达式的值必须在任何解决方案中位于指定的
lower和upper界限之间。- Parameters:
exprs – 新范围约束的线性表达式。
lower – 线性表达式的下界。
upper – 线性表达式的上界。
name – 新范围约束的名称。
count – 要添加的范围约束的数量。
- Returns:
新的约束对象数组。
- Example:
// Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create linear expressions x + y and x - 2.0 * y GRBLinExpr lexpr1 = new GRBLinExpr(0); lexpr1.AddTerm(1.0, x); lexpr1.AddTerm(1.0, y); GRBLinExpr lexpr2 = new GRBLinExpr(0); lexpr2.AddTerm(1.0, x); lexpr2.AddTerm(-2.0, y); double[] lower = {-3.0, 2.0}; double[] upper = {-1.0, 5.0}; string[] names = {"c1", "c2"}; // Add constraints -3.0 <= x + y <= 2.0 and -1.0 <= x - 2.0 * y <= 5.0 GRBConstr[] constrs = model.AddRanges(lexprs, lower, upper, names);
' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create linear expressions x + y and x - 2.0 * y Dim lexpr1 As GRBLinExpr = New GRBLinExpr(0) lexpr1.AddTerm(1.0, x) lexpr1.AddTerm(1.0, y) Dim lexpr2 As GRBLinExpr = New GRBLinExpr(0) lexpr2.AddTerm(1.0, x) lexpr2.AddTerm(-2.0, y) Dim lower As Double() = New Double() {-3.0, 2.0} Dim upper As Double() = New Double() {-1.0, 5.0} Dim names As String() = New String() {"c1", "c2"} ' Add constraints -3.0 <= x + y <= 2.0 and -1.0 <= x - 2.0 * y <= 5.0 Dim constrs As GRBConstr() = model.AddRanges(lexprs, lower, upper, names)
- GRBSOS AddSOS(GRBVar[] vars, double[] weights, int type)#
向模型添加一个SOS约束。有关SOS约束的详细信息,请参阅 本节。
- Parameters:
vars – 参与SOS约束的变量数组。
weights – SOS约束中变量的权重。
type – SOS类型(可以是
GRB.SOS_TYPE1或GRB.SOS_TYPE2)。
- Returns:
新的SOS约束。
- Example:
// Create variables GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x"); GRBVar y = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y"); // Create helper arrays GRBVar[] vars = {x, y}; double[] weights = {1.0, 2.0}; // Add SOS1 constraint over x and y GRBSOS constr = model.AddSOS(vars, weights, GRB.SOS_TYPE1);
' Create variables Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x") Dim y As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "y") ' Create helper arrays Dim vars As GRBVar() = New GRBVar() {x, y} Dim weights As Double() = New Double() {1.0, 2.0} ' Add SOS1 constraint over x and y Dim constr As GRBSOS = model.AddSOS(vars, weights, GRB.SOS_TYPE1)
- GRBVar AddVar(double lb, double ub, double obj, char type, string name)#
向模型添加一个单一的决策变量;非零条目将在稍后添加。
- Parameters:
lb – 新变量的下界。
ub – 新变量的上限。
obj – 新变量的目标系数。
type – 新变量的变量类型 (
GRB.CONTINUOUS,GRB.BINARY,GRB.INTEGER,GRB.SEMICONT, 或GRB.SEMIINT).name – 新变量的名称。
- Returns:
新变量对象。
- Example:
// Create variable GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x");
' Create variable Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, "x")
- GRBVar AddVar(double lb, double ub, double obj, char type, GRBConstr[] constrs, double[] coeffs, string name)#
向模型添加单个决策变量和相关的非零系数。
- Parameters:
lb – 新变量的下界。
ub – 新变量的上限。
obj – 新变量的目标系数。
type – 新变量的变量类型 (
GRB.CONTINUOUS,GRB.BINARY,GRB.INTEGER,GRB.SEMICONT, 或GRB.SEMIINT).constrs – 变量参与的约束数组。
coeffs – 变量参与的每个约束的系数数组。
constrs和coeffs数组的长度必须相同。name – 新变量的名称。
- Returns:
新变量对象。
- Example:
// Add 3 trivial linear constraints to model GRBConstr[] constrs = model.AddConstrs(3); // Constraint coefficients for variable x double[] coeffs = {1.0, 2.0, 3.0}; // Add variable x with coeffs 1.0, 2.0, 3.0 to the newly created trivial constraints GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, constrs, coeffs, "x");
' Add 3 trivial linear constraints to model Dim constrs As GRBConstr() = model.AddConstrs(3) ' Constraint coefficients for variable x Dim coeffs As Double() = New Double() {1.0, 2.0, 3.0} ' Add variable x with coeffs 1.0, 2.0, 3.0 to the newly created trivial constraints Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, constrs, coeffs, "x")
- GRBVar AddVar(double lb, double ub, double obj, char type, GRBColumn col, string name)#
向模型添加一个变量。此签名允许您使用
GRBColumn对象指定新变量所属的约束集。- Parameters:
lb – 新变量的下界。
ub – 新变量的上限。
obj – 新变量的目标系数。
type – 新变量的变量类型 (
GRB.CONTINUOUS,GRB.BINARY,GRB.INTEGER,GRB.SEMICONT, 或GRB.SEMIINT).col – GRBColumn 对象,用于指定新变量所属的一组约束。
name – 新变量的名称。
- Returns:
新变量对象。
- Example:
// Add 3 trivial linear constraints to model GRBConstr[] constrs = model.AddConstrs(3); // Constraint coefficients for variable x double[] coeffs = {1.0, 2.0, 3.0}; // Create and fill GRBColumn object GRBColumn col = new GRBColumn(); col.AddTerms(coeffs, constrs); // Add variable x with coefs 1.0, 2.0, 3.0 to the newly created trivial constraints GRBVar x = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, col, "x");
' Add 3 trivial linear constraints to model Dim constrs As GRBConstr() = model.AddConstrs(3) ' Constraint coefficients for variable x Dim coeffs As Double() = {1.0, 2.0, 3.0} ' Create and fill GRBColumn object Dim col As GRBColumn = New GRBColumn() col.AddTerms(coeffs, constrs) ' Add variable x with coefs 1.0, 2.0, 3.0 to the newly created trivial constraints Dim x As GRBVar = model.AddVar(0.0, GRB.INFINITY, 0.0, GRB.CONTINUOUS, col, "x")
- GRBVar[] AddVars(int count, char type)#
向模型添加
count个新的决策变量。所有相关的属性都采用其默认值,除了变量type,它被指定为参数。- Parameters:
count – 要添加的变量数量。
type – 新变量的变量类型 (
GRB.CONTINUOUS,GRB.BINARY,GRB.INTEGER,GRB.SEMICONT, 或GRB.SEMIINT).
- Returns:
新变量对象的数组。
- Example:
// Add 3 binary variables GRBVar[] x = model.AddVars(3, GRB.BINARY);
' Add 3 binary variables Dim x As GRBVar() = model.AddVars(3, GRB.BINARY)
- GRBVar[] AddVars(double[] lb, double[] ub, double[] obj, char[] type, string[] names)#
向模型添加新的决策变量。添加的变量数量由输入数组的长度决定(所有参数必须一致)。
- Parameters:
lb – 新变量的下界。可以是
null,在这种情况下,变量的下界为0.0。ub – 新变量的上界。可以是
null,在这种情况下,变量将获得无限的上界。obj – 新变量的目标系数。可以是
null,在这种情况下,变量的目标系数为0.0。type – 新变量的变量类型(
GRB.CONTINUOUS,GRB.BINARY,GRB.INTEGER,GRB.SEMICONT, 或GRB.SEMIINT)。 可以为null,在这种情况下,变量被假定为连续的。names – 新变量的名称。可以是
null,在这种情况下,所有变量都会被赋予默认名称。
- Returns:
新变量对象的数组。
- Example:
// Create 3 variables with default lower bound and default type double[] ub = {1, 1, 2}; double[] obj = {-2, -1, -1}; string[] names = {"x0", "x1", "x2"}; GRBVar[] x = model.AddVars(null, ub, obj, null, names);
' Create 3 variables with default lower bound and default type Dim ub As Double() = New Double() {1, 1, 2} Dim obj As Double() = New Double() {-2, -1, -1} Dim names As String() = New String() {"x0", "x1", "x2"} Dim x As GRBVar() = model.AddVars(Nothing, ub, obj, Nothing, names)
- GRBVar[] AddVars(double[] lb, double[] ub, double[] obj, char[] type, string[] names, int start, int len)#
向模型添加新的决策变量。此签名允许您使用数组来保存各种变量属性(下限、上限等),而不强制您为数组中的每个条目添加变量。
start和len参数允许您指定要添加的变量。- Parameters:
lb – 新变量的下界。可以是
null,在这种情况下,变量的下界为0.0。ub – 新变量的上界。可以是
null,在这种情况下,变量将获得无限的上界。obj – 新变量的目标系数。可以是
null,在这种情况下,变量的目标系数为0.0。type – 新变量的变量类型(
GRB.CONTINUOUS,GRB.BINARY,GRB.INTEGER,GRB.SEMICONT, 或GRB.SEMIINT)。 可以为null,在这种情况下,变量被假定为连续型。names – 新变量的名称。可以是
null,在这种情况下,所有变量都会被赋予默认名称。start – 列表中要添加的第一个变量。
len – 要添加的变量数量。
- Returns:
新变量对象的数组。
- Example:
// Create 2 variables with default lower bound and default type double[] ub = {1, 1, 2}; double[] obj = {-2, -1, -1}; string[] names = {"x0", "x1", "x2"}; GRBVar[] x = model.AddVars(null, ub, obj, null, names, 0, 2);
' Create 3 variables with default lower bound and default type Dim ub As Double() = New Double() {1, 1, 2} Dim obj As Double() = New Double() {-2, -1, -1} Dim names As String() = New String() {"x0", "x1", "x2"} Dim x As GRBVar() = model.AddVars(Nothing, ub, obj, Nothing, names, 0, 3)
- GRBVar[] AddVars(double[] lb, double[] ub, double[] obj, char[] type, string[] names, GRBColumn[] col)#
向模型添加新的决策变量。此签名允许您使用
GRBColumn对象数组指定每个新变量所属的约束列表。- Parameters:
lb – 新变量的下界。可以是
null,在这种情况下,变量的下界为0.0。ub – 新变量的上界。可以是
null,在这种情况下,变量将获得无限的上界。obj – 新变量的目标系数。可以是
null,在这种情况下,变量的目标系数为0.0。type – 新变量的变量类型(
GRB.CONTINUOUS,GRB.BINARY,GRB.INTEGER,GRB.SEMICONT, 或GRB.SEMIINT)。 可以为null,在这种情况下,变量被假定为连续型。names – 新变量的名称。可以是
null,在这种情况下,所有变量都会被赋予默认名称。cols – GRBColumn 对象,用于指定每个新列所属的一组约束。
- Returns:
新变量对象的数组。
- Example:
// Create 3 variables with default lower bound and default type double[] ub = {1, 1, 2}; double[] obj = {-2, -1, -1}; string[] names = {"x0", "x1", "x2"}; // Create an array of previously created GRBColumn objects GRBColumn[] col = {col1, col2, col3}; GRBVar[] x = model.AddVars(null, ub, obj, null, names, col);
' Create 3 variables with default lower bound and default type Dim ub As Double() = New Double() {1, 1, 2} Dim obj As Double() = New Double() {-2, -1, -1} Dim names As String() = New String() {"x0", "x1", "x2"} ' Create an array of previously created GRBColumn objects Dim cols As GRBColumn() = New GRBColumn() {col1, col2, col3} Dim x As GRBVar() = model.AddVars(Nothing, ub, obj, Nothing, names, col)
- void ChgCoeff(GRBConstr constr, GRBVar var, double newvalue)#
更改模型中的一个系数。所需的更改使用
GRBVar对象、GRBConstr对象以及指定约束中指定变量的所需系数来捕获。如果对同一系数进行多次更改,将应用最后一次更改。请注意,由于我们采用了延迟更新的方法,更改实际上不会生效,直到您更新模型(使用
GRBModel.Update)、优化模型(使用GRBModel.Optimize)或将模型写入磁盘(使用GRBModel.Write)。- Parameters:
constr – 要更改的系数的约束。
var – 要更改系数的变量。
newvalue – 系数的期望新值。
- Example:
// Change coefficient of variable x in constraint c1 to 2.0 model.ChgCoeff(c1, x, 2.0);
' Change coefficient of variable x in constraint c1 to 2.0 model.ChgCoeff(c1, x, 2.0)
- void ChgCoeffs(GRBConstr[] constrs, GRBVar[] vars, double[] vals)#
更改模型中的系数列表。每个所需的更改都使用一个
GRBVar对象、一个GRBConstr对象以及指定约束中指定变量的所需系数来捕获。输入数组中的每个条目对应一个所需的系数更改。输入数组的长度必须全部相同。如果对同一系数进行多次更改,将应用最后一个更改。请注意,由于我们采用了延迟更新的方法,更改实际上不会生效,直到您更新模型(使用
GRBModel.Update)、优化模型(使用GRBModel.Optimize)或将模型写入磁盘(使用GRBModel.Write)。- Parameters:
constrs – 要更改的系数的约束条件。
vars – 用于更改系数的变量。
vals – 系数的期望新值。
- Example:
// Create arrays using previously created constraints and variables GRBConstr[] constrs = {c1, c2, c3}; GRBVar[] vars = {x, y, z}; double[] vals = {1.0, 2.0, 3.0}; // Change coefficients of variables x, y, z in constraints c1, c2, and c3, respectively model.ChgCoeffs(constrs, vars, vals);
' Create arrays using previously created constraints and variables Dim constrs As GRBConstr() = New GRBConstr() {c1, c2, c3} Dim vars As GRBVar() = New GRBVar() {x, y, z} Dim vals As Double() = New Double() {1.0, 2.0, 3.0} ' Change coefficients of variables x, y, z in constraints c1, c2, and c3, respectively model.ChgCoeffs(constrs, vars, vals)
- void ComputeIIS()#
计算一个不可约不一致子系统(IIS)。
IIS 是具有以下属性的约束和变量边界的子集:
这仍然是不可行的,并且
如果移除单个约束或边界,子系统将变得可行。
请注意,一个不可行的模型可能有多个IIS。Gurobi返回的不一定是最小的一个;可能存在其他具有更少约束或边界的IIS。
IIS 结果以多个属性返回: IISConstr, IISLB, IISUB, IISSOS, IISQConstr, 和 IISGenConstr. 每个属性指示相应的模型元素是否是计算出的 IIS 的成员。
请注意,对于具有一般函数约束的模型,约束的分段线性近似可能会导致不可靠的IIS结果。
IIS日志提供了关于算法进度的信息,包括对最终IIS大小的猜测。
如果IIS计算在完成之前被中断,Gurobi将返回到目前为止找到的最小不可行子系统。
IISConstrForce、IISLBForce、IISUBForce、IISSOSForce、IISQConstrForce和IISGenConstrForce属性允许您标记模型元素以包含或排除在计算的IIS中。将属性设置为1会强制将相应元素包含在IIS中,将其设置为0会强制将其排除在IIS之外,将其设置为-1则允许算法决定。
为了举例说明这些属性何时可能有用,考虑一种情况,即已知初始模型是可行的,但在添加约束或收紧边界后变得不可行。如果你只对了解哪些更改导致了不可行性感兴趣,你可以强制将未修改的边界和约束纳入IIS。这使得IIS算法能够专注于新的约束,这通常会显著加快速度。
请注意,将任何
Force属性设置为0可能会使生成的子系统变得可行,这将使得无法构建IIS。无论如何尝试都会导致IIS_NOT_INFEASIBLE错误。同样,将此属性设置为1可能会导致IIS不可约。更准确地说,系统仅在具有-1或0的强制值的模型元素方面才是不可约的。此方法填充了IISConstr、IISQConstr和IISGenConstr约束属性,IISSOS、SOS属性,以及IISLB和IISUB变量属性。您还可以通过编写
.ilp格式文件(参见GRBModel.Write)来获取有关IIS计算结果的信息。此文件仅包含原始模型中的IIS。使用 IISMethod 参数来调整 IIS 算法的行为。
请注意,此方法可用于计算连续和MIP模型的IIS。
- Example:
// Compute IIS for infeasible model if (model.Status == GRB.Status.INFEASIBLE) { model.ComputeIIS(); }
' Compute IIS for infeasible model If (model.Status = GRB.Status.INFEASIBLE) Then model.ComputeIIS() End If
- void DiscardConcurrentEnvs()#
丢弃模型的并发环境。
由
GetConcurrentEnv创建的并发环境将被每个后续调用并发优化器使用,直到并发环境被丢弃。- Example:
env0 = model.GetConcurrentEnv(0); env1 = model.GetConcurrentEnv(1); env0.Set(GRB.IntParam.Method, 0); env1.Set(GRB.IntParam.Method, 1); model.Optimize(); model.DiscardConcurrentEnvs();
env0 = model.GetConcurrentEnv(0) env1 = model.GetConcurrentEnv(1) env0.Set(GRB.IntParam.Method, 0) env1.Set(GRB.IntParam.Method, 1) model.Optimize() model.DiscardConcurrentEnvs()
- void DiscardMultiobjEnvs()#
丢弃与模型关联的所有多目标环境,从而将多目标优化恢复为其默认行为。
请参考关于 多目标的讨论,了解如何指定多个目标函数并控制它们之间的权衡。
使用
GetMultiobjEnv创建一个多目标环境。- Example:
env0 = model.GetMultiobjEnv(0); env1 = model.GetMultiobjEnv(1); env0.Set(GRB.IntParam.Method, 0); env1.Set(GRB.IntParam.Method, 1); model.Optimize(); model.DiscardMultiobjEnvs();
env0 = model.GetMultiobjEnv(0) env1 = model.GetMultiobjEnv(1) env0.Set(GRB.IntParam.Method, 0) env1.Set(GRB.IntParam.Method, 1) model.Optimize() model.DiscardMultiobjEnvs()
- void Dispose()#
释放与
GRBModel对象关联的资源。虽然.NET垃圾回收器最终会回收这些资源,但我们建议您在使用完模型后调用Dispose方法。在调用
Dispose之后,您不应尝试使用GRBModel对象。- Example:
GRBEnv env = new GRBEnv(); GRBModel model = new GRBModel(env); // ... model.Optimize(); model.Dispose(); env.Dispose();
Dim env As GRBEnv = New GRBEnv() Dim model As GRBModel = New GRBModel(env) ' ... model.Optimize() model.Dispose() env.Dispose()
- double FeasRelax(int relaxobjtype, boolean minrelax, GRBVar[] vars, double[] lbpen, double[] ubpen, GRBConstr[] constrs, double[] rhspen)#
修改
GRBModel对象以创建可行性松弛。 请注意,您需要在结果上调用优化来计算实际的松弛解。可行性松弛是一种模型,当解决时,它最小化解违反原始模型的边界和线性约束的量。该方法提供了多种指定松弛的选项。
如果您指定
relaxobjtype=0,可行性松弛的目标是最小化边界和约束违规的加权幅度之和。lbpen、ubpen和rhspen参数分别指定了下界、上界和线性约束中每单位违规的成本。如果您指定
relaxobjtype=1,可行性松弛的目标是最小化边界和约束违反的加权平方和。lbpen、ubpen和rhspen参数分别指定了下界、上界和线性约束违反的平方系数。如果您指定
relaxobjtype=2,可行性松弛的目标是最小化边界和约束违规的加权计数。lbpen、ubpen和rhspen参数分别指定违反下界、上界和线性约束的成本。举个例子,如果一个带有
rhspen值p的约束被违反了2.0,它将为relaxobjtype=0的可行性松弛目标贡献2*p,为relaxobjtype=1贡献2*2*p,为relaxobjtype=2贡献p。minrelax参数是一个布尔值,用于控制创建的可行性松弛类型。如果minrelax=false,优化返回的模型会得到一个最小化违规成本的解。如果minrelax=true,优化返回的模型会找到一个最小化原始目标的解,但仅从那些最小化违规成本的解中选择。请注意,当minrelax=true时,feasRelax必须解决一个优化问题以找到最小可能的松弛,这可能会非常耗时。此方法有两个签名。较复杂的一个接受变量和约束的列表,以及与放松相应的下界、上界和约束相关的惩罚。如果变量或约束未包含在这些列表中,则相关的界限或约束可能不会被违反。较简单的签名接受一对布尔参数,
vrelax和crelax,它们指示变量界限和/或约束是否可以被违反。如果vrelax/crelax是true,则每个界限/约束分别允许被违反,并且相关的成本为1.0。有关此例程如何转换模型的示例,以及有关创建的变量和约束的更多详细信息,请参阅本节。
请注意,这是一个破坏性方法:它会修改调用它的模型。如果您不想修改原始模型,请使用
GRBModel constructor在调用此方法之前创建一个副本。创建一个可行性松弛模型。
- Parameters:
relaxobjtype – 用于寻找最小成本松弛的成本函数。
minrelax – 执行可行性松弛的类型。
vars – 允许违反其界限的变量。
lbpen – 违反变量下界的惩罚。对于参数
vars中的每个变量都有一个条目。ubpen – 违反变量上限的惩罚。参数
vars中的每个变量都有一个条目。constrs – 允许被违反的线性约束。
rhspen – 违反线性约束的惩罚。对于参数
constrs中的每个约束都有一个条目。
- Returns:
如果
minrelax为false,则返回0。如果minrelax为true,返回值是执行的松弛的目标值。如果该值小于0,则表示该方法未能创建可行性松弛。- Example:
// Compute feasibility relaxation for infeasible model if (model.Status == GRB.Status.INFEASIBLE) { GRBVar[] vars = model.GetVars(); double[] ubpen = new double[model.NumVars]; for (int i = 0; i < model.NumVars; i++) { ubpen[i] = 1.0; } model.FeasRelax(0, false, vars, null, ubpen, null, null); model.Optimize(); }
' Compute feasibility relaxation for infeasible model If model.Status = GRB.Status.INFEASIBLE Then Dim vars As GRBVar() = model.GetVars() Dim ubpen As Double() = New Double(model.NumVars) For i As Integer = 0 To model.NumVars ubpen(i) = 1.0 Next model.FeasRelax(0, false, vars, Nothing, ubpen, Nothing, Nothing) model.Optimize() End If
- double FeasRelax(int relaxobjtype, boolean minrelax, boolean vrelax, boolean crelax)#
修改
GRBModel对象以创建可行性松弛。 请注意,您需要在结果上调用优化来计算实际的松弛解。可行性松弛是一种模型,当解决时,它最小化解违反原始模型的边界和线性约束的量。该方法提供了多种指定松弛的选项。
如果您指定
relaxobjtype=0,可行性松弛的目标是最小化边界和约束违规的加权幅度之和。lbpen、ubpen和rhspen参数分别指定了下界、上界和线性约束中每单位违规的成本。如果您指定
relaxobjtype=1,可行性松弛的目标是最小化边界和约束违反的加权平方和。lbpen、ubpen和rhspen参数分别指定了下界、上界和线性约束违反的平方系数。如果您指定
relaxobjtype=2,可行性松弛的目标是最小化边界和约束违规的加权计数。lbpen、ubpen和rhspen参数分别指定违反下界、上界和线性约束的成本。举个例子,如果一个带有
rhspen值p的约束被违反了2.0,它将为relaxobjtype=0的可行性松弛目标贡献2*p,为relaxobjtype=1贡献2*2*p,为relaxobjtype=2贡献p。minrelax参数是一个布尔值,用于控制创建的可行性松弛类型。如果minrelax=false,优化返回的模型会得到一个最小化违规成本的解。如果minrelax=true,优化返回的模型会找到一个最小化原始目标的解,但仅从那些最小化违规成本的解中选择。请注意,当minrelax=true时,feasRelax必须解决一个优化问题以找到最小可能的松弛,这可能会非常耗时。此方法有两个签名。较复杂的一个接受变量和约束的列表,以及与放松相应的下界、上界和约束相关的惩罚。如果变量或约束未包含在这些列表中,则相关的界限或约束可能不会被违反。较简单的签名接受一对布尔参数,
vrelax和crelax,它们指示变量界限和/或约束是否可以被违反。如果vrelax/crelax是true,则每个界限/约束分别允许被违反,并且相关成本为1.0。有关此例程如何转换模型的示例,以及有关创建的变量和约束的更多详细信息,请参阅本节。
请注意,这是一个破坏性方法:它会修改调用它的模型。如果您不想修改原始模型,请使用
GRBModel constructor在调用此方法之前创建一个副本。创建可行性松弛模型的简化方法。
- Parameters:
relaxobjtype – 用于寻找最小成本松弛的成本函数。
minrelax – 执行可行性松弛的类型。
vrelax – 表示是否可以放宽变量边界(对于任何违规行为,成本为1.0)。
crelax – 表示线性约束是否可以放宽(对于任何违规行为,成本为1.0)。
- Returns:
如果
minrelax为false,则返回0。如果minrelax为true,返回值是执行的松弛的目标值。如果该值小于0,则表示该方法未能创建可行性松弛。- Example:
// Compute feasibility relaxation for infeasible model if (model.Status == GRB.Status.INFEASIBLE) { model.FeasRelax(1, false, false, true); model.Optimize(); }
' Compute feasibility relaxation for infeasible model If model.Status = GRB.Status.INFEASIBLE Then model.FeasRelax(1, false, false, true) model.Optimize() End If
- GRBModel FixedModel()#
创建与MIP模型关联的固定模型。 MIP模型中必须有一个解决方案(例如通过调用
优化方法获得)或MIP起始点。如果没有可用的解决方案,则使用StartNumber指定的MIP起始点。在模型中,每个整数变量都被固定为该变量在MIP解或MIP起始值中取的值。此外,连续变量可能会被固定以满足SOS或一般约束。结果是模型不再具有整数约束、SOS约束或一般约束。
注意
虽然固定问题始终是一个连续模型,但它可能包含非凸二次目标或非凸二次约束。因此,它仍然可以使用MIP算法来解决。
注意
在多目标模型中,除了第一个目标外,所有其他目标都被忽略。所有场景(如果有的话)也同样被忽略。
- Returns:
修复了与调用对象关联的模型。
- Example:
GRBModel fixedModel = model.FixedModel();
Dim fixedModel As GRBModel = model.FixedModel()
- void ConvertToFixed()#
将MIP模型转换为连续的模型,就地转换。 必须在MIP模型中提供解决方案(例如通过调用
优化方法获得)或MIP起始点。如果没有可用的解决方案,则使用StartNumber指定的MIP起始点。在模型中,每个整数变量都被固定为该变量在MIP解或MIP起始值中取的值。此外,连续变量可能会被固定以满足SOS或一般约束。结果是模型不再具有整数约束、SOS约束或一般约束。
注意
虽然固定问题始终是一个连续模型,但它可能包含非凸二次目标或非凸二次约束。因此,它仍然可以使用MIP算法来解决。
注意
如果转换后的模型包含多个目标或场景,或者模型包含并发环境或调优环境,则会引发错误。
- Example:
model.ConvertToFixed();
model.ConvertToFixed()
- double Get(GRB.DoubleParam param)#
查询一个双精度值参数的值。
- Parameters:
param – 正在查询的参数。
- Returns:
请求参数的当前值。
- Example:
// Get value of TimeLimit parameter double val = model.Get(GRB.DoubleParam.TimeLimit);
' Get value of TimeLimit parameter Dim val As Double = model.Get(GRB.DoubleParam.TimeLimit)
- int Get(GRB.IntParam param)#
查询一个整数值参数的值。
- Parameters:
param – 正在查询的参数。
- Returns:
请求参数的当前值。
- Example:
// Get value of PumpPasses parameter int val = model.Get(GRB.IntParam.PumpPasses);
' Get value of PumpPasses parameter Dim val As Integer = model.Get(GRB.IntParam.PumpPasses)
- string Get(GRB.StringParam param)#
查询字符串值参数的值。
- Parameters:
param – 正在查询的参数。
- Returns:
请求参数的当前值。
- Example:
// Get value of LogFile parameter string val = model.Get(GRB.StringParam.LogFile);
' Get value of LogFile parameter Dim val As String = model.Get(GRB.StringParam.LogFile)
- char[] Get(GRB.CharAttr attr, GRBVar[] vars)#
查询一个字符型变量属性的变量数组。
- Parameters:
attr – 被查询的属性。
vars – 正在查询其属性值的变量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable type attribute values GRBVar[] vars = model.GetVars(); char[] vtype = model.Get(GRB.CharAttr.VType, vars);
' Get variable type attribute values Dim vars As GRBVar() = model.GetVars() Dim vtype As Char() = model.Get(GRB.CharAttr.VType, vars)
- char[] Get(GRB.CharAttr attr, GRBVar[] vars, int start, int len)#
查询一个字符型变量属性的子数组变量。
- Parameters:
attr – 被查询的属性。
vars – 一个一维变量数组,其属性值正在被查询。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable type attribute values for variables indexed from 0 to 2 GRBVar[] vars = model.GetVars(); char[] vtype = model.Get(GRB.CharAttr.VType, vars, 0, 3);
' Get variable type attribute values for variables indexed from 0 to 2 Dim vars As GRBVar() = model.GetVars() Dim vtype As Char() = model.Get(GRB.CharAttr.VType, vars, 0, 3)
- char[,] Get(GRB.CharAttr attr, GRBVar[,] vars)#
查询一个二维变量数组的字符值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个二维数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable type attribute values GRBVar[,] vars = new GRBVar[10, 10]; // ... char[,] vtype = model.Get(GRB.CharAttr.VType, vars);
' Get variable type attribute values Dim vars As GRBVar(,) = New GRBVar(10, 10) ' ... Dim vtype As Char(,) = model.Get(GRB.CharAttr.VType, vars)
- char[,,] Get(GRB.CharAttr attr, GRBVar[,,] vars)#
查询一个三维变量数组的字符型变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个三维变量数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable type attribute values GRBVar[,,] vars = new GRBVar[10, 10, 10]; // ... char[,,] vtype = model.Get(GRB.CharAttr.VType, vars);
' Get variable type attribute values Dim vars As GRBVar(,,) = New GRBVar(10, 10, 10) ' ... Dim vtype As Char(,,) = model.Get(GRB.CharAttr.VType, vars)
- char[] Get(GRB.CharAttr attr, GRBConstr[] constrs)#
查询一组约束的字符值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 正在查询其属性值的约束。
- Returns:
每个输入约束所请求属性的当前值。
- Example:
// Get sense attribute values for all linear constraints GRBConstr[] constrs = model.GetConstrs(); char[] sense = model.Get(GRB.CharAttr.Sense, constrs);
' Get sense attribute values for all linear constraints Dim constrs As GRBConstr() = model.GetConstrs() Dim sense As Char() = model.Get(GRB.CharAttr.Sense, constrs)
- char[] Get(GRB.CharAttr attr, GRBConstr[] constrs, int start, int len)#
查询约束子数组的字符值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个一维的约束数组,其属性值正在被查询。
start – 列表中感兴趣的第一个约束的索引。
len – 约束的数量。
- Returns:
每个输入约束所请求属性的当前值。
- Example:
// Get linear constraint sense attribute values for constraints indexed from 0 to 2 GRBConstr[] constrs = model.GetConstrs(); char[] sense = model.Get(GRB.CharAttr.Sense, constrs, 0, 3);
' Get linear constraint sense attribute values for constraints indexed from 0 to 2 Dim constrs As GRBConstr() = model.GetConstrs() Dim sense As Char() = model.Get(GRB.CharAttr.Sense, constrs, 0, 3)
- char[,] Get(GRB.CharAttr attr, GRBConstr[,] constrs)#
查询一个二维约束数组的字符值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个二维的约束数组,其属性值正在被查询。
- Returns:
每个输入约束所请求属性的当前值。
- Example:
// Get linear constraint sense attribute values GRBConstr[,] constrs = new GRBConstr[10, 10]; // ... char[,] sense = model.Get(GRB.CharAttr.Sense, constrs);
' Get linear constraint sense attribute values Dim constrs As GRBConstr(,) = New GRBConstr(10, 10) ' ... Dim sense As Char(,) = model.Get(GRB.CharAttr.Sense, constrs)
- char[,,] Get(GRB.CharAttr attr, GRBConstr[,,] constrs)#
查询一个三维约束数组的字符值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个三维约束数组,其属性值正在被查询。
- Returns:
每个输入约束所请求属性的当前值。
- Example:
// Get linear constraint sense attribute values GRBConstr[,,] constrs = new GRBConstr[10, 10, 10]; // ... char[,,] sense = model.Get(GRB.CharAttr.Sense, constrs);
' Get linear constraint sense attribute values Dim constrs As GRBConstr(,,) = New GRBConstr(10, 10, 10) ' ... Dim sense As Char(,,) = model.Get(GRB.CharAttr.Sense, constrs)
- char[] Get(GRB.CharAttr attr, GRBQConstr[] qconstrs)#
查询一组二次约束的字符值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get sense attribute values for all quadratic constraints GRBQConstr[] constrs = model.GetQConstrs(); char[] qsense = model.Get(GRB.CharAttr.QCSense, constrs);
' Get sense attribute values for all quadratic constraints Dim constrs As GRBQConstr() = model.GetQConstrs() Dim qsense As Char() = model.Get(GRB.CharAttr.QCSense, constrs)
- char[] Get(GRB.CharAttr attr, GRBQConstr[] qconstrs, int start, int len)#
查询一个字符值的二次约束属性,用于二次约束的子数组。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个一维数组,包含正在查询属性值的二次约束。
start – 列表中感兴趣的第一个二次约束的索引。
len – 二次约束的数量。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get sense attribute values for quadratic constraints indexed from 0 to 2 GRBQConstr[] constrs = model.GetQConstrs(); char[] qsense = model.Get(GRB.CharAttr.QCSense, constrs, 0, 3);
' Get sense attribute values for quadratic constraints indexed from 0 to 2 Dim constrs As GRBQConstr() = model.GetQConstrs() Dim qsense As Char() = model.Get(GRB.CharAttr.QCSense, constrs, 0, 3)
- char[,] Get(GRB.CharAttr attr, GRBQConstr[,] qconstrs)#
查询一个二维二次约束数组的字符值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个二维数组,包含正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get sense attribute values GRBQConstr[,] constrs = new GRBQConstr[10, 10]; // ... char[,] qsense = model.Get(GRB.CharAttr.QCSense, constrs);
' Get sense attribute values Dim constrs As GRBQConstr(,) = New GRBQConstr(10, 10) ' ... Dim qsense As Char(,) = model.Get(GRB.CharAttr.QCSense, constrs)
- char[,,] Get(GRB.CharAttr attr, GRBQConstr[,,] qconstrs)#
查询一个字符值的二次约束属性,用于一个三维的二次约束数组。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个三维数组,包含正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get sense attribute values GRBQConstr[,,] constrs = new GRBQConstr[10, 10, 10]; // ... char[,,] qsense = model.Get(GRB.CharAttr.QCSense, constrs);
' Get sense attribute values Dim constrs As GRBQConstr(,,) = New GRBQConstr(10, 10, 10) ' ... Dim qsense As Char(,,) = model.Get(GRB.CharAttr.QCSense, constrs)
- char[,,] Get(GRB.CharAttr attr, GRBQConstr[,,] qconstrs)#
- double Get(GRB.DoubleAttr attr)#
查询双精度模型属性的值。
- Parameters:
attr – 被查询的属性。
- Returns:
请求属性的当前值。
- Example:
// Get value ObjVal attribute double val = model.Get(GRB.DoubleAttr.ObjVal);
' Get value ObjVal attribute Dim val As Double = model.Get(GRB.DoubleAttr.ObjVal)
- double[] Get(GRB.DoubleAttr attr, GRBVar[] vars)#
查询一组变量的双精度值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 正在查询其属性值的变量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get lower bound attribute values of all variables GRBVar[] vars = model.GetVars(); double[] lb = model.Get(GRB.DoubleAttr.LB, vars);
' Get lower bound attribute values of all variables Dim vars As GRBVar() = model.GetVars() Dim lb As Double() = model.Get(GRB.DoubleAttr.LB, vars)
- double[] Get(GRB.DoubleAttr attr, GRBVar[] vars, int start, int len)#
查询变量子数组的双精度值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个一维数组,包含正在查询其属性值的变量。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get lower bound attribute values for variables indexed from 0 to 2 GRBVar[] vars = model.GetVars(); double[] lb = model.Get(GRB.DoubleAttr.LB, vars, 0, 3);
' Get lower bound attribute values for variables indexed from 0 to 2 Dim vars As GRBVar() = model.GetVars() Dim lb As Double() = model.Get(GRB.DoubleAttr.LB, vars, 0, 3)
- double[,] Get(GRB.DoubleAttr attr, GRBVar[,] vars)#
查询一个二维数组变量的双值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个二维变量数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get lower bound attribute values GRBVar[,] vars = new GRBVar[10, 10]; // ... double[,] lb = model.Get(GRB.DoubleAttr.LB, vars);
' Get lower bound attribute values Dim vars As GRBVar(,) = New GRBVar(10, 10) ' ... Dim lb As Double(,) = model.Get(GRB.DoubleAttr.LB, vars)
- double[,,] Get(GRB.DoubleAttr attr, GRBVar[,,] vars)#
查询一个三维变量数组的双精度值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个三维变量数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get lower bound attribute values GRBVar[,,] vars = new GRBVar[10, 10, 10]; // ... double[,,] lb = model.Get(GRB.DoubleAttr.LB, vars);
' Get lower bound attribute values Dim vars As GRBVar(,,) = New GRBVar(10, 10, 10) ' ... Dim lb As Double(,,) = model.Get(GRB.DoubleAttr.LB, vars)
- double[] Get(GRB.DoubleAttr attr, GRBConstr[] constrs)#
为约束数组查询一个双值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 正在查询其属性值的约束。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get RHS attribute values of all linear constraints GRBConstr[] constrs = model.GetConstrs(); double[] rhs = model.Get(GRB.DoubleAttr.RHS, constrs);
' Get RHS attribute values of all linear constraints Dim constrs As GRBConstr() = model.GetConstrs() Dim rhs As Double() = model.Get(GRB.DoubleAttr.RHS, constrs)
- double[] Get(GRB.DoubleAttr attr, GRBConstr[] constrs, int start, int len)#
查询约束子数组的双值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个一维的约束数组,其属性值正在被查询。
start – 列表中感兴趣的第一个约束。
len – 约束的数量。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get RHS attribute values for linear constraints indexed from 0 to 2 GRBConstr[] constrs = model.GetConstrs(); double[] rhs = model.Get(GRB.DoubleAttr.RHS, constrs, 0, 3);
' Get RHS attribute values for linear constraints indexed from 0 to 2 Dim constrs As GRBConstr() = model.GetConstrs() Dim rhs As Double() = model.Get(GRB.DoubleAttr.RHS, constrs, 0, 3)
- double[,] Get(GRB.DoubleAttr attr, GRBConstr[,] constrs)#
查询一个二维约束数组的双值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个二维数组的约束条件,其属性值正在被查询。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get RHS attribute values GRBConstr[,] constrs = new GRBConstr[10, 10]; // ... double[,] rhs = model.Get(GRB.DoubleAttr.RHS, constrs);
' Get RHS attribute values Dim constrs As GRBConstr(,) = New GRBConstr(10, 10) ' ... Dim rhs As Double(,) = model.Get(GRB.DoubleAttr.RHS, constrs)
- double[,,] Get(GRB.DoubleAttr attr, GRBConstr[,,] constrs)#
查询一个三维约束数组的双值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个三维约束数组,其属性值正在被查询。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get RHS attribute values GRBConstr[,,] constrs = new GRBConstr[10, 10, 10]; // ... double[,,] rhs = model.Get(GRB.DoubleAttr.RHS, constrs);
' Get RHS attribute values Dim constrs As GRBConstr(,,) = New GRBConstr(10, 10, 10) ' ... Dim rhs As Double(,,) = model.Get(GRB.DoubleAttr.RHS, constrs)
- double[] Get(GRB.DoubleAttr attr, GRBQConstr[] qconstrs)#
查询一组二次约束的双值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get RHS attribute values of all quadratic constraints GRBQConstr[] constrs = model.GetQConstrs(); double[] qrhs = model.Get(GRB.DoubleAttr.QCRHS, constrs);
' Get RHS attribute values of all quadratic constraints Dim constrs As GRBQConstr() = model.GetQConstrs() Dim qcrs As Double() = model.Get(GRB.DoubleAttr.QCRHS, constrs)
- double[] Get(GRB.DoubleAttr attr, GRBQConstr[] qconstrs, int start, int len)#
查询二次约束子数组的双值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个一维数组,包含正在查询其属性值的二次约束。
start – 列表中感兴趣的第一个二次约束。
len – 二次约束的数量。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get RHS attribute values for quadratic constraints indexed from 0 to 2 GRBQConstr[] constrs = model.GetQConstrs(); double[] qrhs = model.Get(GRB.DoubleAttr.QCRHS, constrs, 0, 3);
' Get RHS attribute values for quadratic constraints indexed from 0 to 2 Dim constrs As GRBQConstr() = model.GetQConstrs() Dim qcrs As Double() = model.Get(GRB.DoubleAttr.QCRHS, constrs, 0, 3)
- double[,] Get(GRB.DoubleAttr attr, GRBQConstr[,] qconstrs)#
查询一个二维二次约束数组的双值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个二维数组,包含正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get RHS attribute values GRBQConstr[,] constrs = new GRBQConstr[10, 10]; // .. double[,] qrhs = model.Get(GRB.DoubleAttr.QCRHS, constrs);
' Get RHS attribute values Dim constrs As GRBQConstr(,) = New GRBQConstr(10, 10) ' .. Dim qrhs As Double(,) = model.Get(GRB.DoubleAttr.QCRHS, constrs)
- double[,,] Get(GRB.DoubleAttr attr, GRBQConstr[,,] qconstrs)#
查询一个三维二次约束数组的双值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个三维数组,包含正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get RHS attribute values GRBQConstr[,,] constrs = new GRBQConstr[10, 10, 10]; // .. double[,,] qrhs = model.Get(GRB.DoubleAttr.QCRHS, constrs);
' Get RHS attribute values Dim constrs As GRBQConstr(,,) = New GRBQConstr(10, 10, 10) ' .. Dim qrhs As Double(,,) = model.Get(GRB.DoubleAttr.QCRHS, constrs)
- int Get(GRB.IntAttr attr)#
查询一个整数值模型属性的值。
- Parameters:
attr – 被查询的属性。
- Returns:
请求属性的当前值。
- Example:
// Get number of variables in the model int numvars = model.Get(GRB.IntAttr.NumVars);
' Get number of variables in the model Dim numvars As Integer = model.Get(GRB.IntAttr.NumVars)
- int[] Get(GRB.IntAttr attr, GRBVar[] vars)#
查询一组变量的整数值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 正在查询其属性值的变量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get VBasis attribute values of all variables GRBVar[] vars = model.GetVars(); int[] vbasis = model.Get(GRB.IntAttr.VBasis, vars);
' Get VBasis attribute values of all variables Dim vars As GRBVar() = model.GetVars() Dim vbasis As Integer() = model.Get(GRB.IntAttr.VBasis, vars)
- int[] Get(GRB.IntAttr attr, GRBVar[] vars, int start, int len)#
查询变量子数组的整数值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个一维数组,包含正在查询其属性值的变量。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get VBasis attribute values for variables indexed from 0 to 2 GRBVar[] vars = model.GetVars(); int[] vbasis = model.Get(GRB.IntAttr.VBasis, vars, 0, 3);
' Get VBasis attribute values for variables indexed from 0 to 2 Dim vars As GRBVar() = model.GetVars() Dim vbasis As Integer() = model.Get(GRB.IntAttr.VBasis, vars, 0, 3)
- int[,] Get(GRB.IntAttr attr, GRBVar[,] vars)#
查询一个二维变量数组的整数值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个二维变量数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get VBasis attribute values GRBVar[,] vars = new GRBVar[10, 10]; // ... int[,] vbasis = model.Get(GRB.IntAttr.VBasis, vars);
' Get VBasis attribute values Dim vars As GRBVar(,) = new GRBVar(10, 10) ' ... Dim vbasis As Integer(,) = model.Get(GRB.IntAttr.VBasis, vars)
- int[,,] Get(GRB.IntAttr attr, GRBVar[,,] vars)#
查询一个三维变量数组的整数值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个三维变量数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get VBasis attribute values GRBVar[,,] vars = new GRBVar[10, 10, 10]; // ... int[,,] vbasis = model.Get(GRB.IntAttr.VBasis, vars);
' Get VBasis attribute values Dim vars As GRBVar(,,) = new GRBVar(10, 10, 10) ' ... Dim vbasis As Integer(,,) = model.Get(GRB.IntAttr.VBasis, vars)
- int[] Get(GRB.IntAttr attr, GRBConstr[] constrs)#
查询一组约束的整数值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 正在查询其属性值的约束。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get CBasis attribute values of all linear constraints GRBConstr[] constrs = model.GetConstrs(); int[] cbasis = model.Get(GRB.IntAttr.CBasis, constrs);
' Get CBasis attribute values of all linear constraints Dim constrs As GRBConstr() = model.GetConstrs() Dim cbasis As Integer() = model.Get(GRB.IntAttr.CBasis, constrs)
- int[] Get(GRB.IntAttr attr, GRBConstr[] constrs, int start, int len)#
查询约束子数组的整数值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个一维的约束数组,其属性值正在被查询。
start – 列表中感兴趣的第一个约束的索引。
len – 约束的数量。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get CBasis attribute values for linear constraints indexed from 0 to 2 GRBConstr[] constrs = model.GetConstrs(); int[] cbasis = model.Get(GRB.IntAttr.CBasis, constrs, 0, 3);
' Get CBasis attribute values for linear constraints indexed from 0 to 2 Dim constrs As GRBConstr() = model.GetConstrs() Dim cbasis As Integer() = model.Get(GRB.IntAttr.CBasis, constrs, 0, 3)
- int[,] Get(GRB.IntAttr attr, GRBConstr[,] constrs)#
查询一个二维约束数组的整数值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个二维数组的约束条件,其属性值正在被查询。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get CBasis attribute values GRBConstr[,] constrs = new GRBConstr[10, 10]; // ... int[,] cbasis = model.Get(GRB.IntAttr.CBasis, constrs);
' Get CBasis attribute values Dim constrs As GRBConstr(,) = New GRBConstr(10, 10) ' ... Dim cbasis As Integer(,) = model.Get(GRB.IntAttr.CBasis, constrs)
- int[,,] Get(GRB.IntAttr attr, GRBConstr[,,] constrs)#
查询一个三维约束数组的整数值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个三维约束数组,其属性值正在被查询。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get CBasis attribute values GRBConstr[,,] constrs = new GRBConstr[10, 10, 10]; // ... int[,,] cbasis = model.Get(GRB.IntAttr.CBasis, constrs);
' Get CBasis attribute values Dim constrs As GRBConstr(,,) = New GRBConstr(10, 10, 10) ' ... Dim cbasis As Integer(,,) = model.Get(GRB.IntAttr.CBasis, constrs)
- string Get(GRB.StringAttr attr)#
查询字符串值模型属性的值。
- Parameters:
attr – 被查询的属性。
- Returns:
请求属性的当前值。
- Example:
// Get ModelName attribute string modelname = model.Get(GRB.StringAttr.ModelName);
' Get ModelName attribute Dim modelname As String = model.Get(GRB.StringAttr.ModelName)
- string[] Get(GRB.StringAttr attr, GRBVar[] vars)#
查询一个字符串值变量属性的变量数组。
- Parameters:
attr – 被查询的属性。
vars – 正在查询其属性值的变量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable name attribute values of all variables GRBVar[] vars = model.GetVars(); string[] varNames = model.Get(GRB.StringAttr.VarName, vars);
' Get variable name attribute values of all variables Dim vars As GRBVar() = model.GetVars() Dim varNames As String() = model.Get(GRB.StringAttr.VarName, vars)
- string[] Get(GRB.StringAttr attr, GRBVar[] vars, int start, int len)#
查询一个字符串值变量属性的子数组变量。
- Parameters:
attr – 被查询的属性。
vars – 一个一维数组,包含正在查询其属性值的变量。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable name attribute values for variables indexed from 0 to 2 GRBVar[] vars = model.GetVars(); string[] varNames = model.Get(GRB.StringAttr.VarName, vars, 0, 3);
' Get variable name attribute values for variables indexed from 0 to 2 Dim vars As GRBVar() = model.GetVars() Dim varNames As String() = model.Get(GRB.StringAttr.VarName, vars, 0, 3)
- string[,] Get(GRB.StringAttr attr, GRBVar[,] vars)#
查询一个二维数组变量的字符串值属性。
- Parameters:
attr – 被查询的属性。
vars – 一个二维变量数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable name attribute GRBVar[,] vars = new GRBVar[10, 10]; // ... string[,] varNames = model.Get(GRB.StringAttr.VarName, vars);
' Get variable name attribute Dim vars As GRBVar(,) = new GRBVar(10, 10) ' ... Dim varNames As String(,) = model.Get(GRB.StringAttr.VarName, vars)
- string[,,] Get(GRB.StringAttr attr, GRBVar[,,] vars)#
查询一个三维变量数组的字符串值变量属性。
- Parameters:
attr – 被查询的属性。
vars – 一个三维变量数组,其属性值正在被查询。
- Returns:
每个输入变量的请求属性的当前值。
- Example:
// Get variable name attribute GRBVar[,,] vars = new GRBVar[10, 10, 10]; // ... string[,,] varNames = model.Get(GRB.StringAttr.VarName, vars);
' Get variable name attribute Dim vars As GRBVar(,,) = new GRBVar(10, 10, 10) ' ... Dim varNames As String(,,) = model.Get(GRB.StringAttr.VarName, vars)
- string[] Get(GRB.StringAttr attr, GRBConstr[] constrs)#
查询一个字符串值约束属性的约束数组。
- Parameters:
attr – 被查询的属性。
constrs – 正在查询其属性值的约束。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get constraint name attribute values of all linear constraints GRBConstr[] constrs = model.GetConstrs(); string[] constrNames = model.Get(GRB.StringAttr.ConstrName, constrs);
' Get constraint name attribute values of all linear constraints Dim constrs As GRBConstr() = model.GetConstrs() Dim constrNames As String() = model.Get(GRB.StringAttr.ConstrName, constrs)
- string[] Get(GRB.StringAttr attr, GRBConstr[] constrs, int start, int len)#
查询约束的子数组的字符串值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个一维的约束数组,其属性值正在被查询。
start – 列表中感兴趣的第一个约束的索引。
len – 约束的数量。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get constraint name attribute values for linear constraints indexed from 0 to 2 GRBConstr[] constrs = model.GetConstrs(); string[] constrNames = model.Get(GRB.StringAttr.ConstrName, constrs, 0, 3);
' Get constraint name attribute values for linear constraints indexed from 0 to 2 Dim constrs As GRBConstr() = model.GetConstrs() Dim constrNames As String() = model.Get(GRB.StringAttr.ConstrName, constrs, 0, 3)
- string[,] Get(GRB.StringAttr attr, GRBConstr[,] constrs)#
查询一个二维约束数组的字符串值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个二维数组的约束条件,其属性值正在被查询。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get constraint name attribute values GRBConstr[,] constrs = new GRBConstr[10, 10]; // ... string[,] constrNames = model.Get(GRB.StringAttr.ConstrName, constrs);
' Get constraint name attribute values Dim constrs As GRBConstr(,) = New GRBConstr(10, 10) ' ... Dim constrNames As String(,) = model.Get(GRB.StringAttr.ConstrName, constrs)
- string[,,] Get(GRB.StringAttr attr, GRBConstr[,,] constrs)#
查询一个三维约束数组的字符串值约束属性。
- Parameters:
attr – 被查询的属性。
constrs – 一个三维约束数组,其属性值正在被查询。
- Returns:
每个输入约束的请求属性的当前值。
- Example:
// Get constraint name attribute values GRBConstr[,,] constrs = new GRBConstr[10, 10, 10]; // ... string[,,] constrNames = model.Get(GRB.StringAttr.ConstrName, constrs);
' Get constraint name attribute values Dim constrs As GRBConstr(,,) = New GRBConstr(10, 10, 10) ' ... Dim constrNames As String(,,) = model.Get(GRB.StringAttr.ConstrName, constrs)
- string[] Get(GRB.StringAttr attr, GRBQConstr[] qconstrs)#
查询一组二次约束的字符串值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get constraint name values of all quadratic constraints GRBQConstr[] constrs = model.GetQConstrs(); string[] constrNames = model.Get(GRB.StringAttr.QCName, constrs);
' Get constraint name values of all quadratic constraints Dim constrs As GRBQConstr() = model.GetQConstrs() Dim constrNames As String() = model.Get(GRB.StringAttr.QCName, constrs)
- string[] Get(GRB.StringAttr attr, GRBQConstr[] qconstrs, int start, int len)#
查询一个字符串值的二次约束属性,用于二次约束的子数组。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个一维数组,包含正在查询其属性值的二次约束。
start – 列表中感兴趣的第一个二次约束的索引。
len – 二次约束的数量。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get constraint name values for quadratic constraints indexed from 0 to 2 GRBQConstr[] constrs = model.GetQConstrs(); string[] constrNames = model.Get(GRB.StringAttr.QCName, constrs, 0, 3);
' Get constraint name values for quadratic constraints indexed from 0 to 2 Dim constrs As GRBQConstr() = model.GetQConstrs() Dim constrNames As String() = model.Get(GRB.StringAttr.QCName, constrs, 0, 3)
- string[,] Get(GRB.StringAttr attr, GRBQConstr[,] qconstrs)#
查询一个二维二次约束数组的字符串值二次约束属性。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个二维数组,包含正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get constraint name values GRBQConstr[,] constrs = new GRBQConstr[10, 10]; // ... string[,] constrNames = model.Get(GRB.StringAttr.QCName, constrs);
' Get constraint name values Dim constrs As GRBQConstr(,) = New GRBQConstr(10, 10) ' ... Dim constrNames As String(,) = model.Get(GRB.StringAttr.QCName, constrs)
- string[,,] Get(GRB.StringAttr attr, GRBQConstr[,,] qconstrs)#
查询一个字符串值的二次约束属性,用于一个三维数组的二次约束。
- Parameters:
attr – 被查询的属性。
qconstrs – 一个三维数组,包含正在查询其属性值的二次约束。
- Returns:
每个输入二次约束的请求属性的当前值。
- Example:
// Get constraint name values GRBQConstr[,,] constrs = new GRBQConstr[10, 10, 10]; // ... string[,,] constrNames = model.Get(GRB.StringAttr.QCName, constrs);
' Get constraint name values Dim constrs As GRBQConstr(,,) = New GRBQConstr(10, 10, 10) ' ... Dim constrNames As String(,,) = model.Get(GRB.StringAttr.QCName, constrs)
- string[,,] Get(GRB.StringAttr attr, GRBQConstr[,,] qconstrs)#
- double GetCoeff(GRBConstr constr, GRBVar var)#
查询线性约束
constr中变量var的系数(注意结果可能为零)。- Parameters:
constr – 请求的约束条件。
var – 请求的变量。
- Returns:
请求系数的当前值。
- Example:
// Get coefficient of variable x in constraint c1 double coeff = model.GetCoeff(c1, x);
' Get coefficient of variable x in constraint c1 Dim coeff As Double = model.GetCoeff(c1, x)
- GRBColumn GetCol(GRBVar var)#
检索变量参与的约束列表及其相关系数。结果以
GRBColumn对象的形式返回。- Parameters:
var – 感兴趣的变量。
- Returns:
一个
GRBColumn对象,用于捕获变量参与的约束集。- Example:
// Get column of coefficient and constraint pairs for variable x GRBColumn col = model.GetCol(x);
' Get column of coefficient and constraint pairs for variable x Dim col As GRBColumn = model.GetCol(x)
- GRBEnv GetConcurrentEnv(int num)#
为模型创建/检索并发环境。
此方法提供了对并发优化器的细粒度控制。 通过创建您自己的并发环境并在这些环境上设置适当的参数(例如,方法参数),您可以精确控制并发优化器采用的策略。例如,如果您创建两个并发环境,并将方法设置为一个使用原始单纯形法,另一个使用对偶单纯形法,后续的并发优化器运行将使用这两种单纯形算法,而不是默认选择。
请注意,您必须创建连续编号的并发环境,从
num=0开始。例如,如果您想要三个并发环境,它们必须编号为0、1和2。一旦你创建了并发环境,它们将用于该模型上的所有后续并发优化。使用
DiscardConcurrentEnvs来恢复到默认的并发优化器行为。- Parameters:
num – 并发环境数量。
- Returns:
模型的并发环境。
- Example:
env0 = model.GetConcurrentEnv(0); env1 = model.GetConcurrentEnv(1); env0.Set(GRB.IntParam.Method, 0); env1.Set(GRB.IntParam.Method, 1); model.Optimize(); model.DiscardConcurrentEnvs();
env0 = model.GetConcurrentEnv(0) env1 = model.GetConcurrentEnv(1) env0.Set(GRB.IntParam.Method, 0) env1.Set(GRB.IntParam.Method, 1) model.Optimize() model.DiscardConcurrentEnvs()
- GRBConstr GetConstrByName(string name)#
根据名称检索线性约束。如果多个线性约束具有相同的名称,此方法将任意选择一个。
- Parameters:
name – 所需线性约束的名称。
- Returns:
请求的线性约束。
- Example:
// Retrieve linear constraint named "constr1" GRBConstr c1 = model.GetConstrByName("constr1");
' Retrieve linear constraint named "constr1" Dim c1 As GRBConstr = model.GetConstrByName("constr1")
- GRBConstr[] GetConstrs()#
检索模型中的所有线性约束的数组。
- Returns:
模型中的所有线性约束。
- Example:
// Retrieve all linear constraints GRBConstr[] constrs = model.GetConstrs();
' Retrieve all linear constraints Dim constrs As GRBConstr() = model.GetConstrs()
- void GetGenConstrMax(GRBGenConstr genc, out GRBVar resvar, out GRBVar[] vars, out double constant)#
检索与类型为MAX的一般约束相关的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrMax以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
resvar – 存储约束的结果变量。
vars – 存储约束的操作数变量数组。
constant – 存储约束的额外常数操作数。
- Example:
GRBVar resvar; GRBVar[] vars; double constant; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_MAX) { // Retrieve data for given max constraint model.GetGenConstrMax(genc, out resvar, out vars, out constant); }
Dim resvar As GRBVar Dim vars As GRBVar() Dim constant As Double = 0.0 ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_MAX Then ' Retrieve data for given max constraint model.GetGenConstrMax(genc, resvar, vars, constant ) End If
- void GetGenConstrMin(GRBGenConstr genc, out GRBVar resvar, out GRBVar[] vars, out double constant)#
检索与MIN类型的通用约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
另请参阅
AddGenConstrMin以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
resvar – 存储约束的结果变量。
vars – 存储约束的操作数变量数组。
constant – 存储约束的额外常数操作数。
- Example:
GRBVar resvar; GRBVar[] vars; double constant; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_MIN) { // Retrieve data for given min constraint model.GetGenConstrMin(genc, out resvar, out vars, out constant); }
Dim resvar As GRBVar Dim vars As GRBVar() Dim constant As Double = 0.0 ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_MIN Then ' Retrieve data for given min constraint model.GetGenConstrMin(genc, resvar, vars, constant) End If
- void GetGenConstrAbs(GRBGenConstr genc, out GRBVar resvar, out GRBVar argvar)#
检索与类型为ABS的一般约束相关的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
另请参阅
AddGenConstrAbs以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
resvar – 存储约束的结果变量。
argvar – 存储约束的参数变量。
- Example:
GRBVar resvar; GRBVar argvar; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_ABS) { // Retrieve data for given abs constraint model.GetGenConstrAbs(genc, out resvar, out argvar); }
Dim resvar As GRBVar Dim argvar As GRBVar ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_ABS Then ' Retrieve data for given abs constraint model.GetGenConstrAbs(genc, resvar, argvar) End If
- void GetGenConstrAnd(GRBGenConstr genc, out GRBVar resvar, out GRBVar[] vars)#
检索与类型为AND的通用约束相关联的数据。 为不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
另请参阅
AddGenConstrAnd以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
resvar – 存储约束的结果变量。
vars – 存储约束的操作数变量数组。
- Example:
GRBVar resvar; GRBVar[] vars; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_AND) { // Retrieve data for given AND constraint model.GetGenConstrAnd(genc, out resvar, out vars); }
Dim resvar As GRBVar Dim vars As GRBVar() ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_AND Then ' Retrieve data for given AND constraint model.GetGenConstrAnd(genc, resvar, vars) End If
- void GetGenConstrOr(GRBGenConstr genc, out GRBVar resvar, out GRBVar[] vars)#
检索与OR类型的一般约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
另请参阅
AddGenConstrOr以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
resvar – 存储约束的结果变量。
vars – 存储约束的操作数变量数组。
- Example:
GRBVar resvar; GRBVar[] vars; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_OR) { // Retrieve data for given OR constraint model.GetGenConstrOr(genc, out resvar, out vars); }
Dim resvar As GRBVar Dim vars As GRBVar() ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_OR Then ' Retrieve data for given OR constraint model.GetGenConstrOr(genc, resvar, vars) End If
- void GetGenConstrNorm(GRBGenConstr genc, out GRBVar resvar, out GRBVar[] vars, out double which)#
检索与类型为NORM的一般约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrNorm以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
resvar – 存储约束的结果变量。
vars – 存储约束的操作数变量数组。
which – 存储范数类型(可能的值为0、1、2或GRB.INFINITY)。
- Example:
GRBVar resvar; GRBVar[] vars; double which; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_NORM) { // Retrieve data for given norm constraint model.GetGenConstrNorm(genc, out resvar, out vars, out which); }
Dim resvar As GRBVar Dim vars As GRBVar() Dim which As Double = 0.0 ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_NORM Then ' Retrieve data for given norm constraint model.GetGenConstrNorm(genc, resvar, vars, which) End If
- void GetGenConstrNL(GRBGenConstr genc, out GRBVar resvar, out int nnodes, int[] opcode, double[] data, int[] parent)#
检索与类型为NL的一般约束相关的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
典型用法是调用此例程两次。在第一次调用中,您指定请求的一般约束,
opcode、data和parent参数的值为null。例程返回在nnodes中形成指定一般约束的表达式树的总节点数。这使您可以确保opcode、data和parent数组的大小足以容纳第二次调用的结果。另请参阅
AddGenConstrNL以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
resvar – 存储约束的结果变量。
nnodes – 存储描述非线性表达式所需的节点数。
opcode – 存储包含节点操作码的数组。
data – 存储包含每个节点辅助数据的数组。
parent – 存储提供每个节点的父索引的数组。
- Example:
GRBVar resvar; int nnodes; int[] opcode; double[] data; int[] parent; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_NL) { // Get number of nodes model.GetGenConstrNL(genc, out resvar, out nnodes, null, null, null); // Initialize correct array sizes opcode = new int[nnodes]; data = new double[nnodes]; parent = new int[nnodes]; // Get array data model.GetGenConstrNL(genc, out resvar, out nnodes, opcode, data, parent); }
Dim resvar As GRBVar Dim nnodes As Integer Dim opcode As Integer() Dim data As Double() Dim parent As Integer() ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_NL Then ' Get number of nodes model.GetGenConstrNL(genc, resvar, nnodes, Nothing, Nothing, Nothing) ' Initialize correct array sizes opcode = New Integer(nnodes) data = New Double(nnodes) parent = New Integer(nnodes) ' Get array data model.GetGenConstrNL(genc, resvar, nnodes, opcode, data, parent) End If
- void GetGenConstrIndicator(GRBGenConstr genc, out GRBVar binvar, out int binval, out GRBLinExpr expr, out char sense, out double rhs)#
检索与类型为INDICATOR的通用约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
另请参阅
AddGenConstrIndicator以了解此通用约束类型的语义描述。- Parameters:
genc – 通用约束对象。
binvar – 存储约束的二进制指示变量。
binval – 存储指示变量必须取值以触发线性约束的值。
expr – 存储由指示器触发的线性约束的左侧表达式。
sense – 存储线性约束的意义。选项是
GRB.LESS_EQUAL,GRB.EQUAL, 或GRB.GREATER_EQUAL。rhs – 存储线性约束的右侧值。
- Example:
GRBVar binvar; int binval; GRBLinExpr expr; char sense; double rhs; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_INDICATOR) { // Retrieve data for given indicator constraint model.GetGenConstrIndicator(genc, out binvar, out binval, out expr, out sense, out rhs); }
Dim binvar As GRBVar Dim binval As Integer Dim expr As GRBLinExpr Dim sense As Char Dim rhs As Double ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_INDICATOR Then ' Retrieve data for given indicator constraint model.GetGenConstrIndicator(genc, binvar, binval, expr, sense, rhs) End If
- void GetGenConstrPWL(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar, out int npts, double[] xpts, double[] ypts)#
检索与PWL类型的一般约束相关的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
典型用法是调用此例程两次。在第一次调用中,您指定请求的一般约束,
xpts和ypts参数的值为null。例程返回xpts和ypts数组的长度,存储在npts中。这使您能够确保xpts和ypts数组的大小足以容纳第二次调用的结果。另请参阅
AddGenConstrPWL以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
npts – 存储定义分段线性函数的点数。
xpts – 定义分段线性函数的点的 \(x\) 值。
ypts – 定义分段线性函数的点的 \(y\) 值。
- Example:
GRBVar xvar; GRBVar yvar; int npts; double[] xpts; double[] ypts; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_PWL) { // Get number of points model.GetGenConstrPWL(genc, out xvar, out yvar, out npts, null, null); // Initialize correct array sizes xpts = new double[npts]; ypts = new double[npts]; // Retrieve data for given PWL constraint model.GetGenConstrPWL(genc, out xvar, out yvar, out npts, xpts, ypts); }
Dim xvar As GRBVar Dim yvar As GRBVar Dim npts As Integer Dim xpts As Double() Dim ypts As Double() ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_PWL Then ' Get number of points model.GetGenConstrPWL(genc, xvar, yvar, npts, Nothing, Nothing) ' Initialize correct array sizes xpts = New double(npts) ypts = New double(npts) ' Retrieve data for given PWL constraint model.GetGenConstrPWL(genc, xvar, yvar, npts, xpts, ypts) End If
- void GetGenConstrPoly(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar, out int plen, double[] p)#
检索与类型为POLY的一般约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
典型用法是调用此例程两次。在第一次调用中,您指定请求的一般约束,并将
p参数的值设为null。例程返回p数组的长度在plen中。这使您能够确保p数组的大小足以容纳第二次调用的结果。另请参阅
AddGenConstrPoly以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
plen – 存储数组 p 的长度。如果 \(x^d\) 是最高次项,则返回 \(d+1\)。
p – 多项式函数的系数。
- Example:
GRBVar xvar; GRBVar yvar; int plen; double[] p; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_POLY) { // Get number of coefficients model.GetGenConstrPoly(genc, out xvar, out yvar, out plen, null); // Initialize correct array size p = new double[plen]; // Retrieve data for given poly constraint model.GetGenConstrPoly(genc, out xvar, out yvar, out plen, p); }
Dim xvar As GRBVar Dim yvar As GRBVar Dim plen As Integer Dim p As Double() ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_POLY Then ' Get number of coefficients model.GetGenConstrPoly(genc, xvar, yvar, plen, Nothing) ' Initialize correct array size p = New Double(plen) ' Retrieve data for given poly constraint model.GetGenConstrPoly(genc, xvar, yvar, plen , p) End If
- void GetGenConstrExp(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar)#
检索与类型为EXP的一般约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrExp以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
- Example:
GRBVar xvar; GRBVar yvar; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_EXP) { // Retrieve data for given exp constraint model.GetGenConstrExp(genc, out xvar, out yvar); }
Dim xvar As GRBVar Dim yvar As GRBVar ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_EXP Then ' Retrieve data for given exp constraint model.GetGenConstrExp(genc, xvar, yvar) End If
- void GetGenConstrExpA(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar, out double a)#
检索与类型为EXPA的通用约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrExpA以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
a – 存储函数的基数。
- Example:
GRBVar xvar; GRBVar yvar; double a; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_EXPA) { // Retrieve data for given exp_a constraint model.GetGenConstrExpA(genc, out xvar, out yvar, out a); }
Dim xvar As GRBVar Dim yvar As GRBVar Dim a As Double ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_EXPA Then ' Retrieve data for given exp_a constraint model.GetGenConstrExpA(genc, xvar, yvar, a) End If
- void GetGenConstrLog(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar)#
检索与类型为LOG的一般约束相关的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrLog以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
- Example:
GRBVar xvar; GRBVar yvar; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_LOG) { // Retrieve data for given log constraint model.GetGenConstrLog(genc, out xvar, out yvar); }
Dim xvar As GRBVar Dim yvar As GRBVar ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_LOG Then ' Retrieve data for given log constraint model.GetGenConstrLog(genc, xvar, yvar) End If
- void GetGenConstrLogA(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar, out double a)#
检索与类型为LOGA的一般约束相关的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrLogA以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
a – 存储函数的基数。
- Example:
GRBVar xvar; GRBVar yvar; double a; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_LOGA) { // Retrieve data for given log_a constraint model.GetGenConstrLogA(genc, out xvar, out yvar, out a); }
Dim xvar As GRBVar Dim yvar As GRBVar Dim a As Double ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_LOGA Then ' Retrieve data for given log_a constraint model.GetGenConstrLogA(genc, xvar, yvar, a) End If
- void GetGenConstrLogistic(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar)#
检索与类型为LOGISTIC的通用约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
另请参阅
AddGenConstrLogistic以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
- Example:
GRBVar xvar; GRBVar yvar; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_LOGISTIC) { // Retrieve data for given logistic constraint model.GetGenConstrLogistic(genc, out xvar, out yvar); }
Dim xvar As GRBVar Dim yvar As GRBVar ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_LOGISTIC Then ' Retrieve data for given logistic constraint model.GetGenConstrLogistic(genc, xvar, yvar) End If
- void GetGenConstrPow(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar, out double a)#
检索与类型为POW的一般约束相关的数据。 对此方法调用不同类型的一般约束会导致异常。您可以查询 GenConstrType属性来确定一般约束的类型。
另请参阅
AddGenConstrPow以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
a – 存储函数的能力。
- Example:
GRBVar xvar; GRBVar yvar; double a; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_POW) { // Retrieve data for given power constraint model.GetGenConstrPow(genc, out xvar, out yvar, out a); }
Dim xvar As GRBVar Dim yvar As GRBVar Dim a As Double ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_POW Then ' Retrieve data for given power constraint model.GetGenConstrPow(genc, xvar, yvar, a) End If
- void GetGenConstrSin(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar)#
检索与类型为SIN的一般约束相关的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrSin以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
- Example:
GRBVar xvar; GRBVar yvar; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_SIN) { // Retrieve data for given sin constraint model.GetGenConstrSin(genc, out xvar, out yvar); }
Dim xvar As GRBVar Dim yvar As GRBVar ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_SIN Then ' Retrieve data for given sin constraint model.GetGenConstrSin(genc, xvar, yvar) End If
- void GetGenConstrCos(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar)#
检索与类型为COS的一般约束相关联的数据。 对不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性以确定通用约束的类型。
另请参阅
AddGenConstrCos以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
- Example:
GRBVar xvar; GRBVar yvar; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_COS) { // Retrieve data for given cos constraint model.GetGenConstrCos(genc, out xvar, out yvar); }
Dim xvar As GRBVar Dim yvar As GRBVar ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_COS Then ' Retrieve data for given cos constraint model.GetGenConstrCos(genc, xvar, yvar) End If
- void GetGenConstrTan(GRBGenConstr genc, out GRBVar xvar, out GRBVar yvar)#
检索与类型为TAN的通用约束相关联的数据。 为不同类型的通用约束调用此方法会导致异常。您可以查询 GenConstrType属性来确定通用约束的类型。
另请参阅
AddGenConstrTan以了解此通用约束类型的语义描述。以下任何参数都可以是
null。- Parameters:
genc – 通用约束对象。
xvar – 存储 \(x\) 变量。
yvar – 存储 \(y\) 变量。
- Example:
GRBVar xvar; GRBVar yvar; // Retrieve general constraint type int type = genc.Get(GRB.IntAttr.GenConstrType); if (type == GRB.GENCONSTR_TAN) { // Retrieve data for given tan constraint model.GetGenConstrTan(genc, out xvar, out yvar); }
Dim xvar As GRBVar Dim yvar As GRBVar ' Retrieve general constraint type Dim type as Integer = genc.Get(GRB.IntAttr.GenConstrType) If type = GRB.GENCONSTR_TAN Then ' Retrieve data for given tan constraint model.GetGenConstrTan(genc, xvar, yvar) End If
- GRBGenConstr[] GetGenConstrs()#
检索模型中所有一般约束的数组。
- Returns:
模型中的所有一般约束。
- Example:
GRBGenConstr[] constrs = model.GetGenConstrs();
Dim constrs as GRBGenConstr() = model.GetGenConstrs()
- string GetJSONSolution()#
在调用
优化之后,此方法返回结果解决方案和相关的模型属性作为JSON字符串。详情请参阅JSON解决方案格式部分。- Returns:
一个JSON字符串。
- Example:
string solution = model.GetJSONSolution();
Dim solutions As String = model.GetJSONSolution()
- GRBEnv GetMultiobjEnv(int index)#
创建/检索具有给定索引的多目标环境以进行优化传递。此环境允许对多目标优化过程进行细粒度控制。具体来说,通过更改此环境上的参数,您可以修改在多目标优化相应传递期间发生的优化行为。
每个多目标环境都从当前模型环境的副本开始。
请参考关于 多目标的讨论,了解如何指定多个目标函数并控制它们之间的权衡。
请参考关于 结合混合和分层目标 的讨论,以获取有关解决多目标模型的优化过程的信息。
使用
DiscardMultiobjEnvs来 丢弃多目标环境并返回标准行为。- Parameters:
index – 优化过程的索引,从0开始。
- Returns:
解决模型时的多目标环境优化过程。
- Example:
env0 = model.GetMultiobjEnv(0); env1 = model.GetMultiobjEnv(1); env0.Set(GRB.IntParam.Method, 0); env1.Set(GRB.IntParam.Method, 1); model.Optimize(); model.DiscardMultiobjEnvs();
env0 = model.GetMultiobjEnv(0) env1 = model.GetMultiobjEnv(1) env0.Set(GRB.IntParam.Method, 0) env1.Set(GRB.IntParam.Method, 1) model.Optimize() model.DiscardMultiobjEnvs()
- GRBExpr GetObjective()#
检索优化目标。
请注意,目标函数的常数和线性部分也可以使用ObjCon和Obj属性来获取。
- Returns:
模型目标。
- Example:
// Get linear objective expression GRBLinExpr obj = model.GetObjective(); double objval = obj.Value;
' Get linear objective expression Dim obj As GRBLinExpr = model.GetObjective() Dim objVal As Double = obj.Value
- GRBLinExpr GetObjective(int index)#
检索一个替代的优化目标。替代目标将始终是线性的。你也可以使用这个例程来检索主要目标(使用
index= 0),但如果主要目标包含二次项,你将得到一个异常。请参考关于 多目标的讨论,以获取更多关于使用替代目标的信息。
请注意,也可以使用ObjNCon和ObjN属性来检索替代目标。
- Parameters:
index – 请求的替代目标的索引。
- Returns:
请求的替代目标。
- Example:
// Get second linear objective GRBLinExpr obj = model.GetObjective(1); double objval = obj.Value;
' Get linear objective expression Dim obj As GRBLinExpr = model.GetObjective(1) Dim objVal As Double = obj.Value
- int GetPWLObj(GRBVar var, double[] x, double[] y)#
检索变量的分段线性目标函数。返回值给出了定义函数的点的数量,\(x\) 和 \(y\) 参数分别给出了这些点的坐标。\(x\) 和 \(y\) 参数必须足够大以容纳结果。如果您只想要点的数量,可以使用
null值调用此方法。请参考此讨论以获取关于\(x\)和\(y\)中值的更多信息。
- Parameters:
var – 正在检索其目标函数的变量。
x – 定义分段线性函数的点的 \(x\) 值。这些值将始终按非递减顺序排列。
y – 定义分段线性函数的点的 \(y\) 值。
- Returns:
定义分段线性目标函数的点数。
- Example:
// Get PWL objective data int npts = model.GetPWLObj(var, null, null); double[] x = new double[npts]; double[] y = new double[npts]; model.GetPWLObj(var, x, y);
' Get PWL objective data Dim npts As Integer = model.GetPWLObj(var, Nothing, Nothing) Dim x as Double() = New Double(npts) Dim y as Double() = New Double(npts) model.GetPWLObj(var, x, y)
- GRBQConstr[] GetQConstrs()#
检索模型中所有二次约束的数组。
- Returns:
模型中的所有二次约束。
- Example:
GRBQConstr[] constrs = model.GetQConstrs();
Dim constrs As GRBQConstr() = model.GetQConstrs()
- GRBQuadExpr GetQCRow(GRBQConstr qc)#
检索二次约束的左侧表达式。结果以
GRBQuadExpr对象的形式返回。- Parameters:
qc – 感兴趣的二次约束。
- Returns:
一个
GRBQuadExpr对象,用于捕获二次约束的左侧。- Example:
// Get quadratic LHS expression of first quadratic constraint GRBQConstr[] constrs = model.GetQConstrs(); GRBQuadExpr qexpr = model.GetQCRow(constrs[0]);
' Get quadratic LHS expression of first quadratic constraint Dim constrs As GRBQConstr() = model.GetQConstrs() Dim qexpr As GRBQuadExpr = model.GetQCRow(constrs(0))
- GRBLinExpr GetRow(GRBConstr constr)#
检索参与约束的变量列表及其相关系数。结果以
GRBLinExpr对象的形式返回。- Parameters:
constr – 感兴趣的约束。一个
GRBConstr对象,通常从AddConstr或GetConstrs获得。- Returns:
一个
GRBLinExpr对象,用于捕获参与约束的变量集合。- Example:
// Get linear LHS expression of first linear constraint GRBConstr[] constrs = model.GetConstrs(); GRBLinExpr lexpr = model.GetRow(constrs[0]);
' Get linear LHS expression of first linear constraint Dim constrs As GRBConstr() = model.GetConstrs() Dim lexpr As GRBLinExpr = model.GetRow(constrs(0))
- int GetSOS(GRBSOS sos, GRBVar[] vars, double[] weights, int[] type)#
检索参与SOS约束的变量列表及其相关系数。返回值是该列表的长度。请注意,参数数组必须足够长以容纳结果。使用
null数组参数调用该方法以确定适当的数组长度。- Parameters:
sos – 感兴趣的SOS集合。
vars – 参与
sos的变量列表。可以为null。weights – 每个参与变量的SOS权重。可以是
null。type – SOS集的类型(
GRB.SOS_TYPE1或GRB.SOS_TYPE2)将在type[0]中返回。
- Returns:
输出数组中放置的条目数。请注意,您应查阅返回值以确定结果的长度;数组大小不一定与结果大小匹配。
- Example:
GRBSOS[] constrs = model.GetSOSs(); // Get data of first SOS constraint int len = model.GetSOS(constrs[0], null, null, null); GRBVar[] vars = new GRBVar[len]; double[] weights = new double[len]; int[] type = new int[len]; model.GetSOS(constrs[0], vars, weights, type);
Dim constrs As GRBSOS() = model.GetSOSs() ' Get data of first SOS constraint Dim len As Integer = model.GetSOS(constrs(0), Nothing, Nothing, Nothing) Dim vars As GRBVar() = New GRBVarlen Dim weights As Double() = New Double(len) Dim type As Integer() = New Integer(len) model.GetSOS(constrs(0), vars, weights, type)
- GRBSOS[] GetSOSs()#
检索模型中所有SOS约束的数组。
- Returns:
模型中的所有SOS约束。
- Example:
GRBSOS[] constrs = model.GetSOSs();
Dim constrs As GRBSOS() = model.GetSOSs()
- void GetTuneResult(int n)#
使用此方法检索先前
Tune调用的结果。使用参数n调用此方法会将调优的参数集n复制到模型中。参数集按质量递减的顺序存储,参数集0为最佳。可用集的数量存储在属性TuneResultCount中。一旦你获取了调优结果,你可以调用
optimize来使用这些参数 设置来优化模型,或者write将更改后的参数写入一个.prm文件。请参考参数调优部分了解调优工具的详细信息。
- Parameters:
n – 要检索的调优结果的索引。最佳结果作为索引0可用。存储结果的数量可在属性TuneResultCount中获取。
- Example:
model.Tune(); // Get best tuning result model.GetTuneResult(0); // Optimize model using the best found parameter set model.Optimize();
model.Tune() ' Get best tuning result model.GetTuneResult(0) ' Optimize model using the best found parameter set model.Optimize()
- GRBVar GetVarByName(string name)#
根据名称检索变量。如果有多个变量具有相同的名称,此方法会任意选择一个。
- Parameters:
name – 所需变量的名称。
- Returns:
请求的变量。
- Example:
// Get variable named "var1" GRBVar var = model.GetVarByName("var1");
' Get variable named "var1" Dim var As GRBVar = model.GetVarByName("var1")
- GRBVar[] GetVars()#
检索模型中所有变量的数组。
- Returns:
模型中的所有变量。
- Example:
GRBVar[] vars = model.GetVars();
Dim vars As GRBVar() = model.GetVars()
- void Optimize()#
优化模型。用于优化的算法取决于模型类型(连续模型的单纯形法或障碍法;MIP模型的分支定界法)。成功完成后,此方法将填充模型的解决方案相关属性。有关属性的更多信息,请参见属性部分。
请参考本节,了解与使用有限精度浮点算术解决精确定义的数学模型相关的一些实际问题。
请注意,此方法将处理所有待处理的模型修改。
- Example:
model.Optimize();
model.Optimize()
- void OptimizeAsync()#
异步优化模型。此例程立即返回。您的程序可以在优化在后台进行时执行其他计算。要检查异步优化的状态,请查询模型的状态属性。值为
IN_PROGRESS表示优化尚未完成。当您完成前台任务时,必须调用Sync以使您的前台程序与异步优化任务同步。请注意,在后台运行优化时,您可以进行的Gurobi调用集合非常有限。具体来说,您只能执行属性查询,并且只能查询一些属性(如下所列)。对正在运行的模型或在同一Gurobi环境中构建的任何其他模型的任何其他调用都将失败,并返回错误代码优化进行中。
请注意,在其他环境中构建的模型没有这样的限制。因此,例如,您可以创建多个环境,然后让一个前台程序启动多个同时进行的异步优化,每个优化都在其自己的环境中进行。
如前所述,您可以在异步优化进行时查询状态属性的值。其他可以查询的属性包括:ObjVal、ObjBound、IterCount、NodeCount和BarIterCount。在每种情况下,返回的值反映了优化到该点的进度。任何尝试查询不在此列表中的属性值都将返回优化进行中错误。
- Example:
// Start asynchronous optimization model.OptimizeAsync(); // Poll the status while optimization is in progress while (model.Get(GRB.IntAttr.Status) == GRB.Status.INPROGRESS) { Thread.Sleep(100); // Sleep for 100 ms Console.WriteLine($"ObjVal={model.Get(GRB.DoubleAttr.ObjVal)} ObjBound={model.Get(GRB.DoubleAttr.ObjBound)}"); } // Synchronize model model.Sync(); // Query solution and process results // ...
' Start asynchronous optimization model.OptimizeAsync() ' Poll the status while optimization is in progress While model.Get(GRB.IntAttr.Status) = GRB.Status.INPROGRESS Thread.Sleep(100) ' Sleep for 100 ms Console.WriteLine("ObjVal=" & model.Get(GRB.DoubleAttr.ObjVal) & " ObjBound=" & model.Get(GRB.DoubleAttr.ObjBound)) End While ' Synchronize model model.Sync() ' Query solution and process results ' ...
- string OptimizeBatch()#
向集群管理器提交一个新的批处理请求。返回BatchID(一个字符串),它唯一地标识集群管理器中的作业,并可用于查询此请求的状态(从此程序或任何其他程序)。一旦请求完成,BatchID也可以用于检索相关的解决方案。要提交批处理请求,您必须通过设置VTag、CTag或QCTag属性中的至少一个来标记模型的至少一个元素。有关批处理优化的更多详细信息,请参阅批处理优化部分。
请注意,此例程将处理所有待处理的模型修改。
- Example:
// Submit batch request string batchID = model.OptimizeBatch();
' Submit batch request Dim batchID As String = model.OptimizeBatch()
- Parameters#
(属性)获取或设置参数值。
- Example:
// Print the current value of MIPFocus parameter Console.WriteLine(model.Parameters.MIPFocus); // Set a 10 second time limit model.Parameters.TimeLimit = 10;
' Print the current value of MIPFocus parameter Console.WriteLine(model.Parameters.MIPFocus) ' Set a 10 second time limit model.Parameters.TimeLimit = 10
- GRBModel Presolve()#
对模型执行预求解。
请注意,此函数计算的预解模型可能与优化模型时计算的预解模型不同。
- Returns:
原始模型的预解版本。
- Example:
GRBModel presolved = model.Presolve();
Dim presolved As GRBModel = model.Presolve()
- void Read(string filename)#
此方法是从文件导入数据到模型的一般入口点。它可以用于读取连续模型的基础文件、MIP模型的起始向量、MIP模型的变量提示、MIP模型的分支优先级或参数设置。读取的数据类型由文件后缀决定。文件格式在文件格式部分中描述。
请注意,读取文件不会处理所有待处理的模型修改。这些修改可以通过调用
GRBModel.Update来处理。还要注意的是,如果你想从文件中读取一个新模型,这不是要使用的方法。为此,请使用
GRBModel 构造函数。构造函数的一个变体将包含新模型的文件名作为其参数。- Parameters:
filename – 要读取的文件名。文件的后缀必须是
.bas(用于LP基础),.mst或.sol(用于MIP 启动),.hnt(用于MIP提示),.ord(用于优先级顺序),.attr(用于一组属性设置),或.prm(用于参数文件)。后缀可以选择性地跟随.zip,.gz,.bz2,.7z或.xz。- Example:
model.Read("myModel.mps");
model.Read("myModel.mps")
- void Remove(GRBConstr constr)#
从模型中移除一个约束。请注意,由于我们采用延迟更新的方法,更改实际上不会生效,直到您更新模型(使用
GRBModel.Update)、优化模型(使用GRBModel.Optimize)或将模型写入磁盘(使用GRBModel.Write)。- Parameters:
constr – 要移除的约束。
- Example:
GRBConstr[] constrs = model.GetConstrs(); // Remove first linear constraint model.Remove(constrs[0]);
Dim constrs As GRBConstr() = model.GetConstrs() ' Remove first linear constraint model.Remove(constrs(0))
- void Remove(GRBGenConstr genconstr)#
从模型中移除一个通用约束。请注意,由于我们采用延迟更新的方法,更改实际上不会生效,直到您更新模型(使用
GRBModel.Update)、优化模型(使用GRBModel.Optimize)或将模型写入磁盘(使用GRBModel.Write)。- Parameters:
genconstr – 要移除的通用约束。
- Example:
GRBGenConstr[] constrs = model.GetGenConstrs(); // Remove first general constraint model.Remove(constrs[0]);
Dim constrs As GRBGenConstr() = model.GetGenConstrs() ' Remove first general constraint model.Remove(constrs(0))
- void Remove(GRBQConstr qconstr)#
从模型中移除一个二次约束。请注意,由于我们采用延迟更新的方法,更改实际上不会生效,直到您更新模型(使用
GRBModel.Update)、优化模型(使用GRBModel.Optimize)或将模型写入磁盘(使用GRBModel.Write)。- Parameters:
qconstr – 要移除的约束。
- Example:
GRBQConstr[] constrs = model.GetQConstrs(); // Remove first quadratic constraint model.Remove(constrs[0]);
Dim constrs As GRBQConstr = model.GetQConstrs() ' Remove first quadratic constraint model.Remove(constrs(0))
- void Remove(GRBSOS sos)#
从模型中移除一个SOS约束。请注意,由于我们采用延迟更新的方法,更改实际上不会生效,直到您更新模型(使用
GRBModel.Update)、优化模型(使用GRBModel.Optimize)或将模型写入磁盘(使用GRBModel.Write)。- Parameters:
sos – 要移除的SOS约束。
- Example:
GRBSOS[] constrs = model.GetSOSs(); // Remove first SOS constraint model.Remove(constrs[0]);
Dim constrs As GRBSOS() = model.GetSOSs() ' Remove first SOS constraint model.Remove(constrs(0))
- void Remove(GRBVar var)#
从模型中移除一个变量。请注意,由于我们采用延迟更新的方法,更改实际上不会生效,直到您更新模型(使用
GRBModel.Update)、优化模型(使用GRBModel.Optimize)或将模型写入磁盘(使用GRBModel.Write)。- Parameters:
var – 要移除的变量。
- Example:
GRBVar[] vars = model.GetVars(); // Remove first variable model.Remove(vars[0]);
Dim vars As GRBVar() = model.GetVars() ' Remove first variable model.Remove(vars(0))
- void Reset()#
将模型重置为未解决状态,丢弃任何先前计算的解决方案信息。
- Example:
model.Reset();
model.Reset()
- void Reset(int clearall)#
将模型重置为未解决状态,丢弃任何先前计算的解决方案信息。
- Parameters:
clearall – 值为1时,丢弃影响求解过程但不影响实际模型的额外信息(目前包括MIP起始点、变量提示、分支优先级、惰性标志和分区信息)。传递0仅丢弃解决方案。
- Example:
model.Reset(1);
model.Reset(1)
- void SetCallback(GRBCallback cb)#
为模型设置回调对象。Gurobi求解器将定期调用此对象上的
Callback()方法。您将有机会从此回调中获取有关优化状态的更详细信息。有关更多信息,请参阅GRBCallback的文档。请注意,一个模型只能有一个回调方法,因此此调用将替换现有的回调。要禁用先前设置的回调,请使用
null参数调用此方法。- Example:
class MyCallback : GRBCallback { // ... } // ... MyCallback CB = new MyCallback(); // ... model.SetCallback(CB);
class MyCallback Inherits GRBCallback ' ... ' ... model.SetCallback(New CB())
- void Set(GRB.DoubleParam param, double newvalue)#
设置一个双精度值参数的值。
在模型上设置参数和在环境上设置参数(即通过
GRBEnv.Set)的区别在于,前者修改的是单个模型的参数,而后者修改的是随后使用该环境构建的每个模型的参数(并且对于之前使用该环境构建的模型,参数保持不变)。- Parameters:
param – 正在修改的参数。
newvalue – 参数所需的新值。
- Example:
// Set parameter TimeLimit to value 10.0 model.Set(GRB.DoubleParam.TimeLimit, 10.0);
' Set parameter TimeLimit to value 10.0 model.Set(GRB.DoubleParam.TimeLimit, 10.0)
- void Set(GRB.IntParam param, int newvalue)#
设置一个整型参数的值。
在模型上设置参数和在环境上设置参数(即通过
GRBEnv.Set)的区别在于,前者修改的是单个模型的参数,而后者修改的是随后使用该环境构建的每个模型的参数(并且对于之前使用该环境构建的模型,参数保持不变)。- Parameters:
param – 正在修改的参数。
newvalue – 参数所需的新值。
- Example:
// Set parameter PumpPasses to value 10 model.Set(GRB.IntParam.PumpPasses, 10);
' Set parameter PumpPasses to value 10 model.Set(GRB.IntParam.PumpPasses, 10)
- void Set(GRB.StringParam param, string newvalue)#
设置字符串类型参数的值。
在模型上设置参数和在环境上设置参数(即通过
GRBEnv.Set)的区别在于,前者修改的是单个模型的参数,而后者修改的是随后使用该环境构建的每个模型的参数(并且对于之前使用该环境构建的模型,参数保持不变)。- Parameters:
param – 正在修改的参数。
newvalue – 参数所需的新值。
- Example:
// Set parameter LogFile to value "myLog.log" model.Set(GRB.StringParam.LogFile, "myLog.log");
' Set parameter LogFile to value "myLog.log" model.Set(GRB.StringParam.LogFile, "myLog.log")
- void Set(GRB.CharAttr attr, GRBVar[] vars, char[] newvalues)#
为变量数组设置一个字符型变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 正在修改其属性值的变量。
newvalues – 每个输入变量的属性所需的新值。
- Example:
// Add 3 binary variables GRBVar[] x = model.AddVars(3, GRB.BINARY); // Change the type of the 3 variable to CONTINUOUS char[] newvalues = {"C", "C", "C"}; model.Set(GRB.CharAttr.VType, x, newvalues);
' Add 3 binary variables Dim x As GRBVar() = model.AddVars(3, GRB.BINARY) ' Change the type of the 3 variable to CONTINUOUS Dim newvalues As Char() = New Char() {"C", "C", "C"} model.Set(GRB.CharAttr.VType, x, newvalues)
- void Set(GRB.CharAttr attr, GRBVar[] vars, char[] newvalues, int start, int len)#
为变量的子数组设置一个字符型变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个一维数组,包含其属性值正在被修改的变量。
newvalues – 每个输入变量的属性所需的新值。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Example:
// Add 3 binary variables GRBVar[] x = model.AddVars(3, GRB.BINARY); // Change the type of the first 2 variable to CONTINUOUS char[] newvalues = {"C", "C"}; model.Set(GRB.CharAttr.VType, x, newvalues, 0, 2);
' Add 3 binary variables Dim x As GRBVar() = model.AddVars(3, GRB.BINARY) ' Change the type of the first 2 variable to CONTINUOUS Dim newvalues As Char() = New Char() {"C", "C"} model.Set(GRB.CharAttr.VType, x, newvalues, 0, 2)
- void Set(GRB.CharAttr attr, GRBVar[,] vars, char[,] newvalues)#
为二维变量数组设置一个字符型变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个二维数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.CharAttr attr, GRBVar[,,] vars, char[,,] newvalues)#
为三维变量数组设置一个字符型变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个三维变量数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.CharAttr attr, GRBConstr[] constrs, char[] newvalues)#
为约束数组设置一个字符值约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 正在修改其属性值的约束。
newvalues – 每个输入约束的属性的期望新值。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the sense of the 3 constraints char[] newvalues = {'<', '=', '>'}; model.Set(GRB.CharAttr.Sense, constrs, newvalues);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the sense of the 3 constraints Dim newvalues As Char() = New Char() {"<", "=", ">"} model.Set(GRB.CharAttr.Sense, constrs, newvalues)
- void Set(GRB.CharAttr attr, GRBConstr[] constrs, char[] newvalues, int start, int len)#
为约束的子数组设置一个字符值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个一维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
start – 列表中感兴趣的第一个约束的索引。
len – 约束的数量。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the sense of the first 2 constraints char[] newvalues = {'<', '='}; model.Set(GRB.CharAttr.Sense, constrs, newvalues, 0, 2);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the sense of the first 2 constraints Dim newvalues As Char() = New Char() {"<", "="} model.Set(GRB.CharAttr.Sense, constrs, newvalues, 0, 2)
- void Set(GRB.CharAttr attr, GRBConstr[,] constrs, char[,] newvalues)#
为二维约束数组设置一个字符值约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个二维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.CharAttr attr, GRBConstr[,,] constrs, char[,,] newvalues)#
为约束的三维数组设置一个字符值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个三维约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.CharAttr attr, GRBQConstr[] qconstrs, char[] newvalues)#
为二次约束数组设置一个字符值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 正在修改其属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
- Example:
// Add 3 quadratic constraints GRBQConstr c1 = model.AddQConstr(x*x + y*y == 0, "c1"); GRBQConstr c2 = model.AddQConstr(x*y - y*y == 0, "c2"); GRBQConstr c3 = model.AddQConstr(x*x - x*y == 0, "c3"); GRBQConstr[] constrs = {c1, c2, c3}; // Change the sense of the 3 constraints char[] newvalues = {"<", "=", ">"}; model.Set(GRB.CharAttr.QCSense, constrs, newvalues);
' Add 3 quadratic constraints Dim c1 As GRBQConstr = model.AddQConstr(x*x + y*y == 0, "c1") Dim c2 As GRBQConstr = model.AddQConstr(x*y - y*y == 0, "c2") Dim c3 As GRBQConstr = model.AddQConstr(x*x - x*y == 0, "c3") Dim constrs As GRBQConstr() = New GRBQConstr() {c1, c2, c3} ' Change the sense of the 3 constraints Dim newvalues As Char() = {"<", "=", ">"} model.Set(GRB.CharAttr.QCSense, constrs, newvalues)
- void Set(GRB.CharAttr attr, GRBQConstr[] qconstrs, char[] newvalues, int start, int len)#
为二次约束的子数组设置一个字符值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个一维数组,包含正在修改属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
start – 列表中感兴趣的第一个二次约束的索引。
len – 二次约束的数量。
- Example:
// Add 3 quadratic constraints GRBQConstr c1 = model.AddQConstr(x*x + y*y == 0, "c1"); GRBQConstr c2 = model.AddQConstr(x*y - y*y == 0, "c2"); GRBQConstr c3 = model.AddQConstr(x*x - x*y == 0, "c3"); GRBQConstr[] constrs = {c1, c2, c3}; // Change the sense of the first 2 constraints char[] newvalues = {"<", "="}; model.Set(GRB.CharAttr.QCSense, constrs, newvalues, 0, 2);
' Add 3 quadratic constraints Dim c1 As GRBQConstr = model.AddQConstr(x*x + y*y == 0, "c1") Dim c2 As GRBQConstr = model.AddQConstr(x*y - y*y == 0, "c2") Dim c3 As GRBQConstr = model.AddQConstr(x*x - x*y == 0, "c3") Dim constrs As GRBQConstr() = New GRBQConstr() {c1, c2, c3} ' Change the sense of the first 2 constraints Dim newvalues As Char() = {"<", "="} model.Set(GRB.CharAttr.QCSense, constrs, newvalues, 0, 2)
- void Set(GRB.CharAttr attr, GRBQConstr[,] qconstrs, char[,] newvalues)#
为二维二次约束数组设置一个字符值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个二维数组,包含正在修改属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
- void Set(GRB.CharAttr attr, GRBQConstr[,,] qconstrs, char[,,] newvalues)#
为三维二次约束数组设置一个字符值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个三维的二次约束数组,其属性值正在被修改。
newvalues – 每个输入二次约束属性的期望新值。
- void Set(GRB.DoubleAttr attr, double newvalue)#
设置一个双精度值的模型属性。
- Parameters:
attr – 正在修改的属性。
newvalue – 属性的期望新值。
- Example:
// Adjust objective constant model.Set(GRB.DoubleAttr.ObjCon, 2.0);
' Adjust objective constant model.Set(GRB.DoubleAttr.ObjCon, 2.0)
- void Set(GRB.DoubleAttr attr, GRBVar[] vars, double[] newvalues)#
为变量数组设置一个双精度值的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 正在修改其属性值的变量。
newvalues – 每个输入变量的属性所需的新值。
- Example:
// Add 3 continuous variables GRBVar[] x = model.AddVars(3, GRB.CONTINUOUS); // Change the lower bound of the 3 variables double[] newvalues = {0.1, 0.2, 0.3}; model.Set(GRB.DoubleAttr.LB, x, newvalues);
' Add 3 continuous variables Dim x As GRBVar() = model.AddVars(3, GRB.CONTINUOUS) ' Change the lower bound of the 3 variables Dim newvalues As Double() = New Double() {0.1, 0.2, 0.3} model.Set(GRB.DoubleAttr.LB, x, newvalues)
- void Set(GRB.DoubleAttr attr, GRBVar[] vars, double[] newvalues, int start, int len)#
为变量的子数组设置一个双精度值的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个一维数组,包含正在修改属性值的变量。
newvalues – 每个输入变量的属性所需的新值。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Example:
// Add 3 continuous variables GRBVar[] x = model.AddVars(3, GRB.CONTINUOUS); // Change the lower bound of the first 2 variables double[] newvalues = {0.1, 0.2}; model.Set(GRB.DoubleAttr.LB, x, newvalues, 0, 2);
' Add 3 continuous variables Dim x As GRBVar() = model.AddVars(3, GRB.CONTINUOUS) ' Change the lower bound of the first 2 variables Dim newvalues As Double() = New Double() {0.1, 0.2} model.Set(GRB.DoubleAttr.LB, x, newvalues, 0, 2)
- void Set(GRB.DoubleAttr attr, GRBVar[,] vars, double[,] newvalues)#
为二维变量数组设置一个双精度值的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个二维变量数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.DoubleAttr attr, GRBVar[,,] vars, double[,,] newvalues)#
为三维变量数组设置一个双精度值的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个三维变量数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.DoubleAttr attr, GRBConstr[] constrs, double[] newvalues)#
为约束数组设置一个双值约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 正在修改其属性值的约束。
newvalues – 每个输入约束的属性的期望新值。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the RHS of the 3 constraints double[] newvalues = {1.0, 2.0, 3.0}; model.Set(GRB.DoubleAttr.RHS, constrs, newvalues);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the RHS of the 3 constraints Dim newvalues As Double() = New Double() {1.0, 2.0, 3.0} model.Set(GRB.DoubleAttr.RHS, constrs, newvalues)
- void Set(GRB.DoubleAttr attr, GRBConstr[] constrs, double[] newvalues, int start, int len)#
为约束的子数组设置一个双值约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个一维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
start – 列表中感兴趣的第一个约束。
len – 约束的数量。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the RHS of the first 2 constraints double[] newvalues = {1.0, 2.0}; model.Set(GRB.DoubleAttr.RHS, constrs, newvalues, 0, 2);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the RHS of the first 2 constraints Dim newvalues As Double() = New Double() {1.0, 2.0} model.Set(GRB.DoubleAttr.RHS, constrs, newvalues, 0, 2)
- void Set(GRB.DoubleAttr attr, GRBConstr[,] constrs, double[,] newvalues)#
为二维约束数组设置一个双值约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个二维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.DoubleAttr attr, GRBConstr[,,] constrs, double[,,] newvalues)#
为三维约束数组设置一个双值约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个三维约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.DoubleAttr attr, GRBQConstr[] qconstrs, double[] newvalues)#
为二次约束数组设置一个双值二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 正在修改其属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
- Example:
// Add 3 quadratic constraints GRBQConstr c1 = model.AddQConstr(x*x + y*y == 0, "c1"); GRBQConstr c2 = model.AddQConstr(x*y - y*y == 0, "c2"); GRBQConstr c3 = model.AddQConstr(x*x - x*y == 0, "c3"); GRBQConstr[] constrs = {c1, c2, c3}; // Change the RHS of the 3 constraints double[] newvalues = {1.0, 2.0, 3.0}; model.Set(GRB.DoubleAttr.QCRHS, constrs, newvalues);
' Add 3 quadratic constraints Dim c1 As GRBQConstr = model.AddQConstr(x*x + y*y == 0, "c1") Dim c2 As GRBQConstr = model.AddQConstr(x*y - y*y == 0, "c2") Dim c3 As GRBQConstr = model.AddQConstr(x*x - x*y == 0, "c3") Dim constrs As GRBQConstr() = New GRBQConstr() {c1, c2, c3} ' Change the RHS of the 3 constraints Dim newvalues As Double() = New Double() {1.0, 2.0, 3.0} model.Set(GRB.DoubleAttr.QCRHS, constrs, newvalues)
- void Set(GRB.DoubleAttr attr, GRBQConstr[] qconstrs, double[] newvalues, int start, int len)#
为二次约束的子数组设置一个双值二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个一维数组,包含正在修改属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
start – 列表中感兴趣的第一个二次约束。
len – 二次约束的数量。
- Example:
// Add 3 quadratic constraints GRBQConstr c1 = model.AddQConstr(x*x + y*y == 0, "c1"); GRBQConstr c2 = model.AddQConstr(x*y - y*y == 0, "c2"); GRBQConstr c3 = model.AddQConstr(x*x - x*y == 0, "c3"); GRBQConstr[] constrs = {c1, c2, c3}; // Change the RHS of the first 2 constraints double[] newvalues = {1.0, 2.0}; model.Set(GRB.DoubleAttr.QCRHS, constrs, newvalues, 0, 2);
' Add 3 quadratic constraints Dim c1 As GRBQConstr = model.AddQConstr(x*x + y*y == 0, "c1") Dim c2 As GRBQConstr = model.AddQConstr(x*y - y*y == 0, "c2") Dim c3 As GRBQConstr = model.AddQConstr(x*x - x*y == 0, "c3") Dim constrs As GRBQConstr() = New GRBQConstr() {c1, c2, c3} ' Change the RHS of the first 2 constraints Dim newvalues As Double() = New Double() {1.0, 2.0} model.Set(GRB.DoubleAttr.QCRHS, constrs, newvalues, 0, 2)
- void Set(GRB.DoubleAttr attr, GRBQConstr[,] qconstrs, double[,] newvalues)#
为二维二次约束数组设置一个双值二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个二维数组,包含正在修改属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
- void Set(GRB.DoubleAttr attr, GRBQConstr[,,] qconstrs, double[,,] newvalues)#
为三维二次约束数组设置一个双值二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个三维的二次约束数组,其属性值正在被修改。
newvalues – 每个输入二次约束属性的期望新值。
- void Set(GRB.IntAttr attr, int newvalue)#
设置一个整数值模型属性的值。
- Parameters:
attr – 正在修改的属性。
newvalue – 属性的期望新值。
- Example:
// Adjust model sense model.Set(GRB.IntAttr.ModelSense, GRB.MINIMIZE);
' Adjust model sense model.Set(GRB.IntAttr.ModelSense, GRB.MINIMIZE)
- void Set(GRB.IntAttr attr, GRBVar[] vars, int[] newvalues)#
为变量数组设置一个整数值变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 正在修改其属性值的变量。
newvalues – 每个输入变量的属性所需的新值。
- Example:
// Add 3 continuous variables GRBVar[] x = model.AddVars(3, GRB.CONTINUOUS); // Change the VBasis value of the 3 variables int[] newvalues = {0, -1, -2}; model.Set(GRB.IntAttr.VBasis, x, newvalues);
' Add 3 continuous variables Dim x As GRBVar() = model.AddVars(3, GRB.CONTINUOUS) ' Change the VBasis value of the 3 variables Dim newvalues As Integer = New Integer() {0, -1, -2} model.Set(GRB.IntAttr.VBasis, x, newvalues)
- void Set(GRB.IntAttr attr, GRBVar[] vars, int[] newvalues, int start, int len)#
为变量的子数组设置一个整数值的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个一维数组,包含正在修改属性值的变量。
newvalues – 每个输入变量的属性所需的新值。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Example:
// Add 3 continuous variables GRBVar[] x = model.AddVars(3, GRB.CONTINUOUS); // Change the VBasis value of the first 2 variables int[] newvalues = {0, -1}; model.Set(GRB.IntAttr.VBasis, x, newvalues, 0, 2);
' Add 3 continuous variables Dim x As GRBVar() = model.AddVars(3, GRB.CONTINUOUS) ' Change the VBasis value of the first 2 variables Dim newvalues As Integer = New Integer() {0, -1} model.Set(GRB.IntAttr.VBasis, x, newvalues, 0, 2)
- void Set(GRB.IntAttr attr, GRBVar[,] vars, int[,] newvalues)#
为二维变量数组设置一个整数值变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个二维变量数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.IntAttr attr, GRBVar[,,] vars, int[,,] newvalues)#
为三维变量数组设置一个整型变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个三维变量数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.IntAttr attr, GRBConstr[] constrs, int[] newvalues)#
为约束数组设置一个整数值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 正在修改其属性值的约束。
newvalues – 每个输入约束的属性的期望新值。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the CBasis value of the 3 constraints int[] newvalues = {0, -1, -1}; model.Set(GRB.IntAttr.CBasis, constrs, newvalues);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the CBasis value of the 3 constraints Dim newvalues As Integer() = New Integer() {0, -1, -1} model.Set(GRB.IntAttr.CBasis, constrs, newvalues)
- void Set(GRB.IntAttr attr, GRBConstr[] constrs, int[] newvalues, int start, int len)#
为约束的子数组设置一个整数值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个一维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
start – 列表中感兴趣的第一个约束的索引。
len – 约束的数量。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the CBasis value of the first 2 constraints int[] newvalues = {0, -1}; model.Set(GRB.IntAttr.CBasis, constrs, newvalues, 0, 2);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the CBasis value of the first 2 constraints Dim newvalues As Integer() = New Integer() {0, -1} model.Set(GRB.IntAttr.CBasis, constrs, newvalues, 0, 2)
- void Set(GRB.IntAttr attr, GRBConstr[,] constrs, int[,] newvalues)#
为二维约束数组设置一个整数值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个二维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.IntAttr attr, GRBConstr[,,] constrs, int[,,] newvalues)#
为三维约束数组设置一个整数值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个三维约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.StringAttr attr, string newvalue)#
设置字符串值模型属性的值。
- Parameters:
attr – 正在修改的属性。
newvalue – 属性的期望新值。
- Example:
// Adjust model name model.Set(GRB.StringAttr.ModelName, "myModel");
' Adjust model name model.Set(GRB.StringAttr.ModelName, "myModel")
- void Set(GRB.StringAttr attr, GRBVar[] vars, string[] newvalues)#
为变量数组设置一个字符串值的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 正在修改其属性值的变量。
newvalues – 每个输入变量的属性所需的新值。
- Example:
// Add 3 continuous variables GRBVar[] x = model.AddVars(3, GRB.CONTINUOUS); // Change names of the 3 variables string[] newvalues = {"x1", "x2", "x3"}; model.Set(GRB.StringAttr.VarName, x, newvalues);
' Add 3 continuous variables Dim x As GRBVar() = model.AddVars(3, GRB.CONTINUOUS) ' Change names of the 3 variables Dim newvalues As String() = New String() {"x1", "x2", "x3"} model.Set(GRB.StringAttr.VarName, x, newvalues)
- void Set(GRB.StringAttr attr, GRBVar[] vars, string[] newvalues, int start, int len)#
为变量的子数组设置一个字符串值的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个一维数组,包含正在修改属性值的变量。
newvalues – 每个输入变量的属性所需的新值。
start – 列表中第一个感兴趣的变量的索引。
len – 变量的数量。
- Example:
// Add 3 continuous variables GRBVar[] x = model.AddVars(3, GRB.CONTINUOUS); // Change names of the first 2 variables string[] newvalues = {"x1", "x2"}; model.Set(GRB.StringAttr.VarName, x, newvalues, 0, 2);
' Add 3 continuous variables Dim x As GRBVar() = model.AddVars(3, GRB.CONTINUOUS) ' Change names of the first 2 variables Dim newvalues As String() = New String() {"x1", "x2", "x3"} model.Set(GRB.StringAttr.VarName, x, newvalues, 0, 2)
- void Set(GRB.StringAttr attr, GRBVar[,] vars, string[,] newvalues)#
为二维变量数组设置一个字符串类型的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个二维变量数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.StringAttr attr, GRBVar[,,] vars, string[,,] newvalues)#
为三维变量数组设置一个字符串类型的变量属性。
- Parameters:
attr – 正在修改的属性。
vars – 一个三维变量数组,其属性值正在被修改。
newvalues – 每个输入变量的属性所需的新值。
- void Set(GRB.StringAttr attr, GRBConstr[] constrs, string[] newvalues)#
为约束数组设置一个字符串值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 正在修改其属性值的约束。
newvalues – 每个输入约束的属性的期望新值。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the name of the 3 constraints string[] newvalues = {"c1", "c2", "c3"}; model.Set(GRB.StringAttr.ConstrName, constrs, newvalues);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the name of the 3 constraints Dim newvalues As String() = New Strin() {"c1", "c2", "c3"} model.Set(GRB.StringAttr.ConstrName, constrs, newvalues)
- void Set(GRB.StringAttr attr, GRBConstr[] constrs, string[] newvalues, int start, int len)#
为约束的子数组设置一个字符串值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个一维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
start – 列表中感兴趣的第一个约束的索引。
len – 约束的数量。
- Example:
// Add 3 trivial linear constraints to model GRBConstrs[] constrs = model.AddConstrs(3); // Change the name of the first 2 constraints string[] newvalues = {"c1", "c2"}; model.Set(GRB.StringAttr.ConstrName, constrs, newvalues, 0, 2);
' Add 3 trivial linear constraints to model Dim constrs As GRBConstrs() = model.AddConstrs(3) ' Change the name of the first 2 constraints Dim newvalues As String() = New Strin() {"c1", "c2"} model.Set(GRB.StringAttr.ConstrName, constrs, newvalues, 0, 2)
- void Set(GRB.StringAttr attr, GRBConstr[,] constrs, string[,] newvalues)#
为二维约束数组设置一个字符串值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个二维的约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.StringAttr attr, GRBConstr[,,] constrs, string[,,] newvalues)#
为三维约束数组设置一个字符串值的约束属性。
- Parameters:
attr – 正在修改的属性。
constrs – 一个三维约束数组,其属性值正在被修改。
newvalues – 每个输入约束的属性的期望新值。
- void Set(GRB.StringAttr attr, GRBQConstr[] qconstrs, string[] newvalues)#
为二次约束数组设置一个字符串值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 正在修改其属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
- Example:
// Add 3 quadratic constraints GRBQConstr c1 = model.AddQConstr(x*x + y*y == 0, "c1"); GRBQConstr c2 = model.AddQConstr(x*y - y*y == 0, "c2"); GRBQConstr c3 = model.AddQConstr(x*x - x*y == 0, "c3"); GRBQConstr[] constrs = {c1, c2, c3}; // Change the name of the 3 constraints string[] newvalues = {"qc1", "qc2", "qc3"}; model.Set(GRB.StringAttr.QCName, constrs, newvalues);
' Add 3 quadratic constraints Dim c1 As GRBQConstr = model.AddQConstr(x*x + y*y == 0, "c1") Dim c2 As GRBQConstr = model.AddQConstr(x*y - y*y == 0, "c2") Dim c3 As GRBQConstr = model.AddQConstr(x*x - x*y == 0, "c3") Dim constrs As GRBQConstr() = New GRBQConstr() {c1, c2, c3} ' Change the name of the 3 constraints Dim newvalues As String() = New String() {"qc1", "qc2", "qc3"} model.Set(GRB.StringAttr.QCName, constrs, newvalues)
- void Set(GRB.StringAttr attr, GRBQConstr[] qconstrs, string[] newvalues, int start, int len)#
为二次约束的子数组设置一个字符串值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个一维数组,包含正在修改属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
start – 列表中感兴趣的第一个二次约束的索引。
len – 二次约束的数量。
- Example:
// Add 3 quadratic constraints GRBQConstr c1 = model.AddQConstr(x*x + y*y == 0, "c1"); GRBQConstr c2 = model.AddQConstr(x*y - y*y == 0, "c2"); GRBQConstr c3 = model.AddQConstr(x*x - x*y == 0, "c3"); GRBQConstr[] constrs = {c1, c2, c3}; // Change the name of the first 2 constraints string[] newvalues = {"qc1", "qc2"}; model.Set(GRB.StringAttr.QCName, constrs, newvalues, 0, 2);
' Add 3 quadratic constraints Dim c1 As GRBQConstr = model.AddQConstr(x*x + y*y == 0, "c1") Dim c2 As GRBQConstr = model.AddQConstr(x*y - y*y == 0, "c2") Dim c3 As GRBQConstr = model.AddQConstr(x*x - x*y == 0, "c3") Dim constrs As GRBQConstr() = New GRBQConstr() {c1, c2, c3} ' Change the name of the first 2 constraints Dim newvalues As String() = New String() {"qc1", "qc2", "qc3"} model.Set(GRB.StringAttr.QCName, constrs, newvalues, 0, 2)
- void Set(GRB.StringAttr attr, GRBQConstr[,] qconstrs, string[,] newvalues)#
为二维二次约束数组设置一个字符串值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个二维数组,包含正在修改属性值的二次约束。
newvalues – 每个输入二次约束属性的期望新值。
- void Set(GRB.StringAttr attr, GRBQConstr[,,] qconstrs, string[,,] newvalues)#
为三维二次约束数组设置一个字符串值的二次约束属性。
- Parameters:
attr – 正在修改的属性。
qconstrs – 一个三维的二次约束数组,其属性值正在被修改。
newvalues – 每个输入二次约束属性的期望新值。
- void SetObjective(GRBExpr expr, int sense)#
将模型目标设置为线性表达式(对于多目标优化,请参见
SetObjectiveN)。请注意,你也可以使用Obj变量属性来修改模型目标的线性部分。如果你想混合使用这两种方法,请注意,此方法会替换整个现有目标,而Obj属性可用于修改单个线性项。
- Parameters:
expr – 新模型目标。
sense – 新的优化方向 (
GRB.MINIMIZE用于最小化,GRB.MAXIMIZE用于最大化).
- Example:
model.SetObjective(x + y, GRB.MINIMIZE);
model.SetObjective(x + y, GRB.MINIMIZE)
- void SetObjective(GRBExpr expr)#
将模型目标设置为二次表达式(对于多目标优化,请参见
SetObjectiveN)。目标的方向由ModelSense属性的值决定。请注意,此方法会替换整个现有的目标,而Obj属性可用于修改单个线性项。
- Parameters:
expr – 新模型目标。
- Example:
model.SetObjective(x + y);
model.SetObjective(x + y)
- void SetObjectiveN(GRBLinExpr expr, int index, int priority, double weight, double abstol, double reltol, string name)#
将替代优化目标设置为等于线性表达式。
请参考关于 多目标的讨论,以获取更多关于使用替代目标的信息。
请注意,你也可以使用ObjN变量属性来修改替代目标。如果你希望混合使用这两种方法,请注意此方法会替换整个现有目标,而ObjN属性可用于修改单个项。
- Parameters:
expr – 新的替代目标。
index – 新目标的索引。如果使用索引0,此例程将更改主要优化目标。
priority – 替代目标的优先级。这将初始化此目标的ObjNPriority属性。
weight – 替代目标的权重。这将初始化此目标的ObjNWeight属性。
abstol – 替代目标的绝对容差。这将初始化此目标的ObjNAbsTol属性。
reltol – 替代目标的相对容差。这将初始化此目标的ObjNRelTol属性。
name – 替代目标的名称。这将初始化此目标的ObjNName属性。
- Example:
// Primary objective: x + 2 y model.SetObjectiveN(x + 2*y, 0, 2, 1.0, 2.0, 0.1, "Primary Obj"); // Secondary objective: 3 y + z model.SetObjectiveN(3*y + z, 1, 1, 1.0, 0.0, 0.0, "Secondary Obj");
' Primary objective: x + 2 y model.SetObjectiveN(x + 2*y, 0, 2, 1.0, 2.0, 0.1, "Primary Obj") ' Secondary objective: 3 y + z model.SetObjectiveN(3*y + z, 1, 1, 1.0, 0.0, 0.0, "Secondary Obj")
- void SetPWLObj(GRBVar var, double[] x, double[] y)#
为变量设置分段线性目标函数。
此方法的参数指定了一个定义单变量分段线性目标函数的点列表。具体来说,\(x\) 和 \(y\) 参数给出了函数顶点的坐标。
有关分段线性目标函数的更多详细信息,请参阅 此讨论。
- Parameters:
var – 正在设置目标函数的变量。
x – 定义分段线性函数的点的\(x\)值。必须按非递减顺序排列。
y – 定义分段线性函数的点的 \(y\) 值。
- Example:
GRBVar var = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "var"); double[] x = {0.0, 0.5, 1.0}; double[] y = {0.5, 0.25, 0.75}; model.SetPWLObj(var, x, y);
Dim var As GRBVar = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "var") Dim x As Double() = New Double() {0.0, 0.5, 1.0} Dim y As Double() = New Double() {0.5, 0.25, 0.75} model.SetPWLObj(var, x, y)
- GRBModel SingleScenarioModel()#
从多场景模型中捕获单个场景。使用 ScenarioNumber 参数来指示要捕获的场景。
调用此方法的模型必须是多场景模型,结果将是一个单场景模型。
- Returns:
单一场景的模型。
- Example:
model.Set(GRB.IntAttr.NumScenarios, 1); model.Update(); GRBModel singlescenario = model.SingleScenarioModel();
model.Set(GRB.IntAttr.NumScenarios, 1) model.Update() Dim singlescenario As GRBModel = model.SingleScenarioModel()
- void Sync()#
等待之前的异步优化调用完成。
调用
OptimizeAsync会立即将控制权返回给调用例程。调用者可以在优化进行时执行其他计算,并通过查询各种模型属性来检查优化的进度。sync调用会强制调用程序等待,直到异步优化调用完成。在删除相应的模型对象之前,您必须调用sync。如果优化本身遇到任何问题,
sync调用会抛出异常。换句话说,此方法抛出的异常是optimize本身在原始方法不是异步的情况下会抛出的异常。请注意,即使您知道异步优化已经完成,您也需要调用
sync。- Example:
model.OptimizeAsync(); // ... model.Sync();
model.OptimizeAsync() ' ... model.Sync()
- void Terminate()#
生成一个请求以终止当前的优化。此方法可以在优化过程中的任何时间调用(从回调、另一个线程、中断处理程序等)。请注意,通常情况下,请求不会立即被执行。
当优化停止时,状态 属性将等于
GRB_INTERRUPTED。- Example:
model.Terminate();
model.Terminate()
- void Tune()#
执行自动搜索以改进性能的参数设置。完成后,此方法会存储找到的最佳参数集。可以通过查询TuneResultCount属性的值来确定存储的参数集数量。实际设置可以使用
GetTuneResult来检索。请参考参数调优部分了解调优工具的详细信息。
- Example:
model.Tune(); // Get best tuning result model.GetTuneResult(0); // Optimize model using the best found parameter set model.Optimize();
model.Tune() ' Get best tuning result model.GetTuneResult(0) ' Optimize model using the best found parameter set model.Optimize()
- void Update()#
处理任何待处理的模型修改。
- Example:
model.Update();
model.Update()
- void Write(string filename)#
此方法是用于将优化数据写入文件的通用入口点。它可以用于写入优化模型、解向量、基向量、起始向量或参数设置。写入的数据类型由文件后缀决定。文件格式在文件格式部分中描述。
请注意,将模型写入文件将处理所有待处理的模型修改。在写入其他模型信息(如解决方案、基础等)时也是如此。
还要注意的是,当你编写一个Gurobi参数文件(PRM)时,所有未设置为默认值的整数或双精度参数都会被保存,但不会将任何字符串参数保存到文件中。
最后,请注意,当IgnoreNames=1时,在写入文件时,变量和约束的名称将被替换为默认名称。
- Parameters:
filename – 要写入的文件名。文件类型编码在文件名的后缀中。有效的后缀包括
.mps、.rew、.lp或.rlp用于写入模型本身,.dua或.dlp用于写入对偶化模型(仅限纯 LP),.ilp用于写入与不可行模型相关的 IIS(参见GRBModel.ComputeIIS获取更多信息),.sol用于写入由 SolutionNumber 参数选择的解决方案,.mst用于写入起始向量,.hnt用于写入提示文件,.bas用于写入 LP 基础,.prm用于写入修改后的参数设置,.attr用于写入模型属性,或.json用于以 JSON 格式写入解决方案信息。如果您的系统安装了压缩工具(例如,Windows 上的7z或zip,以及 Linux 或 macOS 上的gzip、bzip2或unzip),则文件可以被压缩,因此还接受.zip、.gz、.bz2、.7z或.xz等附加后缀。- Example:
model.Write("myModel.lp");
model.Write("myModel.lp")