Excel-Solver: Definieren Sie die Einschränkung als Null ODER größer als

Excel-Solver: Definieren Sie die Einschränkung als Null ODER größer als

Ich erstelle ein Modell zur Optimierung von Bestellungen.

Die zu bestellende Menge muss größer als 500 oder gleich Null sein.

Wie definiere ich eine solche Einschränkung in Solver?

Ich habe eine binäre Einschränkung und mehrere verschiedene Formeln ausprobiert, aber nichts scheint zu funktionieren.

Grundsätzlich muss ich in der Lage sein, es in Solver auszudrücken OR. Wie mache ich das?

BEARBEITEN: Unter dem folgenden Link sehen Sie die Excel-Datei, die ich verwende: klicken Sie hier

Antwort1

Also ist 0 erlaubt, 1 ist nicht erlaubt, 499 ist nicht erlaubt und 501 ist erlaubt? Sieht aus wie ein nicht zusammenhängender Bereich. Es ist also kein reines Optimierungsproblem, sondern auch eine Art kombinatorisches Problem. Ich fürchte, Solver kann damit nicht umgehen.

Sie sollten zwei Anwendungsfälle separat analysieren:

  • Der Betrag ist Null (fester Wert, einfache Berechnung);
  • Der Betrag beträgt 500 oder mehr (Optimierung im Solver mit Einschränkung >= 500);

und vergleichen Sie diese beiden Fälle dann mithilfe einer WENN-Formel.


BEARBEITEN:

Ich habe versucht, die Einschränkungen „binär“ und „ganzzahlig“ zu verwenden, wie Karl vorgeschlagen hat, aber sie haben nicht funktioniert.

  • Erstellen Sie eine binäre Variable 0-1 und eine kontinuierliche Variable >=500 und verwenden Sie dann IF, um entweder die kontinuierliche Variable zu kopieren oder 0 in den Kaufwert zu schreiben
  • Erstellen Sie eine binäre Variable 0-1 und eine kontinuierliche Variable >=500 und berechnen Sie dann die Käufe als ihr Produkt
  • Erstellen Sie eine Integer-Variable >=499 und verwenden Sie dann IF, um 499 durch 0 für den Einkaufswert zu ersetzen.

In allen Fällen war das Ergebnis oft falsch und hing von den Anfangsbedingungen ab. Solver mag so etwas anscheinend nicht.

Dann dachte ich darüber nach, meinen obigen Vorschlag auf alle sechs Einkaufswerte anzuwenden und sie unabhängig voneinander zu optimieren, beispielsweise indem ich die Summe der Kosten für alle Monate optimiere. Es stellte sich jedoch heraus, dass sie nicht unabhängig voneinander sind: Der Eröffnungsbestand hängt vom Vormonat ab, und der optimale Einkauf für einen Monat hängt davon ab, ob im Vormonat ein Einkauf getätigt wurde. Es ist also nicht möglich, jedem Monat ein einfaches WENN hinzuzufügen.

Das Beste, was ich tun konnte, ist Folgendes.

Ich habe eine binäre Variable 0-1 und eine kontinuierliche Variable >=500 hinzugefügt und die Käufe jedes Monats mit IF berechnet. Aber ich habe nur die kontinuierlichen Variablen mit Solver optimiert. Die binären Variablen sind ein Parameter. Das heißt, wir wählen die Monate aus, in denen ein Kauf getätigt wird, verwenden dann den Solver, um die Werte dieser Käufe zu berechnen und notieren dann die daraus resultierenden Gesamtkosten.

Dies sollte für alle Kombinationen von Käufen und Nichtkäufen wiederholt werden. Die Anzahl dieser Kombinationen beträgt 2 6 =64. Wenn Sie im Januar jedoch nichts kaufen, haben Sie einen negativen Schlussbestand, der nicht zulässig ist. Es gibt also nur 32 gültige Kombinationen. Ich habe Formeln hinzugefügt, um die binären Werte aus dem Kombinationsindex zu berechnen, den Index 32 Mal iteriert, den Solver jedes Mal manuell gestartet und die Ergebnisse „nur als Werte“ für jede Kombination kopiert.

Das Ergebnis ist, dass die Mindestkosten 4.625,00 € betragen und es zwei Kombinationen gibt, um diesen Wert zu erreichen.

Hier ist die in Google Docs hochgeladene Datei mit einem Solver-Screenshot.

Es ist mühsam, Solver mehrmals manuell zu starten. Ich glaube, dass dies mit Makros automatisiert werden kann.

Antwort2

Erstellen Sie eine binäre Variable, indem Sie eine Einschränkung hinzufügen, die besagt, dass der Wert der Variable (in der Zielfunktion) binär ist. Der Koeffizient dieser Variable in der Zielfunktion muss 0 sein. Anschließend fügen Sie wie gewohnt die folgenden Einschränkungen hinzu:

-500B+X>=0 (niemals unter 500 gehen)

-MB+X<=0 (kombiniert mit der vorherigen Einschränkung erzwingt 0, wenn B 0 ist)

B= Binäre Variable1

M = Sehr große positive Zahl (Größer als X jemals sein kann)

X = kontinuierliche Variable

[Bearbeiten]

Ich verstehe, dass Sie so etwas tun möchten (ich habe auch einige Änderungen an Ihrer Tabellendatei vorgenommen, kann die Excel-Datei, an der ich gearbeitet habe, hier jedoch nicht freigeben):

Bildbeschreibung hier eingeben

verwandte Informationen