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

Automated Pattern Oriented Modeling #269

Closed
eliotmcintire opened this Issue Apr 25, 2016 · 5 comments

Comments

Projects
None yet
3 participants
@eliotmcintire
Contributor

eliotmcintire commented Apr 25, 2016

There are several ways to build a tool to created an automated fitting procedure.

Requirements for user:

  1. Data that matches with some of the outputs from simulation
  2. Parameters that can vary
  3. Objective (cost) function

On the SpaDES side, we need either one of two mechanisms:

  1. A module that when added, it does the optimization, or
  2. A function in which the user is more involved in the optimization

Likely, it will use the experiment function internally, allowing for multithreading, though some of the optimization functions in R will do this internally. DEoptim function in DEoptim package does internal parallel processing.

Advantages of module version - it can be done by a non-Power-R-user, i.e., they don't have to know the scripting part of setting up the optimization. This would allow the optimization to be done internally within a spades call, thus, can be wrapped into a shiny GUI.

Advantages of function version - it can only be done by a Power R user because of the necessity of scripting and data munging/wrangling to get things in place.

Likely, it will be both, i.e., the module will wrap the function.

@achubaty achubaty added the enhancement label Jun 1, 2016

@eliotmcintire eliotmcintire self-assigned this Jul 30, 2016

@eliotmcintire

This comment has been minimized.

Contributor

eliotmcintire commented Jul 30, 2016

@ygc2l Any news on updated POM function?

@ygc2l

This comment has been minimized.

Contributor

ygc2l commented Jul 30, 2016

Nope. I gave up on using it, handling a custom objective function is not what I think this function should be made for. Using POM() for a problem that require a custom objective function, i.e. something that is not a SpaDES module, reduce POM() as a wrapper and would somewhat complicate things unnecessarily for the end-user. But maybe you have another opinion on this ?

@eliotmcintire

This comment has been minimized.

Contributor

eliotmcintire commented Jul 30, 2016

So what is your solution for your specific problem? Can you outline it
here? I believe that there is value for such a function because parameters
are known and objects are known and data are known (all known from module
metadata). So, rather than a user needing to know 4 separate things, they
only need one. And there are a small set of defaults that would be useful.

@ygc2l

This comment has been minimized.

Contributor

ygc2l commented Jul 30, 2016

In my case, I only needed the spread function to perform the simulations not a whole SpaDES module. My solution was to 1) create a SpaDES module to do the optimization (not the simulation), 2) design the module parameters to be used inside the objective function, and 3) set data requirements as inputs for the module.

If I had to use POM() to do this, I would still have to supply the objective function, the parameters of DEoptim and the data. Thus, I don't see how I would gain something by using it.

Btw, I don't quite understand what your saying by "So, rather than a user needing to know 4 separate things, they only need one."

@achubaty

This comment has been minimized.

Contributor

achubaty commented Sep 13, 2016

this is mostly done. the only thing remaining is to implement the changes arising from the forthcoming update to DEoptim, but there is no solid timeline from them, so I am closing this issue and prepping for CRAN release of v1.3.0.

@achubaty achubaty closed this Sep 13, 2016

achubaty added a commit that referenced this issue Sep 13, 2016

update NEWS
add issue number #269 to 'added POM' entry
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment