I want to make an algorithm that distributes orders $O_1,O_2,\dots$ to equipment $E^1,E^2,\dots$ so they can be processed in an optimal way.
Different orders require different equipment for the processing steps, but which equipment may be used for which step is already known in the form of a tuple e.g. $(E^3,E^8,E^9)$.
For every piece of equipment there may be more than one instance: $E^k_l, l \in \{1,\dots,p \} $
The time $t \in \mathbb{R}^+_0$ spent on each equipment is determined by the amount of material to process (as specified by the order) and the speed of the equipment (as a property of the equipment).
Each equipment may process exactly one order at any given time.
The processing steps have to happen in the order specified in the tuple
It is possible to have more than one choice of equipment for a certain processing step, I will write this as $(\{E^3,E^4\},E^8,E^9)$. So it may be quicker to process on a certain machine if that one is available.
The optimization goal would be to process as many orders as possible during the available time $T \in \mathbb{R}^+_0$.
It should be possible to assign higher weights to certain orders so they get preferential treatment.
I may include more constraints later, but at this point I would like to keep it "simple".
I have a background in mathematics and some practical experience in programming and simple optimization.
At this point my problem is to find a start in tackling the problem since I don't really know what type of problem this is, and to check if I'm formalizing this meaningfully. Please excuse (and correct) my notation, I've been away from university for quite a while...
I am looking for a numerical solution and a decent approximation should suffice - it competes with solving the problem with excel and possibly some pieces of paper.
This is called parallel machine scheduling or also the job-shop problem. Small instances can be solved to optimality by formulating the problem as Mixed Integer Programming problem. For larger problems we can use a MIP model and just stop before optimality. That will give often very good solutions (a MIP solver will even give some information about how the gap could be between the best found solution and the best possible solution). For larger problems many heuristic approaches have been developed, including interesting meta-heuristics (such as genetic algorithms). These methods provide good solutions but no feedback about the quality (how good).
Typical pictures of solutions are: