Von Joannès Vermorel, Januar 2016MOQ (Mindestbestellmengen) stellen eine universelle Form von Bestellbedingungen in der Lieferkette dar. Eine MOQ-Bedingung deutet darauf hin, dass ein Lieferanten keine Bestellungen unter einer bestimmten Grenze, häufig in Einheiten oder in Dollar ausgedrückt, zulässt. Oft bestehen mehrere MOQ-Bedingungen, die gleichzeitig erfüllt werden müssen. Das allgemeine MOQ-Problem dreht sich um die Berechnung einer (fast) optimalen Bestellung, die alle MOQ-Bedingungen erfüllt, und gleichzeitig die wirtschaftliche Rendite der gekauften Einheiten maximiert.
Das allgemeine MOQ-Problem wird als
schweres nichtlineares Optimierungsproblem formalisiert. Dieses Problem wird als
schwer eingestuft, weil bewiesen werden kann, dass die Berechnung einer
optimalen Lösung gewöhnlich rechnerisch nicht möglich ist. Doch, auch wenn man gewöhnlich keine optimale Lösung erhält, können fast optimale Lösungen durch nichtlineare Constraint-Löser Algorithmen erzielt werden. Konkret stellen wir im Folgenden
moqsolv
vor, einen fortgeschrittenen numerischen Löser, der von Lokad für das allgemeine MOQ-Problem eingeführt wurde.
Gewöhnliche MOQ-Bedingungen
MOQ-Bedingungen können in vielen Formen auftreten. Unter den häufigsten, die in der Praxis in Lieferketten vorkommen, befinden sich:
- Eine Mindestmenge, die in Einheiten pro SKU ausgedrückt wird, und sich auf Artikel bezieht, die zu billig sind um einzeln verkauft zu werden.
- Eine Mindestmenge, die in Dollar pro Bestellung oder insgesamt ausgedrückt wird, die oft auftaucht, wenn der Lieferanten keine Versandkosten berechnet.
- Eine Mindestmenge, die in Einheiten pro Kategorie ausgedrückt werden, was oft bei Produkten vorkommt, die auf Bestellung und mit minimalen Losgrößen gefertigt werden.
Liegt nur eine Bedingung gleichzeitig vor, ist diese einfach zu handhaben. Doch sobald mehrere MOQ-Bedingungen gleichzeitig berücksichtigt werden müssen, wird es viel komplizierter, eine Bestellung zu schaffen, die all diese Bedingungen erfüllt.
MOQ-Konzepte
Bevor wir uns der numerischen Optimierung des Problems widmen, führen wir die wichtigsten für das allgemeine MOQ-Problem relevanten Konzepte ein:
- Die items (Artikel) stellen das, was man tatsächlich kaufen kann, dar. Artikelmengen sind oft ganze Zahlen, obwohl es hierzu keine Beschränkung gibt.
- Die ordered quantities (Bestellmengen) für jeden Artikel (unter Umständen Null), die eine potenzielle Lösung des MOQ-Problems darstellen.
- Die rewards (Belohnungen), die mit jeder zusätzlichen Einheit jedes Artikels einhergehen - im Grunde genommen, was die stockrwd-Funktion ergibt (Bestandsbelohnung), obwohl die Nutzung dieser Funktion nicht erforderlich ist.
- Die costs (Kosten), die aus den zu erwerbenden Einheiten entstehen. Das Ziel ist, die Belohnung für ein bestimmtes Budget, das in costs (Kosten) ausgedrückt wird, zu maximieren. Normalerweise erwartet man einheitliche Kosten pro Einheit, doch hier verlassen wir uns nicht auf solche Annahmen. Daher können auch Nachlässe berücksichtigt werden.
- Die targets (Ziele), die sozusagen Kriterien zum Stoppen darstellen und nicht unbedingt von den tatsächlichen Kosten bestimmt werden. Dieses Konzept ist etwas feinfühliger, daher wird weiter unten näher darauf eingegangen.
Das meistgenutzte Kriterium, um beim Einkauf über eine
Prioritätenliste für den Einkauf das Ende einer Bestellung festzulegen, ist die Bestimmung eines
maximalen Budgets: Die Einheiten werden nach ihrer abfallenden ROI eingekauft, bis das gesamte Budget ausgegeben ist. Doch eine Deckelung durch Budgets sagt weniger über die gesamte Bestandsleistung aus, die erreicht werden kann. Daher kann es äußerst praktisch sein, auch wenn das Ziel an sich, die Optimierung des ROI ist, unabhängig vom gewählten Stopp-Kriterium, alternative Kriterien, wie etwa eine erwünschte allgemeine
Auftragserfüllungsrate als Ziel zu erwägen.
Das Konzept des
target (Ziel) wird als ein allgemeiner Mechanismus eingeführt, um ein alternatives Stopp-Kriterium zu definieren, wenn man mit einer
priorisierten Bestellpolitik arbeitet. Vereinfacht gesagt, wird das Ziel, Bestellungen zu finden, die die höchsten ROI für die geringste Investition liefert, mit der man das
target Ziel erreicht. Im Nachstehenden wird eine deutlichere Definition dieses Optimierungsprozesses gegeben.
Bsp.: Frank, der Manager der Lieferkette, legt ein Ziel bei 90% Auftragserfüllungsrate fest. Die Lösung des MOQ-Problems findet sich in der Berechnung der kleinsten Bestellung, was die Kosten belangt, und der gleichzeitigen Maximierung der Belohnung, die zu einer 90%igen Auftragserfüllungsrate führt. Diese Bestellung wird NICHT die kleinstmögliche Bestellung sein, mit der man einer Auftragserfüllungsrate von 90% erreicht - denn dies würde lediglich eine simple Priorisierung der Auftragserfüllungsrate darstellen. Stattdessen handelt es sich um die kleinste Bestellung, die unter Priorisierung der Belohnungen, groß genug ist, um eine 90%ige Auftragserfüllungsrate zu ermöglichen. Die Priorisierung der Auftragserfüllungsrate wäre ein Fehler gewesen, da diese, im Gegensatz zur Bestandsbelohnung, die Kosten von totem Bestand nicht berücksichtigt.
Formale Definition des allgemeinen MOQ-Problems
In diesem Abschnitt wird das allgemeine MOQ-Problem als formales nichtlineares Optimierungsproblem präsentiert. Zu zeigen, dass es sich um ein
NP-schweres Problem handelt, ist ziemlich einfach. Tatsächlich geht das allgemeine MOQ-Problem über das
Behälterproblem hinaus, das auch NP-schwer ist. Daher ist das allgemeine MOQ-Problem mindestens genauso schwer wie das Behälterproblem. Obwohl es ein NP-schweres Problem darstellt, sollte angemerkt werden, dass in der Praxis sehr gute Lösungen berechnet werden können.
Sei $I$ die Menge der Artikel, die für die Bestellung betrachtet werden.
Sei $q_i$ mit $i \in I$ die Anzahl der zu bestellenden Menge des Artikels $i$.
Dann wird eine Reihe von Funktionen definiert.
- Sei $r_i(q)$ die Belohnung, reward, wenn man $q$ Einheiten von Artikel $i$ besitzt.
- Sei $c_i(q)$ die Kosten, cost, beim Kauf von $q$ Einheiten von Artikel $i$.
- Sei $t_i(q)$ das Ziel, target, wenn man $q$ Einheiten von Artikel $i$ besitzt.
Die Belohnungsfunktion kann positive oder negative Werte ergeben, doch die Kosten- und die Zielfunktion sind beide positiv:
$$\forall i, \forall q, c_i(q) > 0 \text{ and } t_i(q) >0$$
Sei $M$ die Gruppe der MOQ-Bedingungen. Für jede $m \in M$, haben wir $I_m$ die Artikelliste, die der Bedingung $m$ gehört und $Q_m$ die Mindestmenge, die erreicht werden muss, um die Bedingung zu erfüllen. Sei $m_i(q)$ die Funktion, die den Beitrag der Artikel $i$ zur MOQ-Bedingung $m$ leistet, wenn $q$ Einheiten gekauft werden. Die Bedingung $m$ gilt als erfüllt wenn:
$$\forall i \in I_m, q_i = 0 \text{ or } \sum_{i \in I_m}m_i(q_i) \geq Q_m$$
So können alle MOQ-Bedingung auf zwei Arten erfüllt werden: entweder, wenn die MOQ-Schwelle erreicht wird, oder, wenn die Mengen aller Artikel bei Null liegen.
Dann, sei $C$ die Maximalkosten, die für die Bestellung getragen werden können. Wir definieren $\textbf{q}_C=(q_i)_i$ die beste Bestellung als:
$$\textbf{q}_C = \underset{q}{\operatorname{argmax}} \left\{ \sum_i r_i(q_i) \text{ with $m$ satisfied } \forall m\in M \right\}$$
Die Bestellung ist die „beste“ im Sinne, dass sie die Belohnung für ein bestimmtes Budget maximiert. Die Lösung $\textbf{q}_C$ ist nicht die einzige, doch dies ist mehr aus theoretischer Sicht, da das MOQ-Problem zu schwer für eine exakte Lösung ist. Der Einfachheit halber fahren wir fort, als wenn diese die einzige Lösung wäre.
Sei zuletzt $T$ ein Mindestziel, wir definieren $\textbf{q}^T$ durch
$$C^T = \underset{C}{\operatorname{min}} \left\{ \left(\sum_{q_i \in \textbf{q}_C} t_i(q_i) \right) \geq T \right\}$$ und
$$\mathbf{q}^T = \textbf{q}_{C^T}$$
Die Lösung $\mathbf{q}^T$ wird auf $\textbf{q}_C$ gebildet, das heißt, dass es die kleinste optimale (bezüglich des Budgets), ROI maximierende Lösung ist, die gut genug ist, um das Ziel zu erreichen.