0

The problem here described was taken from a university exercitation session.

A serial production line is made of $K$ workstations: one kind product is manufactured by this line and has to be processed by each of this workstation. In each workstation are present equal machines in parallel. Stations are separated by an infinite sized buffer; products lay in buffer waiting to be processed by the machines of the downstream station (which can, for instance, be busy processing other products). The data characterizing the line are reported below:

  1. The mean inter arrival time ($IA$) of a product in front of the first station is modelled as an exponential distribution (Poisson arrival process)
  2. Each workstation contains a certain kind of machines; each machine is characterized by a mean processing time ($PT$), modelled as an exponential distribution

In the image there is a graphical representation of the line. enter image description here

The line performance is the mean time products have incurred to be processed all over the line ($WT$) during a fixed time horizon. A function which simulates the line and return $WT$ is given to the student.

Function characteristic

  • The function has to be taken has a black box.
  • The function takes some time to return $WT$.
  • Random number generation is already managed by the function: stochasticity of $WT$ is not a problem, since the line is simulated over a long-time horizon so that system can be considered in steady state

For instance, the input data can be $K=3$, $IA=2$, $PT_1=10$, $PT_2=50$, $PT_3=5$. The line will be formed by three workstations. The mean interarrival time of the product in front of the first station is equal to 2 time unit. The mean processing time of the machines in the first workstation is 10 time unit, in the second workstation is 50 time unit, in the third workstation is 5 time unit.

The optimization problem is summarized below:

Nomenclature

  • $S_i$ : number of machines in $i^{th} $ workstation
  • $K$ : number of workstations
  • ${S}^{UB}$ : maximum number of machines allowed in each workstation
  • $WT^*$: mean product lead time threshold
  • $IA$ : mean interarrival time
  • $PT = (PT_1,PT_2, ..., PT_K)$ : vector representing mean processing time of machines beloning to the $i^{th} $ workstation
  • $s = (S_1,S_2,…,S_K)$ : vector of machines allocated in each workstation
  • $WT(s)$: mean product lead time of line $s$

$$ Find \phantom{20} s = (S_1,S_2,…,S_K)$$ $$ Minimize \phantom{20} S^{TOTAL}=\sum_{i=1}^K S_i$$

$$ s.t. $$ $$ WT(s)<=WT^*$$ $$S_i>=S^{min}=1, i = 1, .. K $$ $$S_i<=S^{UB}, i = 1, .. K $$ $$ S_i \in \mathbb N $$

Request

For a given $K$, $IA$, $PT$, Students are required to solve the optimization problem developing a branch and bound algorithm in Java. $WT$ must be evaluated with the given function.

Some more suggestions were given: $K$ should not be considered higher than 18, and ${S}^{UB}$ should not be considered higher than 15.

What I have thought

I have searched on internet methodology which can help solving this problem. I did not find anything useful for what is reported below:

  1. The problem it is not a classic ILP due to the function $WT$; that is only defined for integers (cannot simulate a line with non-integer machines). This prevents the utilization of any integer relaxation.
  2. As far as my understanding, I cannot express this problem as a zero-one linear programming

My intuition tells me that a branch and cut algorithm would be the best for this case. The motivation behind this intuition is the following: let us considering $K=2$ and $S^{UB}=10$ ($IA$, $CT$ and $WT^*$ are not important for the example). Let us suppose that in some way we have found a feasible solution is $s=(6,6)$. If we simulate the line $s=(5,5)$ and found that it is not feasible, we can prevent evaluating all the lines contained in the rectangle with vertex $(5,5)$, $(1,5)$, $(5,1)$, $(1,1)$, as drawn in figure.

enter image description here

The procedure if applied to any feasible solution, can prevent wasting time evaluating lines which are already “dominated”, reducing so computational time. Having said that, I have no idea how developing the branches to get to feasible solution.

I kindly ask if someone has idea on how proceed with my intuition; moreover, I also welcome any other kind branch and bound algorithm which can be applied to this problem.

Thanks

  • Given a specification of a production line, are you able to compute exactly the average time for a product to be processed? Or do you only know how to do that via simulation? – D.W. Oct 03 '20 at 19:10
  • @D.W. Unfortunately the problem has to be solved with a branch and bound algorithm. More specifically, I think that the best way to solve this problem is a geometrical branch and bound. – toratoratora Oct 03 '20 at 20:48
  • @D.W. The motivation is due to an external fact. This problem, defined in a different mathematical way, was solved using CPLEX, which uses a branch and cut algorithm. The aim is to design a branch and bound algorithm which provides results in terms of computational time comparable to the CPLEX results. – toratoratora Oct 04 '20 at 07:10
  • @D.W. Using simulation is another mandatory requirement. Anyway, the line is simulated for a long time, so that the results can be considered reliable. Moreover, all the simulations carried out on different lines have the same initial seed, so that line almost work with common random number. The certificate of optimality is given restricted to the seed used. My idea is to run from the beginning the branch and bound algorithm several times changing seed and see how does the solutions change. – toratoratora Oct 04 '20 at 07:15
  • @D.W. $K$ can be considered maximum equal to 20. For the worst case scenario, that is $K=20$, the total number of machine should be equal to 100, i.e. each workstations can have 5 machines as maximum. – toratoratora Oct 04 '20 at 07:21
  • 1
    Please edit information bound to help giving a useful answer into the question. The question body & title should be self-contained; have a look at How do I ask a Good Question? – greybeard Oct 04 '20 at 07:37
  • This sounds like an XY problem. If you want it to run as fast as CPLEX, you should state the amount of time you're willing to let it run, not require that it use branch-and-bound (which is neither sufficient nor necessary to achieve your real goal). I suspect the same is true for 'using simulation'. You are more likely to get useful answers if you avoid imposing artificial requirements that unnecessarily narrow the space of possible answers. – D.W. Oct 04 '20 at 07:44
  • I'll modify the questions ASAP, thank for the advisement – toratoratora Oct 04 '20 at 08:15

0 Answers0