InteractiveBinPacking

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

GPL-3.0 License

Stars
9

Bot releases are hidden (Show)

InteractiveBinPacking - Interactive Bin Packing, v3.1.5 Latest Release

Published by cicirello about 1 year ago

[3.1.5] - 2023-08-07

Fixed

  • Improvements based on SpotBugs and FindSecBugs scans:
    • LogRecord.toString() changed to use platform-specific line separators.
    • LogRecord.equals(Object): correctly handle null and other types.
    • RecordList.equals(Object): correctly handle null and other types.
    • Bin.contentsToString(): StringBuilder instead of iterated concat.
    • SessionLog.moveCountToString(): StringBuilder instead of iterated concat.
    • SessionLogFormatter: fixed potential resource leak.
    • SessionLog: implemented readObject to properly initialize transient fields during deserialization.
    • Set most classes to package access.

CI/CD

  • Integrated SpotBugs into build process.
  • Integrated FindSecBugs into build process.
InteractiveBinPacking - Interactive Bin Packing, v3.1.4

Published by cicirello almost 2 years ago

[3.1.4] - 2023-01-12

Fixed

  • Refactored the following based on RefactorFirst scan:
    • SessionLog class
    • GUI-related test cases
    • Non-GUI-related test cases
InteractiveBinPacking - Interactive Bin Packing, v3.1.3

Published by cicirello almost 2 years ago

[3.1.3] - 2022-12-01

Changed

  • Reformatted all sourcecode to Google Java Style.
  • Migrated test cases to JUnit Jupiter 5.9

Fixed

  • Misc refactoring based on feedback from Sonatype Lift, including:
    • Added explicit Charset when loading SessionLog template.
    • Added explicit cast in narrowing compound assignment in initialization of item list.
    • In SessionLog, replaced usage of Java's Date class, which is known to be buggy, with Instant.
    • Removed single use constant with format string for SessionLog.
    • Fixed empty catch blocks.

CI/CD

Other

InteractiveBinPacking - Interactive Bin Packing, v3.1.2

Published by cicirello over 2 years ago

[3.1.2] - 2022-04-01

Other

  • Release is to force an update of the metadata on the archiving site Zenodo to
    include link to paper in Journal of Open Source Education. This release otherwise
    contains no new or changed functionality.
InteractiveBinPacking - Interactive Bin Packing, v3.1.1

Published by cicirello over 2 years ago

[3.1.1] - 2022-03-31

Other

  • Release is for paper in Journal of Open Source Education (JOSE), and also to start archiving in Zenodo for same purpose. This release otherwise contains no new or changed functionality.

CI/CD

  • Modified CI/CD workflow to comment coverage percentages on PRs.
InteractiveBinPacking - Interactive Bin Packing, v3.1.0

Published by cicirello over 3 years ago

[3.1.0] - 2021-06-24

Added

  • A directory of example homework assignments that can be used or adapted by
    course instructors using the application in a class. The example assignments
    can also be used by self-directed learners.
  • Session Logs
    • Feature that logs most user interaction with the application, and
      generates an in-application view of the session log.
    • The session log summarizes total time in the application, instances
      solved by the user correctly using their chosen heuristic, number of
      successful and unsuccessful solving actions taken in each of the
      application modes, as well as additional information that may be useful
      to instructors using the application within a course context.
    • In addition to viewing the current session log, session logs can be
      saved to a file. The motivation is to ease instructor grading of
      assignments that use the application. For example, instructors can
      assign each student a different problem instance and have students save
      and submit the session log, which the instructor can then use for
      validation.
    • The load session log feature loads a session log, validates it, and displays
      a human readable summary. The validation verifies that instances that are
      claimed solved using a particular heuristic were actually solved using that
      heuristic. That is, the session log doesn't include the solution, but rather
      it includes the actions taken to reach the solution, the problem instance
      number, and the chosen heuristic, and the application validates that the actions
      taken are those that the heuristic would have chosen. The validation also
      validates timestamp sequences, etc.
    • Note to instructors: We don't guarantee that the session logs cannot be
      faked. However, the effort required to fake a session log that will fool the
      validation is significantly more than the effort needed to work through the
      exercises. Additionally, to successfully fake a session log, the student would
      still need the correct sequence of actions to solve the specified instance
      using the specified heuristic. Simply assign each student a different
      problem instance number (it is a value of type long), perhaps based on their
      student id number.

Fixed

  • Reorganized resources files (html content of dialogs, and images)
    to use a namespace (i.e., within a directory hierarchy based on package name).
InteractiveBinPacking - Interactive Bin Packing, v3.0.1

Published by cicirello over 3 years ago

[3.0.1] - 2021-05-26

Changed

  • Updates to documentation.

Fixed

  • Code improvements to eliminate potentially errorprone code as identified in MuseDev's static analysis reports.
InteractiveBinPacking - Interactive Bin Packing, v3.0.0

Published by cicirello over 3 years ago

[3.0.0] - 2021-05-14

First release to Maven Central Repository and to the GitHub Package Registry.

Fixed

  • Minor resource leak in unclosed Scanner.
InteractiveBinPacking - Interactive Bin Packing, version 3.0

Published by cicirello over 4 years ago

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.

Package Rankings
Top 38.64% on Repo1.maven.org