PSORLab / EAGO.jl

A development environment for robust and global optimization
MIT License
144 stars 16 forks source link

EAGO fails to precompile #43

Closed OliverEvans96 closed 3 years ago

OliverEvans96 commented 4 years ago

Starting from a fresh install of Julia 1.4, EAGO gives me the following precompilation error:

% julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.4.0 (2020-03-21)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

(@v1.4) pkg> add JuMP, EAGO
    Cloning default registries into `~/.julia`
    Cloning registry from "https://github.com/JuliaRegistries/General.git"
      Added registry `General` to `~/.julia/registries/General`
  Resolving package versions...
  Installed NaNMath ────────────────────── v0.3.3
  Installed Calculus ───────────────────── v0.5.1
  Installed Reexport ───────────────────── v0.2.0
  Installed SetRounding ────────────────── v0.2.0
  Installed LinQuadOptInterface ────────── v0.6.0
  Installed ErrorfreeArithmetic ────────── v0.5.0
  Installed EAGO ───────────────────────── v0.2.1
  Installed JuMP ───────────────────────── v0.19.2
  Installed Parsers ────────────────────── v1.0.4
  Installed OrderedCollections ─────────── v1.2.0
  Installed FillArrays ─────────────────── v0.8.10
  Installed RecipesBase ────────────────── v1.0.1
  Installed SpecialFunctions ───────────── v0.10.3
  Installed IntervalContractors ────────── v0.4.2
  Installed DiffRules ──────────────────── v0.0.10
  Installed MacroTools ─────────────────── v0.5.5
  Installed Cassette ───────────────────── v0.2.6
  Installed FastRounding ───────────────── v0.2.0
  Installed ForwardDiff ────────────────── v0.10.10
  Installed DiffResults ────────────────── v0.0.4
  Installed BandedMatrices ─────────────── v0.15.8
  Installed Compat ─────────────────────── v2.2.0
  Installed GLPK ───────────────────────── v0.10.0
  Installed ArrayLayouts ───────────────── v0.3.3
  Installed MathOptInterface ───────────── v0.8.4
  Installed FunctionWrappers ───────────── v1.1.1
  Installed RoundingEmulator ───────────── v0.2.1
  Installed CommonSubexpressions ───────── v0.2.0
  Installed CRlibm ─────────────────────── v0.8.0
  Installed MathProgBase ───────────────── v0.7.8
  Installed BinaryProvider ─────────────── v0.5.10
  Installed StaticArrays ───────────────── v0.8.3
  Installed CompilerSupportLibraries_jll ─ v0.3.3+0
  Installed IntervalArithmetic ─────────── v0.17.2
  Installed DataStructures ─────────────── v0.17.17
  Installed Ipopt ──────────────────────── v0.5.4
  Installed BenchmarkTools ─────────────── v0.5.0
  Installed JSON ───────────────────────── v0.21.0
  Installed ReverseDiff ────────────────── v0.3.1
  Installed OpenSpecFun_jll ────────────── v0.5.3+3
Downloading artifact: CompilerSupportLibraries
######################################################################## 100.0%##O#- #                                 Downloading artifact: OpenSpecFun
######################################################################## 100.0%##O=#  #                                   Updating `~/.julia/environments/v1.4/Project.toml`
  [bb8be931] + EAGO v0.2.1
  [4076af6c] + JuMP v0.19.2
   Updating `~/.julia/environments/v1.4/Manifest.toml`
  [4c555306] + ArrayLayouts v0.3.3
  [aae01518] + BandedMatrices v0.15.8
  [6e4b80f9] + BenchmarkTools v0.5.0
  [b99e7846] + BinaryProvider v0.5.10
  [96374032] + CRlibm v0.8.0
  [49dc2e85] + Calculus v0.5.1
  [7057c7e9] + Cassette v0.2.6
  [bbf7d656] + CommonSubexpressions v0.2.0
  [34da2185] + Compat v2.2.0
  [e66e0078] + CompilerSupportLibraries_jll v0.3.3+0
  [864edb3b] + DataStructures v0.17.17
  [163ba53b] + DiffResults v0.0.4
  [b552c78f] + DiffRules v0.0.10
  [bb8be931] + EAGO v0.2.1
  [90fa49ef] + ErrorfreeArithmetic v0.5.0
  [fa42c844] + FastRounding v0.2.0
  [1a297f60] + FillArrays v0.8.10
  [f6369f11] + ForwardDiff v0.10.10
  [069b7b12] + FunctionWrappers v1.1.1
  [60bf3e95] + GLPK v0.10.0
  [d1acc4aa] + IntervalArithmetic v0.17.2
  [15111844] + IntervalContractors v0.4.2
  [b6b21f68] + Ipopt v0.5.4
  [682c06a0] + JSON v0.21.0
  [4076af6c] + JuMP v0.19.2
  [f8899e07] + LinQuadOptInterface v0.6.0
  [1914dd2f] + MacroTools v0.5.5
  [b8f27783] + MathOptInterface v0.8.4
  [fdba3010] + MathProgBase v0.7.8
  [77ba4419] + NaNMath v0.3.3
  [efe28fd5] + OpenSpecFun_jll v0.5.3+3
  [bac558e1] + OrderedCollections v1.2.0
  [69de0a69] + Parsers v1.0.4
  [3cdcf5f2] + RecipesBase v1.0.1
  [189a3867] + Reexport v0.2.0
  [37e2e3b7] + ReverseDiff v0.3.1
  [5eaf0fd0] + RoundingEmulator v0.2.1
  [3cc68bcd] + SetRounding v0.2.0
  [276daf66] + SpecialFunctions v0.10.3
  [90137ffa] + StaticArrays v0.8.3
  [2a0f44e3] + Base64 
  [ade2ca70] + Dates 
  [8bb1440f] + DelimitedFiles 
  [8ba89e20] + Distributed 
  [b77e0a4c] + InteractiveUtils 
  [76f85450] + LibGit2 
  [8f399da3] + Libdl 
  [37e2e46d] + LinearAlgebra 
  [56ddb016] + Logging 
  [d6f4376e] + Markdown 
  [a63ad114] + Mmap 
  [44cfe95a] + Pkg 
  [de0858da] + Printf 
  [3fa0cd96] + REPL 
  [9a3f8284] + Random 
  [ea8e919c] + SHA 
  [9e88b42a] + Serialization 
  [1a1011a3] + SharedArrays 
  [6462fe0b] + Sockets 
  [2f01184e] + SparseArrays 
  [10745b16] + Statistics 
  [8dfed614] + Test 
  [cf7118a7] + UUIDs 
  [4ec0a83e] + Unicode 
   Building GLPK ──→ `~/.julia/packages/GLPK/Fb12F/deps/build.log`
   Building CRlibm → `~/.julia/packages/CRlibm/NFCH5/deps/build.log`
   Building Ipopt ─→ `~/.julia/packages/Ipopt/Iu7vT/deps/build.log`

julia> using JuMP
[ Info: Precompiling JuMP [4076af6c-e467-56ae-b986-b466b2749572]

julia> using EAGO
[ Info: Precompiling EAGO [bb8be931-2a91-5aca-9f87-79e1cb69959a]
┌ Warning: Package EAGO does not have SparseArrays in its dependencies:
│ - If you have EAGO checked out for development and have
│   added SparseArrays as a dependency but haven't updated your primary
│   environment's manifest file, try `Pkg.resolve()`.
│ - Otherwise you may need to report an issue with EAGO
└ Loading SparseArrays into EAGO from project dependency, future warnings for EAGO are suppressed.
WARNING: could not import IntervalArithmetic.pi_interval into McCormick
WARNING: could not import IntervalContractors.pow_rev into McCormick
ERROR: LoadError: LoadError: LoadError: UndefVarError: pi_interval not defined
Stacktrace:
 [1] top-level scope at /home/oliver/.julia/packages/EAGO/G9lC2/src/mccormick_library/mccormick_utilities/constants.jl:38
 [2] include(::Module, ::String) at ./Base.jl:377
 [3] include(::String) at /home/oliver/.julia/packages/EAGO/G9lC2/src/mccormick_library/mccormick.jl:1
 [4] top-level scope at /home/oliver/.julia/packages/EAGO/G9lC2/src/mccormick_library/mccormick.jl:76
 [5] include(::Module, ::String) at ./Base.jl:377
 [6] include(::String) at /home/oliver/.julia/packages/EAGO/G9lC2/src/EAGO.jl:1
 [7] top-level scope at /home/oliver/.julia/packages/EAGO/G9lC2/src/EAGO.jl:29
 [8] include(::Module, ::String) at ./Base.jl:377
 [9] top-level scope at none:2
 [10] eval at ./boot.jl:331 [inlined]
 [11] eval(::Expr) at ./client.jl:449
 [12] top-level scope at ./none:3
in expression starting at /home/oliver/.julia/packages/EAGO/G9lC2/src/mccormick_library/mccormick_utilities/constants.jl:38
in expression starting at /home/oliver/.julia/packages/EAGO/G9lC2/src/mccormick_library/mccormick.jl:76
in expression starting at /home/oliver/.julia/packages/EAGO/G9lC2/src/EAGO.jl:29
ERROR: Failed to precompile EAGO [bb8be931-2a91-5aca-9f87-79e1cb69959a] to /home/oliver/.julia/compiled/v1.4/EAGO/t0N0c_A6IiH.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1272
 [3] _require(::Base.PkgId) at ./loading.jl:1029
 [4] require(::Base.PkgId) at ./loading.jl:927
 [5] require(::Module, ::Symbol) at ./loading.jl:922
mewilhel commented 4 years ago

Thanks for the heads up.

Explanation: The EAGO v0.2.1 had an open upper bound on a few packages (Julia included). Since a Julia 1.4 version hasn't been tagged yet this results in this older version loading and creates some issues due to a lack of upper bounds on other package dependencies.

We're in the process of finalizing a tag with support for Julia 1.4 (with the next couple days). So that should resolve this issue.

mewilhel commented 4 years ago

@OliverEvans96 We've tagged version 0.4 which should fix this issue. Let us know if you have any future issues. We're also in the process of putting together a roadmap for this. So let us know if there is any functionality you are particularly interested in.

P.S. I believe EAGO is working well with Gurobi and GLPK now. CPLEX's MOI wrapper seems a little less robust currently, so I'd avoid it for now.

mewilhel commented 3 years ago

I think this and any similar future issues have been resolved by EAGO supporting julia ~1 now. So I'm closing this out. If that is incorrect then I'll re-open this on request.