Преобразование MPSSP (многопериодная проблема с одним источником) с определенным спросом в стохастический спрос в AMPL - PullRequest
0 голосов
/ 01 апреля 2019

Итак, я построил модель для оптимизации многопериодной задачи с одним источником с учетом конкретного требования (см. Прикрепленный файл 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 *.

.... "

Может кто-нибудь сказать мне, что не так с моим подходом?

С уважением, Питер

...