org.cicirello:interactive-bin-packing

Self-guided tutorial on combinatorial optimization, the bin packing problem, and constructive heuristics, suitable for use as course assignments, or by self-directed learners.

https://github.com/cicirello/interactivebinpacking

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.2%) to scientific vocabulary

Keywords

bin-packing combinatorial-optimization constructive-heuristics courseware discrete-optimization java self-directed-learning self-guided-tutorial tutorial

Keywords from Contributors

evolutionary-algorithms randomization sequences interactive genetic-algorithm network-simulation normal hacking embedded optim
Last synced: 6 months ago · JSON representation ·

Repository

Self-guided tutorial on combinatorial optimization, the bin packing problem, and constructive heuristics, suitable for use as course assignments, or by self-directed learners.

Basic Info
Statistics
  • Stars: 10
  • Watchers: 2
  • Forks: 2
  • Open Issues: 2
  • Releases: 10
Topics
bin-packing combinatorial-optimization constructive-heuristics courseware discrete-optimization java self-directed-learning self-guided-tutorial tutorial
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Citation Zenodo

README.md

Interactive Bin Packing

Interactive Bin Packing

Copyright (C) 2008, 2010, 2020-2023 Vincent A. Cicirello.

| Publications About the Application | DOI | | :--- | :--- | | Packages and Releases | Maven Central GitHub release (latest by date) | | Build Status | build CodeQL | | JaCoCo Test Coverage | coverage branches | | Security | Snyk security score Snyk Known Vulnerabilities | | DOI | DOI | | Other Information | License style |

How to Cite

If you have reason to cite this application in an article, please cite the following:

Cicirello, V.A., (2022). Interactive Bin Packing: A Java Application for Learning Constructive Heuristics for Combinatorial Optimization. Journal of Open Source Education, 5(49), 140, https://doi.org/10.21105/jose.00140.

Overview

Interactive Bin Packing provides a self-guided tutorial on combinatorial optimization, the bin packing problem, and constructive heuristics for bin packing. It also enables the user to interact with bin packing instances to explore their own problem solving strategies, or to test their knowledge of the various constructive heuristics covered by the tutorial. The application is not a solver for bin packing. Interactive Bin Packing is a tool for learning about the bin packing problem, as well as for learning about heuristic techniques for solving instances of the problem.

The objectives of Interactive Bin Packing include:

  • gaining an understanding of the bin packing problem, and more generally how the bin packing problem is an example of a combinatorial optimization problem;
  • learning about constructive heuristics;
  • learning about the most common constructive heuristics for the bin packing problem, including first-fit, best-fit, first-fit decreasing, and best-fit decreasing; and
  • serving as an interactive environment for students (whether in the formal context of a class, or just for informal self-guided learning) to explore potential problem solving methods for combinatorial optimization.

In addition to the Interactive Bin Packing application source code, this repository also contains example assignments. Specifically, the assignments directory contains example assignments that can either be used by self-guided learners, or which can be adapted and used by instructors in courses, such as within courses on discrete mathematics, algorithms, or artificial intelligence.

First time users should start by taking a look at the sections below on User Documentation as well as Installing and Running the Application. We also recommend that first time users (whether students in courses or self-learners) work through the first of the example assignments.

Java 11+

The prebuilt jar of the application is built with the OpenJDK 11.

Example Assignments

In addition to the Interactive Bin Packing application, the repository contains a directory of Example Assignments that utilize the application. Self-directed learners may begin with assignments/1; while course instructors may prefer to assign their students assignments/2, which utilizes the Session Log functionality introduced in version 3.1.0 to make it easy for instructors to validate students' work.

User Documentation

All user documentation is contained within the application itself, which you can access via two commands in the Info menu:

  • The Tutorial command in the Info menu opens a self-guided tutorial on combinatorial optimization, the bin packing problem, and constructive heuristics for bin packing. It will also walk you through using the application, and all of its functionality.
  • The Help command (also in the Info menu) provides documentation of all menu functions and other user interface elements.
  • We recommend that instructors take a look at the documentation of the commands of the Session menu (see the Help command), which enables having students save session logs, and also provides functionality for validating the session logs they submit to you to confirm successful completion of assignments that utilize the application.

The first time that you use the application, we recommend that you begin by choosing the Tutorial command from the Info menu, and working your way through the self-guided tutorial.

Installing and Running the Application

Installing == Downloading

The Interactive Bin Packing application is available as a prebuilt, executable jar file from a variety of sources. The filename of the jar is of the form interactive-bin-packing-X.Y.Z.jar, where X.Y.Z is the version number.

To install, simply download the jar of the latest release by doing any of the following: * From the command line via Maven Central:
Shell curl -O -J -L "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=org.cicirello&a=interactive-bin-packing&e=jar&v=LATEST" * From Maven Central repository website: Select versions tab, and then the browse link, and download the jar. * From the GitHub Package Registry: Select the most recent release, and download the jar of the application. * From GitHub releases: Simply download the jar from the most recent release. * Building from the source: See the section on this below.

Running

The jar file that you downloaded above is an executable jar. To run, assuming that you have a Java runtime environment (JRE version 11 or higher) installed on your system, then do any of the following: * Simply double click the jar file. * From the command line (assuming your current directory is that of the jar file), you can run with: interactive-bin-packing-X.Y.Z.jar. Just replace the X.Y.Z with the version number that you downloaded. * Or from the command line, you can similarly run with: java -jar interactive-bin-packing-X.Y.Z.jar.

Building and Testing the Application (with Maven)

The Interactive Bin Packing Application is built using Maven, which you can download and install from the official Apache Maven website.

The root of the repository contains a Maven pom.xml. To build the library, execute mvn package at the root of the repository, which will compile all classes, run all tests, and generate jar files of the application, the sources, and the javadocs. The file names make this distinction explicit. All build artifacts will then be found in the directory target.

To include generation of a code coverage report during the build, execute mvn package -Pcoverage at the root of the repository to enable a Maven profile that executes JaCoCo during the test phase.

To run all static analysis tools (i.e., SpotBugs, Find Security Bugs, refactor-first), execute mvn package -Panalysis to enable a Maven profile that executes the various static analysis tools that we are using. The SpotBugs html report will be found in the target directory, or you can use the SpotBugs GUI with: mvn spotbugs:gui -Panalysis. The refactor-first report will be found in the target/site directory.

To run all of the above: mvn package -P "analysis,coverage".

The jar file of the application is executable, so you then simply double click it to run.

License

The Interactive Bin Packing Application is licensed under the GNU General Public License 3.0.

Contribute

Report bugs, suggestions, feature requests, etc via the issues tracker. If you would like to contribute to Interactive Bin Packing in any way, such as reporting bugs, suggesting new functionality, or code contributions such as bug fixes or implementations of new functionality, then start by reading the contribution guidelines. This project has adopted the Contributor Covenant Code of Conduct.

Support and Discussion

To obtain support from the maintainers or from other community members, or to discuss ideas for potential new functionality, we are using GitHub Discussions. For support, start a new discussion with the Q&A category. If you would like to discuss ideas for new functionality before submitting an issue, you can start a discussion with the Ideas category. You can use the General category for any other community discussions.

Owner

  • Name: Vincent A. Cicirello
  • Login: cicirello
  • Kind: user
  • Location: Galloway, NJ
  • Company: Stockton University

Vincent A. Cicirello is a researcher in AI, evolutionary computation, and swarm intelligence.

Citation (CITATION.cff)

cff-version: "1.1.0"
message: "If you use this software, please cite it using these metadata."
authors: 
- family-names: "Cicirello"
  given-names: "Vincent A"
  orcid: "https://orcid.org/0000-0003-1072-8559"
title: "Interactive Bin Packing"
doi: "10.5281/zenodo.6402122"
license: "GPL-3.0-or-later"
url: "https://github.com/cicirello/InteractiveBinPacking"
preferred-citation:
  type: article
  authors:
  - family-names: "Cicirello"
    given-names: "Vincent A"
    orcid: "https://orcid.org/0000-0003-1072-8559"
  doi: "10.21105/jose.00140"
  journal: "Journal of Open Source Education"
  start: 140
  title: "Interactive Bin Packing: A Java Application for Learning Constructive Heuristics for Combinatorial Optimization"
  issue: 49
  volume: 5
  year: 2022

GitHub Events

Total
  • Release event: 1
  • Delete event: 33
  • Issue comment event: 3
  • Push event: 39
  • Pull request review event: 28
  • Pull request event: 64
  • Create event: 37
Last Year
  • Release event: 1
  • Delete event: 33
  • Issue comment event: 3
  • Push event: 39
  • Pull request review event: 28
  • Pull request event: 64
  • Create event: 37

Committers

Last synced: over 1 year ago

All Time
  • Total Commits: 374
  • Total Committers: 2
  • Avg Commits per committer: 187.0
  • Development Distribution Score (DDS): 0.34
Past Year
  • Commits: 64
  • Committers: 1
  • Avg Commits per committer: 64.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Vincent A. Cicirello c****o 247
dependabot[bot] 4****] 127

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 27
  • Total pull requests: 261
  • Average time to close issues: 13 days
  • Average time to close pull requests: about 11 hours
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 0.19
  • Average comments per pull request: 0.24
  • Merged pull requests: 250
  • Bot issues: 3
  • Bot pull requests: 229
Past Year
  • Issues: 3
  • Pull requests: 87
  • Average time to close issues: 1 day
  • Average time to close pull requests: about 16 hours
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.09
  • Merged pull requests: 83
  • Bot issues: 2
  • Bot pull requests: 85
Top Authors
Issue Authors
  • cicirello (21)
  • turketwh (3)
  • dependabot[bot] (3)
Pull Request Authors
  • dependabot[bot] (224)
  • cicirello (32)
  • github-actions[bot] (5)
Top Labels
Issue Labels
enhancement (6) refactor (5) cicd (4) java (4) bug (3) dependencies (3) testing (2) documentation (2) github_actions (1)
Pull Request Labels
dependencies (224) java (212) github_actions (14) refactor (6) documentation (5) automated (5) cicd (4) testing (2) bug (1)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 9
repo1.maven.org: org.cicirello:interactive-bin-packing

The Interactive Bin Packing Application provides a self-guided tutorial on combinatorial optimization, the bin packing problem, and constructive heuristics for bin packing. It also enables the user to interact with bin packing instances to explore their own problem solving strategies, or to test their knowledge of the various constructive heuristics covered by the tutorial. The application is not a solver for bin packing. The Interactive Bin Packing Application is a tool for learning about the bin packing problem, as well as for learning about heuristic techniques for solving instances of the problem.

  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 32.0%
Forks count: 36.0%
Stargazers count: 37.7%
Average: 38.6%
Dependent packages count: 48.9%
Last synced: 6 months ago