Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Sep 16 19:49
    Travis JuliaOpt/MathOptInterface.jl@b92a0a8 (od/name_tests) passed (3755)
  • Sep 16 19:30
    odow opened #882
  • Sep 16 19:30

    odow on name_tests

    Add more comprehensive tests fo… (compare)

  • Sep 16 16:35

    mlubin on gh-pages

    build based on cebd91c (compare)

  • Sep 16 16:10

    odow on blocks

    (compare)

  • Sep 16 16:10

    odow on master

    Add plural macro docs (#2062) … (compare)

  • Sep 16 16:10
    odow closed #2062
  • Sep 16 16:10
    odow closed #1999
  • Sep 16 14:31
    codecov[bot] commented #2062
  • Sep 16 14:31
    codecov[bot] commented #2062
  • Sep 16 14:26
    codecov[bot] commented #2062
  • Sep 16 14:25
    codecov[bot] commented #2062
  • Sep 16 14:24
    codecov[bot] commented #2062
  • Sep 16 14:23
    codecov[bot] commented #2062
  • Sep 16 13:38
    codecov-io commented #873
  • Sep 16 13:35
    odow synchronize #2062
  • Sep 16 13:35

    odow on blocks

    Add plural macro docs Add mlubin's suggestions (compare)

  • Sep 16 13:17
    blegat edited #820
  • Sep 16 13:15
    blegat edited #820
  • Sep 16 13:15
    blegat edited #820
Oscar Dowson
@odow
Cool! The current Jekyll system can be a pain to manage. Do you have a WIP?
Mathieu Besançon
@matbesancon
Yes, I'll push it today
I also used to have Jekyll for my personal site but too complex to keep track of what does what. I like Hugo but solving the two language problem for the website would be nice
Mathieu Besançon
@matbesancon
if some of you have opinions on templates: https://tlienart.github.io/JuDocTemplates.jl/
Robert Schwarz
@rschwarz
Will JuDoc work easily with GitHub pages?
Mathieu Besançon
@matbesancon
yes, github pages renders anything with the naming convention and an index.html
Mathieu Besançon
@matbesancon
some minor updates to do on showcase but you get the idea
Robert Schwarz
@rschwarz
It's nice, because when you edit the Markdown in GitHub, you can see the GitHub-rendered version as a preview of the final site.
There is still some inline HTML that does not work, because of escaping?
Like images with <a>, or links to the papers.
Mathieu Besançon
@matbesancon
yes I think Jekyll did not support markdown links, I just removed these, should update now
also it means we can have a proper Julia project for the website, using a controlled JuMP, MOI and solver version, computing things, building notebooks
on the templates, I also liked the vela one, with the removable side menu
Miles Lubin
@mlubin
@matbesancon looks promising! Would you like to present this during the next developer call?
Mathieu Besançon
@matbesancon
why not yes, this would be very quick there is not that much to explain
Mathieu Besançon
@matbesancon
I'm working on adding a bridge for indicator constraints for solvers supporting SOS1 only. This is mentioned in an implementation note in SCIP:
https://scip.zib.de/doc/html/cons__indicator_8h.php
and would allow a default for indicator constraints
Robert Schwarz
@rschwarz
:+1: I thought that was already in MOI since 0.8, but I guess we only talked it about it then.
Mathieu Besançon
@matbesancon
no we mentioned it, the added bridge was for solvers handling only activation on true, the other thing is that I'm not sure linear constraints are transformed when possible
Mathieu Besançon
@matbesancon
@test @allocated(MOIU.canonicalize!(f)) == 0 in test/Utilities/functions.jl in MOI means changing the compilation aggressiveness of compilation will make tests fail
Mathieu Besançon
@matbesancon
Mathieu Besançon
@matbesancon
This message was deleted
mtanneau
@mtanneau

I'm getting test failures on Gurobi#master (with Gurobi 8.1.1).
Specifically, some MOI tests do not pass

solve_const_scalar_objective: Test Failed at /home/mathieu/.julia/packages/MathOptInterface/WXD0G/src/Test/UnitTests/unit_tests.jl:64
  Expression: ≈(MOI.get(model, MOI.ObjectiveValue()), objective_value, atol=atol, rtol=rtol)
   Evaluated: 3.04.0 (atol=1.0e-8, rtol=1.0e-8)
Stacktrace:
 [1] #test_model_solution#9(::Float64, ::Array{Tuple{MathOptInterface.VariableIndex,Float64},1}, ::Nothing, ::Nothing, ::Function, ::MathOptInterface.Bridges.LazyBridgeOptimizer{Gurobi.Optimizer}, ::MathOptInterface.Test.TestConfig{Float64}) at /home/mathieu/.julia/packages/MathOptInterface/WXD0G/src/Test/UnitTests/unit_tests.jl:64
 [2] (::getfield(MathOptInterface.Test, Symbol("#kw##test_model_solution")))(::NamedTuple{(:objective_value, :variable_primal),Tuple{Float64,Array{Tuple{MathOptInterface.VariableIndex,Float64},1}}}, ::typeof(MathOptInterface.Test.test_model_solution), ::MathOptInterface.Bridges.LazyBridgeOptimizer{Gurobi.Optimizer}, ::MathOptInterface.Test.TestConfig{Float64}) at ./none:0
 [3] solve_const_scalar_objective(::MathOptInterface.Bridges.LazyBridgeOptimizer{Gurobi.Optimizer}, ::MathOptInterface.Test.TestConfig{Float64}) at /home/mathieu/.julia/packages/MathOptInterface/WXD0G/src/Test/UnitTests/modifications.jl:296
 [4] macro expansion at /home/mathieu/.julia/packages/MathOptInterface/WXD0G/src/Test/config.jl:47 [inlined]
 [5] macro expansion at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Test/src/Test.jl:1083 [inlined]
 [6] modificationtest(::MathOptInterface.Bridges.LazyBridgeOptimizer{Gurobi.Optimizer}, ::MathOptInterface.Test.TestConfig{Float64}, ::Array{String,1}) at /home/mathieu/.julia/packages/MathOptInterface/WXD0G/src/Test/config.jl:47

and a bunch of MOI tests related to confict refiner (not reproducing all error messages here)

  Conflict refiner                                                                          |   21    20             41
    Variable bounds (SingleVariable and LessThan/GreaterThan)                               |    2     3              5
    Variable bounds (ScalarAffine)                                                          |    2     3              5
    Variable bounds (Invali Interval)                                                       |    2     2              4
    Two conflicting constraints (GreaterThan, LessThan)                                     |    3     4              7
    Two conflicting constraints (EqualTo)                                                   |    3     4              7
    Variables outside conflict                                                              |    4     4              8
    No conflict                                                                             |    5                    5
Oscar Dowson
@odow
Upgrade your version of Gurobi. There was a bug in 8.0.1
What package versions do you have?
Oscar Dowson
@odow

Oops. Just saw the Gurobi 8.1.1. Are you sure you re-ran ] build Gurobi? This came up a few days ago: https://github.com/JuliaOpt/Gurobi.jl/pull/245#issuecomment-529238973, and Gurobi reported a fix

Fixed issue with wrong optimal value when objective constant is modified after having solved the model.

I can't reproduce on osx with Gurobi 8.1.1, Gurobi master, and everything up to date.
mtanneau
@mtanneau
Yep, my bad. I was running Gurobi 8.0.1. Just checked with Gurobi 8.1.1 and everything works fine :)
Thanks
Lea Kapelevich
@lkapelevich
I'm getting an error when copying MOF models:
using GLPK, MathOptFormat, MathOptInterface
MOIU = MathOptInterface.Utilities
optimizer = MOIU.CachingOptimizer(MOIU.UniversalFallback(MOIU.Model{Float64}()), GLPK.Optimizer())
model = MathOptFormat.MPS.Model()
MOI.copy_to(optimizer, model)
ERROR: MathOptInterface.UnsupportedAttribute{MathOptFormat.MPS.ModelOptions}: Attribute MathOptFormat.MPS.ModelOptions() is not supported by the model.
Stacktrace:
 [1] #throw_set_error_fallback#13(::MathOptInterface.SetAttributeNotAllowed{MathOptFormat.MPS.ModelOptions}, ::typeof(MathOptInterface.throw_set_error_fallback), ::GLPK.Optimizer, ::MathOptFormat.MPS.ModelOptions, ::MathOptFormat.MPS.Options) at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/attributes.jl:365
 [2] throw_set_error_fallback(::GLPK.Optimizer, ::MathOptFormat.MPS.ModelOptions, ::MathOptFormat.MPS.Options) at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/attributes.jl:362
 [3] set(::GLPK.Optimizer, ::MathOptFormat.MPS.ModelOptions, ::MathOptFormat.MPS.Options) at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/attributes.jl:351
 [4] set(::MathOptInterface.Utilities.CachingOptimizer{GLPK.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptFormat.MPS.ModelOptions, ::MathOptFormat.MPS.Options) at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/cachingoptimizer.jl:392
 [5] _pass_attributes(::MathOptInterface.Utilities.CachingOptimizer{GLPK.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.Utilities.UniversalFallback{MathOptFormat.MPS.InnerModel{Float64}}, ::Bool, ::MathOptInterface.Utilities.IndexMap, ::Array{MathOptInterface.AbstractModelAttribute,1}, ::Tuple{}, ::Tuple{}, ::Tuple{}, ::typeof(MathOptInterface.set)) at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/copy.jl:148
 [6] pass_attributes at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/copy.jl:112 [inlined]
 [7] pass_attributes at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/copy.jl:111 [inlined]
 [8] default_copy_to(::MathOptInterface.Utilities.CachingOptimizer{GLPK.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.Utilities.UniversalFallback{MathOptFormat.MPS.InnerModel{Float64}}, ::Bool) at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/copy.jl:337
 [9] #automatic_copy_to#97 at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/copy.jl:15 [inlined]
 [10] automatic_copy_to at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/copy.jl:14 [inlined]
 [11] #copy_to#185 at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/cachingoptimizer.jl:162 [inlined]
 [12] copy_to(::MathOptInterface.Utilities.CachingOptimizer{GLPK.Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.Utilities.UniversalFallback{MathOptFormat.MPS.InnerModel{Float64}}) at /home/hypatia/.julia/packages/MathOptInterface/WXD0G/src/Utilities/cachingoptimizer.jl:162
 [13] top-level scope at REPL[29]:1
Lea Kapelevich
@lkapelevich
on master for MOI/MOF
Oscar Dowson
@odow
I'm probably missing some is_copyable definitions. I'll push a fix
Mathieu Besançon
@matbesancon
if some are interested, I wrote a post on the bridge system and a parallel with multiple dispatch (why multiple dispatch is not applicable as such)
https://matbesancon.github.io/post/2019-09-12-bridging-indicator/
Oscar Dowson
@odow
Nice write up! The bridges can be quite hard to understand at first, and this definitely helps
Mathieu Besançon
@matbesancon
Thanks :) it is still a bit (a lot) heavy on the eyes
Robert Schwarz
@rschwarz
Great. But in the end it was not about the indicator?
Mathieu Besançon
@matbesancon
Was supposed to be, but this one was long enough, there will be a part 2 on the application to indicator
Robert Schwarz
@rschwarz
:+1:
Mathieu Besançon
@matbesancon
(also, I have to be able to verify the correctness of the implementation in the current PR, which I haven't yet)
Olivier Huber
@xhub

Question regarding VectorOfVariables and VectorAffineFunction. Suppose we have a VOV constraint (code taken from the MOI tests)

x, y = MOI.add_variables(model, 2)
f7 = MOI.VectorOfVariables([x, y])
c7 = MOI.add_constraint(model, f7, MOI.Nonpositives(2))

From a solver perspective, does the following implies that all multipliers are initialized to 0?

MOI.set(model, MOI.ConstraintDualStart(), c7, 0.)

Would it make sense to support a call like

MOI.set(model, MOI.ConstraintDualStart(), c7, [0., 1.])

To individually set the multipliers value?

In the examples I have seen (like Knitro.jl), the last argument is Union{Real, Nothing}
Robert Schwarz
@rschwarz
I think it makes sens to supply start values with a vector. Maybe this is just an oversight in the case of Knitro.jl ?
Olivier Huber
@xhub
I looked for an example where this would done, but to no avail. I also don't know whether the caller (like JuMP) would ever give a vector as argument there
Robert Schwarz
@rschwarz
SCS takes a vector of values code
Olivier Huber
@xhub
@rschwarz many thanks!
Miles Lubin
@mlubin
Vector constraints should take vectors for ConstraintDualStart.
Juan Pablo Vielma
@juan-pablo-vielma
What open source socp solvers are working on JuMP v0.20?
Benoît Legat
@blegat
ECOS and SCS should work
Mathieu Besançon
@matbesancon
is the text-based MOI representation documented in a part of the doc? I haven't found anything beside reading some tests
Miles Lubin
@mlubin
No, it's undocumented and intended only for helping write tests
Mathieu Besançon
@matbesancon
:thumbsup: