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

Add support for Benchmarking Derivative-Free Optimization Algorithms #58

Open
rgaiacs opened this issue Feb 13, 2014 · 6 comments
Open
Labels
enhancement Up for grabs Thing I won't be doing for a while/not planned
Milestone

Comments

@rgaiacs
Copy link
Contributor

rgaiacs commented Feb 13, 2014

This was requested by @deisegema.

The reference for this is J. Moré and S. Wild website and article.

@rgaiacs
Copy link
Contributor Author

rgaiacs commented Mar 20, 2014

As requested in the article, we need the dimensions of the problems. @abelsiqueira and I will use a external file to pass that information.
For CUTEst, this can be obtained from https://github.com/lpoo/cute-problem-chooser.

@rgaiacs rgaiacs added this to the Version 1.2 milestone May 30, 2015
@abelsiqueira
Copy link
Owner

3 years late, but I think I'll work in this now.
It's slightly more complicated, because the data profile needs the function value at all iterations.

@abelsiqueira
Copy link
Owner

It looks like I'll have to completely change a few things to make it work. I'm thiking

  • We have F_{s,p,k}, the function value at iteration k for problem p and solver s. It seems to me that the easier agnostic way to store this is: one folder for each solver, one file for each solver, one line for each iteration.
  • Since data and perf have fundamentally different parsing, the Prof class will have to change. They are similar only in the plotting, basically (Almost all plotting, in reality).
  • I'm thinking in changing the fact that the backends are Profilers. So there would be two Profiler: Data and Perf, which do their own parsing and scaleing (which is how we've called the computation of the performance function).
  • I'm too used to Julia, so I'm not thinking OOP. The backends would derive from the same class? Is there a reason for this?

@rgaiacs
Copy link
Contributor Author

rgaiacs commented Jun 23, 2017

one folder for each solver, one file for each solver, one line for each iteration.

Do you mean "one folder for each solver, one file for each problem, one line for each iteration."?

Since data and perf have fundamentally different parsing, the Prof class will have to change.

There is a few ways that you can do it. My suggestion is to remove this line and add two new classes to https://github.com/ufpr-opt/perprof-py/blob/master/perprof/prof.py#L36. Each class is for one profiler. You will end up with something like

class Pdata(object):
    ...

class XProfiling(Pdata):
    def __init__(self):
        self.data = ...
        Pdata.__init__(self)

class YProfiling(Pdata):
    def __init__(self):
        self.data = ...
        Pdata.__init__(self)

You will need to change things at the https://github.com/ufpr-opt/perprof-py/blob/master/perprof/main.py.

I'm thinking in changing the fact that the backends are Profilers. So there would be two Profiler: Data and Perf, which do their own parsing and scaleing (which is how we've called the computation of the performance function).

If other methods are going to be different, change it at Pdata to return NotImplementedError.

I'm too used to Julia, so I'm not thinking OOP. The backends would derive from the same class? Is there a reason for this?

See my response above. You know how to contact me for chat. :-)

@abelsiqueira
Copy link
Owner

Do you mean "one folder for each solver, one file for each problem, one line for each iteration."?

Yes

Thanks for the input. I'm doing something like that. I hope to post something today with the basic differences.

@abelsiqueira abelsiqueira modified the milestones: 2.0, Version 1.2 Jun 25, 2017
@abelsiqueira
Copy link
Owner

abelsiqueira commented Jun 26, 2017

#181 handles the big picture for data profile, and other things.
The finer points to do

  • Change --tau, which means the maximum ratio value, for something more generic. xmax?.
  • Add argument for rtol in data profile.
  • Solver names other than folder names. Pass as comma separated or read from file.

@abelsiqueira abelsiqueira added the Up for grabs Thing I won't be doing for a while/not planned label Mar 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Up for grabs Thing I won't be doing for a while/not planned
Projects
None yet
Development

No branches or pull requests

2 participants