Skip to content

add relative entropy cone #993

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Jan 6, 2020
Merged

Conversation

chriscoey
Copy link
Contributor

This 1+2n-dimensional cone is useful for entropy optimization and has applications in e.g. signomial positivity certificates (see here and here). I've implemented a bridge to n exponential cone (3-dim) constraints and 1 LP constraint.

Hypatia supports this cone due to what is claimed to be a self-concordant barrier on p5 of "Primal-Dual Interior-Point Methods for Domain-Driven Formulations" by Karimi & Tuncel, 2019 (they didn't provide a SC proof there but I'd be interested to see one).

@chriscoey chriscoey added Type: Enhancement Submodule: Bridges About the Bridges submodule labels Jan 5, 2020
@chriscoey chriscoey requested a review from blegat January 5, 2020 08:37
@chriscoey
Copy link
Contributor Author

Let me guess... I need to redo the bridge as a set map bridge?

@blegat
Copy link
Member

blegat commented Jan 5, 2020

Let me guess... I need to redo the bridge as a set map bridge?

No, you create extra variables and more than one constraint so it's not a set map bridge.

@chriscoey
Copy link
Contributor Author

Understood, thanks!

@chriscoey
Copy link
Contributor Author

I'll attempt the starting values here next

@codecov-io
Copy link

codecov-io commented Jan 5, 2020

Codecov Report

Merging #993 into master will decrease coverage by 0.01%.
The diff coverage is 93.06%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #993      +/-   ##
==========================================
- Coverage   95.21%   95.19%   -0.02%     
==========================================
  Files          98       99       +1     
  Lines       11048    11149     +101     
==========================================
+ Hits        10519    10613      +94     
- Misses        529      536       +7
Impacted Files Coverage Δ
src/Bridges/Constraint/norm_to_lp.jl 91.48% <ø> (ø) ⬆️
src/Utilities/model.jl 94.87% <ø> (ø) ⬆️
src/FileFormats/MOF/MOF.jl 100% <ø> (ø) ⬆️
src/Test/UnitTests/basic_constraint_tests.jl 98.21% <ø> (ø) ⬆️
src/FileFormats/MOF/write.jl 65.59% <0%> (-0.72%) ⬇️
src/Bridges/Constraint/Constraint.jl 96.55% <100%> (+0.12%) ⬆️
src/FileFormats/MOF/read.jl 93.16% <100%> (+0.05%) ⬆️
src/sets.jl 96.59% <100%> (+0.03%) ⬆️
src/Test/contconic.jl 99.24% <100%> (+0.01%) ⬆️
src/Bridges/Constraint/relentr_to_exp.jl 91.3% <91.3%> (ø)
... and 1 more

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 c6db50d...21b9dca. Read the comment docs.

@chriscoey
Copy link
Contributor Author

OK so I've done my best to implement starting values. AFAICT it requires the Lambert W function. This is likely to be needed in similar contexts for future cones to be added to MOI that use Bridges with exponential cone extended formulations. The Lambert W function comes from the registered/up-to-date https://github.com/jlapeyre/LambertW.jl package, which is a small dependency I've added.

@chriscoey
Copy link
Contributor Author

@blegat this is ready for review

@chriscoey
Copy link
Contributor Author

Note btw that relative entropy is the perspective of negative log, so this cone can also be used for modeling a sum of logs, and hence is useful for a natural reformulation of geometric programming problems.

@odow
Copy link
Member

odow commented Jan 5, 2020

So LambertW.jl is only one file, and under MIT, so potentially we could just include that file in MOI.Utilities? It hasn't been updated in > 1 year, and its Project.toml file is out-of-date.

@chriscoey
Copy link
Contributor Author

chriscoey commented Jan 6, 2020

@blegat's solution is better than mine so I changed that. thanks! no more lambertW

@chriscoey chriscoey requested a review from blegat January 6, 2020 00:05
@chriscoey chriscoey requested a review from blegat January 6, 2020 12:27
@blegat blegat merged commit 2a86034 into jump-dev:master Jan 6, 2020
@blegat blegat added this to the v0.9.10 milestone Jan 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Submodule: Bridges About the Bridges submodule Type: Enhancement
Development

Successfully merging this pull request may close these issues.

4 participants