njtierney / maxcovr

Tools in R to make it easier to solve the Maximal Coverage Location Problem
https://njtierney.github.io/maxcovr/
GNU General Public License v3.0
43 stars 12 forks source link

Package development #95

Open rafapereirabr opened 1 month ago

rafapereirabr commented 1 month ago

Hi all,

I've recently started looking a spatial allocation problems in R and came across this package, which looks like one of the most promising R packages on the topic. Is there any perspective the package will continue to be developed? Are there any particular or important issues you would like help from the community ?

mpadge commented 1 month ago

Hey Rafa! The places people pop up! And ping @njtierney for an answer to that. Nick, time to revive this project?

njtierney commented 3 weeks ago

Hi @rafapereirabr !

Sorry I haven't been very responsive here.

Currently the package hasn't seen much maintenance as I haven't needed to use it again - But I'm interested to help maintain it if there are specific use cases! Does it currently work for your needs or are there other things that you'd like to see implemented?

rafapereirabr commented 3 weeks ago

Hi @njtierney ! My team and I are currently involved in a project with spatial allocation problems related to the spatial distribution / coverage of social services (but the issue can be extended to other projects we have on health or education services). As of today, there are three main features that are not currently available in {maxcovr} and that we think would not only address our particular needs but would also make the package more general / flexible to address the needs of various other users.

Here are the three features, in no particular order. Two of them have been raised before in previous issues.

  1. Allow users input a custom travel cost matrix: As far as we've managed to use/understand the package, {maxcovr} will calculate the (Euclidian) distances of the input data based onn their lat/long columns. In many cases , though, users already have a data frame with some estimates of travel costs that have been previously calculated. In our case, we estimate travel times by different transport modes using the {r5r} package. This is somewhat related to issue #77 . The difference here is that my suggestion would be to allow users to input a travel cost matrix that has been previously calculated. My suggestion has been raised before in issue #93.

  2. Add option of demand weights: this would allow one to represent population count of potential demand from each origin. I know this has been raised in issues #85 and #93

  3. Allow users to account for constraints in service capacity: the idea here is that some facilities can only serve a maximum number of users/customers. Ideally, the allocation solver should be able to account for these constraints as long as the input data from users bring some information about the max capacity of existing and proposed facilities. I haven't seen this issue been raised in previous issues, but I might have missed something.

ps 1. I'm happy to see if my project partner (@gregorioluz) or I could help with any of these particular issues. Our use case will ultimately lead to the publication of (a) a policy report to the Brazilian Ministry of Social Development, and (b) an academic paper in journal. As I see it, the implementation of these features woud be a good platform to collaborate / co-author these outputs;

ps 2. I also have lots of experience with {data.table} so I could help with #68

njtierney commented 3 weeks ago

Hi @rafapereirabr !

Thank you for taking the time to clearly outline the features that would be of most use to you, this is super helpful. I also really appreciate you taking time to work through the issues and see what we've discussed - there are a lot of issues!

I'd be happy to help integrate these features into maxcovr, but I can appreciate maybe there are parts that might be tricky to navigate. Would it be of interest to you / do you have capacity to start pull requests for these features? I'd be happy to work out a time to talk over video chat to discuss these features and how we can integrate them?

Overall one of my goals with maxcovr would be to submit it as a JOSS paper. I'm very interested in helping you get maxcovr to do what you need for your work - I think there's a good win-win here, where the package gets an excuse for some maintenance from myself as I dust it off during code review that will happen as we add some of these features, and we get to add features that are useful for you and your work.

Let me know if you'd like to chat over video call some time, or I'm also happy if you feel that you might be in a place where you can make a pull request. @mpadge let me know if you have anything you'd like to add :)

mpadge commented 3 weeks ago

This all sounds great, and I'm very pleased to see this package getting a new momentum kick :soccer: And FYI Nick, Rafa and I have worked together on several other packages and projects, and I can certainly vouch that it is always an enormous pleasure to work with him. I'm definitely happy to help in any way I can, including participating in a video chat. The user-defined weight and distance matrices were always something i wanted to see implemented here.

rafapereirabr commented 3 weeks ago

Hi @njtierney and @njtierney . I talked to @gregorioluz and we're glad to help. We'll first focus on intem 2 (Add option of demand weights).

Before working on that, I think we need some housekeeping, though :) The last commit over 4 years ago and somethings changed in R packae development since then, including documentation with {Roxygen}. I've just updated the documentation of the package and ran a CMD check and now everything seems fine.

If that's Ok, I'll open this as my 1st pull request just to make sure we have everythig working, Is that Ok @njtierney ?

❯ checking package subdirectories ... NOTE Problems with news in 'NEWS.md': Cannot extract version info from the following section titles: Minor changes Minor Changes NEW FEATURES

0 errors ✔ | 0 warnings ✔ | 2 notes ✖

R CMD check succeeded

njtierney commented 2 weeks ago

Hi @rafapereirabr !

Yes, absolutely! I'm keen to give this a little makeover. I'll get to this as soon as I can, ideally within the next 2 weeks, if that works for you?

I've made a note of some things to fix here: https://github.com/njtierney/maxcovr/issues/96

Let me know if there's anything else you'd like to talk about

Thanks again for helping move this project along, I'm excited to see where things go!