Giter Site home page Giter Site logo

intervalconstraintprogramming.jl's People

Contributors

dpsanders avatar github-actions[bot] avatar juliatagbot avatar lucaferranti avatar mforets avatar mortenpi avatar schillic avatar tkelman avatar wikunia avatar yashvardhan747 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intervalconstraintprogramming.jl's Issues

Allow parameters in constraints

It is not clear what syntax to use to distinguish variables (that specify the dimensions of the space that the feasible region lives in) and parameters (basically, constants that are specified externally).

Maybe

S = @constraint(c, 1 <= (x - c)^2 <= 3 )

The last argument is the constraint; the others specify that those variables are parameters.
Then S(1) should be the constraint specialised with c = 1 etc.

Bug in x*y==0

julia> X = IntervalBox(-100..100, 2)
[-100, 100] × [-100, 100]

julia> C = @constraint x*y==0
Separator:
  - variables: x, y
  - expression: x * y  [0, 0]

julia> C(X)
([0, 0] × ∅, [-100, 100] × [-100, 100])

Add support for functions

Functions from n variables to 1:

@function f(x, y) = x^2 + y^2

@constraint 1 <= f(x, y) <= 3

@function f(x) = 4x*(1-x)
@constraint 0.1 <= f(f(x)) <= 0.3

Abstract separator type

Then concrete separator types:

ConstraintSeparator:

@constraint disc = x^2 + y^2 <= 1   # note position of `@constraint`

Store the name inside the type.

CombinationSeparator:
e.g. S1 \cap S4

Rewrite backward function code generation

  • [ ] Generate explicit instructions instead of functions?
  • Eliminate unnecessary operations for constants. Started in #72
  • Do not return the variables that are unchanged.
  • Move to IntervalContractors package.
  • Make versions of the backward functions that take interval unions and return interval unions.

Refactor forward and backward functions

Forward should take as argument an IntervalBox, and return an IntervalBox that is the output, together with a tuple of the intermediate variables.

Backward should take as argument an IntervalBox and the tuple, and return an IntervalBox.

Contractor should be parametric on the size of the IntervalBoxes it takes, and forward and backward should type annotate the sizes of the tuples.

Use generated functions for * for Volume

julia> immutable Vol{N}
       volume::Float64
       end

julia> import Base.*

Instead of

julia> *{N1,N2}(V1::Vol{N1}, V2::Vol{N2}) = Vol{N1+N2}(V1.volume * V2.volume)
* (generic function with 150 methods)

use

@generated *{N1,N2}(V1::Vol{N1}, V2::Vol{N2}) = :(Vol{$(N1+N2)}(V1.volume * V2.volume))

power_rev incorrect for odd powers

julia> b
[-1.00001e+16, 1]

julia> x
[-1e+08, 1e+08]

julia> IntervalConstraintProgramming.power_rev(b, x, 3)
([-1.00001e+16, 1],[0, 1],[3, 3])

Rewrite reverse-mode functions

So that they operate on a single variable. Move these to ValidatedNumerics.jl.
Make sure to use notation consistent with the IEEE standard 1788-2015.
(This specifies a specific, to my mind strange, order for the arguments.)

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.