Tradicionalmente, la programación lineal se utiliza para encontrar la solución óptima para un conjunto de restricciones, variables y un objetivo (todos descritos como relaciones lineales). A veces, cuando el objetivo es paralelo a una restricción, hay infinitas o muchas soluciones óptimas igualmente buenas. No estoy preguntando sobre este último caso.
Estoy más interesado en encontrar muchas soluciones que están en la región factible generada por mi conjunto de restricciones. Pero me gustaría que las soluciones que encuentro estén 'dispersas' alrededor de la región factible en el sentido de que están muy lejos una de la otra. ¿Existe una manera conocida de, sin ejecutar un solucionador varias veces, generar múltiples soluciones y utilizar la función objetivo para garantizar que las soluciones se separen?
Por ejemplo, cualquier programa lineal con decisiones a y by restricciones w <= a <= x e y <= b <= z puede 'duplicarse' para encontrar dos soluciones. Nuestro nuevo programa lineal tiene variables a1, a2, b1 y b2 y las restricciones w <= a1 <= x y w <= a2 <= x y similares para b1, b2. Sin embargo, cuando se trata de formar una función objetivo, nos encontramos con problemas, ya que no podemos usar otras normas que no sean la norma L1 sin descartar la linealidad y ni siquiera podemos usar la norma L1 porque no es posible (hasta donde yo sé ) para codificar valores absolutos.
¿Quizás debería considerar la optimización convexa o la programación semidefinida o algo así?
¿Existe una forma conocida de generar un conjunto de soluciones para un programa lineal y utilizando un objetivo que imponga la "distancia" entre las soluciones?