Intelligent distribution algorithm



When an item is returned, the LMS sends a query to IMMS concerning which branch the item should be distributed to. IMMS calculates a branch based on knowledge of all the items’ locations, the rules set up for the branch inventories, and the properties of each specific item.

Input into the algorithm:

Output from the algorithm:

The LMS should not ask IMMS for a destination for items taken for a hold. For such items, the LMS should be able to direct the item to the pickup branch on its own. If IMMS receives an assignment request for a taken item, IMMS will respond as if the item was not taken but the resulting assignment will not affect the item.

Each branch includes an indication of whether or not the branch is included in IMMS. If a branch is not “included in IMMS”, it means that floating items are never assigned to the branch whereas items with a fixed relationship to the branch are always assigned to the branch.

Each department includes an indication of whether or not the department is included in IMMS. If an item belongs to a department that is not included in IMMS and the item has a fixed relationship to the branch, it will likewise always be assigned to that branch. If the item is floating, then the indication of the department is insignificant.

Via the branch parameter "Fixed item never on media hotel", a branch can indicate that its items must always be assigned to the branch regardless of available capacity, strategy, etc. If an item has a fixed relationship to such a branch, then the item always needs to be assigned to that branch unless the branch is “temporarily closed”.

If a branch is closed, IMMS-items must not be assigned to the branch.

It is also possible to close an item grouping. Floating items are never assigned to a closed item grouping. Fixed items may be assigned to a closed item grouping controlled by the “Allow fixed items to be assigned to closed item groupings” parameter.

The flowchart below outlines the full distribution algorithm.

Algorithm Flowchart Outline

Handling of assigned items

Registering items as assigned

When an item is assigned to a branch through a request, the item is registered as being assigned to the branch (“en route”).

If the item’s route from the return branch to the assigned branch involves a transit station, (central sorting), where an additional sorting will take place (and thus an additional assignment), then the item is initially registered as being “indirectly assigned”. When the item is assigned to a branch it is supposed to be directly shipped to, it is registered as being “directly assigned”. If an item is assigned to remain at the return branch, it is likewise considered to be “directly assigned”.

If at the time of request the item fulfills a hold, then the item is not registered as assigned.

Handling of items that already have been assigned

In connection with the assignment of an item, the distribution algorithm will calculate the stock levels (measured both in terms of meters and the number of copies of the title) of the item groupings to which the returned item belongs within each of the various branches. In this context, items are included which are currently “shelved” in the item grouping as well as items that are currently “assigned”. For the branch where an item is returned, only items that have been “directly assigned” are included, whereas for the other branches, both “indirectly assigned” and “directly assigned” items are included.

This has the effect that items which are assigned to a branch but can be diverted on the way do not reserve space which could be used for items that are later returned at that branch, thereby cutting down on transportation costs. If in this way a locally returned item is allowed to use space that was previously set aside for another item that was “indirectly assigned” to the branch, the intelligent distribution algorithm might need to reroute that item to another branch once another assignment is requested.

If an item was directly assigned to a branch by a prior assignment and the Direct assignments are locked parameter was set on “Yes”, then all calculations for the item are halted and a response is sent using the previously assigned branch. In this case, the response is not included in the statistics shown in, e.g., the List of assignments report.

If an item was indirectly assigned to a branch by a prior assignment or the Direct assignments are locked parameter was set on “No”, then the intelligent distribution algorithm will run as normal. However, the previously assigned branch will be selected again if a random draw would otherwise have been used.

Simple distribution

During run-in of IMMS, when the full configuration of item groupings etc. is not yet in place, it can be beneficial to utilize a simpler logic. This is controlled by the parameter "Use simple distribution".

The simpler distribution logic uses the following rules:

The capacity and stock of the branches are not considered, nor is the item's match with the item groupings. Media hotels are never considered.

Assignment to exhibitions

The first thing, the distribution algorithm does, is to check whether the item matches an active and open exhibition with available space (looking at both item-max and copies-max). If this is the case, the item is assigned to an exhibition.

If the item matches multiple exhibitions, the following rules are used:

The item is marked as assigned to the exhibition, and the distribution algorithm returns the branch for the exhibition and the department specified for the exhibition.

Assignment of floating items

The flowchart below describes the distribution algorithm for floating items. The principle behind the algorithm is that a number of possible branch destinations are initially considered, and various rules exclude a number of the destinations in a stepwise fashion.

Flowchart for assignment of floating items

The following sections describe a few steps that are special for assignment of floating items.

Prioritizing a new branch

The distribution algorithm can be configured to prioritize branches, which have not had a copy of the title recently. This can help obtain a higher degree of rotation in the distribution of especially titles with few copies.

This part of the distribution algorithm can be enabled or disabled through the parameter "Distribute items to branches which have not had the title recently". The parameter can specify a percentage of the assignments to use this functionality. This enables a balance between reducing transport and rotating the items.

Weighted random draw

If there are several possible lending branches, then a weighted random selection is made. There are four possible scenarios for the random draw:

The branches are below the meter-min:
The branches are weighted according to how far (in %) their stock is below their meter-min (meter-min % - stock %).
The branches are above the meter-min but below the copy-min:
First, how far the branches are below the copy-min is looked at. If one branch is the farthest from its copy-min, then it is selected without a random draw. If several branches are equally far below their respective copy-mins, then a random draw is carried out, weighted using a scale (0-100), indicated by the branch-specific Weight used for weighted draw parameter.
The branches are above both the meter-min and copy-min and, pursuant to the strategy consequences, the meter-max must not be exceeded:
The branches are weighted according to the amount of space (in %) available up to their respective meter-maxes (meter-max % - stock %).
The branches are above both the meter-min and copy-min and, pursuant to the strategy consequences, the meter-max can be exceeded:
The branches are weighted according to the branch-specific parameter.

Assignment of fixed items

The flowchart below describes the distribution algorithm for fixed items. Apart from media hotels, only the item's fixed branch is considered.

Flowchart for assignment of fixed items

Assignment to a media hotel

For both fixed and floating items, if an item is to be distributed to a media hotel, the media hotel branch is selected using a simple order of priority (1, 2, 3...) configured with the Priority of media hotel branch parameter. The first media hotel from the prioritized list that is below the meter-max is selected. However, for each individual branch, a Branch preferred media hotel can be indicated. If the item has a fixed relationship to a branch and the branch lists a preferred media hotel, then the item is assigned to that media hotel if space is available. If space is not available, then the general order of priority will be used.