Traditionell wird die lineare Programmierung verwendet, um die optimale Lösung für eine Reihe von Einschränkungen, Variablen und einem Ziel zu finden (alle als lineare Beziehungen bezeichnet). Manchmal, wenn das Ziel parallel zu einer Einschränkung ist, gibt es unendlich viele oder viele gleich gute optimale Lösungen. Ich frage nicht nach diesem letzteren Fall.
Ich bin mehr daran interessiert, viele Lösungen zu finden, die in der realisierbaren Region liegen, die durch meine Einschränkungen erzeugt wird. Ich möchte jedoch, dass die Lösungen, die ich finde, in der realisierbaren Region in dem Sinne „verstreut“ sind, dass sie maximal weit voneinander entfernt sind. Gibt es eine bekannte Möglichkeit, ohne mehrmals einen Solver auszuführen, mehrere Lösungen zu generieren und mithilfe der Zielfunktion zu erzwingen, dass die Lösungen getrennt werden sollten?
Beispielsweise kann jedes lineare Programm mit den Entscheidungen a und b und den Einschränkungen w <= a <= x und y <= b <= z 'dupliziert' werden, um zwei Lösungen zu finden. Unser neues lineares Programm hat die Variablen a1, a2, b1 und b2 und die Bedingungen w <= a1 <= x und w <= a2 <= x und ähnliche für b1, b2. Wenn es jedoch darum geht, eine objektive Funktion zu bilden, stoßen wir auf Schwierigkeiten, da wir keine anderen Normen als die L1-Norm verwenden können, ohne die Linearität zu verwerfen, und wir können die L1-Norm nicht wirklich verwenden, weil dies nicht möglich ist (soweit ich weiß) ), um absolute Werte zu codieren.
Vielleicht sollte ich mich mit konvexer Optimierung oder semidefiniter Programmierung befassen oder so?
Gibt es eine bekannte Möglichkeit, eine Reihe von Lösungen für ein lineares Programm zu generieren und ein Ziel zu verwenden, das den "Abstand" zwischen den Lösungen erzwingt?