Это работает, но проверьте решение. Я добавил положительную переменную x, потому что в противном случае у вас были бы отрицательные результаты. Основная проблема заключалась в том, что вы оптимизировали переменную, которая объявлена, но никогда не используется в уравнениях. Кроме того, переменная, которую вы оптимизируете, не может иметь размеров (я думаю). Затем для ограничений r1 и r2 вам нужно добавить индекс, потому что они должны проверяться для каждого месяца, поэтому r1 (i) и r2 (j). На самом деле они представляют собой «семейство ограничений». Вы не можете вычесть индексы месяцев (не могу объяснить почему), но вы можете вычесть их порядок в наборе.
И, наконец, вычислите m c (i, j) как параметр после того, как вы получили решение.
Sets
i months / 1, 2, 3 /
j months / 1, 2, 3 /;
Parameters
cp(i) production cost in month i
/ 1 1.08
2 1.11
3 1.10
/
rh(i) number of necessary workers in month i
/ 1 3
2 4
3 6
/
cap(i) production capacity in month i
/ 1 25
2 20
3 25
/
q(j) number of motors to deliver in month j
/ 1 10
2 15
3 25
/
Scalar ca cost to store motors for a month /0.15/ ;
variables
* mc(i,j) cost of production of motors in month i to be delivered in month j
x(i,j) number of motors produced in month i to be delivered in month j;
positive variable x;
free variables
wf workforce
z cost of production
hr human resources;
Equations
cost cost
human_resources human resources
r1(i) restriction1
r2(j) restriction2 ;
cost .. z =e= sum((i,j), (cp(i)+(ord(j)-ord(i))*ca)*x(i,j)) ;
human_resources .. hr =e= sum(i, sum(j, rh(i)*x(i, j))) ;
*lower than
r1(i).. sum(j, x(i,j)) =l= cap(i) ;
*greater than
r2(j).. sum(i, x(i,j)) =g= q(j) ;
Model
motors 'temp' /all/;
Solve motors using mip minimizing z;
Parameter mc(i,j);
mc(i,j)= (cp(i)+(ord(j)-ord(i))*ca)*x.l(i,j);
Display mc, x.l;