Skip to content
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

Select problems #73

Merged
merged 6 commits into from
Nov 10, 2016
Merged

Conversation

abelsiqueira
Copy link
Member

This implements a classification of the CUTEst problems using $MASTSIF/CLASSF.DB and the problem itself opened in Julia.

This also implements a select tool based on that classification. It should be useful along with JuliaSmoothOptimizers/Optimize.jl

This also uncovered some problems with the MASTSIF classification, which can be seen at the travis logs.

@coveralls
Copy link

coveralls commented Sep 9, 2016

Coverage Status

Coverage increased (+0.2%) to 64.052% when pulling 05c98e8 on abelsiqueira:feat/class into 58dc340 on JuliaSmoothOptimizers:develop.

@@ -104,7 +105,7 @@ function CUTEstModel(name :: ASCIIString, args...; decode :: Bool=true, verbose
cutest_lib = Libdl.dlopen(libname,
Libdl.RTLD_NOW | Libdl.RTLD_DEEPBIND | Libdl.RTLD_GLOBAL)
else
sifdecoder(name, args..., verbose=verbose)
sifdecoder(ascii(name), args..., verbose=verbose)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sifdecoder should probably also take an AbstractString as input?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The alternative to ASCIIString is UTFxString, and since I don't know how the command line sifdecoder will handle that, I made that change. If you think the alternative is better, I'll make the change

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I'm saying is that the Julia function sifdecoder() should probably accept an AbstractString. I presume string interpolation does the right thing.

@dpo
Copy link
Member

dpo commented Sep 12, 2016

This is a lot of work! How do you envision problem selection should go for other problem sources (AMPL, JuMP, Simple)?

@abelsiqueira
Copy link
Member Author

I think the only other selection we need to worry is the JuliaSmoothOptimizers/OptimizationProblems.jl#3. CUTEst is a special case among the NLPModels, because it has the repository as main objective.

This branch shows a possible course of action, for OptimizationProblems. We define static characteristics that are not easy to verify (like the MASTSIF table), and query other characteristics creating a .json file (or a database?) and update the json every time there is a new problem. The selection function opens the json file, which is relatively fast.
Advantages (change json to another DB, if desired)

  • Once the json is created, querying is relatively fast.
  • The json can be used by other softwares/packages (online selector?)
  • If we define a json standard, a simgle NLPQuery can be created.

Disavantages

  • Every new problem needs a manual update.
  • Demands additional static characteristics.

@dpo
Copy link
Member

dpo commented Sep 12, 2016

Right. I like the JSON table, the flexibility it offers and how it's a lot more future-proof than the CLASSF.DB file. I'm thinking a SIF-style classification string could be supplemented with data we gather by instantiating problems. The meta data structure contains a lot of info. For example, CLASSF.DB currently doesn't let you select equality-constrained problems only or inequality-constrained problems only.

@abelsiqueira
Copy link
Member Author

Updated

@coveralls
Copy link

coveralls commented Sep 13, 2016

Coverage Status

Coverage increased (+0.2%) to 64.071% when pulling bf34dd5 on abelsiqueira:feat/class into 58dc340 on JuliaSmoothOptimizers:develop.

@coveralls
Copy link

coveralls commented Oct 3, 2016

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling dc1d1c9 on abelsiqueira:feat/class into 4c72dac on JuliaSmoothOptimizers:develop.

@coveralls
Copy link

coveralls commented Oct 3, 2016

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling 423bc2d on abelsiqueira:feat/class into 4c72dac on JuliaSmoothOptimizers:develop.

@coveralls
Copy link

coveralls commented Oct 3, 2016

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling a96a7e2 on abelsiqueira:feat/class into 4c72dac on JuliaSmoothOptimizers:develop.

@dpo
Copy link
Member

dpo commented Oct 4, 2016

I'm quite a bit behind reviewing this. @vepiteski It would be great if you could also test this.

@dpo
Copy link
Member

dpo commented Oct 8, 2016

NB: There's a new ready to go label that you can apply to PRs to indicate that you're finished with the changes.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling 479ffd7 on abelsiqueira:feat/class into 34e368f on JuliaSmoothOptimizers:develop.

3 similar comments
@coveralls
Copy link

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling 479ffd7 on abelsiqueira:feat/class into 34e368f on JuliaSmoothOptimizers:develop.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling 479ffd7 on abelsiqueira:feat/class into 34e368f on JuliaSmoothOptimizers:develop.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling 479ffd7 on abelsiqueira:feat/class into 34e368f on JuliaSmoothOptimizers:develop.

@coveralls
Copy link

coveralls commented Oct 25, 2016

Coverage Status

Coverage increased (+0.4%) to 53.705% when pulling 22b6388 on abelsiqueira:feat/class into 34e368f on JuliaSmoothOptimizers:develop.

@abelsiqueira
Copy link
Member Author

Rebased

@coveralls
Copy link

coveralls commented Oct 30, 2016

Coverage Status

Coverage increased (+0.6%) to 58.119% when pulling 4937c2d on abelsiqueira:feat/class into 7775008 on JuliaSmoothOptimizers:develop.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.6%) to 58.119% when pulling 4937c2d on abelsiqueira:feat/class into 7775008 on JuliaSmoothOptimizers:develop.

@abelsiqueira abelsiqueira mentioned this pull request Nov 8, 2016
9 tasks
@timholy
Copy link
Contributor

timholy commented Nov 10, 2016

FYI this is working very well for me.

@dpo
Copy link
Member

dpo commented Nov 10, 2016

Thanks. I'm swamped and can't find a chance to test. I propose we merge this so others can start using it. Many thanks @abelsiqueira !

@dpo dpo merged commit 1f608d7 into JuliaSmoothOptimizers:develop Nov 10, 2016
@abelsiqueira abelsiqueira deleted the feat/class branch January 22, 2017 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants