pullconstraint

All topics specific to modeling questions in Enterprise Dynamics
Post Reply
ThijsSturkenboom
Posts: 4
Joined: Thursday 25 November, 2021 - 16:09

pullconstraint

Post by ThijsSturkenboom »

Hi,

We have the following situation: queue1 :arrow: unpack :arrow: queue2 and queue3

Queue1 contains containers which are composed of multiple products with different labels combined using an assembler. Each product has his own queue after the unpackattom, thus queue2 and queue3. These specific queues are scheduled with a timetable. When queue2 (after the unpack atom) opens, we want to check if the containers in queue1 contains products with label2, the cointainers containing product2 will be send through to the unpack attom.

So we would like to know if there is a way we can have a condition on the output of queue1 that checks the content of the container.
If queue2 or queue3 opens, allow the containers containing the specific products to pass through to the unpackattom and then to the corresponding queue.

Gr Thijs
Marc Pieters
Posts: 2
Joined: Wednesday 01 December, 2021 - 11:54

Re: pullconstraint

Post by Marc Pieters »

Hi Thijs,

You can check the contents of the containers with the atom reference "First": on the sendto statement of queue1 you could refer to the (leaving) container with First(c), i.e. the first container on the queue (the one that is leaving the queue), and to the product inside that container with First(First(c)). You could use that reference to find the label of the product inside the container. Then, you can send containers with product X to queue X and containers with product Y to queue Y (using the labels on the products) with the sendto statement.

Regarding the unpack atom: this atom has two ouput channels: one for the container itself and one for the products in the container. In case of a pallet with a product in it, the unpack atom would send the empty pallet to one output channel and the product to the other output channel. Are you trying to send the filled containers to their specific queues? Because if so, the unpack atom might not be suitable for that operation.

I hope this helps you further. If you have more questions, please feel free to pose them!

Kind regards,

Marc
ThijsSturkenboom
Posts: 4
Joined: Thursday 25 November, 2021 - 16:09

Re: pullconstraint

Post by ThijsSturkenboom »

Okay answering on this:
You can check the contents of the containers with the atom reference "First": on the sendto statement of queue1 you could refer to the (leaving) container with First(c), i.e. the first container on the queue (the one that is leaving the queue), and to the product inside that container with First(First(c)). You could use that reference to find the label of the product inside the container. Then, you can send containers with product X to queue X and containers with product Y to queue Y (using the labels on the products) with the sendto statement.

[Forget my first explanation of my process, my problem lies by the queues]
I do not fully understand how I need to implement this in our model with First(First(c). Containers are coming into our queue1. We want to send containers with product X to queue X, product Y to queue Y and product Z to queue Z. But in our model queue X, queue Y and queue Z are regulated with a time schedule. For example; if a container contains only product X and Y, and both of these corresponding queues are closed, the container can't go through and needs to stay in queue1. But we dont want queue1 to accumulate because of this one container, the other containers must go through if they contain product Z. Is this fixable in the queue atom or do we neef another atom?
ThijsSturkenboom
Posts: 4
Joined: Thursday 25 November, 2021 - 16:09

Re: pullconstraint

Post by ThijsSturkenboom »

Ik typ ff in het Nederlands verder.
Dus wat moeten we precies bij sendto van queue1 typen om ons probleem op te lossen?
En hoe zorgen we ervoor dat een container die blijft staan in queue1 niet de andere containers blokt die wel eruit moeten?
User avatar
HarryBunnik
Posts: 362
Joined: Monday 07 February, 2011 - 11:22

Re: pullconstraint

Post by HarryBunnik »

Hello Thijs,

I already wrote a reaction last Friday, but for some reason it was not sent and not standing on the community. So, I now type it again.

First what is nog clear to me is if the pallets arriving in the queue are mixed or not. From your later message, I understand they are not mixed.

In that case, I would already create 2 or more queues in front of the Unpack, so you can sort your pallets there. Otherwise, you'll have to write some code on the Queue's sortation order to keep them in the right order. And even then, the Unpack will stop at one point, since the subsequent route can only be taken by one type of product and the other products can't continue.

So with some more queues, you can use the label defining which product it is, to sort each pallet to its right queue. Then, in the Input strategy of the Unpack, you'll have to make certain that only orders from the matching Queue that are available will be chosen. So, there a piece of code is needed which is determining, based on the time or status of the subsequent op process, which is allowed.

I would use something like a case statement, in combination with a WhichIsTrue, to determine what queue to accept from. In the help you can see how to use these 4Dscript words.

I hope this helps you further,

Gr. Harry
ThijsSturkenboom
Posts: 4
Joined: Thursday 25 November, 2021 - 16:09

Re: pullconstraint

Post by ThijsSturkenboom »

The containers that are entering the first queue are mixed, so thats making it really complex.
Maybe we need to do something with multiple queues before the unpack attom, but we dont know exactly how to.
Marc Pieters
Posts: 2
Joined: Wednesday 01 December, 2021 - 11:54

Re: pullconstraint

Post by Marc Pieters »

Hi Thijs,

Attached you can find an example model. In this model a source generates products, which pass through a server and then onwards to one of three queues.

The server generates a label [ProductType] on each product (and hence creates "product types") on its OnEntry statement. This label can be 1, 2 or 3 (Uniform Distribution). Then, on the SendTo statement of that same server, the "1" products are sent to the first que, the "2" products to the second queue and the "3" products to the third queue.

In the example model, the label [ProductType] gets a value from a uniform distribution: the products are mixed. In this way, they are still sent to their corresponding queue.

Does this example answer your question on how to send the products to their corresponding queue?

Kind regards,

Marc
Attachments
3queues.mod
(17.86 KiB) Downloaded 925 times
Post Reply