JuliaCon / proceedings-review

6 stars 1 forks source link

[REVIEW]: DisjunctiveProgramming.jl: Generalized Disjunctive Programming Models and Algorithms for JuMP #117

Closed whedon closed 6 months ago

whedon commented 1 year ago

Submitting author: !--author-handle-->@hdavid16<!--end-author-handle-- (Hector Perez) Repository: https://github.com/hdavid16/DisjunctiveProgramming.jl Branch with paper.md (empty if default branch): Version: v0.4.1 Editor: Reviewers: @sbolusani, @joaquimg, @joaquimg Archive:

Status

status

Status badge code:

HTML: <a href="https://proceedings.juliacon.org/papers/569beb65dae7d35e1ccf220df54e8a1c"><img src="https://proceedings.juliacon.org/papers/569beb65dae7d35e1ccf220df54e8a1c/status.svg"></a>
Markdown: [![status](https://proceedings.juliacon.org/papers/569beb65dae7d35e1ccf220df54e8a1c/status.svg)](https://proceedings.juliacon.org/papers/569beb65dae7d35e1ccf220df54e8a1c)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@sbolusani & @joaquimg, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @matbesancon know.

✨ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest ✨

Review checklist for @sbolusani

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Paper format

Content

Code of Conduct

General checks

Functionality

Documentation

Paper format

Content

whedon commented 1 year ago

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @sbolusani, @joaquimg it looks like you're currently assigned to review this paper :tada:.

:warning: JOSS reduced service mode :warning:

Due to the challenges of the COVID-19 pandemic, JOSS is currently operating in a "reduced service mode". You can read more about what that means in our blog post.

:star: Important :star:

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/JuliaCon/proceedings-review) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/JuliaCon/proceedings-review:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf
whedon commented 1 year ago

Failed to discover a Statement of need section in paper

whedon commented 1 year ago

Wordcount for paper.tex is 3421

whedon commented 1 year ago
Software report (experimental):

github.com/AlDanial/cloc v 1.88  T=0.09 s (406.4 files/s, 220866.5 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
CSS                              2            653             33          14577
TeX                              8            282            178           2855
Julia                           13            149            115           1009
JavaScript                       4             38             64            450
Markdown                         2             20              0             71
YAML                             4              2              0             71
Ruby                             1              8              4             45
TOML                             2              4              0             19
HTML                             2              0              0              4
-------------------------------------------------------------------------------
SUM:                            38           1156            394          19101
-------------------------------------------------------------------------------

Statistical information for the repository '4bdf66050d86061e21566b57' was
gathered on 2022/12/11.
The following historical commit information, by author, was found:

Author                     Commits    Insertions      Deletions    % of changes
hdavid16                         2           609              0          100.00

Below are the number of rows from each author that have survived and are still
intact in the current revision:

Author                     Rows      Stability          Age       % in comments
Hector Perez                609          100.0          0.0               11.17
whedon commented 1 year ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

matbesancon commented 1 year ago

@sbolusani @joaquimg the reviewer's guide is here: https://juliacon.github.io/proceedings-guide/reviewer/

whedon commented 1 year ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1287/ijoc.2015.0669 is OK
- 10.1007/978-0-387-74759-0_348 is OK
- 10.1007/978-1-4613-0215-5_8 is OK
- 10.1002/9780470400531.eorms0537 is OK
- 10.1007/11527695_15 is OK
- 10.1137/15m1020575 is OK
- 10.1137/15M1020575 is OK
- 10.3390/pr7110839 is OK
- 10.1023/a:1025154322278 is OK
- 10.1007/s10589-020-00176-0 is OK
- 10.1145/3511528.3511535 is OK

MISSING DOIs

- 10.1007/978-3-642-11503-5_12 may be a valid DOI for title: Automating mathematical program transformations
- 10.1007/s12532-017-0130-5 may be a valid DOI for title: Parallelizing the dual revised simplex method
- 10.1016/s0098-1354(98)00293-2 may be a valid DOI for title: LOGMIP: a disjunctive 0–1 non-linear optimizer for process system models
- 10.1007/s12532-011-0026-8 may be a valid DOI for title: Pyomo: modeling and solving mathematical programs in Python

INVALID DOIs

- https://doi.org/10.1016/j.compchemeng.2014.03.014 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1016/B978-0-323-95879-0.50141-7 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1016/j.compchemeng.2021.107616 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1016/j.compchemeng.2022.107856 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1016/j.cherd.2022.08.027 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1002/aic.14088 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1016/j.compchemeng.2015.02.013 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1016/S0098-1354(00)00581-0 is INVALID because of 'https://doi.org/' prefix
- https://doi.org/10.1016/j.compchemeng.2005.04.004 is INVALID because of 'https://doi.org/' prefix
matbesancon commented 1 year ago

@hdavid16 can you check the DOIs listed above, that's minor but can be done in parallel

hdavid16 commented 1 year ago

@hdavid16 can you check the DOIs listed above, that's minor but can be done in parallel

DOIs have been updated in the repo now.

whedon commented 1 year ago

:wave: @sbolusani, please update us on how your review is going (this is an automated reminder).

whedon commented 1 year ago

:wave: @joaquimg, please update us on how your review is going (this is an automated reminder).

matbesancon commented 1 year ago

ping @sbolusani @joaquimg

hdavid16 commented 1 year ago

@sbolusani @joaquimg, this is a friendly reminder to please review. Thank you.

joaquimg commented 1 year ago

Sorry for the delay, I am working on it.

hdavid16 commented 11 months ago

Hi @sbolusani and @joaquimg, I'm sure you are all super busy. But just want to remind you to review this conference paper. It's been almost a year since the last JuliaCon where this work was presented...

matbesancon commented 10 months ago

I just reminded the two reviewers

matbesancon commented 10 months ago

@whedon add @joaquimg as a reviewer

whedon commented 10 months ago

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@whedon commands
matbesancon commented 10 months ago

@whedon add @joaquimg as reviewer

whedon commented 10 months ago

OK, @joaquimg is now a reviewer

joaquimg commented 10 months ago

From a first pass:

Installation: Does installation proceed as outlined in the documentation?

On Julia 1.9.0, no a clean enviroment:

julia> using Pkg

julia> Pkg.add("DisjunctiveProgramming")

Installs, but returns warnings:

        Info Packages marked with βŒ… have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m`
Precompiling project...
  45 dependencies successfully precompiled in 482 seconds. 94 already precompiled.
  3 dependencies had warnings during precompilation:
β”Œ Symbolics [0c5d862f-8b57-4792-8d23-62f2024744c7]
β”‚  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\JG\Julia\packages\IntervalSets\6RTOk\src\IntervalSets.jl:144 overwritten in module DomainSets at C:\JG\Julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
β”‚    ** incremental compilation may be fatally broken for this module **
β”‚
β”‚  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\JG\Julia\packages\IntervalSets\6RTOk\src\IntervalSets.jl:144 overwritten in module DomainSets at C:\JG\Julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
β”‚    ** incremental compilation may be fatally broken for this module **
β””
β”Œ DisjunctiveProgramming [0d27d021-0159-4c7d-b4a7-9ccb5d9366cf]
β”‚  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\JG\Julia\packages\IntervalSets\6RTOk\src\IntervalSets.jl:144 overwritten in module DomainSets at C:\JG\Julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
β”‚    ** incremental compilation may be fatally broken for this module **
β””
β”Œ DomainSets [5b8099bc-c8ec-5219-889f-1d9e522a28bf]
β”‚  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\JG\Julia\packages\IntervalSets\6RTOk\src\IntervalSets.jl:144 overwritten in module DomainSets at C:\JG\Julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
β”‚    ** incremental compilation may be fatally broken for this module **
β””

Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).

The example in the README could be end-to-end and contain a solver, a call to optimize and some expected results.

Also, the line @proposition(m, y[1] ∨ y[2]) is failing on windows.

Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?

I could not find docs other than the README. There is a docs folder, but no link in the README. Also, there are broken links in the README.

Automated tests: Are there automated tests or manual steps described so that the function of the software can be verified?

I could not find a CI.yml with the automated tests.

Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

No.

Authors: Does the paper.tex file include a list of authors with their affiliations?

Only the last author has an email. He is supposed to be the corresponding author?

References: Do all archival references that should have a DOI list one (e.g., papers, datasets, software)?

Many references are missing DOIΒ΄s.

joaquimg commented 10 months ago

I recommend that the authors go through the reviewer check list on their own to avoid multiple iterations.

joaquimg commented 10 months ago

@matbesancon , about:

Page limit: Is the page limit for full papers respected by the submitted document?

what is the page limit? I could not find it easily. Sorry, it is probably obvious.

joaquimg commented 10 months ago

@hdavid16 there is work for you :)

matbesancon commented 10 months ago

yes page limit is respected here :)

joaquimg commented 10 months ago

Also for @matbesancon , Per the reviewer guidelines (https://joss.readthedocs.io/en/latest/review_checklist.html#software-paper) and this comment (https://github.com/JuliaCon/proceedings-review/issues/117#issuecomment-1345551688) a section named "Statement of need" seems necessary. Can you confirm? If so, @hdavid16 will have to make it explicit.

joaquimg commented 10 months ago

Content

This seems to be the best place to comment on paper presentation.

I have a few main points:

1) Models in section 2.2 are confusing because they are not self-contained. They are simply groups of formulas that show up as needed, and the text dictates how to combine them. Although it is possible to understand, it could be more straightforward.

For instance, instead of having a paragraph: "... this model is given by (13), (16)-(19)..." and only show the additional (16)-(19) one could do: "... this model is given by (16)-(20)..." and show (16)-(20) where (16) repeats (13) or adds it explicitly:

(13)                      (16)
new eq...                 (17)
new eq...                 (18)
new eq...                 (19)
new eq...                 (20)

2) In "Note: any negated Boolean variables, Β¬Yi, are replaced with 1 βˆ’ yi in the reformulation" It is not clear if should be a term in the sum (this seems off) or if there would be and additional variable zi = 1 βˆ’ yi (this looks good). Not sure here...

3) sections 2.4.2 and 2.4.3 seem to be not very related to the remainder of the paper. They are not mentioned as future work. So they might be better as one sentence comment in a section the focuses more on 2.4.1 which is the relevant piece for the paper.

4) From paper and readme it is not clear what is the difference between @disjunction or add_disjunction!. From the example, it is not clear if the chosen usage was necessary to define the problem or if it was an arbitrary choice.

5) reference [11] seems off.

6) fix JuMP capitalization in references [9] and [10]

hdavid16 commented 8 months ago

@joaquimg thank you for your review.

The package has just gone a complete rewrite and has now been released (v0.4). With this new release:

Regarding your main points:

  1. Examples are self-contained now as you suggested.
  2. Conversion of logical constraints to algebraic inequalities has been written in a more clear way.
  3. Section 2.4 is referenced in future work.
  4. Rewrite avoids ambiguous usage for nested disjunctions.
  5. Reference fixed.
  6. Capitalization in JuMP reference fixed.

I look forward to your feedback.

matbesancon commented 7 months ago

@whedon generate pdf

matbesancon commented 7 months ago

@whedon check references

whedon commented 7 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

whedon commented 7 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1007/978-3-642-11503-5_12 is OK
- 10.1007/s12532-017-0130-5 is OK
- 10.1007/978-3-030-00148-3 is OK
- 10.1016/s0098-1354(98)00293-2 is OK
- 10.1287/ijoc.2015.0669 is OK
- 10.1007/978-0-387-74759-0_348 is OK
- 10.1016/j.compchemeng.2014.03.014 is OK
- 10.1007/978-1-4613-0215-5_8 is OK
- 10.1007/978-3-030-68928-5 is OK
- 10.1007/s12532-011-0026-8 is OK
- 10.1016/B978-0-323-95879-0.50141-7 is OK
- 10.1016/j.compchemeng.2021.107616 is OK
- 10.1016/j.compchemeng.2022.107856 is OK
- 10.1016/j.cherd.2022.08.027 is OK
- 10.1002/9780470400531.eorms0537 is OK
- 10.1007/11527695_15 is OK
- 10.1137/15M1020575 is OK
- 10.1137/15M1020575 is OK
- 10.3390/pr7110839 is OK
- 10.1002/aic.14088 is OK
- 10.1007/978-3-030-00148-3 is OK
- 10.1016/j.compchemeng.2015.02.013 is OK
- 10.1016/S0098-1354(00)00581-0 is OK
- 10.1002/9781118627372 is OK
- 10.1023/a:1025154322278 is OK
- 10.1007/s10589-020-00176-0 is OK
- 10.1145/3511528.3511535 is OK
- 10.1016/j.compchemeng.2005.04.004 is OK
- 10.48550/arXiv.2202.05198 is OK
- 10.48550/arXiv.1510.01791 is OK

MISSING DOIs

- None

INVALID DOIs

- None
matbesancon commented 7 months ago

@hdavid16 while we are waiting for confirmation from @joaquimg that the changes are satisfactory, one step to do is archiving on Zenodo the current version of the software and giving us the corresponding DOI that gets generated

hdavid16 commented 7 months ago

@matbesancon here it is: 10.5281/zenodo.10144853

matbesancon commented 7 months ago

@whedon set archive 10.5281/zenodo.10144853

whedon commented 7 months ago

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@whedon commands
matbesancon commented 7 months ago

@whedon commands

whedon commented 7 months ago

Here are some things you can ask me to do:

# List all of Whedon's capabilities
@whedon commands

# Assign a GitHub user as the sole reviewer of this submission
@whedon assign @username as reviewer

# Add a GitHub user to the reviewers of this submission
@whedon add @username as reviewer

# Re-invite a reviewer (if they can't update checklists)
@whedon re-invite @username as reviewer

# Remove a GitHub user from the reviewers of this submission
@whedon remove @username as reviewer

# List of editor GitHub usernames
@whedon list editors

# List of reviewers together with programming language preferences and domain expertise
@whedon list reviewers

# Change editorial assignment
@whedon assign @username as editor

# Set the software archive DOI at the top of the issue e.g.
@whedon set 10.0000/zenodo.00000 as archive

# Set the software version at the top of the issue e.g.
@whedon set v1.0.1 as version

# Open the review issue
@whedon start review

EDITORIAL TASKS

# All commands can be run on a non-default branch, to do this pass a custom 
# branch name by following the command with `from branch custom-branch-name`.
# For example:

# Compile the paper
@whedon generate pdf

# Compile the paper from alternative branch
@whedon generate pdf from branch custom-branch-name

# Remind an author or reviewer to return to a review after a
# certain period of time (supported units days and weeks)
@whedon remind @reviewer in 2 weeks

# Ask Whedon to do a dry run of accepting the paper and depositing with Crossref
@whedon recommend-accept

# Ask Whedon to check the references for missing DOIs
@whedon check references

# Ask Whedon to check repository statistics for the submitted software
@whedon check repository

EiC TASKS

# Invite an editor to edit a submission (sending them an email)
@whedon invite @editor as editor

# Reject a paper
@whedon reject

# Withdraw a paper
@whedon withdraw

# Ask Whedon to actually accept the paper and deposit with Crossref
@whedon accept deposit=true
matbesancon commented 7 months ago

@whedon set 10.5281/zenodo.10144853 as archive

whedon commented 7 months ago

OK. 10.5281/zenodo.10144853 is the archive.

matbesancon commented 7 months ago

@whedon set v0.4.1 as version

whedon commented 7 months ago

OK. v0.4.1 is the version.

matbesancon commented 7 months ago

@hdavid16 for stylistic reasons, can we replace the successive equations by an align block? This will look much nicer

matbesancon commented 7 months ago

same for all optimization problems, prefer a template like:

\begin{align*}
\min_{x}\,\, & f(x) \\
\text{s.t. }\, & g(x) \leq 0 \\
& x_i \in X && \forall i \in .. \\
& x \in \mathcal{X}
\end{align*}
joaquimg commented 6 months ago

I do re-iterate @matbesancon comment.

Other than that, good to go on my side.

Great work and congratulations for the nice package!

hdavid16 commented 6 months ago

@joaquimg and @matbesancon the paper has been updated on master as you requested (replacing all equations/expressions with align* blocks).

matbesancon commented 6 months ago

@whedon generate pdf

whedon commented 6 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

matbesancon commented 6 months ago

@whedon recommend-accept

whedon commented 6 months ago
Attempting dry run of processing paper acceptance...