question

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann asked Felix Möhlmann commented

List Back Order Strategy Option

Hi everyone,

I tried to build an example model that clarifies the function of the Sort Back Orders Before Evaluating Entries (SBO) option for list back order strategies. And I'm struggling to come up with an example.

In the attached model I create four tokens, numbered 1 - 4 on the label Num, that each try to pull two values from a list. After 3s, a total of twelve tokens are pushed to the list (Allow Multiple Pushes... is active). The back orders are ordered according to the delta between their their Num label and that of the value on the list.

Whether the SBO option is checked or not, the result is always exactly the same: The backorders are sorted once agains the first entry on the list and then get to pull values according to the pull query. Which is the behaviour I would expect when SBO is checked.

Based on the wording in the documentation, I would expect the pull query to be overridden and the first 8 tokens being assigned to the puller that best matches their number according to the back order strategy. https://docs.flexsim.com/en/23.2/Reference/Tools/GlobalLists/BackOrders/BackOrders.html

But since that is not what is happening, I would like to ask if someone has an example of when this options makes a difference and/or clarify the intended use.

back-order-test-fm.fsm

FlexSim 23.1.2
listback order queue strategy
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

1 Answer

Matthew Gillespie avatar image
1 Like"
Matthew Gillespie answered Felix Möhlmann commented

As far as I can tell, the list correctly handles Backorder Queue Strategy sorting and pull query sorting in the case you're demonstrating where several entries are pushed on the list at the same time and then evaluated at the end using the Allow Multiple Pushes checkbox.

Also, the documentation says the SBO checkbox only works if the Backorder Queue Strategy doesn't rely on entry-dependent fields. "When this box is checked you are not allowed to include anything in the Backorder Queue Strategy that accesses data associated with a list entry."

Here's a case where the SBO checkbox makes a difference. I have 3 processors pulling from the list to get the most skilled operator. The Backorder Queue Strategy sorts so that the processor with the highest priority label should get first pick. Now, the pull query includes a 'WHERE age > 1' statement so that no backorders are initially fulfilled. Then at time 2 another token calls List.reevaluateBackorders() on the list.

SBO_Example.fsm

With SBO unchecked, the ORDER BY in the pull query is not used. Processor3 has the highest priority and so is forced to pull the first operator on the list, Operator1, even though he is the least skilled.

With SBO checked, the ORDER BY in the pull query is used and Processor3 correctly pulls Operator 3 who has the highest skill.


sbo-example.fsm (86.1 KiB)
· 1
5 |100000

Up to 12 attachments (including images) can be used with a maximum of 23.8 MiB each and 47.7 MiB total.

Felix Möhlmann avatar image Felix Möhlmann commented ·
Right, I see, the option requires the values to have been on the list and isn't use for newly pushed values.

I guess that makes sense; the description of the option is talking about reevaluating. To my mind, looking only at the name of the option was is a bit ambigious in that regard.

Thanks a lot for the explanation and example!

0 Likes 0 ·