JuliaIntervals / IntervalOptimisation.jl

Rigorous global optimisation in pure Julia
Other
54 stars 21 forks source link

Support integer optimization? #54

Open oxinabox opened 3 years ago

oxinabox commented 3 years ago

It seems to me like IntervalOptimization would be well suited optimization problems where the variables are constrained to be integers. AIUI, nothing fundermental about the algorithm means it should not work on integers. And Integer Optimization is already very expensive so the fact that Interval Optimization is expensive is less of a problem.

one problem is the package is currently hardcoded to use mid and bisect with the default α to perform the bisection. The choice of α doesn't AIUI effect the correctness of the algorithm. But the current method does give non-integer values.

dpsanders commented 3 years ago

Can you give an example of kind of problems you're talking about?

I have solved integer problems using an integerize contractor:

function integerize(X::Interval)
    a = ceil(X.lo)
    b = floor(X.hi)

    if a > b
        return emptyinterval(X)
    end

    return Interval(a, b)
end 

Basically after each bisection you apply integerize. After bisecting enough times you're left with just integers.