Loading Utilization

Loading Utilization

ck_laiTDBQ2
Contributor Contributor
88 Views
3 Replies
Message 1 of 4

Loading Utilization

ck_laiTDBQ2
Contributor
Contributor

Hi All,

 

Previously, I received help from the following discussion: 

https://forums.autodesk.com/t5/flexsim-forum/unloading-utilisation-rate/m-p/14220547#M101705

to collect the Unload Utilization of the queues. Two different methods were proposed:
Method 1 - Statistic Collector + Calculated table

Method 2 - Adjusting object state of the queue in the AGV template process flow and state table.

 

Hence, I tried to replicate both methods on the loading queues (Queue 1 and 2)

Method 1: The only adjustment is setting Row Add Value as 'data.token.item.up.name' in the 'Destination' column in the Statistic Collector 'LoadDurationByDestination'. The data output seems accurate.

 

However I face challenges to make the state Gantt and pie chart with Method 1 therefore I am now leaning towards Method 2 which unfortunately doesn't work.

Screenshot 2026-08-11 060646.png

Screenshot 2026-08-11 085229.png 

Unlike the bar chart, the pie chart always show full circle. Side question: how do I make the pie representing the actual % like the bar chart? 

 

 

Method 2: I have set Object as 'up(token.tem)' in the 'Set LoadingSite State' custom code.

 

ck_laiTDBQ2_1-1786432600195.png

Everything seems normal until at later stage of the simulation, when Queue2 is the only operating queue, Queue 2 state gone weird. Its state remains at 'operating' when there is no AGV loading items from it. The State Gantt in Dashboard 2 shows the inaccurate state outputs. Main question: What causes this and how do I fix this?

 

ck_laiTDBQ2_0-1786431699063.png

 

Thank you. 

 

 

 

0 Likes
Accepted solutions (1)
89 Views
3 Replies
Replies (3)
Message 2 of 4

FelixMoehlmann
Collaborator
Collaborator
Accepted solution

The purpose of the pie chart is to visualize the ratio between values. All segments together always fill up the entire ring. If there is only one segment, it represents 100% of the total sum and takes up the entire ring. To make the utilization segment take up space according to its value you also need a segment that denotes the unutilized time.

You are currently relying on the internal logic of the queues to reset the state after the load or unload action. For the unload queues this works because the state is always updated when a new item enters. For the load queues this works as long as the queue is empty after the item was loaded. If there are still items inside the queue it does not change its state on its own. You can add another activity to reset the state (after the Breathe so it also overrides the default reset to "empty" if you want).

0 Likes
Message 3 of 4

ck_laiTDBQ2
Contributor
Contributor

Thanks Felix,

 

I am writing what I've done as a reference for others who are following the discussion. 

 

ck_laiTDBQ2_1-1786529903695.png

 

1. Assigning a label 'PreviousLoadingSite' to the token with reference to the queues 'up(token.item)'.

2. Custom code snippet 'Reset LoadingSiteState':

Object object = token.PreviousLoadingSite;

if (object.subnodes.length > 0) { 
    object.setState(STATE_WAITING_FOR_TRANSPORT);
}
else {
    object.setState(STATE_EMPTY);
}

 

I couldn't figure out the difference by putting Reset State after Breathe though. If there is a potential issue in my solution or there is simpler solution, please feel free to correct. Thank you again.

0 Likes
Message 4 of 4

FelixMoehlmann
Collaborator
Collaborator

You are right, the position of the activity (before or after the Breathe) doesn't make a difference in this case. I just tend to be cautious because there are cases where the Breathe is importang. For example when changing the state of a TE after a travel task.