Finden einer Reihe maximal unterschiedlicher Lösungen mithilfe linearer Programmierung oder anderer Optimierungstechniken


8

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?


1
Berechnen Sie den kleinsten Würfel, der Ihre realisierbare Region umgibt (wenn er unbegrenzt ist, wählen Sie einen begrenzten Teil), legen Sie ein Hypergrid mit der gewünschten Auflösung darüber und verwerfen Sie alle Punkte, die die Einschränkungen nicht erfüllen. Würde das für dich funktionieren?
Raphael

Das könnte für mich funktionieren, obwohl mir nicht klar ist, wie ich den Hypercube berechnen würde, und ich denke, dass die realisierbare Region, die ich untersuche, höchst nicht trivial ist - ich gehe davon aus, dass viele Punkte verworfen werden müssten. Meine spezielle Anwendung hat Zehntausende von Variablen / Entscheidungen und Hunderte von Einschränkungen.
Ross

Eine mögliche Grundlösung befindet sich in einem Scheitelpunkt des Polytops. Können Sie nicht die Normalen der einfallenden Flächen betrachten, um eine Richtung "über" das Polytop zu berechnen und dieser bis zur Grenze der realisierbaren Region zu folgen? Das sollte Ihnen einigermaßen unterschiedliche Lösungen geben, aber wahrscheinlich nicht die unterschiedlichsten.
AdrianN

Benutze keinen Würfel. Verwenden Sie ein Ellipsoid (insbesondere ein kleines Ellipsoid, das das Polytop enthält und nach der Ellipsoidmethode gefunden werden kann). Auf diese Weise finden Sie garantiert eine angemessene Anzahl von Punkten in der Region.
Peter Shor

Antworten:


2

Eine Heuristik mit linearer Programmierung

Ein Ansatz könnte darin bestehen, eine zufällige Zielfunktion auszuwählen und zu maximieren. Wiederholen Sie diesen Vorgang jedes Mal mit einem anderen Satz von Zielfunktionen.

x1,x2,,xnCc1,c2,,cnRc1x1++cnxnC

Ich würde erwarten, dass diese Heuristik oft eine etwas verstreute Reihe von Lösungen findet - nicht unbedingt maximal gestreut (maximal weit voneinander entfernt), aber wahrscheinlich auch nicht zu nahe beieinander.

Maximierung des durchschnittlichen paarweisen L2-Abstands mithilfe quadratischer Programmierung

x,yL2

d(x,y)2=(x1y1)2++(xnyn)2xyxy

kx1,,xkRn

i<jd(xi,xj)2,

dh die Funktion

i<j(xixj)2.

Cxi

kk+1k

Quadratische Programmierung ist schwieriger als lineare Programmierung, aber es gibt Selbstlöser, die quadratische Programmierprobleme für Sie lösen.

Maximierung des minimalen paarweisen L2-Abstands mithilfe von QCQP

ktkx1,,xkRntd(xi,xj)ti<j. Dann kann dies als quadratisches Optimierungsprogramm mit quadratischen Einschränkungen, dh QCQP , formuliert werden . QCQP ist noch schwieriger, aber es gibt handelsübliche Löser für QCQP, die Sie auch ausprobieren können.


1

Ich habe einen Ansatz gefunden, um absolute Werte zu generieren.

a1a2b1b2|a1a2|+|b1b2|

Wir können "Slack-Variablen" abs_a und abs_b und die Einschränkungen einführen:

absa+a1a20

absaa1+a20

b1b2absaa1a2absaa1a2

absa+absb


Tatsächlich funktionieren diese Codierungen nur zur Minimierung von Absolutwerten. Darin löst es mein Problem nicht. Weitere Informationen hier: lpsolve.sourceforge.net/5.5/absolute.htm
Ross
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.