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)
Event1 = obj.eventiterate (Storage1, Ship);
Event2 = obj.eventForward ();
Events = [Event1, Event2];
end
function [Events, Ship, Next] = OrderIterate (Ship)
Ship.data.Product1 = entity.data.Product1;
Events = obj.eventDestroy ();
Next = true;
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.
Best Answer