question

Enara avatar image
0 Likes"
Enara asked Enara commented

Different products created from different references in a combiner

Hello, I want a combiner to create several products with different references, how can I do it?

This is my situation:

The references are: A , B , C, D, E, and this references arrive in different times, which means that there are not always available.

When it comes to the products I want to produce them depending on the references available. For doing them I will need the following combinations:

TR11: A (3) + B(5)

TR21 : C (4)

TR31: A (7) + D (3)

TR41: E (3) + B (2)


I tried to applied a Pull strategy in the combiner but there is not option to stablish the requirements. How can I create the code for applying this requirements?

Thank You.


FlexSim 23.1.3
combiner pulllabels and combinerspull requirements
· 5
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 ·

Maybe have a look at this post. It seems to fit your requirements pretty well.

0 Likes 0 ·
Enara avatar image Enara commented ·

Thank You for your answers!

However, after creating the Global Table where it is defined the quantities of the components, I don´t know how to pull to the combiner for creating the necesary quantity of each reference, without defining the order of the demand.

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann Enara commented ·
Sorry, but I don't quite follow what you mean.

Could you describe the sequence of events that should happen and (if possible) upload your model?

0 Likes 0 ·
Enara avatar image Enara Felix Möhlmann commented ·

Hi again,

My situtation is the following one: I have 5 raw materials that I send to a queue. From this queue the materials are send to a item list where I save which type of material is each of them.

From proccesing this materials I have 4 combiners and each of them works with 4 different final products that are formed by the materials in the queue. The final products are made of some of the materials of the item list.

The composition of the final products is the following one:

TR11: a (3) + b (5)

TR21: c (4)

TR31: a (7) + d (3)

TR41: e (3) + b (2)

I don't know how to pull the different materials from the item list looking at which final product I am creating in the combiner in each situation. I have a global table created with the demand of each of the final products and depending on the final product that I'm creating the process time of the combiners is different, this is defined by the product I'm creating each time.


Here I insert the file: PBL PUEBAS.fsm

0 Likes 0 ·
pbl-puebas.fsm (30.2 KiB)
Jeanette F avatar image Jeanette F ♦♦ commented ·

Hi @Enara, was Felix Möhlmann's answer helpful? If so, please click the "Accept" button at the bottom of their answer. Or if you still have questions, add a comment and we'll continue the conversation.

If we haven't heard back from you within 3 business days we'll auto-accept an answer, but you can always comment back to reopen your question.

0 Likes 0 ·

1 Answer

Felix Möhlmann avatar image
0 Likes"
Felix Möhlmann answered Enara commented

Taking Jason's opportunistic combiner, you'd just have to add a stop condition when the demand is fulfilled.

opportunisticcombiner-demandlimit.fsm

If the combiner does not need to be "opprotunistic", you can also just use the "Update Components List" option in the combiner's On Entry trigger. It looks at a label on the container object that represents a column in a global table and sets the component list to be equal to the values in that column. The process time can be set with a "Values by Case" option using the same label.

pbl-puebas_1.fsm


· 12
5 |100000

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

Enara avatar image Enara commented ·

Thank You, it has been very usefull!

However, I dont undertand how do you define the items that are needed to arrive, this is, in the source there is created a label with the value "strascii(duniform(65,69,getstream(current)))", what does that mean?

The exact quantity that I need is: A= 363 B= 345 C=80 D=90 E=138


Thank You.

0 Likes 0 ·
Jason Lightfoot avatar image Jason Lightfoot ♦♦ Enara commented ·

In the -demandlimit model the Demand table tells you how many of the finished product to make while you've listed the exact quantities of components.

You can generate those exact quantities using a single or multiple scheduled source(s) and a delays/processors upstream - where the label PartNum should have the values A through to E. Felix's expression is just generating those characters randomly using the ascii code. You can look up all of the keywords in the expression in the online documentation - something we encourage students to do for themselves.

0 Likes 0 ·
Enara avatar image Enara commented ·

Hello,

I tried to do the simulation with other data, however it doesn´t work properly. I think that the problem is that the pull doesn´t work, I have uploaded the program so if it is possible I would apreciate you to help you to help me.

Thank you.




Prueba process flow.fsm

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann Enara commented ·
The products you defined in the table require items with the "PartNum" labels V, X, Y, Z, AA...AI. The source assigns the values A through K.
0 Likes 0 ·
Enara avatar image Enara commented ·

Hello, I have some problems with the opening of the model, I have licese of the version 2022 can you send me the opportunisticcombiner-demandlimit.fsm (60.9 KiB) in the version 2022.

Thank You.

0 Likes 0 ·
Felix Möhlmann avatar image Felix Möhlmann Enara commented ·
The model that is attached to my original answer is from version 22.0
0 Likes 0 ·
Enara avatar image Enara commented ·

Hello,

I want to simulate that a queue working as a combiner makes more than one piece at a time based on the flow process, for that I have changed the count in the resource, but when I change the number of it, from 1 to 10 for example it gives me an error and it directly takes me out of Flexsim.

screenshot-2.png


0 Likes 0 ·
screenshot-2.png (312.2 KiB)
Felix Möhlmann avatar image Felix Möhlmann Enara commented ·

I believe you created an infinite loop by accident. The Resource has the instance object set as a reference. Increasing the quantity of a Resource that refers to a 3D object will create copies of that object. That copy will also be an instance of the Process Flow and since the Resource is also set to be "Local" it will want to create its own copy of the combiner queue, which is another instance again and so on.

In this case the Resource might as well be numeric and not refer to an object, since the object is synonymous with the instance object already. Increasing the quantity will then not crash FlexSim.

Alternatively, a Zone with a limited maximum content could be used.

0 Likes 0 ·
Enara avatar image Enara commented ·

Hello,

I have tried to continue with the activity producing new references with the ones that I had created, I have tried to do the second assembly as the same as the first one, however, the demad2 of the second assemby does not decrease.

PBL BIEN6.fsm

Thank you.

0 Likes 0 ·
pbl-bien6.fsm (383.7 KiB)
pbl-bien6.fsm (383.7 KiB)
Felix Möhlmann avatar image Felix Möhlmann Enara commented ·

What you have build doesn't make much sense to be honest.

The "product" label on the tokens is not updated, so nothing will happen because the second production grid table doesn't use those product names. Even if the label was updated, you would run into the issue that the number of products (and thus the needed number of tokens) differs between the two tables.

And even if you worked around that somehow the whole logic doesn't really make sense with how the model is presumably supposed to work. Currently every combiner queue would first work to complete the first demand table and move on to the second one. As I understand it from how the objects are arranged, one group of combiners should work on the first demand table and the second group uses those products and further combines them based on the second table.

To achieve this you do not need make many changes to the Process Flow at all. All you have to is to allow for the tables which the instance object/combiner uses to be variable.

A simple implementation would be to write the respective table names into labels on the queues. Then read the name from those labels whenever the Process Flow previously used a fixed name.

1705407969924.png

This way you can control which parts a combiner works on.

One more step you will have to do is to update the "PartsNum" label of a combined item to reflect the new product type (Assign Labels activity) before it is moved out of the combiner.

And you used the wrong trigger on "Queue2". It should be "On Entry".

And the "ProductPartQuantities2" doesn't have the correct column headers.

Oh, and FlexSim is likely going to brick itself if you try to run this with 150 instances and over 130.000 items.

And finally: Please don't post additional questions as answers to your own question. Either continue the commend chain, or, if the topic has moved on from the original question, post a new question, possibly linking to the previous one to provide context if you deem that necessary.

0 Likes 0 ·
1705407969924.png (69.7 KiB)
Enara avatar image Enara Enara commented ·

Hello,

I have tried to do the changes that you proposed me, howeverm I dont know where is the error.

Hope you can help me. Thank you

PBL BIEN6 (1).fsm


0 Likes 0 ·
pbl-bien6-1.fsm (385.3 KiB)
Felix Möhlmann avatar image Felix Möhlmann Enara commented ·

The error messages state what is wrong.

"Label property GridTableName retrieved on ...."

The program tried to read the label "GridTableName" on the specified object.

"Label does not exist."

But the label does not exist.

The last part of the error message tells you where the program tried to read the label. In this case the Quantity field of the Source_t0 activity.

As far as I could tell, you only added labels to one queue and those are even wrong. (Name of first label and value of second label)

1705488583004.png

You only have to add the labels to the objects the "Resource" and "Resource2" activities point to. Then you set them to a quantity of 1 and reset the model, then back to the actual quantity and reset again. This will make new copies of the original object which will share the newly added labels.

0 Likes 0 ·
1705488583004.png (7.3 KiB)