How to perform Aggregation in simevents

조회 수: 1 (최근 30일)
Aditi Gupta
Aditi Gupta 2019년 10월 25일
편집: Abdolkarim Mohammadi 2021년 3월 17일
I want to create a aggregator like mechanism with sim events.Where in entities generated are stored in a block and after a particular period of time say 5ms all entities combined in one entity and that one entitiy is send to server for processing.That is, that one entity conatins all the information of all the entities.
This can be done with entity batch creator but how to set time window in this.

답변 (1개)

Abdolkarim Mohammadi
Abdolkarim Mohammadi 2021년 3월 17일
편집: Abdolkarim Mohammadi 2021년 3월 17일
My answer from here:
Simevents is based on entity-storage system notion, and its standard block library only includes blocks that include only one storage. Blocks with more than one storage must be manually authored using MATLAB Discrete Event System or MDES.
Your block should have two inputs, two queues, and one output. Input 1 accepts orders and input 2 accepts ship arrival event. When a ship arrives in input port 2 (entry event), an iterate event action is triggered on the queue 1 to iterate over the entities in the queue and assign different order sizes as the attributes of the ship entity. Finally, the ship is forwarded (forward event action) from queue 2 through the output port, and finally, all of the orders in the queue 1 are destroyed (destroy event action) within the iterate event action. To sum up, you need a method that roughly looks like this:
function [Events, Ship] = ShipEntry (Ship) % When a ship arrives in Storage2
Event1 = obj.eventiterate (Storage1, Ship); % iterate over Storage1 according to OrderIterate method below
Event2 = obj.eventForward (); % then forward the ship to the output
Events = [Event1, Event2]; % list of evnet actions
end
function [Events, Ship, Next] = OrderIterate (Ship) % when iterating over the storage
Ship.data.Product1 = entity.data.Product1; % assign the order value to the ship
Events = obj.eventDestroy (); % destroy the Order entity in the queue
Next = true; % do this unconditionally for all of the orders in storage 1
end
Note that I only mentioned the important parts. You need to pass input arguments according to the documentation. MDES is very flexible and can be used for any system.

카테고리

Help CenterFile Exchange에서 Discrete-Event Simulation에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by