question

wei-ting L avatar image
0 Likes"
wei-ting L asked tannerp commented

How to set limit on combiner, making priority on orders, and grab flow item ....

model.fsm

This is actually a re-post from a situation I am encountering. To make the question clear, I attached the model and indicate what I want to achieve.

My model has two flow items. 1. material 2. order info

My model as now:

I have two product lines, one is standard, one is custom.

After stage one, there is a 40% and 60% randomly split of materials into standard queue and custom queue. And the operator will grab x number of materials needed based on order info, processing them together as a batch. For example, one order coming in, asking for 30 qty, then the operator will grab 30 qty from the material queue and process it as a batch. Next order coming in, asking for 50 qty, then the operator will grab 50 qty from the material queue and so on.

I changed my source code, so the combiner will know the number of material depends on order info. I am thinking of I can actually achieve this by using processers, not combiners. I don't know.

I want to achieve four things.

1.

Custom combiner can process standard's order whenever custom combiner is in idle (custom order combiner should process custom order first)(the reason I want to set this up is that I expect less order of custom and more orders of standard). And of course, custom combiner should process custom order whenever possible before processing standard orders.

If my custom combiner is processing standard order, it should also know how many qty is needed from that specific standard order.

2. I want to set both my combiners' maximum load to be 250. If an order of 400 cpu arrives. The combiner should break down the order into 2 batches. First batch, 250 qty, another batch is 150 (400-250=150).

3. custom combiner can grab materials from standard_queue if there is not enough of materials at custom_queue.

4. The combiners' processing time should depend on the type of product is combining. I guess this should be done in the Global Table or adding a label on the item? For example, if the product id is STAN546, the combiner's processing time follows a normal distribution of mean 5 and std of 4. If the product id is cust985, the combiner's processing time follows a normal distribution of mean10 and std of 6. And I will have many product IDs.

I know these requirements seems a lot and complex, that is the reason why I am having a hard time to configure the model to fit the situation. I've spent so many days trying to solve this, and I really need some help here. Does anyone know how to achieve any of the above requirements?

I would strongly appreciate any help here!!

FlexSim 18.2.0
processflowcombinerpriorityprocess time
untitled.png (104.5 KiB)
untitled2.png (120.8 KiB)
model.fsm (48.7 KiB)
5 |100000

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

Sebastian Hemmann avatar image
3 Likes"
Sebastian Hemmann answered tannerp commented

14701-testing7-sh-3.fsm

Hey, attached you find a model in FlexSim 2018.1 that shows how I would start to solve this problem.

At first I´ve changed your Sources from 3D objects to PF Sources and wrote your data in. Sadly there was no "BatchSize" higher than 70 in your example, so I´ve changed some values to show that/how my solution works!!!

So I´m creating Tokens in Process Flow as orders. These orders check if the BatchSize is higher than 250 and if so, I create a second token and calculate the rest of the BatchSize.

All created tokens than create pallets in 3D Model in your Queues!

Next steps would be to figure out what order has to hit what combiner and send it through there...


· 17
5 |100000

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

wei-ting L avatar image wei-ting L commented ·

Thank you for helping me. I haven't had time to learn about Process Flow, I will do that, and I will look into your solution. Once I have some basic understanding of Process Flow and learned from the one you build, I will come back and try to build all of my requirements.

Again, I appreciate your help! I really do!

0 Likes 0 ·
wei-ting L avatar image wei-ting L commented ·

Hi Sebastian,

Thank you for creating the above Process Flow and sharing the file.

It works exactly the way we needed to work. In addition to this, we have anther logic which we would like to implement, but we are not sure how to execute it.

Our manufacturing process is split into standard and custom CPUs. Currently, standard CPUs are made on the Standard combiner and Custom CPUs are made on the custom combiner based on the respective order inputs. We would like to create a logic / process flow such that if we do not have any customer order (i.e. customer order info = 0), the custom portion of the model should pull standard order information and run that on the custom combiner. Also, the custom combiner parameters must change to that of standard (i.e. setup time, processing time, etc) . As soon as a custom order comes in, it should go back to its original logic.

I was exploring "Event-Triggered Source" in Process Flow, but was not sure how to execute it.

0 Likes 0 ·
untitled.png (180.1 KiB)
Sebastian Hemmann avatar image Sebastian Hemmann wei-ting L commented ·

Hi, so I´ve extend the existing model in this way:

First I´ve add some Process Flow Lists and another source that creates 2 Tokens (each with a label "Type" and the first with a 1 the second with a 2 as value). Each token represents one combiner in PF. And I push these tokens to the first List (List Combiner).

The Orders we´ve already created, try to pull a token from this "List Combiner". The only difference I´ve made between Standard and Custom in the pull request is, that Custom Orders are only allowed to pull the Token with label Type = 2 (custom Combiner), Standard Orders have to sort Tokens (Combiners) Ascending by their label Type. This makes sure that Custom Orders only find the Custom Combiner. The Standard Orders try to get Standard Combiner first but also find the other combiner if it is the only free one.

As soon as an order pulled a Combiner the Pallet is created in the Queue.

The Pallets in Standard Queue get a Label "Type" with the value of the pulled combiner.

I´ve changed the "Send to Port" of Standard Queue to look to this label. So Queue is sending pallets to both directions.

Actually your Operator2 does the transport as soon as it is free.

Process Flow now waits until the Pallet fires the OnExit trigger of the Combiner. As soon as this happens, the order returns the pulled Token (Combiner) back to the first list. So this is a loop and if another order is waiting the process can go on.

14728-14701-testing7-sh-3-1.fsm

0 Likes 0 ·
wei-ting L avatar image wei-ting L Sebastian Hemmann commented ·

Hi Sebastian,

Thank you for going forward with the simulation model I am trying to achieve. We appreciate your help. But I a quick question, I can not open the file. Is it because I am using a free trial version of Flex Sim?

0 Likes 0 ·
capture.png (3.6 KiB)
Show more comments
Show more comments
wei-ting L avatar image wei-ting L commented ·

Hi Sebastian,

Thank for guiding us, I've tried assigning time and type to the tokens, but it is not working.

1. According to your advice, "time" should be used when assigning labels. Can you see my picture and my model to see which part is not correct? The picture below shows my assigned token setting. But it is not working.

2.

I really want to achieve the above setting, can you advise how should I proceed with this? we've tried using what you advised.

I also attached my model here. Can you take a look?10-16-20181.fsm

0 Likes 0 ·
10-16-20181.fsm (66.0 KiB)
1.png (11.9 KiB)
2.png (71.9 KiB)
3.png (44.4 KiB)
Sebastian Hemmann avatar image Sebastian Hemmann wei-ting L commented ·

Hi,

1. you are right, for most of your tokens there is no Type and no time label. This is because most of your tokens don´t go through the "Assign Labels on Token" activity because their Batchsize is smaller than 250. Your solution should look like:

Also, if you are only writing text in a label Value field, FlexSim does not know what you want it to do.

Setting the "Type" label to a value = Standard CPU does only affect failure messages!

time;

is a Methode FlexSim does know and so it returnsa number value -> the actual simulation time when the event is done!

2. If you are setting your Type label to

value = 1 if it should go to a Standard CPU and to

value = 2 if it should go to the Custom CPU

Everything should work fine, because in the actual 3D Model (and objects) only a number is needed to figure out what port should be used.

By the way, if you really want to control stuff by strings, use " " around your string! So FlexSim does know that you are writing text to a label. But using strings will affect much more effort to your model ;-)

0 Likes 0 ·
wei-ting L avatar image wei-ting L commented ·

Hi Sebastian,

Thanks for your advice, I was able to assign labels ("time" and "type") to tokens. But I have a few more questions that I want to address and hopefully, you can help me with that.

1. Right now my custom combiner process both custom cpus and standard cpus, it sends cpus to inventory racks depends on the item type. I was able to achieve this logic by only changing my combine mode to "pack". ("Batch" mode does not work). So right now the "CurContent" in my rack is the number of batches processed, it is not the total qty of cpu. My question is, is there a way to see how many qty is in each pack/batch that got stored in the rack? Like an Excel table showing that a particular batch contains how many qty of cpus, and that is a standard/custom order. Is there a way to track the order info in the rack?

2.

I was able to assign time and type labels to a token, but I want to export the token's data, is there a way to do it? So I can analyze the queue time for each token.

3.

My "WIP by Type" dashboard is not working as the way I wanted. can you help to see what I can do?

4. In the previous post, you mentioned the "for loops" of process time depends on batchSize. I tried to understand it, but I could not figure it out, can you help me with that again? I know the logic is to write a code, but I do not know the parameter and names used in the code. Can you help me with this again?

int i_BatchSize = item.BatchSize;

if(i_BatchSize <= 100)
{
	return 0.07;
}
else
{
	if(i_BatchSize <= 150)
	{
		return 0.12;
	}
}

5. I want to add one more logic, the downtime of each machine. I researched other posts, but could not find a place where I can edit the downtime of machines. Can you help me with this? The simulation is running 100% of the time, but we know that in reality, there is a scheduled maintenance of machines, so machines do not run 100% of the time. I want a 20% downtime for each machine. Can you advice where I can use this?

Thanks! You have been trying to help us and educating us on using Flexsim, we want to learn, too. That is why after we tried something, it did not work, we ask for your advises again. We strongly appreciate your help. I've also attached my model here as a reference.

10-16-20181.fsm

0 Likes 0 ·
10-16-20181.fsm (155.1 KiB)
10.png (165.7 KiB)
20.png (99.4 KiB)
30.png (125.8 KiB)
Sebastian Hemmann avatar image Sebastian Hemmann wei-ting L commented ·

Hey,

is there nobody in your country that can give you a training or consulting? Because most of your questions are very basic FlexSim understanding stuff!

Just had a look into your questions. It will take some time to answer all this questions and I´m quite sure because you are asking many different questions in only one thread, only users will try to answer, that have time and answers to all of your questions.

So I hope to find time to answer all your question within this week, but can´t promise!

If you want answers faster, think about the hint @Jörg Vogel gave you and split your questions to different Threads. As you did with the "setup time in batch" stuff.

1 Like 1 ·
wei-ting L avatar image wei-ting L Sebastian Hemmann commented ·

Hi Sebastian,

Yeah, no one in my country can give me a training. In fact, I reached out to FlexSim team asking for a training/consulting before, but he said no training is available, he said the best way is to study the built-in user manual, study online training, and ask questions through the forum on Flexsim. Which I have tried all of these. The online tutorial video on youtube is very limited. The built-in user manual is not easily understandable, which I have so many questions to ask. Therefore, the only way is to post my question here and get clarification from an expert like you.

I know my questions seem pretty basic from your point of view, but we've never used this software before. We know some basic python knowledge, but we are not sufficient enough to edit the code by ourselves completely.

I know you have been trying to help us, which we appreciate that. We want to apply FlexSim skills/knowledge to our supply chain project. I will try to re-post the question separately on each thread. Again, we appreciate your help, and we hope to receive your advice on the simulation soon!

0 Likes 0 ·
Show more comments
Steven Hamoen avatar image
2 Likes"
Steven Hamoen answered tannerp commented

@wei-ting L You have had this advice before but you ignored it, but put in some time to understand process flow. It will make this so much easier. Create a flowchart of your work process and use that as a template for a process flow.

Start with the tutorials and take it from there.

· 2
5 |100000

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

wei-ting L avatar image wei-ting L commented ·

I did not ignore it, I was told not to ask too many questions in a comment because it will make readers confused about what I want to build. So, I re-posted my question with what I really want to build. My question is, is the Process Flow the easiest way to solve all of my questions? I haven't had time to look into Process Flow, but if process flow is the one, I will make time study about it. Any way to configure it in the 3-D model? I heard that once I build the process flow, I can convert it into a 3-D simulation? I just want to make sure that Process Flow is the one I should use to solve my question, not the 3-d drag-and-drop model. Right?

1 Like 1 ·
tannerp avatar image tannerp wei-ting L commented ·

Process Flow is indeed the easiest way to model most complex systems. It's easier for a number of reasons, in my opinion:

First, Process Flow gives a visual layout of your process that makes presenting your model to management and others who are unfamiliar with the software easier.

Second, editing logic for groups of objects using push/pull from list, decide activities, zones, etc. is all more manageable with Process Flow. This will save you lots of time in applying all these things to the 3D model.

Third, orchestrating the timing of events in your simulation becomes much more intuitive with Process Flow because you can track your tokens easier than you can track what's happening in the 3D model.

Bottom line: If you spent a few hours doing the Process Flow tutorials and practicing, you will be able to make more bulletproof models with less complicated code and in a shorter amount of time.

0 Likes 0 ·