Excel-Solver: gibt es eine Möglichkeit der Iteration über 2 veränderliche Variablen?
Ich habe ein Problem mit solver wie folgt (vereinfachte version):
Also ich habe eine verschachtelte Wenn-Anweisung, die beschreibt, Zustand 2 veränderliche Variablen(x,y). Zum Beispiel:
In einer Zelle: WENN(UND((x<=2),(x>=0.5),(y<=10),(y>=5)),1,0
Die Zelle unterhalb: WENN(UND((x<=2.5),(x>=1.9),(y<=11),(y>=9)),1,0
Die Zielfunktion ist die Summe dieser 2 Variablen
Solver oder die Zielwertsuche (es sei denn, ich gebe es die awnser) kann nicht scheinen, um eine awnser andere als 0,0.
Mein eigentliche problem ist, ich habe 6 von diesen, WENN Zellen und ich bin auf der Suche nach ein (x,y) maximiert, dass mein Ziel-Funktion. Ich möchte in excel durch zu gehen, wie viele Kombinationen es können.
Irgendwelche Gedanken oder andere Möglichkeiten, dies zu tun? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Grund, dass die Solver nicht die optimale Lösung ist in diesem Spielzeug-problem ist, weil der Gebrauch der
IF
undAND
Aussagen machen das problem nicht konvex ist. Für nicht-konvexe Probleme, dieGRG Nonlinear
Lösung-Methode (die Standardeinstellung von solver) ist keine Garantie für eine optimale Lösung, wie es sein kann, gefangen in der lokal besten Lösungen, die nicht optimal sind.Gesagt, dass es einen Weg gibt, formulieren Sie Ihr problem als ein gemischt ganzzahliges Programm, das, obwohl noch nicht-konvexen, gelöst werden kann mit der "Simplex LP" Methode der Solver, und ein garantiertes maximum.
Modell Setup
Hier ist ein screenshot der Tabelle setup:
Für die Bequemlichkeit habe ich verwendet benannte Bereiche für die verschiedenen Mengen.
Insbesondere:
sowie für Zeile 3 ich benutze den gleichen Konvention, sondern der
x_
wir habeny_
.Den roten Zellen (
B4
undE4
) haben die Verhältnisse, die Sie beschrieben, und die Blaue Zelle (B5
) hat Ihre Summe.Z.B. die Bedingung für
B4
liestWerden wir ersetzen diese Ausdrücke mit zwei binären Variablen, die gleich, wenn jeder Ausdruck zufrieden ist, und null sonst.
Die Logik ist, dass statt einer
IF
Ausdruck können wir verhängen Einschränkungen:dann
z = 1 ==> LB_x <= x <= UB_x
LB_y <= y <= UB_y
und weil wir maximieren die Summe der beiden
z
Variablen, diex
undy
versuchen zu passen, habe ich die entsprechenden Bereiche, so dass so vielez
wie möglich gleich 1.Den grünen Zellen
H2, J2
haben die beiden neuen binäre Variablen, genanntcond1_true, cond2_true
beziehungsweise. Die anderen Zellen haben die Einschränkungen oben beschrieben:Beispielsweise zum ersten Ausdruck:
Alle diese Zellen müssen
<= 0
im solver-Modell.Solver-Modell:
In der mode, die Objektive Funktion der Zelle ist die Summe der binären Variablen. Die Entscheidung Variablen sind
x_var, y_yar, cond1_true, cond2_true
. Die Zwänge sind alle inexpression <= 0
- format. Hier ist das Arbeitsblatt: https://www.dropbox.com/s/uek2k9gownhh3ni/excel-solver-is-there-a-way-to-iterate-over-2-changing-variables.xlsx?dl=0Verwendung dieser Formulierung, die der solver geht durch viele Kombinationen von Variablen und versucht zu Holen die beste. Es kann oft garantieren eine optimale Lösung ist (was fast immer der Fall für kleine Probleme)
UPDATE
Wenn die Intervalle nicht überschneiden müssen wir modily
LB_x * z <= x <= UB_x * z
zu
min(LB_x) * (1-z) + LB_x * z <= x <= UB_x * z + max(UB_x) * (1-z)
Wo min(LB_x) ist die minimale Untergrenze über alle Intervalle (ebenfalls für die UB und für die y). Auf diese Weise, wenn ein x wird nicht fallen in das Intervall (z=0) es ist nur gezwungen, fallen in einem anderen Intervall.
Ich hoffe, das hilft!