Я новичок в CPLEX, прошу прощения, если этот вопрос тупой. Я хотел бы минимизировать отклонения в программировании целей в CPLEX (OPL). Я видел очень похожий вопрос с моим ( Программирование целей в Cplex ), но мне пока не ясно.
Давайте предположим следующую ситуацию:
Сначала мы хотим оптимизировать расстояние между магазином и клиентом, учитывая требуемый спрос и запас. Мы сделали это, и лучшим решением было 602
Во-вторых, мы хотим оптимизировать другое, также учитывая запас и спрос, решение было 251,4
Затем мы хотим создать целевое программирование для достиженияобе цели.
Это была мысль (не сработала):
Некоторые предложения? Большое спасибо
// decision variable
{string} Store = {"A","B","C","D","E"};
{string} Products = {"P1","P2"};
{string} Client = {"D1" , "D2"};
float Demand [Client][Products]= [[3,1],[4,5]]; //volume in Kg
float Freshness [Store][Products]=[[140,0],[0,100],[0,90],[50,0],[10,0]]; //Lower numbers must have priority
float Stock [Store][Products]= [[0.94,0],[0,8.62],[0,1.21],[2.6,0],[8.77,0]]; //volume in Kg
float Distance [Store][Client]=[[21,52],[42,12],[25,15],[52,31],[9,42]]; //in Km
//Decision Variables
dvar float+ Delivered [Store][Client][Products];
//Função Objetivo
minimize (p1 + n1+ p2+ n2);
//Restricoes
subject to {
sum (u in Store, c in Client, p in Products)
Distance[u][c] * Delivered[u][c][p] - p1 + n1 <= 657.9;
sum (u in Store, c in Client, p in Products)
Freshness[u][p] * Delivered[u][c][p] - p2 + n2 <= 251.4;
forall (p in Products)
forall (u in Store)
sum (c in Client)
Delivered[u][c][p] <= Stock [u][p];
forall (p in Products)
forall (c in Client)
sum (u in Store)
Delivered[u][c][p] >= Demand[c][p];
}