Gurobi ISV licence and MipCL Version update

173 views
Skip to first unread message

soea...@gmail.com

unread,
Nov 30, 2018, 4:44:26 AM11/30/18
to OPTANO Modeling
Hi,

first of all thanks for providing OPTANO as common interface to many solvers, that really helps a lot.

While trying to get OPTANO (version 2.9.0.384) working with Gurobi or MipCL I face some issues:

Gurobi: I installed OPTANO.Modeling.Gurobi version 8.0.1.15 but get the error

Gurobi.GRBException: Invalid ISV key

on execution. 
Using our own licence key works fine, but it would be great to have this size-limited licence build in licence for some unit testing.
Is there an issue with the ISV licence key in this version?

An alternative would be to use MipCL, but MipCL 1.4.1 is not available anymore for download. 
The current version 1.6.3 has some changes in the dll (e.g. double CLP::getCtrTol(int) is not exported in the new dll), which make it incompatible to the current MipCL141WrapperCpp.dll.
Is there a chance that you can update the MipCL version?

Best regards,
Andreas



ORCONOMY Team

unread,
Nov 30, 2018, 6:32:35 AM11/30/18
to OPTANO Modeling
Hi Andreas,

we will look into it and get back to you as soon as possible. We will also check with Gurobi whether the ISV key for Optano.Modeling has been accidentally revoked.

Best regards
Ingmar
Message has been deleted

ORCONOMY Team

unread,
Dec 2, 2018, 6:02:02 PM12/2/18
to OPTANO Modeling

Hi!

 

Thanks for your inquiry. we really appreciate your input!

 

Regarding Gurobi:

* We have released Modeling 2.11. which ships support for Gurobi 8.1

* The issue regarding the ISV key is fixed in 2.11.1 which was release just a second ago. Gurobi supplied a new key. (thanks for pointing out this issue)

* We have also added a new flag PreferTrialLicense to GurobiSolver810.SolverConfiguration, to use the limited license even if a regular license is installed

 

Regarding MipCL:

* Modeling 2.11. does support MipCL 1.6.2

* I have noticed MipCL 1.6.2 is outdated by a few days again. We will add support for 1.6.3 soon. (thanks again for giving us a heads up on this). Maybe the 1.6.2 adapter works well for 1.6.3, thou we have not tested this.


Does this solve your issue? Am I missing anything out?


Best,

jp

soea...@gmail.com

unread,
Dec 3, 2018, 2:36:00 PM12/3/18
to OPTANO Modeling
Hi,

thanks for the incredibly fast reaction and new version!

MipCL 1.6.3 runs fine with the 1.6.2 adapter, thanks. Some things are a bit strange, though: Solution.BestBound is NaN, although a solution with the correct objective value is four and stored in Solution.ObjectiveValues. Also the objective value names in the ObjectiveValues do not correspond to given objective names. Especially the latter might also be caused by some incompatibilities.


The new Gurobi licence key works fine with the Gurobi 8.0.1 libraries. 
The new package contains the gurobi81.dll and  gurobi81.netstandard20.dll, but there is no OPTANO.Modeling.Optimization.Solver.Gurobi81x defined yet. So I still use Solver.Gurobi801, which needs the gurobi80 libs. I only recognized that after removing the old build with the gurobi80 lib versions. When I copy the 80 versions back into the bin directory, everything works :-)

Bests,
Andreas

ORCONOMY Team

unread,
Dec 3, 2018, 6:11:49 PM12/3/18
to OPTANO Modeling
Hi!

thanks for your reply!
Sorry, we have missed Gurobi 8.1. in the build pipeline. It is now part of the newly published OPTANO Modeling 2.11.2.

We are going to check the MipCL issue es well. I remember mipcl has not provided all the numbers needed thru its API. But we will double check this. Maybe the API has been fixed/extended. We'll keep this thread updated - please allow a few days.

Best,
jp



soea...@gmail.com

unread,
Dec 4, 2018, 1:59:02 PM12/4/18
to OPTANO Modeling
Hi,

the Gurobi 8.1 build pipeline works great now.

Thanks for all your help!

Best regards,
Andreas

Message has been deleted

ORCONOMY Team

unread,
Dec 4, 2018, 3:04:10 PM12/4/18
to optano-...@googlegroups.com
Hi,

All of the past Modeling releases have not read any bound values from MipCL. We have slightly improved the code to read getObjBound() when MipCL ends it solving process. This fix will be available in OPTANO Modeling Version 2.11.3 soon.
Please note: MipCL ignores all constants of the objective. OPTANO Modling internally fixes this, but all mipcl output is broken (regarding the constants).


I've evaluated the BestBound on MipCL using the following code:
            var modelMin = new Model { Name = "model" };
           
var x = new Variable("x", 1, 10, VariableType.Integer);
            modelMin
.AddConstraint(x >= 1.5);
            modelMin
.AddConstraint(x <= 9.5);

           
// this is ugly: mipcl completely ignores constants in objectives and bounds
           
var objective = new Objective(x + 10, "objective", ObjectiveSense.Minimize);
            modelMin
.AddObjective(objective);

           
// copy the model and change its sense to maximize
           
var modelMax = modelMin.DeepClone();
            modelMax
.Objectives.First().Sense = ObjectiveSense.Maximize;

           
using (var mipclSolver = new MipCLSolver())
           
{
               
var solutionMin = mipclSolver.Solve(modelMin);
               
// expected: objective == 12 (2 in mipcl), bestbound <= 12 (2 in mipcl)
               
// mipcl: getObjLowerBound() == 0, getObjBound() == 0
               
Console.WriteLine("model {0}: objective: {1} // bestbound: {2}", "min", solutionMin.ObjectiveValues.First(), solutionMin.BestBound);

               
var solutionMax = mipclSolver.Solve(modelMax);
               
// expected: objective == 19 (9 in mipcl), bestbound >= 19 (9 in mipcl)
               
// mipcl: getObjLowerBound() == 0, getObjBound() == 18
               
Console.WriteLine("model {0}: objective: {1} // bestbound: {2}", "max", solutionMax.ObjectiveValues.First(), solutionMax.BestBound);
           
}





The code prints this console output
Please note the lines starting with "model ".


Normalizing all Expressions before Transforming the Model...
Normalizing Constraints...
0
Normalizing OperatorConstraints...
Normalizing Objectives...
 
- Creating MIPCL model
 
- Preparing objective
 
- Preparing variables
 
- Found 1 variabls, 2 constraints and 2 non-zero terms
 
- Creating MIPCL variables
 
- Creating MIPCL constraints
Start preprocessing: Rows - 2, Cols - 1 (Int - 1, Bin - 0), NZs - 2
After preprocessing: Rows - 0, Cols - 0 (Int - 0, Bin - 0), NZs - 0
Preprocessing Time: 0.000
 
- Model has 1 variables
 
- Model has 1 integer variables
 
- Model has 0 binary variables
 
- Model has 2 constraints
 
- Model has 2 non zero elements
 
- Solving MIPCL model
NOTE
: Your current objective contains a constant value of 10. MIPCL does not provide an API to set this value. During the solution process, the logged objective values will NOT CONTAIN the constant. However, after a solution is returned by MIPCL, the constant value will be added to the result. YOU DO NOT NEED TO WORRY ABOUT IT :)
===========================================
MIPCL version
1.6.2
Solution time: 0.010
Branch-and-Cut nodes: 1
Objective value: 2.0000 - optimality proven
 
- Finished MIPCL model in 0:00:29,2345084: ModelStatus: Feasible, SolutionStatus: Optimal, Objective: 12
model min
: objective: [C, 12] // bestbound: 10
Normalizing all Expressions before Transforming the Model...
Normalizing Constraints...
0
Normalizing OperatorConstraints...
Normalizing Objectives...
 
- Creating MIPCL model
 
- Preparing objective
 
- Preparing variables
 
- Found 1 variabls, 2 constraints and 2 non-zero terms
 
- Creating MIPCL variables
 
- Creating MIPCL constraints
Start preprocessing: Rows - 2, Cols - 1 (Int - 1, Bin - 0), NZs - 2
After preprocessing: Rows - 0, Cols - 0 (Int - 0, Bin - 0), NZs - 0
Preprocessing Time: 0.001
 
- Model has 1 variables
 
- Model has 1 integer variables
 
- Model has 0 binary variables
 
- Model has 2 constraints
 
- Model has 2 non zero elements
 
- Solving MIPCL model
NOTE
: Your current objective contains a constant value of 10. MIPCL does not provide an API to set this value. During the solution process, the logged objective values will NOT CONTAIN the constant. However, after a solution is returned by MIPCL, the constant value will be added to the result. YOU DO NOT NEED TO WORRY ABOUT IT :)
===========================================
MIPCL version
1.6.2
Solution time: 0.009
Branch-and-Cut nodes: 1
Objective value: 9.0000 - optimality proven
 
- Finished MIPCL model in 0:00:18,1798458: ModelStatus: Feasible, SolutionStatus: Optimal, Objective: 19
model max
: objective: [C, 19] // bestbound: 28




ORCONOMY Team

unread,
Dec 4, 2018, 3:17:29 PM12/4/18
to OPTANO Modeling
Hi,

the names of objectives might be updated by the UniqueNameGenerator. If names are A, B, C or originalName_A, one of the namegerators has left its mark.


(The next version will also bring an update of this page. The Namegenerators not only update variable names but also objective names and constraint names).

Does this help?
Best,
jp

ORCONOMY Team

unread,
Dec 15, 2018, 4:59:57 PM12/15/18
to OPTANO Modeling
Hi

Have you noticed, Nicolai hsa released Mipcl 1.7.2. We just added an Adapter and uploaded the the new package moments ago.

Best,
jp
Reply all
Reply to author
Forward
0 new messages