lanl-ansi / Alpine.jl

A Julia/JuMP-based Global Optimization Solver for Non-convex Programs
https://lanl-ansi.github.io/Alpine.jl/latest/
Other
244 stars 39 forks source link

Embedding Formulation #73

Closed jac0320 closed 6 years ago

jac0320 commented 6 years ago

@kaarthiksundar

File addition:

Data structure changes:

Algorithm changes and Function additions:

Error schemes and default changes:

Test changes:

---------- OLD Comments ------------- @harshangrjn Please see this PR for some consideration on what should be left out.

This is the all the development for POD.jl on the embedding formulation side #64 . It contains three main aspects,

The options introduced in this PR here are:

embedding::Bool -> Control the to use embedding formulation or not embedding_encode::Any -> Direct which encoding will be used (compatibility will be checked) embedding_ibs::Bool -> Whether to exploit the compactness of the formulation or not embedding_link::Bool -> Add bound restriction constraints to regulate variable bounds based on active partition

Test cases are added to verify the encoding mapping and algorithm. Note that embedding formulation, regardless what additional options to choose, should yield the same results as SOS-2 formulation.

!!! This PR branch off #72.

codecov[bot] commented 6 years ago

Codecov Report

Merging #73 into master will increase coverage by 0.79%. The diff coverage is 95.41%.

Impacted file tree graph

@@           Coverage Diff            @@
##           master    #73      +/-   ##
========================================
+ Coverage   78.21%    79%   +0.79%     
========================================
  Files          27     28       +1     
  Lines        5696   5898     +202     
========================================
+ Hits         4455   4660     +205     
+ Misses       1241   1238       -3
Impacted Files Coverage Δ
src/POD.jl 100% <ø> (ø) :arrow_up:
src/utility.jl 78.46% <ø> (ø) :arrow_up:
src/algorithm.jl 85.55% <100%> (+0.16%) :arrow_up:
src/solver.jl 61.02% <100%> (+0.87%) :arrow_up:
src/log.jl 75.45% <100%> (+0.92%) :arrow_up:
test/algorithm.jl 100% <100%> (ø) :arrow_up:
test/solver.jl 100% <100%> (ø) :arrow_up:
src/multi.jl 74.77% <89.36%> (+6.02%) :arrow_up:
src/embedding.jl 92.94% <92.94%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 64539d9...a40620f. Read the comment docs.

jac0320 commented 6 years ago

The "embedding" will be later refactored as "ebd". The rest of the string will be the same. This is the final stage of such options. image