moptipyapps.prodsched.objectives package

Objectives for the production scheduling problem.

Submodules

moptipyapps.prodsched.objectives.max_stocklevel module

An objective function for minimizing the maximal stocklevel.

class moptipyapps.prodsched.objectives.max_stocklevel.MaxStockLevel[source]

Bases: Objective

Compute the worst stock level.

evaluate(x)[source]

Get the worst (largest) stocklevel.

Parameters:

x (MultiStatistics) – the multi-statistics

Return type:

int | float

Returns:

the worst stock level

lower_bound()[source]

Get the lower bound of the maximum storage level.

Retval 0:

always

Return type:

int

moptipyapps.prodsched.objectives.worst_and_mean_fill_rate module

Maximize the worst and average immediate rates.

This objective function tries to find solutions which have very robust and also good fill rates. The fill rate is the fraction of customers that can get served directly, i.e., the fraction of customers that do not need to wait. This means that it is the fraction of customers whose demands can directly be satisfied from the stock.

Fill rates are between 0 and 1. Of course, high fill rates are good and should therefore be subject to maximization. However, since we can only minimize, we minimize “1 - fill rate”.

Now, the question is: What is a robust fill rate / solution? Well, we simulate the solutions (such as re-order points) over multiple instances. A robust good fill rate would be high on the worst instance. In other words, the smallest fill rate measured on any instance should be as high as possible. This means that the largest value “1 - fill rate” should be as small as possible.

However, this does not consider the average performance. A good average performance would mean that we maximize the average fill rate over all instances, or, in terms of minimization, that we minimize “1 - average fill rate”.

This objective function combines both concepts, putting special emphasis on the worst-case fill rate. It minimizes

“100+(1 - worst-case fill rate) + (1 - average fill rate)”

class moptipyapps.prodsched.objectives.worst_and_mean_fill_rate.WorstAndMeanFillRate[source]

Bases: Objective

Combine and minimize worst and average fill rate.

evaluate(x)[source]

Get the negated worst immediate rate.

Parameters:

x (MultiStatistics) – the multi-statistics

Return type:

int | float

Returns:

the worst stock level

lower_bound()[source]

Get the lower bound of the inverted minimum immediate rate.

Retval 0:

always

Return type:

int

upper_bound()[source]

Get the upper bound of the inverted minimum immediate rate.

Retval 101:

always

Return type:

int

moptipyapps.prodsched.objectives.worst_fill_rate module

Maximize the worst-case immediate rate.

This objective function tries to find solutions which have very robust fill rates. The fill rate is the fraction of customers that can get served directly, i.e., the fraction of customers that do not need to wait. This means that it is the fraction of customers whose demands can directly be satisfied from the stock.

Fill rates are between 0 and 1. Of course, high fill rates are good and should therefore be subject to maximization. However, since we can only minimize, we minimize “1 - fill rate”.

Now, the question is: What is a robust fill rate / solution? Well, we simulate the solutions (such as re-order points) over multiple instances. A robust good fill rate would be high on the worst instance. In other words, the smallest fill rate measured on any instance should be as high as possible. This means that the largest value “1 - fill rate” should be as small as possible. So we use this as result of our objective function.

class moptipyapps.prodsched.objectives.worst_fill_rate.WorstFillRate[source]

Bases: Objective

Compute the worst immediate rate and return 1 - of it.

evaluate(x)[source]

Get the negated worst immediate rate.

Parameters:

x (MultiStatistics) – the multi-statistics

Return type:

int | float

Returns:

the worst stock level

lower_bound()[source]

Get the lower bound of the inverted minimum immediate rate.

Retval 0:

always

Return type:

int

upper_bound()[source]

Get the upper bound of the inverted minimum immediate rate.

Retval 1:

always

Return type:

int