AnyLogic Contest #2 – Forklift Transportation

The competition is over with the winner Maximilian Selmair as the winner, winning $200 with the best model at level 2.

Thanks to all the other participants
Level 2
Elie Abboud
Patrick Wöhe
Aqeel Tariq
Level 1
Ankit Sahay
Gonzalo Vladimir Contreras Martinez


One of the most common processes in any warehouse is the movement of objects using forklifts, and these forklifts are operated by operators. In this type of process, operators are trained to handle different types of forklifts, which, in turn, are designed to transport certain types of objects.

Despite being a relatively frequent problem, AnyLogic blocks do not offer an obvious solution for this, so you will need to be creative to solve the puzzle.

What you need to model

The detailed process is as follows, in which there are 4 areas of interest: the product arrival location, the operators home location, the forklifts home location and the destination location.

  1. Different types of products arrive at the product arrival location with a defined arrival rate.
  2. When a product arrives, an idle operator must find a forklift to transport this product, walk towards the forklift, and drive the forklift towards the product, pick it up and transport it to the destination location.
  3. The chosen operator must be capable of operating this type of forklift. There are many operator types, and each one of them is trained to operate a subset of these forklift types.
  4. The chosen forklift must be capable of transporting this type of product. There are many forklift types, and each one of them is built to transport a subset of these product types.
  5. Upon arrival at the destination, the product should be dropped off (and it can be discarded) and something natural should happen according to what we would expect to happen in real life, for example:
    1. If there are no more pallets that can be transported with the current forklift at the arrival location, the operator will drive the forklift towards the forklifts home location, where he must evaluate if there is another type of load that he can transport using a different type of forklift:
      1. If there is, the operator will grab the specific forklift and transport the product towards the destination location
      2. If there is not, the operator will walk back to the operator’s home location.
    2. If there are more pallets at the arrival location that can be transported with the same forklift, the operator must remain on the current forklift and go to the arrival location to transport the product to the destination location.

The examples 5.a and 5.b are just two possible situations, and there are many others that can occur, and it is the job of the simulation modeler to be able to identify all those cases and evaluate what is the most natural thing an operator would do if something strange happened. The assumption is that all operators have perfect information and perfect communication with each other.

For instance, if there’s no product, and one operator is driving back the forklift to the forklift’s home location, and a new product arrives that can be transported with that same forklift, what would the operator do?

  1. One option is to change his mind, and stop moving back to the forklift location, and instead start moving towards the product to transport it.
  2. Another option is for a different operator to walk towards an available forklift to transport that product.
  3. Options 1 and 2 are completely natural, but a bad solution would be for the operator to get back to the forklift’s home location and move to a different forklift instead of staying in the same forklift, if that forklift can transport that product type.

Model Structure

We are providing a model structure to get you started, but you are absolutely allowed to change everything as long as you follow the previously discussed requirements. There will be no explanation for that model so if you want to use it, you should be able to understand it by yourself.

The helper model has the following database structure, but if you want to start from scratch, you can change that structure as long as it contains the same information.

Product Types

Each product type must have an ID, a name for the product type and an arrival rate. We will test the model by adding/removing any amount of product types.

idproduct typearrival rate (per hour)

Forklift Types

Each forklift type must have an id, a name, the number of available forklifts for the type and a collection that contains all the product types that the forklift can transport. We will test the model by adding/removing any amount of forklift types. On the following example, there is only 1 electric forklift available, and this electric forklift can take products 1 and 2 (small and medium).

Forklift IdForklift typeavailableproducts Ids that it can take

Operator types

Each operator type must have an id, a name, the number of available operators for the particular type, and a collection of all the forklifts that operator type can operate. We will test the model by adding/removing any amount of operator types. On the following example, there are two senior operators available, and senior operators can use forklifts 1 and 3 (electric and heavy).

idoperator typeavailablepossible forklifts

General Rules and limitations

  • The model must work using the PLE
  • You are not allowed to use any paid or private external libraries. Anything you use besides AnyLogic must be free and publicly available.
  • You must provide the complete AnyLogic project, and it will be tested using the PLE, so you are not allowed to use any feature that is not present in AnyLogic PLE.
  • You are allowed to use resources, transporters, or anything else


First know that on our previous contest, available here: there were only 5 participants and there were 2 winners with models that could be significantly improved, so there’s a chance if you compete.

The reward is based on how many tests the model passes, which means that if you develop a model that doesn’t do everything right, you still win, if nobody else does better.
The prices are:

  • Level 1: If your model does the basics, moving products around using the correct operator and correct forklift: $100 (passes basic tests)
  • Level 2: If your model does most of things great, but some things not so well: $200 (passes some of the advanced tests)
  • Level 3: If your model does everything great, with smart and natural operator’s decisions: $300 (passes all the tests)
  • Level 4: If your model does everything great and passes all the tests, but also shows very clearly the different types of products/operators/forklifts with a legend making it easy to have a good visual experience of the model and you take care of the user interface and maybe even show some graphs: $400
  • Level 5: If all the previous points are met, but you go above and beyond by showing a professional work that is flexible and can be expanded to use multiple arrival locations, multiple home locations and/or multiple destination locations: $500

When you finish a level, you can submit it immediately. Then you can improve the model and submit it again with a new level. Faster submission is one of the factors to choose between ties. You can’t submit the same level twice though, and only the first submission will be considered.

The payment will be done ONLY using either Paypal or Payoneer. If you don’t have these, you can select a set of Noorjax available courses and get them for free.

If you are able to reach level 4, and you want to do a paid internship at Noorjax, you will be eligible to do so.

There will be theoretically only one winner, but If there is an objective tie between different models, the best 2 will be selected through the subjective decision and voting of some of the members of Noorjax and the prize will be split in 2 for both winners. For this voting there will be a semi-objective criteria, which is the level of life-experience of the winner. For instance, a school student will defeat a Master student, and a Master student will defeat someone who works professionally. Also, someone who submitted faster, will have a slight edge over someone who submitted later.


The deadline is on May 21st 2022, 23:59, UK time. Send your model and any additional files to with the subject “competition level N”, where N is the level you are submitting. Also send your Payoneer/paypal account, your linkedin profile and add anything you may want to add about yourself. Do not upload the model to the cloud until the end of the competition.


Forklift Contest – Official

All Comments:

  1. Gerd Wagner

    May 3, 2022

    Why are the forklift resources so much unbalanced for the frequency of products?
    For the most frequent type of product (type 3), only one (out of four) forklift resources are in the pool. while for the least frequent type of product (type 1), two (out of four) forklift resources are in the pool.

    • admin

      May 12, 2022

      the frequency of products is a parameter that you can change freely, the model should work with any parameter chosen from the excel file

  2. Gonzalo Contreras

    May 8, 2022

    Good evening. Thank you for this opportunity. I have a query, the tests that you will carry out will only be using the tables? or can you add a visual interface with checkbox?
    Please let me know

    • admin

      May 12, 2022

      the tests i will perform are secret. Part of the problem is for the modeller to be able to test scenarios of all kinds, if I reveal the tests, this would be way too easy

Your Comment: