Smart Float: self balancing floating collections

Bug #1305964 reported by Doug Kyle
16
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Evergreen
Triaged
Wishlist
Doug Kyle

Bug Description

I've created a new Evergreen feature I call Smart Float. After we, the Grand Rapids Public Library (GRPL), moved to floating collections, staff had to spend time managing and balancing floating collections. Smart Float was created to automate those tasks as follows.

Smart Float automates the redistribution of floating collections based on available shelf space and duplicate copies. Smart Float also allows automatic "re-homing" of items based on a number of circulations from the original library or a specified time frame.

Upon checkin Smart Float will first check if an item needs to be sent home, if not the item will float to the checkin branch if space is available and there are not too many duplicate copies. If space and or duplicates don't allow floating to the checkin branch, it will next float to the branch with most space and no excess duplicates, then to the branch with most space regardless of duplicates. If no branches have shelf space it will stay where it is (float to the checkin library).

The config.smart_float table maps checkin lib+item shelving location to the following attributes that Smart Float uses to determine how to distribute copies.
- active: if true, Smart Float will be used, otherwise traditional floating will occur.
- items_allowed: the number of items the shelving location can hold.
- dups_threshold: the number of duplicate titles allowed for that copy location.
- homing_threshold: number of circulations from the original owning library.
- homing_lifespan: time interval, such as "3 months".
Items will be sent home within the homing_lifespan from creation date, until the homing_threshold is met. ( the homing attribute values are pulled based on item volume owning_lib rather than checkin lib).

The config table also specifies a name field which is just there for readability, and the shelf_is_group field which is intended to work with copy location group records for orgs that would like to smart float between them without having matching shelving location records. This is not fully implemented.

While (GRPL) is now running an initial GRPL specific version of Smart Float in production on Evergreen 2.2. Work, such as all client side pieces, is needed to properly inplement Smart Float as a standard Evergreen feature. I've committed a lightly tested generic version for 2.6 in a working repository. http://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/dkyle/smart_float

Doug Kyle (dkyle)
affects: evergreen → ubuntu
Changed in ubuntu:
assignee: nobody → Doug Kyle (dkyle)
Doug Kyle (dkyle)
affects: ubuntu → evergreen
Kathy Lussier (klussier)
Changed in evergreen:
status: New → Triaged
importance: Undecided → Wishlist
Revision history for this message
Michele Morgan (mmorgan) wrote :

Tested the code in the above branch and was unable to check in any items at all without generating errors. I neglected to capture the error message, but once the branch was removed from the sandbox, checkins proceeded normally. So it looks like this needs more work.

tags: added: needsrepatch
Revision history for this message
Lindsay Stratton (lstratton) wrote :

It's been a long time, any possible action on this? It sounds like an idea solution for for us here at PLS if it worked.

Revision history for this message
Doug Kyle (dkyle) wrote :

I've had it working here at GRPL since 2014. Maybe mmorgan didn't setup the smart_float schema(/src/sql/Pg/smart_float.sql). The smart float feature relies on the smart_float schema, and a few changes to Circulate.pm. I can post a smart float branch based on 2.11 if you'd like to try it out.

Revision history for this message
Kathy Lussier (klussier) wrote :

Thanks Kyle! If you create a branch based on 2.11, I'm happy to load it on a VM for testing if anybody wants to try it. Would you also be able to include a test plan with the branch that tells people what steps they need to follow to configure and test it?

Revision history for this message
Lindsay Stratton (lstratton) wrote :

Awesome! And if there's a VM for testing, I'm happy to test.

Revision history for this message
Doug Kyle (dkyle) wrote :

Sounds good. We are moving to 2.11 next week, it will be sometime in January before I get another branch posted.

tags: added: circulation needsrebase
removed: needsrepatch
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.