1
use cstr_enum :: * ; use super :: { IntAttr , CharAttr , StrAttr , DoubleAttr , ObjAttr , Var , Constr , QConstr , SOS } ; # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum VarStrAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nTag for variables.\n\nIf you will be retrieving the solution to your model in JSON format, you might define a tag for every variable that you\nplan to retrieve solution information for. Each variable tag must be unique, and if any tag is used (variable tag,\nconstraint tag, quadratic constraint tag) only tagged elements will appear in the JSON solution string. Tags must\nconsist of printable US-ASCII characters. Using extended characters or escaped characters will result in an error. The\nmaximum supported length for a tag is 10240 characters.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/vtag.html).\n"] VTag , # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nVariable name.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/varname.html).\n"] VarName } impl StrAttr for VarStrAttr { } impl ObjAttr for VarStrAttr { type Obj = Var ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum QConstrIntAttr { # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nFor an infeasible model, indicates whether the quadratic constraint participates in the computed Irreducible\nInconsistent Subsystem (IIS). Only available after you have computed an IIS.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iisqconstr.html).\n"] IISQConstr , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nWhen computing an Irreducible Inconsistent Subsytem (IIS) for an infeasible model, indicates whether the quadratic\nconstraint should be included or excluded from the IIS.\n\nThe default value of -1 lets the IIS algorithm decide.\n\nIf the attribute is set to 0, the constraint is not eligible for inclusion in the IIS.\n\nIf the attribute is set to 1, the constraint is included in the IIS and the IIS algorithm never considers the\npossibility of removing it.\n\nNote that setting this attribute to 0 may make the resulting subsystem feasible (or consistent), which would then make\nit impossible to construct an IIS. Trying anyway will result in a GRB_ERROR_IIS_NOT_INFEASIBLE error. Similarly, setting\nthis attribute to 1 may result in an IIS that is not irreducible. More precisely, the system would only be irreducible\nwith respect to the model elements that have force values of -1 or 0.\n\nSee the Model.computeIIS documentation for more details.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iisqconstrforce.html).\n"] IISQConstrForce } impl IntAttr for QConstrIntAttr { } impl ObjAttr for QConstrIntAttr { type Obj = QConstr ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum VarVTypeAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ `char`\n\n\nVariable type ('C' for continuous, 'B' for binary, 'I' for integer, 'S' for semi-continuous, or 'N' for semi-integer).\nBinary variables must be either 0 or 1. Integer variables can take any integer value between the specified lower and\nupper bounds. Semi-continuous variables can take any value between the specified lower and upper bounds, or a value of\nzero. Semi-integer variables can take any integer value between the specified lower and upper bounds, or a value of\nzero.\n\nRefer to this section for more information on variable types.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/vtype.html).\n"] VType } impl ObjAttr for VarVTypeAttr { type Obj = Var ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ConstrDoubleAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nThe current simplex start vector. If you set `DStart` values for every linear constraint in the model and `PStart`\nvalues for every variable, then simplex will use those values to compute a warm start basis. If you'd like to retract a\npreviously specified start, set any `DStart` value to GRB_UNDEFINED.\n\nNote that any model modifications which are pending or are made after setting `DStart` (adding variables or constraints,\nchanging coefficients, etc.) will discard the start. You should only set this attribute after you are done modifying\nyour model.\n\nNote also that you'll get much better performance if you warm start your linear program from a simplex basis (using\n`VBasis` and CBasis). The `DStart` attribute should only be used in situations where you don't have a basis or you don't\nwant to disable presolve.\n\nIf you'd like to provide a feasible starting solution for a MIP model, you should input it using the `Start` attribute.\n\nOnly affects LP models; it will be ignored for QP, QCP, or MIP models.\n\nNote that if you provide a valid starting extreme point, either through PStart, DStart, or through VBasis, CBasis, then\nLP presolve will be disabled by default. For models where presolve greatly reduces the problem size, this might hurt\nperformance. To allow presolve, it needs to set parameter LPWarmStart to 2.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dstart.html).\n"] DStart , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nTogether, attributes `FarkasDual` and `FarkasProof` provide a certificate of infeasibility for the given infeasible\nproblem. Specifically, `FarkasDual` can be used to form the following inequality from the original constraints that is\ninfeasible within the bounds of the variables:\n\n$\\lambda^tAx \\leq \\lambda^tb.$\n\nThis Farkas constraint is valid, because $\\lambda_i \\geq 0$ if the $i$-th constraint has a $\\leq$ sense and $\\lambda_i\n\\leq 0$ if the $i$-th constraint has a $\\geq$ sense.\n\nLet\n\n$\\bar{a} := \\lambda^tA$\n\nbe the coefficients of this inequality and\n\n$\\bar{b} := \\lambda^tb$\n\nbe its right hand side. With $L_j$ and $U_j$ being the lower and upper bounds of the variables $x_j$ we have $\\bar{a}_j\n\\geq 0$ if $U_j = \\infty$, and $\\bar{a}_j \\leq 0$ if $L_j = -\\infty$.\n\nThe minimum violation of the Farkas constraint is achieved by setting $x^*_j := L_j$ for $\\bar{a}_j > 0$ and $x^*_j :=\nU_j$ for $\\bar{a}_j < 0$. Then, we can calculate the minimum violation as\n\n$\\beta := \\bar{a}^tx^* - \\bar{b} = \\sum\\limits_{j:\\bar{a}_j>0}\\bar{a}_jL_j + \\sum\\limits_{j:\\bar{a}_j<0}\\bar{a}_jU_j -\n\\bar{b}$\n\nwhere $\\beta>0$.\n\nThe `FarkasProof` attribute provides $\\beta$, and the `FarkasDual` attributes provide the $\\lambda$ multipliers for the\noriginal constraints.\n\nThese attributes are only available when parameter InfUnbdInfo is set to 1.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/farkasdual.html).\n"] FarkasDual , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe constraint dual value in the current solution (also known as the shadow price).\n\nGiven a linear programming problem\n\n$\\begin{array}{ll} \\mathrm{minimize} & c'x \\\\ \\mathrm{subject\\ to} & Ax \\ge b \\\\ & x \\ge 0 \\end{array}$\n\nand a corresponding dual problem\n\n$\\begin{array}{ll} \\mathrm{maximize} & b'y \\\\ \\mathrm{subject\\ to} & A'y \\le c \\\\ & y \\ge 0 \\end{array}$\n\nthe `Pi` attribute returns $y$.\n\nOf course, not all models fit this canonical form. In general, dual values have the following properties:\n\nDual values for $\\ge$ constraints are $\\ge 0$.\n\nDual values for $\\le$ constraints are $\\le 0$.\n\nDual values for $=$ constraints are unconstrained.\n\nFor models with a maximization sense, the senses of the dual values are reversed: the dual is $\\ge 0$ for a $\\le$\nconstraint and $\\le 0$ for a $\\ge$ constraint.\n\nNote that constraint dual values for linear constraints of QCP models are only available when the QCPDual parameter is\nset to 1. To query the duals of the quadratic constraints in a QCP model, see QCPi.\n\nOnly available for convex, continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/pi.html).\n"] Pi , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nConstraint right-hand side.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/rhs.html).\n"] RHS , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nRight-hand side sensitivity information: smallest right-hand side value at which the current optimal basis would remain\noptimal. Only available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/sarhslow.html).\n"] SARHSLow , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nRight-hand side sensitivity information: largest right-hand side value at which the current optimal basis would remain\noptimal. Only available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/sarhsup.html).\n"] SARHSUp , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query or modify changes of the linear constraint right-\nhand sides in scenario $n$ w.r.t. the base model. You set $n$ using the ScenarioNumber parameter.\n\nIf an element of this array attribute is set to the undefined value (GRB_UNDEFINED in C and C++, or GRB.UNDEFINED in\nJava, .NET, and Python), it means that the corresponding value in the scenario is identical to the one in the base\nmodel.\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennrhs.html).\n"] ScenNRHS , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe constraint slack in the current solution.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/slack.html).\n"] Slack } impl DoubleAttr for ConstrDoubleAttr { } impl ObjAttr for ConstrDoubleAttr { type Obj = Constr ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum VarDoubleAttr { # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query the variable value in the current solution of\nscenario $n$. You set $n$ using the ScenarioNumber parameter.\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennx.html).\n"] ScenNX , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe variable value in the best barrier iterate (before crossover). Only available when the barrier algorithm was\nselected.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/barx.html).\n"] BarX , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nVariable lower bound. Note that any value less than -1e20 is treated as negative infinity.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/lb.html).\n"] LB , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nLinear objective coefficient. In our object-oriented interfaces, you typically use the setObjective method to set the\nobjective, but this attribute provides an alternative for setting or modifying linear objective terms.\n\nNote that this attribute interacts with our piecewise-linear objective feature. If you set a piecewise-linear objective\nfunction for a variable, that will automatically set the `Obj` attribute to zero. Similarly, if you set the `Obj`\nattribute for a variable, that will automatically delete any previously specified piecewise-linear objective.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/obj.html).\n"] Obj , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple objectives, this attribute is used to query or modify objective coefficients for objective\n$n$. You set $n$ using the ObjNumber parameter. Note that when ObjNumber is equal to 0, `ObjN` is equivalent to Obj.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objn.html).\n"] ObjN , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nThe current simplex start vector. If you set `PStart` values for every variable in the model and `DStart` values for\nevery constraint, then simplex will use those values to compute a warm start basis. If you'd like to retract a\npreviously specified start, set any `PStart` value to GRB_UNDEFINED.\n\nNote that any model modifications which are pending or are made after setting `PStart` (adding variables or constraints,\nchanging coefficients, etc.) will discard the start. You should only set this attribute after you are done modifying\nyour model.\n\nNote also that you'll get much better performance if you warm start your linear program using a simplex basis (using\n`VBasis` and CBasis). The `PStart` attribute should only be used in situations where you don't have a basis or you don't\nwant to disable presolve.\n\nIf you'd like to provide a feasible starting solution for a MIP model, you should input it using the `Start` attribute.\n\nOnly affects LP models; it will be ignored for QP, QCP, or MIP models.\n\nNote that if you provide a valid starting extreme point, either through PStart, DStart, or through VBasis, CBasis, then\nLP presolve will be disabled by default. For models where presolve greatly reduces the problem size, this might hurt\nperformance. To allow presolve, it needs to set parameter LPWarmStart to 2.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/pstart.html).\n"] PStart , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe reduced cost in the current solution. Only available for convex, continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/rc.html).\n"] RC , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nLower bound sensitivity information: smallest lower bound value at which the current optimal basis would remain optimal.\nOnly available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/salblow.html).\n"] SALBLow , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nLower bound sensitivity information: largest lower bound value at which the current optimal basis would remain optimal.\nOnly available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/salbup.html).\n"] SALBUp , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nObjective coefficient sensitivity information: smallest objective value at which the current optimal basis would remain\noptimal. Only available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/saobjlow.html).\n"] SAObjLow , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nObjective coefficient sensitivity information: largest objective value at which the current optimal basis would remain\noptimal. Only available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/saobjup.html).\n"] SAObjUp , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nUpper bound sensitivity information: smallest upper bound value at which the current optimal basis would remain optimal.\nOnly available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/saublow.html).\n"] SAUBLow , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nUpper bound sensitivity information: largest upper bound value at which the current optimal basis would remain optimal.\nOnly available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/saubup.html).\n"] SAUBUp , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query or modify changes of the variable lower bounds in\nscenario $n$ w.r.t. the base model. You set $n$ using the ScenarioNumber parameter.\n\nIf an element of this array attribute is set to the undefined value (GRB_UNDEFINED in C and C++, or GRB.UNDEFINED in\nJava, .NET, and Python), it means that the corresponding value in the scenario is identical to the one in the base\nmodel.\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennlb.html).\n"] ScenNLB , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query or modify changes of the variable objective\ncoefficients in scenario $n$ w.r.t. the base model. You set $n$ using the ScenarioNumber parameter.\n\nIf an element of this array attribute is set to the undefined value (GRB_UNDEFINED in C and C++, or GRB.UNDEFINED in\nJava, .NET, and Python), it means that the corresponding value in the scenario is identical to the one in the base\nmodel.\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennobj.html).\n"] ScenNObj , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query or modify changes of the variable upper bounds in\nscenario $n$ w.r.t. the base model. You set $n$ using the ScenarioNumber parameter.\n\nIf an element of this array attribute is set to the undefined value (GRB_UNDEFINED in C and C++, or GRB.UNDEFINED in\nJava, .NET, and Python), it means that the corresponding value in the scenario is identical to the one in the base\nmodel.\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennub.html).\n"] ScenNUB , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nThe current MIP start vector. The MIP solver will attempt to build an initial solution from this vector when it is\navailable. Note that the start can be partially populated -- the MIP solver will attempt to fill in values for missing\nstart values. If you wish to leave the start value for a variable undefined, you can either avoid setting the `Start`\nattribute for that variable, or you can set it to a special undefined value (GRB_UNDEFINED in C and C++, or\nGRB.UNDEFINED in Java, .NET, and Python).\n\nIf the Gurobi MIP solver log indicates that your MIP start didn't produce a new incumbent solution, note that there can\nbe multiple explanations. One possibility is that your MIP start is infeasible. Another, more common possibility is that\none of the Gurobi heuristics found a solution that is as good as the solution produced by the MIP start, so the MIP\nstart solution was cut off. Finally, if you specified a partial MIP start, it is possible that the limited MIP\nexploration done on this partial start was insufficient to find a new incumbent solution. You can try setting the\nStartNodeLimit parameter to a larger value if you want Gurobi to work harder to try to complete the partial start.\n\nIf you solve a sequence of models, where one is built by modifying the previous one, and if you don't provide a MIP\nstart, then Gurobi will try to construct one automatically from the solution of the previous model. If you don't want it\nto try this, you should reset the model before starting the subsequent solve. If you provided a MIP start but would\nprefer to use the previous solution as the start instead, you should clear your start (by setting the `Start` attribute\nto undefined for all variables).\n\nIf you have multiple start vectors, you can provide them to Gurobi by using the `Start` attribute in combination with\nthe `NumStart` attribute and the StartNumber parameter. Specifically, use the `NumStart` attribute to indicate how many\nstart vectors you will supply. Then set the StartNumber parameter to a value between 0 and NumStart-1 to indicate which\nstart you are supplying. For each value of StartNumber, populate the `Start` attribute to supply that start. Gurobi will\nuse all of the provided starts. As an alternative, you can append new MIP start vectors to your model by setting the\nStartNumber parameter to -1. In this case, whenever you read a MIP start, or use a function to set a MIP start value for\na set of variables, a new MIP start will be created, the parameter `NumStart` will be increased, and any unspecified\nvariable will be left as undefined.\n\nIf you want to diagnose an infeasible MIP start, you can try fixing the variables in the model to their values in your\nMIP start (by setting their lower and upper bound attributes). If the resulting MIP model is infeasible, you can then\ncompute an IIS on this model to get additional information that should help to identify the cause of the infeasibility.\n\nOnly affects MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/start.html).\n"] Start , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nVariable upper bound. Note that any value greater than 1e20 is treated as infinite.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/ub.html).\n"] UB , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nUnbounded ray (for unbounded linear models only). Provides a vector that, when added to any feasible solution, yields a\nnew solution that is also feasible but improves the objective. Only available when parameter InfUnbdInfo is set to 1.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/unbdray.html).\n"] UnbdRay , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nA set of user hints. If you know that a variable is likely to take a particular value in high quality solutions of a MIP\nmodel, you can provide that value as a hint. You can also (optionally) provide information about your level of\nconfidence in a hint with the `VarHintPri` attribute.\n\nThe Gurobi MIP solver will use these variable hints in a number of different ways. Hints will affect the heuristics that\nGurobi uses to find feasible solutions, and the branching decisions that Gurobi makes to explore the MIP search tree. In\ngeneral, high quality hints should produce high quality MIP solutions faster. In contrast, low quality hints will lead\nto some wasted effort, but shouldn't lead to dramatic performance degradations.\n\nVariables hints and MIP starts are similar in concept, but they behave in very different ways. If you specify a MIP\nstart, the Gurobi MIP solver will try to build a single feasible solution from the provided set of variable values. If\nyou know a solution, you should use a MIP start to provide it to the solver. In contrast, variable hints provide\nguidance to the MIP solver that affects the entire solution process. If you have a general sense of the likely values\nfor variables, you should provide them through variable hints.\n\nIf you wish to leave the hint value for a variable undefined, you can either avoid setting the `VarHintVal` attribute\nfor that variable, or you can set it to a special undefined value (GRB_UNDEFINED in C and C++, GRB.UNDEFINED in Java,\n.NET, and Python, NA in R or nan in Matlab).\n\nNote that deleting variables from your model will cause several attributes to be discarded (variable hints and branch\npriorities). If you'd like them to persist, your program will need to repopulate them after deleting the variables and\nmaking a subsequent model update call.\n\nOnly affects MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/varhintval.html).\n"] VarHintVal , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nVariable value in the current solution.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/x.html).\n"] X , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe variable value in a sub-optimal MIP solution. Use parameter SolutionNumber to indicate which alternate solution to\nretrieve. Solutions are sorted in order of worsening objective value. Thus, when SolutionNumber is 1, `Xn` returns the\nsecond-best solution found. When SolutionNumber is equal to its default value of 0, querying attribute `Xn` is\nequivalent to querying attribute X.\n\nThe number of sub-optimal solutions found during the MIP search will depend on the values of a few parameters. The most\nimportant of these are PoolSolutions, PoolSearchMode, and PoolGap. Please consult the section on Solution Pools for a\nmore detailed discussion of this topic.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/xn.html).\n"] Xn } impl DoubleAttr for VarDoubleAttr { } impl ObjAttr for VarDoubleAttr { type Obj = Var ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ModelStatusAttr { # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nCurrent optimization status for the model. `Status` values are described in the `Status` Code section.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/status.html).\n"] Status } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ModelModelSenseAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nOptimization sense. The default 1 value indicates that the objective is to minimize the objective. Setting this\nattribute to -1 changes the sense to maximization.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/modelsense.html).\n"] ModelSense } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ModelIntAttr { # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nNumber of barrier iterations performed during the most recent optimization.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/baritercount.html).\n"] BarIterCount , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest (scaled) bound violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/boundsvioindex.html).\n"] BoundSVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest (unscaled) bound violation.\n\nAvailable for all model types.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/boundvioindex.html).\n"] BoundVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest complementarity violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/complvioindex.html).\n"] ComplVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of linear constraint with the largest (unscaled) constraint error.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrresidualindex.html).\n"] ConstrResidualIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of linear constraint with the largest (scaled) constraint error.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrsresidualindex.html).\n"] ConstrSResidualIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of linear constraint with the largest (scaled) slack bound violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrsvioindex.html).\n"] ConstrSVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of linear constraint with the largest (unscaled) slack bound violation for continuous linear models solved by\nsimplex.\n\nFor MIP or other situations, it is for all the constraints. The constraint order is linear, quadratic, SOS and general.\nAssume there are $l$ linear, $q$ quadratic, $s$ SOS and $g$ general constraints and the index $i$ is between $l+q+s$ and\n$l+q+s+g$, then the general constraint with index $i-l-q-s$ has the biggest violation.\n\nAvailable for all model types.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrvioindex.html).\n"] ConstrVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest (unscaled) dual constraint error.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualresidualindex.html).\n"] DualResidualIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest (scaled) dual constraint error.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualsresidualindex.html).\n"] DualSResidualIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest (scaled) reduced cost violation. Note that the result may be larger than the number\nof variables in the model, which indicates that a constraint slack is the variable with the largest violation. Subtract\nthe variable count from the result to get the index of the corresponding constraint.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualsvioindex.html).\n"] DualSVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest (unscaled) reduced cost violation. Note that the result may be larger than the number\nof variables in the model, which indicates that a constraint slack is the variable with the largest violation. Subtract\nthe variable count from the result to get the index of the corresponding constraint.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualvioindex.html).\n"] DualVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nA hash value computed on model data and attributes that can influence the optimization process. The intent is that\nmodels that differ in any meaningful way will have different fingerprints (almost always).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/fingerprint.html).\n"] Fingerprint , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndicates whether the current Irreducible Inconsistent Subsystem (IIS) is minimal. This attribute is only available\nafter you have computed an IIS on an infeasible model. It will normally take value 1, but it may take value 0 if the IIS\ncomputation was stopped early (e.g., due to a time limit or user interrupt).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iisminimal.html).\n"] IISMinimal , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndex of variable with the largest integrality violation.\n\nOnly available for MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/intvioindex.html).\n"] IntVioIndex , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndicates whether the model is a MIP. Note that any discrete elements make the model a MIP. Discrete elements include\nbinary, integer, semi-continuous, semi-integer variables, SOS constraints, and general constraints. In addition, models\nhaving multiple objectives or multiple scenarios are considered as MIP models, even when all variables are continuous\nand all constraints are linear.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/ismip.html).\n"] IsMIP , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndicates whether the model has multiple objectives.\n\nNote that the case where the model has a single objective (NumObj = 1) is slightly ambiguous. If you used setObjectiveN\nto set your objective, or if you set any of the multi-objective attributes (e.g., ObjNPriority), then the model is\nconsidered to be a multi-objective model. Otherwise, it is not.\n\nTo reset a multi-objective model back to a single objective model, you should set the `NumObj` attribute to 0, call\nmodel update, and then set a new single objective.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/ismultiobj.html).\n"] IsMultiObj , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndicates whether the model has quadratic constraints.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/isqcp.html).\n"] IsQCP , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndicates whether the model is a quadratic programming problem. Note that a model with both a quadratic objective and\nquadratic constraints is classified as a QCP, not a QP.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/isqp.html).\n"] IsQP , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nLicense expiration date. The format is YYYYMMDD, so for example if the license currently in use expired on July 20,\n2018, the result would be 20180720. If the license has no expiration date, the result will be 99999999.\n\nThis attribute is available for node licenses and for clients of a Gurobi Compute Server. Unfortunately, this attribute\nisn't available for clients of a Gurobi Token Server.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/licenseexpiration.html).\n"] LicenseExpiration , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of binary variables in the model.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numbinvars.html).\n"] NumBinVars , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of linear constraints in the model.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numconstrs.html).\n"] NumConstrs , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of general constraints in the model.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numgenconstrs.html).\n"] NumGenConstrs , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of integer variables in the model. This includes both binary variables and general integer variables.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numintvars.html).\n"] NumIntVars , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of non-zero coefficients in the linear constraints of the model. For models with more than 2 billion non-zero\ncoefficients use DNumNZs.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numnzs.html).\n"] NumNZs , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nNumber of objectives in the model. If you modify this attribute, it will change the number of objectives in the model.\nDecreasing it will discard existing objectives. Increasing it will create new objectives (initialized to 0). Setting it\nto 0 will create a model with no objective (i.e., a feasibility model). If you want to switch from a multi-objective\nmodel to a single-objective model you also need to set `NumObj` to 0 and call model update before installing a new\nsingle objective.\n\nYou can use the ObjNumber parameter, in conjunction with multi-objective attributes (ObjN, ObjNName, etc.), to query or\nmodify attributes for different objectives. The value of ObjNumber should always be less than NumObj.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numobj.html).\n"] NumObj , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of variables in the model with piecewise-linear objective functions. You can query the function for a\nspecific variable using the appropriate getPWLObj method for your language (in C, C++, C#, Java, and Python).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numpwlobjvars.html).\n"] NumPWLObjVars , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of non-zero coefficients in the quadratic constraints.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numqcnzs.html).\n"] NumQCNZs , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of quadratic constraints in the model.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numqconstrs.html).\n"] NumQConstrs , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of terms in the lower triangle of the Q matrix in the quadratic objective.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numqnzs.html).\n"] NumQNZs , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of Special Ordered Set (SOS) constraints in the model.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numsos.html).\n"] NumSOS , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nNumber of scenarios in the model. Modifying this attribute changes the number: decreasing it discards existing\nscenarios; increasing it creates new scenarios (initialized to have no changes w.r.t. the base model); setting it to 0\ndiscards all scenarios so that the base model is no longer a multi-scenario model.\n\nYou can use the ScenarioNumber parameter, in conjunction with multi-scenario attributes (ScenNLB, ScenNUB, ScenNObj,\nScenNRHS, ScenNName, etc.), to query or modify attributes for different scenarios. The value of ScenarioNumber should\nalways be less than NumScenarios.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numscenarios.html).\n"] NumScenarios , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nNumber of MIP starts in the model. Decreasing this attribute will discard existing MIP starts. Increasing it will create\nnew MIP starts (initialized to undefined).\n\nYou can use the StartNumber parameter to query or modify start values for different MIP starts, or to append a new one.\nThe value of StartNumber should always be less than NumStart.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numstart.html).\n"] NumStart , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThe number of decision variables in the model.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/numvars.html).\n"] NumVars , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nThis attribute is used to query or modify the priority of objective $n$ when doing hierarchical multi-objective\noptimization. You set $n$ using the ObjNumber parameter.\n\nThe default priority for an objective is 0.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objnpriority.html).\n"] ObjNPriority , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nNumber of stored solutions from the most recent optimization.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/solcount.html).\n"] SolCount , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nAfter the tuning tool has been run, this attribute reports the number of parameter sets that were stored. This value\nwill be zero if no improving parameter sets were found, and its upper bound is determined by the TuneResults parameter.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/tuneresultcount.html).\n"] TuneResultCount , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nThis attribute is used to query the winning method after a continuous problem has been solved with concurrent\noptimization. In this case it returns the corresponding method identifier 0 (for primal Simplex), 1 (for dual Simplex),\nor 2 (for Barrier). In all other cases -1 is returned.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/concurrentwinmethod.html).\n"] ConcurrentWinMethod } impl IntAttr for ModelIntAttr { } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ConstrSenseAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ `char`\n\n\nConstraint sense ('<', '>', or '=').\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/sense.html).\n"] Sense } impl ObjAttr for ConstrSenseAttr { type Obj = Constr ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum QConstrStrAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nQuadratic constraint name.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/qcname.html).\n"] QCName , # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nTag for quadratic constraints.\n\nIf you will be retrieving the solution to your model in JSON format, you might define a tag for every quadratic\nconstraint that you plan to retrieve solution information for. Each quadratic constraint tag must be unique, and if any\ntag is used (variable tag, constraint tag, quadratic constraint tag) only tagged elements will appear in the JSON\nsolution string. Tags must consist of printable US-ASCII characters. Using extended characters or escaped characters\nwill result in an error. The maximum supported length for a tag is 10240 characters.\n\nNote that quadratic constraint tags are only allowed for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/qctag.html).\n"] QCTag } impl StrAttr for QConstrStrAttr { } impl ObjAttr for QConstrStrAttr { type Obj = QConstr ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum SOSIntAttr { # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nFor an infeasible model, indicates whether the SOS constraint participates in the computed Irreducible Inconsistent\nSubsystem (IIS). Only available after you have computed an IIS.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iissos.html).\n"] IISSOS , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nWhen computing an Irreducible Inconsistent Subsytem (IIS) for an infeasible model, indicates whether the SOS constraint\nshould be included or excluded from the IIS.\n\nThe default value of -1 lets the IIS algorithm decide.\n\nIf the attribute is set to 0, the constraint is not eligible for inclusion in the IIS.\n\nIf the attribute is set to 1, the constraint is included in the IIS and the IIS algorithm never considers the\npossibility of removing it.\n\nNote that setting this attribute to 0 may make the resulting subsystem feasible (or consistent), which would then make\nit impossible to construct an IIS. Trying anyway will result in a GRB_ERROR_IIS_NOT_INFEASIBLE error. Similarly, setting\nthis attribute to 1 may result in an IIS that is not irreducible. More precisely, the system would only be irreducible\nwith respect to the model elements that have force values of -1 or 0.\n\nSee the Model.computeIIS documentation for more details.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iissosforce.html).\n"] IISSOSForce } impl IntAttr for SOSIntAttr { } impl ObjAttr for SOSIntAttr { type Obj = SOS ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ConstrIntAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nThe status of a given linear constraint in the current basis. Possible values are 0 (basic) or -1 (non-basic). A\nconstraint is basic when its slack variable is in the simplex basis. Note that, if you wish to specify an advanced\nstarting basis, you must set basis status information for all constraints and variables in the model. Only available for\nbasic solutions.\n\nNote that if you provide a valid starting extreme point, either through PStart, DStart, or through VBasis, CBasis, then\nLP presolve will be disabled by default. For models where presolve greatly reduces the problem size, this might hurt\nperformance. To allow presolve, it needs to set parameter LPWarmStart to 2.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/cbasis.html).\n"] CBasis , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nFor an infeasible model, indicates whether the linear constraint participates in the computed Irreducible Inconsistent\nSubsystem (IIS). Only available after you have computed an IIS.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iisconstr.html).\n"] IISConstr , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nDetermines whether a linear constraint is treated as a lazy constraint or a user cut.\n\nAt the beginning of the MIP solution process, any constraint whose `Lazy` attribute is set to 1, 2, or 3 (the default\nvalue is 0) is treated as a lazy constraint; it is removed from the model and placed in the lazy constraint pool. `Lazy`\nconstraints remain inactive until a feasible solution is found, at which point the solution is checked against the lazy\nconstraint pool. If the solution violates any lazy constraints, the solution is discarded and one or more of the\nviolated lazy constraints are pulled into the active model.\n\nLarger values for this attribute cause the constraint to be pulled into the model more aggressively. With a value of 1,\nthe constraint can be used to cut off a feasible solution, but it won't necessarily be pulled in if another lazy\nconstraint also cuts off the solution. With a value of 2, all lazy constraints that are violated by a feasible solution\nwill be pulled into the model. With a value of 3, lazy constraints that cut off the relaxation solution at the root node\nare also pulled in.\n\nAny constraint whose `Lazy` attribute is set to -1 is treated as a user cut; it is removed from the model and placed in\nthe user cut pool. User cuts may be added to the model at any node in the branch-and-cut search tree to cut off\nrelaxation solutions.\n\nThe main difference between user cuts and lazy constraints is that that the former are not allowed to cut off integer-\nfeasible solutions. In other words, they are redundant for the MIP model, and the solver is free to decide whether or\nnot to use them to cut off relaxation solutions. The hope is that adding them speeds up the overall solution process.\n`Lazy` constraints have no such restrictions. They are essential to the model, and the solver is forced to apply them\nwhenever a solution would otherwise not satisfy them.\n\nNote that deleting constraints from your model will cause this attribute to be discarded. If you'd like it to persist,\nyour program will need to repopulate it after deleting the constraints and making a subsequent model update call.\n\nNote that no corresponding attribute is available for other constraint types (quadratic, SOS, or general constraints).\nThis attribute only affects MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/lazy.html).\n"] Lazy , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nWhen computing an Irreducible Inconsistent Subsytem (IIS) for an infeasible model, indicates whether the linear\nconstraint should be included or excluded from the IIS.\n\nThe default value of -1 lets the IIS algorithm decide.\n\nIf the attribute is set to 0, the constraint is not eligible for inclusion in the IIS.\n\nIf the attribute is set to 1, the constraint is included in the IIS and the IIS algorithm never considers the\npossibility of removing it.\n\nNote that setting this attribute to 0 may make the resulting subsystem feasible (or consistent), which would then make\nit impossible to construct an IIS. Trying anyway will result in a GRB_ERROR_IIS_NOT_INFEASIBLE error. Similarly, setting\nthis attribute to 1 may result in an IIS that is not irreducible. More precisely, the system would only be irreducible\nwith respect to the model elements that have force values of -1 or 0.\n\nSee the Model.computeIIS documentation for more details.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iisconstrforce.html).\n"] IISConstrForce } impl IntAttr for ConstrIntAttr { } impl ObjAttr for ConstrIntAttr { type Obj = Constr ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum QConstrDoubleAttr { # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe constraint dual value in the current solution. Note that quadratic constraint dual values are only available when\nthe QCPDual parameter is set to 1.\n\nOnly available for convex, continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/qcpi.html).\n"] QCPi , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nQuadratic constraint right-hand side.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/qcrhs.html).\n"] QCRHS , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe constraint slack in the current solution.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/qcslack.html).\n"] QCSlack } impl DoubleAttr for QConstrDoubleAttr { } impl ObjAttr for QConstrDoubleAttr { type Obj = QConstr ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ConstrStrAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nTag for constraints.\n\nIf you will be retrieving the solution to your model in JSON format, you might define a tag for every constraint that\nyou plan to retrieve solution information for. Each constraint tag must be unique, and if any tag is used (variable tag,\nconstraint tag, quadratic constraint tag) only tagged elements will appear in the JSON solution string. Tags must\nconsist of printable US-ASCII characters. Using extended characters or escaped characters will result in an error. The\nmaximum supported length for a tag is 10240 characters.\n\nNote that constraint tags are only allowed for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/ctag.html).\n"] CTag , # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nConstraint name.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrname.html).\n"] ConstrName } impl StrAttr for ConstrStrAttr { } impl ObjAttr for ConstrStrAttr { type Obj = Constr ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ModelDoubleAttr { # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (scaled) bound violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/boundsvio.html).\n"] BoundSVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (scaled) bound violations.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/boundsviosum.html).\n"] BoundSVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (unscaled) bound violation.\n\nAvailable for all model types.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/boundvio.html).\n"] BoundVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (unscaled) bound violations.\n\nAvailable for all model types.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/boundviosum.html).\n"] BoundVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum complementarity violation. In an optimal solution, the product of the value of a variable and its reduced cost\nmust be zero. This isn't always strictly true for interior point solutions. This attribute returns the maximum\ncomplementarity violation for any variable.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/complvio.html).\n"] ComplVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of complementarity violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/complviosum.html).\n"] ComplVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nReporting constraint violations for the simplex solver is actually more complex than it may appear, due to the treatment\nof slacks on linear inequality constraints. The simplex solver introduces explicit non-negative slack variables inside\nthe algorithm. Thus, for example, $a^Tx \\le b$ becomes $a^Tx + s = b$. In this formulation, constraint errors can show\nup in two places: (i) as bound violations on the computed slack variable values, and (ii) as differences between $a^Tx +\ns$ and $b$. We report the former as `ConstrVio` and the latter as ConstrResidual.\n\nOnly available for continuous models. For MIP models, constraint violations are reported in ConstrVio.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrresidual.html).\n"] ConstrResidual , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (unscaled) linear constraint violations.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrresidualsum.html).\n"] ConstrResidualSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (scaled) primal constraint error.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrsresidual.html).\n"] ConstrSResidual , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (scaled) linear constraint violations.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrsresidualsum.html).\n"] ConstrSResidualSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (scaled) slack bound violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrsvio.html).\n"] ConstrSVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (scaled) slack bound violations.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrsviosum.html).\n"] ConstrSVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nReporting constraint violations for the simplex solver is actually more complex than it may appear, due to the treatment\nof slacks on linear inequality constraints. The simplex solver introduces explicit non-negative slack variables inside\nthe algorithm. Thus, for example, $a^Tx \\le b$ becomes $a^Tx + s = b$. In this formulation, constraint errors can show\nup in two places: (i) as bound violations on the computed slack variable values, and (ii) as differences between $a^Tx +\ns$ and $b$. We report the former as `ConstrVio` and the latter as ConstrResidual.\n\nFor MIP models, the maximum violation of the constraints, including linear, quadratic, SOS and general constraints, is\nreported in ConstrVio.\n\nAvailable for all model types.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrvio.html).\n"] ConstrVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (unscaled) slack bound violations.\n\nAvailable for all model types.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/constrviosum.html).\n"] ConstrVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe number of non-zero coefficients in the linear constraints of the model. This attribute is provided in double\nprecision format to accurately count the number of non-zeros in models that contain more than 2 billion non-zero\ncoefficients.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dnumnzs.html).\n"] DNumNZs , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nReporting dual constraint violations for the simplex solver is actually more complex than it may appear, due to the\ntreatment of reduced costs for bounded variables. The simplex solver introduces explicit non-negative reduced-cost\nvariables inside the algorithm. Thus, $a^Ty \\ge c$ becomes $a^Ty - z = c$ (where $y$ is the dual vector and $z$ is the\nreduced cost). In this formulation, errors can show up in two places: (i) as bound violations on the computed reduced-\ncost variable values, and (ii) as differences between $a^Ty - z$ and $c$. We report the former as `DualVio` and the\nlatter as DualResidual.\n\n`DualResidual` reports the maximum (unscaled) dual constraint error.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualresidual.html).\n"] DualResidual , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (unscaled) dual constraint errors.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualresidualsum.html).\n"] DualResidualSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (scaled) dual constraint error.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualsresidual.html).\n"] DualSResidual , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (scaled) dual constraint errors.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualsresidualsum.html).\n"] DualSResidualSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (scaled) reduced cost violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualsvio.html).\n"] DualSVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (scaled) reduced cost violations.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualsviosum.html).\n"] DualSVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nReporting dual constraint violations for the simplex solver is actually more complex than it may appear, due to the\ntreatment of reduced costs for bounded variables. The simplex solver introduces explicit non-negative reduced-cost\nvariables inside the algorithm. Thus, $a^Ty \\ge c$ becomes $a^Ty - z = c$ (where $y$ is the dual vector and $z$ is the\nreduced cost). In this formulation, errors can show up in two places: (i) as bound violations on the computed reduced-\ncost variable values, and (ii) as differences between $a^Ty - z$ and $c$. We report the former as `DualVio` and the\nlatter as DualResidual.\n\n`DualVio` reports the maximum (unscaled) reduced-cost bound violation.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualvio.html).\n"] DualVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of (unscaled) reduced cost violations.\n\nOnly available for continuous models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/dualviosum.html).\n"] DualVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nTogether, attributes `FarkasDual` and `FarkasProof` provide a certificate of infeasibility for the given infeasible\nproblem. Specifically, `FarkasDual` can be used to form the following inequality from the original constraints that is\ninfeasible within the bounds of the variables:\n\n$\\lambda^tAx \\leq \\lambda^tb.$\n\nThis Farkas constraint is valid, because $\\lambda_i \\geq 0$ if the $i$-th constraint has a $\\leq$ sense and $\\lambda_i\n\\leq 0$ if the $i$-th constraint has a $\\geq$ sense.\n\nLet\n\n$\\bar{a} := \\lambda^tA$\n\nbe the coefficients of this inequality and\n\n$\\bar{b} := \\lambda^tb$\n\nbe its right hand side. With $L_j$ and $U_j$ being the lower and upper bounds of the variables $x_j$ we have $\\bar{a}_j\n\\geq 0$ if $U_j = \\infty$, and $\\bar{a}_j \\leq 0$ if $L_j = -\\infty$.\n\nThe minimum violation of the Farkas constraint is achieved by setting $x^*_j := L_j$ for $\\bar{a}_j > 0$ and $x^*_j :=\nU_j$ for $\\bar{a}_j < 0$. Then, we can calculate the minimum violation as\n\n$\\beta := \\bar{a}^tx^* - \\bar{b} = \\sum\\limits_{j:\\bar{a}_j>0}\\bar{a}_jL_j + \\sum\\limits_{j:\\bar{a}_j<0}\\bar{a}_jU_j -\n\\bar{b}$\n\nwhere $\\beta>0$.\n\nThe `FarkasProof` attribute provides $\\beta$, and the `FarkasDual` attributes provide the $\\lambda$ multipliers for the\noriginal constraints.\n\nThese attributes are only available when parameter InfUnbdInfo is set to 1.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/farkasproof.html).\n"] FarkasProof , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nA MIP solver won't always assign strictly integral values to integer variables. This attribute returns the largest\ndistance between the computed value of any integer variable and the nearest integer.\n\nOnly available for MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/intvio.html).\n"] IntVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nSum of integrality violations.\n\nOnly available for MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/intviosum.html).\n"] IntVioSum , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nNumber of simplex iterations performed during the most recent optimization.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/itercount.html).\n"] IterCount , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nEstimated condition number for the current LP basis matrix. Only available for basic solutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/kappa.html).\n"] Kappa , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nExact condition number for the current LP basis matrix. Only available for basic solutions. The exact condition number\nis much more expensive to compute than the estimate that you get from the `Kappa` attribute. Only available for basic\nsolutions.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/kappaexact.html).\n"] KappaExact , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nCurrent relative MIP optimality gap; computed as\n\n$\\vert ObjBound-ObjVal\\vert/\\vert ObjVal\\vert$ (where `ObjBound` and `ObjVal` are the MIP objective bound and incumbent\nsolution objective, respectively. Returns GRB_INFINITY when an incumbent solution has not yet been found, when no\nobjective bound is available, or when the current incumbent objective is 0.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/mipgap.html).\n"] MIPGap , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (finite) variable bound.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxbound.html).\n"] MaxBound , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum matrix coefficient (in absolute value) in the linear constraint matrix.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxcoeff.html).\n"] MaxCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum linear objective coefficient (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxobjcoeff.html).\n"] MaxObjCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum coefficient in the quadratic part of all quadratic constraint matrices (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxqccoeff.html).\n"] MaxQCCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum coefficient in the linear part of all quadratic constraint matrices (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxqclcoeff.html).\n"] MaxQCLCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (finite) quadratic constraint right-hand side value (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxqcrhs.html).\n"] MaxQCRHS , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum coefficient of the quadratic terms in the objective (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxqobjcoeff.html).\n"] MaxQObjCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum (finite) linear constraint right-hand side value (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxrhs.html).\n"] MaxRHS , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum (non-zero) variable bound.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/minbound.html).\n"] MinBound , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum non-zero matrix coefficient (in absolute value) in the linear constraint matrix.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/mincoeff.html).\n"] MinCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum (non-zero) linear objective coefficient (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/minobjcoeff.html).\n"] MinObjCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum (non-zero) coefficient in the quadratic part of all quadratic constraint matrices (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/minqccoeff.html).\n"] MinQCCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum (non-zero) coefficient in the linear part of all quadratic constraint matrices (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/minqclcoeff.html).\n"] MinQCLCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum (non-zero) quadratic constraint right-hand side value (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/minqcrhs.html).\n"] MinQCRHS , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum (non-zero) coefficient of the quadratic terms in the objective (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/minqobjcoeff.html).\n"] MinQObjCoeff , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMinimum (non-zero) linear constraint right-hand side value (in absolute value).\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/minrhs.html).\n"] MinRHS , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nNumber of branch-and-cut nodes explored in the most recent optimization.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/nodecount.html).\n"] NodeCount , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe best known bound on the optimal objective. When solving a MIP model, the algorithm maintains both a lower bound and\nan upper bound on the optimal objective value. For a minimization model, the upper bound is the objective of the best\nknown feasible solution, while the lower bound gives a bound on the best possible objective.\n\nIn contrast to ObjBoundC, this attribute takes advantage of objective integrality information to round to a tighter\nbound. For example, if the objective is known to take an integral value and the current best bound is 1.5, `ObjBound`\nwill return 2.0 while `ObjBoundC` will return 1.5.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objbound.html).\n"] ObjBound , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe best known bound on the optimal objective. When solving a MIP model, the algorithm maintains both a lower bound and\nan upper bound on the optimal objective value. For a minimization model, the upper bound is the objective of the best\nknown feasible solution, while the lower bound gives a bound on the best possible objective.\n\nIn contrast to ObjBound, this attribute does not take advantage of objective integrality information to round to a\ntighter bound. For example, if the objective is known to take an integral value and the current best bound is 1.5,\n`ObjBound` will return 2.0 while `ObjBoundC` will return 1.5.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objboundc.html).\n"] ObjBoundC , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nA constant value that is added into the model objective. The default value is 0.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objcon.html).\n"] ObjCon , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nThis attribute is used to set the allowable degradation for objective $n$ when doing hierarchical multi-objective\noptimization. You set $n$ using the ObjNumber parameter.\n\nHierarchical multi-objective MIP optimization will optimize for the different objectives in the model one at a time, in\npriority order. If it achieves objective value $z$ when it optimizes for this objective, then subsequent steps are\nallowed to degrade this value by at most ObjNAbsTol.\n\nObjective degradations are handled differently for multi-objective LP models. For LP models, solution quality for\nhigher-priority objectives is maintained by fixing some variables to their values in previous optimal solutions. These\nfixings are decided using variable reduced costs. The value of the `ObjNAbsTol` parameter indicates the amount by which\na fixed variable's reduced cost is allowed to violate dual feasibility. The value of the related `ObjNRelTol` attribute\nis ignored.\n\nThe default absolute tolerance for an objective is 1e-6.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objnabstol.html).\n"] ObjNAbsTol , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple objectives, this attribute is used to query or modify the constant term for objective $n$.\nYou set $n$ using the ObjNumber parameter. Note that when ObjNumber is equal to 0, `ObjNCon` is equivalent to ObjCon.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objncon.html).\n"] ObjNCon , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nThis attribute is used to set the allowable degradation for objective $n$ when doing hierarchical multi-objective\noptimization for MIP models. You set $n$ using the ObjNumber parameter.\n\nHierarchical multi-objective MIP optimization will optimize for the different objectives in the model one at a time, in\npriority order. If it achieves objective value $z$ when it optimizes for this objective, then subsequent steps are\nallowed to degrade this value by at most ObjNRelTol*$\\vert z\\vert$.\n\nObjective degradations are handled differently for multi-objective LP models. The allowable degradation is controlled\nstrictly using the ObjNAbsTol.\n\nThe default relative tolerance for an objective is 0.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objnreltol.html).\n"] ObjNRelTol , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThis attribute is used to query the objective value obtained for objective $n$ by the $k$-th solution stored in the pool\nof feasible solutions found so far for the problem. You set $n$ using the ObjNumber parameter, while you set $k$ using\nthe SolutionNumber parameter.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute; while the number of\nstored solutions can be queried using the `SolCount` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objnval.html).\n"] ObjNVal , # [doc = "- __Modifiable:__ Yes\n- __Type:__ double (`f64`)\n\n\nThis attribute is used to query or modify the weight of objective $n$ when doing blended multi-objective optimization.\nYou set $n$ using the ObjNumber parameter.\n\nThe default weight for an objective is 1.0.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objnweight.html).\n"] ObjNWeight , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThe objective value for the current solution. If the model was solved to optimality, then this attribute gives the\noptimal objective value.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objval.html).\n"] ObjVal , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nBound on the objective of undiscovered MIP solutions. The MIP solver stores solutions that it finds during the MIP\nsearch, but it only provides quality guarantees for those whose objective is at least as good as PoolObjBound.\nSpecifically, further exploration of the MIP search tree will not find solutions whose objective is better than\nPoolObjBound.\n\nThe difference between `PoolObjBound` and `ObjBound` is that the former gives an objective bound for undiscovered\nsolutions, while the latter gives a bound for any solution. Note that `PoolObjBound` and `ObjBound` can only have\ndifferent values if parameter PoolSearchMode is set to 2.\n\nPlease consult the section on Solution Pools for a more detailed discussion of this topic.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/poolobjbound.html).\n"] PoolObjBound , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nThis attribute is used to query the objective value of the $k$-th solution stored in the pool of feasible solutions\nfound so far for the problem. You set $k$ using the SolutionNumber parameter.\n\nThe number of stored solutions can be queried using the `SolCount` attribute.\n\nPlease consult the section on Solution Pools for a more detailed discussion of this topic.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/poolobjval.html).\n"] PoolObjVal , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\n`Runtime` for the most recent optimization (in seconds). Note that all times reported by the Gurobi Optimizer are wall-\nclock times.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/runtime.html).\n"] Runtime , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query the objective bound for scenario $n$. You set $n$\nusing the ScenarioNumber parameter.\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennobjbound.html).\n"] ScenNObjBound , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query the objective value of the current solution for\nscenario $n$. You set $n$ using the ScenarioNumber parameter. If no solution is available, this returns GRB_INFINITY\n(for a minimization objective).\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennobjval.html).\n"] ScenNObjVal , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nMaximum of all (unscaled) violations that apply to model type.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/maxvio.html).\n"] MaxVio , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\nNumber of open branch-and-cut nodes at the end of the most recent optimization. An open node is one that has been\ncreated but not yet explored.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/opennodecount.html).\n"] OpenNodeCount , # [doc = "- __Modifiable:__ No\n- __Type:__ double (`f64`)\n\n\n`Work` spent on the most recent optimization. In contrast to Runtime, work is deterministic, meaning that you will get\nexactly the same result every time provided you solve the same model on the same hardware with the same parameter and\nattribute settings. The units on this metric are arbitrary. One work unit corresponds very roughly to one second on a\nsingle thread, but this greatly depends on the hardware on which Gurobi is running and the model that is being solved.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/work.html).\n"] Work } impl DoubleAttr for ModelDoubleAttr { } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum ModelStrAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nThe name of the model. The name has no effect on Gurobi algorithms. It is output in the Gurobi log file when a model is\nsolved, and when a model is written to a file.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/modelname.html).\n"] ModelName , # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nWhen the model has multiple objectives, this attribute is used to query or modify the name for objective $n$. You set\n$n$ using the ObjNumber parameter.\n\nThe number of objectives in the model can be queried (or modified) using the `NumObj` attribute.\n\nPlease refer to the discussion of Multiple Objectives for more information on the use of alternative objectives.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/objnname.html).\n"] ObjNName , # [doc = "- __Modifiable:__ Yes\n- __Type:__ string (`String`)\n\n\nWhen the model has multiple scenarios, this attribute is used to query or modify the name for scenario $n$. You set $n$\nusing the ScenarioNumber parameter.\n\nThe number of scenarios in the model can be queried (or modified) using the `NumScenarios` attribute.\n\nPlease refer to the Multiple Scenarios discussion for more information.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/scennname.html).\n"] ScenNName } impl StrAttr for ModelStrAttr { } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum VarIntAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nVariable branching priority. The value of this attribute is used as the primary criterion for selecting a fractional\nvariable for branching during the MIP search. Variables with larger values always take priority over those with smaller\nvalues. Ties are broken using the standard branch variable selection criteria. The default variable branch priority\nvalue is zero.\n\nNote that deleting variables from your model will cause several attributes to be discarded (variable hints and branch\npriorities). If you'd like them to persist, your program will need to repopulate them after deleting the variables and\nmaking a subsequent model update call.\n\nOnly affects MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/branchpriority.html).\n"] BranchPriority , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nFor an infeasible model, indicates whether the lower bound participates in the computed Irreducible Inconsistent\nSubsystem (IIS). Note that the bounds for a binary variable are considered to be implicit in the variable type and will\nnever participate in an IIS.\n\nOnly available after you have computed an IIS.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iislb.html).\n"] IISLB , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nFor an infeasible model, indicates whether the upper bound participates in the computed Irreducible Inconsistent\nSubsystem (IIS). Note that the bounds for a binary variable are considered to be implicit in the variable type and will\nnever participate in an IIS.\n\nOnly available after you have computed an IIS.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iisub.html).\n"] IISUB , # [doc = "- __Modifiable:__ No\n- __Type:__ integer (`i32`)\n\n\nIndicates whether a variable has a convex piecewise-linear objective. Returns 0 if the piecewise-linear objective\nfunction on the variable is non-convex. Returns 1 if the function is convex, or if the objective function on the\nvariable is linear.\n\nThis attribute is useful for isolating the particular variable that caused a continuous model with a piecewise-linear\nobjective function to become a MIP.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/pwlobjcvx.html).\n"] PWLObjCvx , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nVariable partition. The MIP solver can perform a solution improvement heuristic using user-provided partition\ninformation. The provided partition number can be positive, which indicates that the variable should be included when\nthe correspondingly numbered sub-MIP is solved, 0 which indicates that the variable should be included in every sub-MIP,\nor -1 which indicates that the variable should not be included in any sub-MIP. Variables that are not included in the\nsub-MIP are fixed to their values in the current incumbent solution. By default, all variables start with a value of -1.\n\nTo give an example, imagine you are solving a model with 400 variables and you set the partition attribute to -1 for\nvariables 0-99, 0 for variables 100-199, 1 for variables 200-299, and 2 for variables 300-399. The heuristic would solve\ntwo sub-MIP models: sub-MIP 1 would fix variables 0-99 and 300-399 to their values in the incumbent and solve for the\nrest, while sub-MIP 2 would fix variables 0-99 and 200-299.\n\nUse the PartitionPlace parameter to control where the partition heuristic runs.\n\nOnly affects MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/partition.html).\n"] Partition , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nThe status of a given variable in the current basis. Possible values are 0 (basic), -1 (non-basic at lower bound), -2\n(non-basic at upper bound), and -3 (super-basic). Note that, if you wish to specify an advanced starting basis, you must\nset basis status information for all constraints and variables in the model. Only available for basic solutions.\n\nNote that if you provide a valid starting extreme point, either through PStart, DStart, or through VBasis, CBasis, then\nLP presolve will be disabled by default. For models where presolve greatly reduces the problem size, this might hurt\nperformance. To allow presolve, it needs to set parameter LPWarmStart to 2.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/vbasis.html).\n"] VBasis , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nPriorities on user hints. After providing variable hints through the `VarHintVal` attribute, you can optionally also\nprovide hint priorities to give an indication of your level of confidence in your hints.\n\nHint priorities are relative. If you are more confident in the hint value for one variable than for another, you simply\nneed to set a larger priority value for the more solid hint. The default hint priority for a variable is 0.\n\nPlease refer to the `VarHintVal` discussion for more details on the role of variable hints.\n\nOnly affects MIP models.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/varhintpri.html).\n"] VarHintPri , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nWhen computing an Irreducible Inconsistent Subsytem (IIS) for an infeasible model, indicates whether the variable lower\nbound should be included or excluded from the IIS.\n\nThe default value of -1 lets the IIS algorithm decide.\n\nIf the attribute is set to 0, the bound is not eligible for inclusion in the IIS.\n\nIf the attribute is set to 1, the bound is included in the IIS and the IIS algorithm never considers the possibility of\nremoving it.\n\nNote that setting this attribute to 0 may make the resulting subsystem feasible (or consistent), which would then make\nit impossible to construct an IIS. Trying anyway will result in a GRB_ERROR_IIS_NOT_INFEASIBLE error. Similarly, setting\nthis attribute to 1 may result in an IIS that is not irreducible. More precisely, the system would only be irreducible\nwith respect to the model elements that have force values of -1 or 0.\n\nSee the Model.computeIIS documentation for more details.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iislbforce.html).\n"] IISLBForce , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nWhen computing an Irreducible Inconsistent Subsytem (IIS) for an infeasible model, indicates whether the variable upper\nbound should be included or excluded from the IIS.\n\nThe default value of -1 lets the IIS algorithm decide.\n\nIf the attribute is set to 0, the bound is not eligible for inclusion in the IIS.\n\nIf the attribute is set to 1, the bound is included in the IIS and the IIS algorithm never considers the possibility of\nremoving it.\n\nNote that setting this attribute to 0 may make the resulting subsystem feasible (or consistent), which would then make\nit impossible to construct an IIS. Trying anyway will result in a GRB_ERROR_IIS_NOT_INFEASIBLE error. Similarly, setting\nthis attribute to 1 may result in an IIS that is not irreducible. More precisely, the system would only be irreducible\nwith respect to the model elements that have force values of -1 or 0.\n\nSee the Model.computeIIS documentation for more details.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/iisubforce.html).\n"] IISUBForce , # [doc = "- __Modifiable:__ Yes\n- __Type:__ integer (`i32`)\n\n\nWhen solving a MIP model, the Gurobi Optimizer maintains a solution pool that contains the best solutions found during\nthe search. The `PoolIgnore` attribute allows you to discard some solutions. Specifically, if multiple solutions differ\nonly in variables where `PoolIgnore` is set to 1, only the solution with the best objective will be kept in the pool.\nThe default value for the attribute is 0, meaning that the variable should be used to distinguish solutions.\n\nThis attribute is particularly helpful when used in conjunction with the PoolSearchMode parameter. By identifying\nvariables that do not capture meaningful differences between solutions, you can make sure that the pool contains some\ninteresting variety.\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/poolignore.html).\n"] PoolIgnore } impl IntAttr for VarIntAttr { } impl ObjAttr for VarIntAttr { type Obj = Var ; } # [derive (Debug , Copy , Clone , Eq , PartialEq , Hash , FromCStr , AsCStr)] pub enum QConstrCharAttr { # [doc = "- __Modifiable:__ Yes\n- __Type:__ `char`\n\n\nQuadratic constraint sense ('<', '>', or '=').\n\n[Reference manual](https://www.gurobi.com/documentation/11.0/refman/qcsense.html).\n"] QCSense } impl CharAttr for QConstrCharAttr { } impl ObjAttr for QConstrCharAttr { type Obj = QConstr ; } pub (super) mod enum_exports { pub use super :: { VarStrAttr } ; pub use super :: { QConstrIntAttr } ; pub use super :: { VarVTypeAttr } ; pub use super :: { ConstrDoubleAttr } ; pub use super :: { VarDoubleAttr } ; pub use super :: { ModelStatusAttr } ; pub use super :: { ModelModelSenseAttr } ; pub use super :: { ModelIntAttr } ; pub use super :: { ConstrSenseAttr } ; pub use super :: { QConstrStrAttr } ; pub use super :: { SOSIntAttr } ; pub use super :: { ConstrIntAttr } ; pub use super :: { QConstrDoubleAttr } ; pub use super :: { ConstrStrAttr } ; pub use super :: { ModelDoubleAttr } ; pub use super :: { ModelStrAttr } ; pub use super :: { VarIntAttr } ; pub use super :: { QConstrCharAttr } ; } pub mod variant_exports { pub use super :: VarStrAttr :: * ; pub use super :: QConstrIntAttr :: * ; pub use super :: VarVTypeAttr :: * ; pub use super :: ConstrDoubleAttr :: * ; pub use super :: VarDoubleAttr :: * ; pub use super :: ModelStatusAttr :: * ; pub use super :: ModelModelSenseAttr :: * ; pub use super :: ModelIntAttr :: * ; pub use super :: ConstrSenseAttr :: * ; pub use super :: QConstrStrAttr :: * ; pub use super :: SOSIntAttr :: * ; pub use super :: ConstrIntAttr :: * ; pub use super :: QConstrDoubleAttr :: * ; pub use super :: ConstrStrAttr :: * ; pub use super :: ModelDoubleAttr :: * ; pub use super :: ModelStrAttr :: * ; pub use super :: VarIntAttr :: * ; pub use super :: QConstrCharAttr :: * ; }