Итак, я построил модель для оптимизации многопериодной задачи с одним источником с учетом конкретного требования (см. Прикрепленный файл DET_DAT.dat).
Эта программа работает и решает, что я хочу. Однако я хочу изменить требование на «стохастическое» в том смысле, что я хочу разделить его на - скажем, 3 или 5 различных «сценариев» с применимыми вероятностями.
# PARAMETERS
param n; # numbers of customers
param m; # numbers of facilities
param T; # numbers of periodes
param S; # number of scenarios / probabilities
param UnitHoldingCost; # 1
param AssignmentCost{i in 1..n, j in 1..m}; # Assignment cost
param demand{s in 1..S,i in 1..n}; # Demand for i'te customers
param Capacity{j in 1..m}; # Capacity for j'te faciliti
param probability{s in 1..S};
param sigma{t in 1..T};
# DECISION VARIABLES
var Assignment{s in 1..S,i in 1..n, j in 1..m} binary; # the assignment in period t for customer i for faciliti j
var Production{t in 1..T, j in 1..m} >= 0; # production in period t for the j'te faciliti
var ProduceorNot{t in 1..T,j in 1..m} binary; # if the j'te faciliti produce or not
var Inventory{t in 0..T,j in 1..m} >= 0; # the inventory for period t
# OBJECTIVE FUNCTION
minimize Total_Cost: sum{s in 1..S,t in 1..T,i in 1..n,j in 1..m} probability[s] * Assignment[s,i,j]*sigma[t]*demand[s,i]*AssignmentCost[i,j] + sum{t in 1..T,j in 1..m} UnitHoldingCost*Inventory[t,j];
# CONSTRAINTS
subject to BalanceConstraint {s in 1..S,t in 1..T, j in 1..m} :
Production[t,j]+Inventory[t-1,j] = sum{i in 1..n} sigma[t]*demand[s,i]*Assignment[s,i,j]+Inventory[t,j];
subject to ProductionConstraint {t in 1..T,j in 1..m} :
Production[t,j] <= Capacity[j]*ProduceorNot[t,j];
subject to AllCustomersAssignedConstraint {s in 1..S,t in 1..T,i in 1..n} :
sum{j in 1..m} Assignment[s,i,j] = 1;
subject to Inventoryat0Constraint {j in 1..m}:
Inventory[0,j] = 0;
Вы можете увидеть полный код и данные в файлах "STOC_xxx.xxx". (Здесь: https://wetransfer.com/downloads/3d80a82ed433024ceb3c090517ff580b20190401072514/23f481)
Я получаю следующие ошибки при запуске их на NEOS Baron Solver:
https://neos -server.org / Neos / работа / 6730000 / 6738289.html
"....
Presolve устраняет 4 ограничения и 4 переменные.
Скорректированная проблема:
432 переменных:
384 двоичных переменных
48 линейных переменных
636 ограничений, все линейно; 4572 ненулевых
612 ограничений равенства
24 ограничения неравенства
1 линейная задача; 384 ненулевых.
БАРОН 18.5.8 (2018.05.08): нити = 4
БАРОН 18.5.8 (2018.05.08): 1 итерация, , невыполнима *, 1019 *.
.... "
Может кто-нибудь сказать мне, что не так с моим подходом?
С уважением,
Питер