Coder Social home page Coder Social logo

coin-or / minotaur Goto Github PK

View Code? Open in Web Editor NEW
66.0 21.0 19.0 8.01 MB

Minotaur Toolkit for Mixed-Integer Nonlinear Optimization

Home Page: https://minotaur-solver.github.io/

License: Other

CMake 1.19% Shell 0.51% Python 1.52% AMPL 0.37% C++ 95.84% C 0.04% Fortran 0.49% Jupyter Notebook 0.03%
optimization-algorithms combinatorial-optimization open-source nonlinear-optimization integer-optimization mixed-integer-programming

minotaur's Introduction

Minotaur

Minotaur is a framework for developing algorithms for mixed-integer nonlinear optimization problems. It includes a few solvers. It is free and open-source. See the LICENSE file for details on license to use and distribute it.

Important Links

minotaur's People

Contributors

ashutoshmahajan avatar devanandr avatar ifrahayub avatar jlinderoth avatar kanishkasun26 avatar krushna33 avatar meenarli avatar mohankrishnakatta avatar mrscissors avatar mustafa712 avatar nitishdumoliya avatar ppalkar avatar souvikdas95 avatar tmunson avatar vinaychourasiya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minotaur's Issues

Windows MinGW Compilation

Hi,

I'm really looking forward to trying minotaur out!

Unfortunately, the build doesn't work for VS 2022 and I'm working on Windows (switching to unix is not an option) so I used MinGW to compile the code. I got further than with VS, but the compilation fails on the following:
image

I'm building with COMPILER_WARN OFF and my CMake command looks like this:
cmake -S. -Bbuild -G"MinGW Makefiles" -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DCMAKE_Fortran_COMPILER=gfortran
Then
cd build
and
mingw32-make

Any advice/fix, please?

Next Release

It has been over a year since the last tagged release. Are there any plans to make more releases?

Correct time statistics in CplexLPEngine

It has to be double checked if timer->query() would give the correct time of an LP solve by Cplex when using multiple LP engines (for example, in mcg algorithm). Otherwise, we should query time taken by Cplex and add to statistics.

Wrong solution in AMPL

Sven Leyffer reports: bnb gives a wrong solution when model file and dat file are loaded through AMPL. The corresponding nl file is solved correctly by standalone solver though.

Wrong reformulation by TransSep

TransSep wrongly deletes some terms from non-separable objective like:
minimize obj: (x1+x2)^2 + (x4 - x5)^2 + (x1 + x3 + 1)^2 + (x1 - x5)^2 + 2x3 + 6x5 + 4x1 + 2x2;

See attached nl file.
q.nl.zip

Remove unused large files from repository

Files from examples/minlplib, instances/, third-party/minotaur-0.2.3-third-party-src/ and third-party/minotaur-0.2.3-third-party-src.tar.gz should be removed from the repository history (not just git rm). These are relatively heavy and not required any more.

Add an Osi interface

Add an Osi interface to minotaur. So as to be able to call Minotaur via an Osi call.

Shared pointers

Do not use boost shared pointers for all objects. Only those where it is important.

Presolver: ERROR: code to modify debug sol after presolve not available

Hi, I'm having small error while using mmultistart. I clone github repo and compile following by your instructions. When I run the solver with Pyomo I get this little error:

MultiStart: objective sense: minimize
Presolver: Presolving ... 
Presolver: Finished presolving.
Presolver: ERROR: code to modify debug sol after presolve not available
Warning: ** Multiple threads work with a thread-safe NLP solver only (e.g. IPOPT with MA97) **
BranchAndBound: starting branch-and-bound

I give config file to program to modify default options. I found bug with these usage. When I set to display_options 1, solver breaks.

Objective Gap Setting

You may be interested to know how different MINLP solvers specify the objective gap stopping criteria. An example of setting a objective gap of 0.01% in a few MINLP solvers,

SCIP: limits/gap=1e-4
BONMIN: bonmin.allowable_fraction_gap=1e-4
KNITRO: mip_integral_gap_rel=1e-4
MINOTAUR: obj_gap_percent=1e-2

It seems most common to use a ratio and not a percentage (as done in obj_gap_percent). This difference is any easy place to make an error when comparing solvers.

Integration with Pyomo

The homepage seem to say that I can use minotaur from pyomo. How do I do this? I have the solvers in my path, but if I try to create a solver via a SolverFactory with names like mbnb or mmultistart, pyomo fails with a non-descript message.

Is this the right approach (if so I'll try to attach more detail), if not, what should I do?

Not using IPOPT in bnb

I would like to use binary bnb with option --nlp_engine IPOPT. But, MINOTAUR does not use Ipopt.

Reporting wall clock time through Timer

At present, the Timer class returns CPU time when queried. A function for reporting wall clock time for parallel algorithms to be added, preferably by direct query to Timer. As of now, this is done using the function getWallTime() in relevant classes.

Tolerances in NodeHeap to be user defined

The function valueGreaterThan() used 1e-6 as the tolerance for comparing the lower bound and the tie breaking score while comparing nodes to be placed according in the node heap. There must be provision for the user to specify these values using Minotaur options.

Inconsistent child generation in parallel branch-and-bound

Using the twoChild tie-breaking rule, a node is supposed to be uniquely identified irrespective of the tree, but the sequence of down and up branching depends on the best solution (e.g. see getBranches function in IntVarHandler) which is not considered yet; needs correction to ensure reproducibility.

Version number

Try to remove version numbers from CMakeLists.txt and move to headers in src/base

Compiling error on Mac OS

[100%] Linking CXX shared library libminotaur.dylib
Undefined symbols for architecture x86_64:
"dsyevr", referenced from:
__ZN8Minotaur15EigenCalculator10calculate_Ev in Eigen.cpp.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

  • Minotaur 0.3 release
  • MacOS Big Sur 11.2.2
  • command used to compile:

    CC=gcc-10 CXX=g++-10 cmake ../

Out of memory in BQPD

When running a large-scale MINLP problem, BQPD runs out of memory. This might be fixed if we can set mxws and mxlws in BQPD. It would be great if we have a MINOTAUR option to set those values.

specialized use

Hi,

minotaur looks like a nice platform for developing some specialized algorithms in optimization. Within this platform, is it possible to develop the algorithm where I want to call CPLEX/Gurobi to solve LP at every node of the branch-and-bound tree and do user-defined branching/bound tightening/relaxing?

Thanks!
Akang.

Solving quadratic problems (using CPLEX) directly without linearization

At present, MINOTAUR's linearization based algorithms (QG, STOA, LSTOA etc.) will linearize the quadratic constraints and objective, despite the fact that solvers like CPLEX can directly use them. There has to be a switch to choose if the user wants to linearize the quadratic functions or not.

Inconsistent termination for infeasible MINLPs in parallel QG

If the root NLP is infeasible, the parallel QG (mcqg) algorithm throws an error (not QG) due to a slightly different logical flow than QG. This has to be fixed by capturing the infeasibility status of the root NLP and terminating the algorithm at appropriate function in ParQGHandler and McQG.

Enabling Cplex solve status strings

The solve status returned by Cplex MILP and LP solves is an integer as of now which can be used in the function CPXXgetstatstring to get the status string and then displayed in Minotaur's logs.

so many errors in master branch when compile and install

errors

/src/base/PerspCutHandler.cpp:78:18: error: ‘class Minotaur::PerspCon’ has no member named ‘getXNV’
     nviv_ = prc->getXNV();
/src/base/PerspCutHandler.cpp:79:18: error: ‘class Minotaur::PerspCon’ has no member named ‘getXLV’
     lviv_ = prc->getXLV();
                  ^

master code :PerspCon.h

 /* Returns a vector containing values to which variables in the 
   * linear part of the constraints amenable to PR are fixed to.
   */
  //std::vector<VariableGroup > getXLV() const {return lVarFixVal_;}
 
  /* Returns a vector containing values to which variables in the 
   * nonlinear part of the constraints amenable to PR are fixed to.
   */
  //std::vector<VariableGroup > getXNV() const {return nlVarFixVal_;}

in master branch , I found this file has changed 4days ago, which branch should i use as latest stable release.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.