Having problems with constraint using table

Problems with modeling
Post Reply
FelipeAC
User
User
Posts: 1
Joined: 3 years ago

Having problems with constraint using table

Post by FelipeAC »

Can any of you guys help me? I'm trying to use a table as a constraint.
Equation
PED_MIN(g).. SUM( (i), X(i,g) ) =G= pedidos_min(i,g)
It says 'i' is not controlled, but I can't figure it out how to control it after =G=

SETS
i produtos / prod1, prod2, prod3, prod4, prod5, prod6, prod7, prod8, prod9, prod10 /
j recursos / operacao, acabamento /
g lojas / cuiaba, campo_grande, sinop, dourados /
;

PARAMETERS

peso_un(i) peso unitario dos produtos
/
prod1 0.19
prod2 0.22
prod3 1.6
prod4 0.6
prod5 0.8
prod6 0.5
prod7 2.1
prod8 1.1
prod9 0.35
prod10 0.42
/

cap_loja(g) capacidade de cada loja
/
cuiaba 4500
campo_grande 4500
sinop 2500
dourados 2500
/


TABLE lucro_loja(i,g) lucro unitario dos produtos por loja

cuiaba campo_grande sinop dourados
prod1 9.67 10.17 11.27 10.95
prod2 18.67 19.07 21.17 20.67
prod3 55.67 56.67 61.87 60.63
prod4 20.67 21.47 23.37 22.83
prod5 16.67 17.27 18.97 18.51
prod6 21.67 22.47 24.47 23.91
prod7 88.67 91.67 98.17 96.27
prod8 35.67 36.67 39.87 39.03
prod9 8.67 9.17 10.17 9.87
prod10 12.67 13.47 14.57 14.19

;

TABLE operacao_produto(i, j) Qtde de tempo utilizado em cada um dos produtos
operacao acabamento
prod1 1.5 1
prod2 2.5 2
prod3 3.2 3.2
prod4 1.1 4
prod5 2.1 1
prod6 1.9 0.8
prod7 4.1 1.6
prod8 2.3 1.2
prod9 0.6 2.2
prod10 1.3 0.6
;

TABLE pedidos_min(i,g) Pedidos minimos por localidade
cuiaba campo_grande sinop dourados
prod1 18 36 22 17
prod2 32 18 3 20
prod3 5 23 22 36
prod4 58 0 41 3
prod5 40 29 60 7
prod6 0 42 52 69
prod7 51 20 64 63
prod8 52 26 11 63
prod9 18 25 36 19
prod10 35 25 69 59
;

VARIABLES
X(i,g) Define as variáveis de decisão do problema
Z Define o resultado da função objetivo

POSITIVE VARIABLE X

;

* Restrições do problema
EQUATIONS
* Declaração
FO_LUCRO Define o valor máximo de lucro
REST_OP(j) Define o tempo utilizado em operacao
REST_ACAB(j) Define o tempo utilizado em acabamento
MAX_PESO(g) Define o peso total dos itens
PED_MIN(g) Define o pedido minimo por localidade
;

* Definição/Programação
FO_LUCRO.. Z =E= SUM( (i,g), lucro_loja(i,g) * X(i,g) );
REST_OP('OPERACAO').. SUM( (i,g), operacao_produto(i, 'OPERACAO') * X(i,g) ) =L= 28800;
REST_ACAB('ACABAMENTO').. SUM( (i,g), operacao_produto(i, 'ACABAMENTO') * X(i,g) ) =L= 14400;
MAX_PESO(g).. SUM( (i), peso_un(i) * X(i,g) ) =L= cap_loja(g);
PED_MIN(g).. SUM( (i), X(i,g) ) =G= pedidos_min(i,g);

MODEL PLASTICO /ALL/;
SOLVE PLASTICO MAXIMIZING Z USING LP;
DISPLAY Z.L, X.L, REST_OP.L, REST_ACAB.L;
abhosekar
Moderator
Moderator
Posts: 295
Joined: 3 years ago

Re: Having problems with constraint using table

Post by abhosekar »

It looks like some kind of demand satisfaction constraint. The constraint you have written has summation over all products on the left hand side and just one product on the right hand side (which GAMS doesn't know anything about). This is why you get an error.

From my understanding, you would need to have a separate constraint for each product. Try the following:

PED_MIN(i, g).. X(i,g) =G= pedidos_min(i,g)


Hope it helps!
Post Reply