Theo truyền thống, lập trình tuyến tính được sử dụng để tìm một giải pháp tối ưu cho một tập hợp các ràng buộc, biến và mục tiêu (tất cả được mô tả là mối quan hệ tuyến tính). Đôi khi, khi mục tiêu song song với một ràng buộc, có vô số hoặc nhiều giải pháp tối ưu tốt tương đương. Tôi không hỏi về trường hợp sau này.
Tôi quan tâm hơn đến việc tìm kiếm nhiều giải pháp trong khu vực khả thi được tạo ra bởi các ràng buộc của tôi. Nhưng tôi muốn các giải pháp mà tôi thấy là 'phân tán' xung quanh khu vực khả thi theo nghĩa là chúng cách xa nhau tối đa. Có một cách đã biết, mà không cần chạy một bộ giải nhiều lần, tạo ra nhiều giải pháp và sử dụng hàm mục tiêu để thực thi rằng các giải pháp nên được tách ra?
Ví dụ: bất kỳ chương trình tuyến tính nào có quyết định a và b và các ràng buộc w <= a <= x và y <= b <= z đều có thể được 'sao chép' để tìm hai giải pháp. Chương trình tuyến tính mới của chúng tôi có các biến a1, a2, b1 và b2 và các ràng buộc w <= a1 <= x và w <= a2 <= x và tương tự cho b1, b2. Tuy nhiên, khi hình thành một hàm mục tiêu, chúng ta gặp rắc rối vì chúng ta không thể sử dụng các chỉ tiêu khác với định mức L1 mà không loại bỏ tuyến tính và chúng ta thậm chí không thể sử dụng định mức L1 vì điều đó là không thể (cho đến nay tôi biết ) để mã hóa các giá trị tuyệt đối.
Có lẽ tôi nên xem xét tối ưu hóa lồi hoặc lập trình semidefinite hoặc một cái gì đó?
Có cách nào để tạo ra một tập hợp các giải pháp cho một chương trình tuyến tính và sử dụng một mục tiêu thực thi "khoảng cách" giữa các giải pháp không?