@@ -5,6 +5,10 @@ param custoArm;
5
5
param capacidadeNormal;
6
6
param capacidadeExtra;
7
7
8
+ param inicioSemanasFinais;
9
+ param fimSemanasFinais;
10
+ param fimSemanasIniciais;
11
+
8
12
set S;
9
13
set TIMES;
10
14
set SExtra;
@@ -15,29 +19,40 @@ param demanda{T in TIMES, i in S};
15
19
var x{T in TIMES, i in S} >= 0 ; # quantidade de camisetas produzidas do time T na semana i
16
20
var y{T in TIMES, i in SExtra} >= 0 ; # quantidade de camisetas produzidas extra do time T na semana i
17
21
var v{T in TIMES, i in S} >= 0 ; # quantidade de camisetas vendidas do time T na semana i
22
+ var estoque{T in TIMES, i in S} >= 0 ; # quantidade de camisetas em estoque do time T na semana i
23
+ var excedente{T in TIMES, i in S} >= 0 ;
18
24
19
25
# maximizar lucro
20
26
maximize Lucro:
21
- sum {T in TIMES, i in S} (preco[T,i] * v[T,i] - custoNorm * x[T,i])
22
- + sum {T in TIMES, i in SExtra} (preco[T,i] * v[T,i] - custoExtra * y[T,i])
23
- - sum {T in TIMES, i in 3 .. 4} (custoDuasUltimas * x[T,i])
24
- - sum {T in TIMES, i in S} (custoArm * (x[T,i] + (if i <= 2 then y[T,i] else 0 ) - v[T,i]));
27
+ sum {T in TIMES, i in S} (preco[T,i] * v[T,i] - custoNorm * x[T,i]) # preço liquido das camisetas sem1 e sem2
28
+ + sum {T in TIMES, i in SExtra} (preco[T,i] * v[T,i] - custoExtra * y[T,i]) # preço liquido das camisetas prodE
29
+ - sum {T in TIMES, i in inicioSemanasFinais.. fimSemanasFinais} (custoDuasUltimas * x[T,i]) # custo fabricao semanas 3 e 4
30
+ - sum {T in TIMES, i in S} (custoArm * estoque[T,i]); # custo total de armazenamento
31
+
32
+
33
+ # Atualização do estoque
34
+ subj to atualiza_estoque{T in TIMES, i in S}:
35
+ estoque[T,i] = (if i == 1 then 0 else estoque[T,i- 1 ]) + x[T,i] + (if i <= fimSemanasIniciais then y[T,i] else 0 ) - v[T,i];
36
+ # o estoque e atualizado semana a semana, cada time tem um estoque de camisetas, ele e resultado
37
+ # da soma do estoque do mes anterior com o excedente do mes atual (note que se o excedente e negativo
38
+ #temos que o estoque sera reduzido.
25
39
26
40
# de demanda (nao da para vender mais do que a demanda)
27
41
subj to r_demanda{T in TIMES, i in S}:
28
42
v[T,i] <= demanda[T,i];
29
43
30
- # de produção (nao da para produzir mais do que a capacidade normal)
31
- subj to prodN{T in TIMES, i in S}:
32
- x[T,i] <= capacidadeNormal;
44
+ # de produção (não dá para produzir mais do que a capacidade normal)
45
+ subj to prodN{i in S}:
46
+ sum {T in TIMES} x[T,i] <= capacidadeNormal;
47
+
48
+ # de produção extra (não dá para produzir mais extras do que a capacidade extra)
49
+ subj to prodE{i in SExtra}:
50
+ sum {T in TIMES} y[T,i] <= capacidadeExtra;
33
51
34
- #de producao extra (nao da para produzir mais extras do que a capacidade extra )
35
- subj to prodE {T in TIMES, i in SExtra} :
36
- y [T,i] <= capacidadeExtra ;
52
+ # de estoque e producao (nao da para vender mais do que o estoque + producao )
53
+ subj to venda_estoque_prod {T in TIMES, i in S} :
54
+ v[T,i] <= x [T,i] + ( if i <= fimSemanasIniciais then y[T,i] else 0 ) + ( if i > 1 then estoque[T,i - 1 ] else 0 ) ;
37
55
38
- # vendas <= produção (nao da para vender mais do que eh produzido)
39
- subj to venda_prod{T in TIMES, i in S}:
40
- v[T,i] <= x[T,i] + (if i <= 2 then y[T,i] else 0 );
41
56
42
57
end ;
43
58
0 commit comments