Uma heurística, usando programação linear
Uma abordagem pode ser escolher uma função objetiva aleatória e maximizá-la. Em seguida, repita, com um conjunto diferente de funções objetivas a cada vez.
Em outras palavras, suponha que as incógnitas sejam e você tenha algumas restrições . Em cada iteração, você escolhe aleatoriamente e, em seguida, procura uma solução que maximize sujeita às restrições .x1,x2,…,xnCc1,c2,…,cn∈Rc1x1+⋯+cnxnC
Eu esperaria que essa heurística frequentemente encontrasse um conjunto de soluções um tanto dispersas - não necessariamente dispersas ao máximo (maximamente distantes uma da outra), mas provavelmente também não muito próximas umas das outras.
Maximizando a distância L2 média em pares, usando programação quadrática
Como alternativa, use programação quadrática. Para simplificar, vejamos o problema de encontrar duas soluções. Suponha que você queira duas soluções tão distantes uma da outra quanto possível, sob a norma (distância euclidiana). Então isso pode ser formulado como um problema de programação quadrática .x,yL2
Basicamente, você deseja maximizar a distância ao quadrado entre e , sujeito ao requisito de que e devem satisfazer as restrições. Esse é o problema de maximizar uma função objetiva quadrática, com restrições lineares - isto é, programação quadrática.d(x,y)2=(x1−y1)2+⋯+(xn−yn)2xyxy
Se você quiser pontos com dispersão máxima, isso também é possível. Digamos que os pontos sejam . Então você pode maximizar a função objetivokx1,…,xk∈Rn
∑i<jd(xi,xj)2,
ou seja, a função
∑i<j∑ℓ(xiℓ−xjℓ)2.
Essa é uma função quadrática e você tem restrições lineares em cada um dos pontos , portanto, essa é uma instância de programação quadrática. Ele encontra pontos que estão espalhados ao máximo, no sentido de que a distância média por pares é maximizada.Cxi
Você também pode formular uma variante gananciosa desse algoritmo, onde você já possui soluções , e deseja encontrar uma solução que atenda a todas as desigualdades lineares e também maximize a distância média de L2 dele para as outras soluções . Isso também pode ser formulado como um problema de programação quadrática.kk+1k
A programação quadrática é mais difícil do que a programação linear, mas existem solucionadores independentes que resolverão problemas de programação quadrática para você.
Maximizando a distância L2 mínima em pares, usando QCQP
Finalmente, digamos que você queira que seus pontos sejam dispersos no sentido de que você deseja maximizar a distância mínima em pares. Em outras palavras, digamos que você queira encontrar o maior limite possível modo que seja possível encontrar pontos que satisfaçam as restrições lineares, e tal que cada par de pontos esteja à distância um do outro: para todos os . Então isso pode ser formulado como um programa de otimização quadrática com restrições quadráticas, ou seja, QCQP . O QCQP é ainda mais difícil, mas existem soluções prontas para uso para o QCQP que você também pode experimentar.ktkx1,…,xk∈Rntd(xi,xj)≥ti<j