/* Problema: LáEmCasa Tapetes Nossa companhia fabrica tapetes artesanais, um produto com demanda sazonal. Obtivemos as demandas d1 , d2 , . . . , d12 para o ano que se inicia. As mesmas variam desde 440 até 920. Atualmente a empresa tem 30 empregados, cada um dos quais faz 20 tapetes por mês e recebe $ 2.000,00. A companhia está sem estoque de tapetes. As flutuações de demanda podem ser gerenciadas do seguinte modo: 1- trabalho extra: nesse caso paga-se 80% a mais do que o salário regular; cada funcionário pode ter um máximo de 30% de trabalho a mais no mês; 2- contratar ou despedir: custo de $ 320 e $ 400, respectivamente; 3- manter estoques: custa $ 8 por tapete por mês; atualmente não temos tapetes estocados e precisamos terminar o ano sem estoque também. */ param meses := 12; param demand{j in 1..meses}, >= 0; param custoContrato := 320; param custoDemissao := 400; param custoArmazenar := 8; param salario := 2000; /* máximo de tapetes feitos com trabalho extra por funcionário */ param maxTapetesTrabExtra := 6; /* custo de cada tapete feito usando trab. extra */ param custoTapeteTrabExtra := 180; var a{ i in 0..meses } >= 0; var t{ i in 0..meses }, integer, >= 0; var x{ i in 1..meses } >= 0; var e{ i in 1..meses } >= 0; var c{ i in 1..meses } >= 0; var d{ i in 1..meses } >= 0; minimize custo: sum{i in 1..meses} salario*x[i] + sum{i in 0..meses} custoArmazenar*a[i] + sum{i in 1..meses} custoContrato*c[i] + sum{i in 1..meses} custoDemissao*d[i] + sum{i in 1..meses} custoTapeteTrabExtra*e[i]; s.t. estoqueInicial: a[0] = 0; /*s.t. estoqueFinal: a[12] = 0; */ s.t. nrTrabalhadoresInicial: t[0] = 20; s.t. producao{i in 1..12}: x[i] = 20*t[i] + e[i]; s.t. limTrabExtra{i in 1..12}: e[i] <= 6*t[i]; s.t. armazenamento{i in 1..12}: a[i] = a[i-1] - demand[i] + x[i]; s.t. trabalhadores{i in 1..12}: t[i] = t[i-1] + c[i] - d[i]; data; param demand := 1 881, 2 659, 3 687, 4 674, 5 920, 6 482, 7 836, 8 440, 9 698, 10 644, 11 819, 12 580;