Un euristico, usando la programmazione lineare
Un approccio potrebbe essere quello di scegliere una funzione obiettivo casuale e massimizzarla. Quindi ripetere, con una serie diversa di funzioni oggettive ogni volta.
In altre parole, supponiamo che lo siano le incognite X1,X2, ... ,Xne hai alcuni vincoli C. In ogni iterazione che sceglic1,c2, ... ,cn∈ R in modo casuale, quindi cerca una soluzione che massimizzi c1X1+ ⋯ +cnXn soggetto ai vincoli C.
Mi aspetterei che questa euristica possa spesso trovare una serie di soluzioni un po 'sparse, non necessariamente sparse al massimo (al massimo le une dalle altre), ma probabilmente neanche troppo vicine tra loro.
Massimizzare la distanza media L2 a coppie, usando la programmazione quadratica
In alternativa, utilizzare la programmazione quadratica. Per semplicità, esaminiamo il problema di trovare due soluzioni. Supponiamo che tu voglia due soluzionix , y che sono il più lontano possibile l'uno dall'altro, sotto il L2norma (distanza euclidea). Quindi questo può essere formulato come un problema di programmazione quadratica .
Fondamentalmente, vuoi massimizzare la distanza al quadrato d( x , y)2= (X1-y1)2+ ⋯ + (Xn-yn)2 fra X e y, subordinatamente al requisito che entrambi X e ydeve soddisfare i vincoli. Questo è il problema di massimizzare una funzione quadratica dell'obiettivo, con vincoli lineari - cioè la programmazione quadratica.
Se vuoi Kpunti che sono al massimo dispersi, anche questo è possibile. Di 'che sono i puntiX1, ... ,XK∈Rn. Quindi potresti massimizzare la funzione obiettivo
Σi < jd(Xio,Xj)2,
cioè, la funzione
Σi < jΣℓ(Xioℓ-Xjℓ)2.
Questa è una funzione quadratica e hai vincoli lineari C su ciascuno dei punti Xio, quindi questa è un'istanza di programmazione quadratica. Ti trova punti che sono sparsi al massimo nel senso che la distanza media a coppie è massimizzata.
Puoi anche formulare una variante golosa di questo algoritmo, dove hai già K soluzioni e vuoi trovare a k + 1la soluzione che soddisfa tutte le disuguaglianze lineari e massimizza anche la distanza media L2 da essa all'altra Ksoluzioni. Anche questo può essere formulato come un problema di programmazione quadratica.
La programmazione quadratica è più difficile della programmazione lineare, ma esistono solutori che risolveranno i problemi di programmazione quadratica per te.
Massimizzare la distanza minima L2 a coppie, usando QCQP
Infine, supponiamo che tu voglia il tuo Kpunti da spargere nel senso che si desidera massimizzare la distanza minima a coppie. In altre parole, supponiamo che tu voglia trovare la soglia più grande possibilet tale che è possibile trovare K punti X1, ... ,XK∈Rn che ciascuno soddisfi i vincoli lineari e tale che ogni coppia di punti sia a distanza t distanti l'uno dall'altro: d(Xio,Xj) ≥ t per tutti i < j. Quindi questo può essere formulato come un programma di ottimizzazione quadratica con vincoli quadratici, cioè QCQP . QCQP è ancora più difficile, ma ci sono solutori pronti all'uso per QCQP che potresti provare anche tu.