relatório do trabalho 1 mdio
DESCRIPTION
Trabalho realizado no âmbito da disciplida de MDIO, sobre gestão de stock. feito no lpsolver.TRANSCRIPT
1
RELATÓRIO DO TRABALHO I
Autores: Célia Figueiredo [email protected]
Diana Oliveira [email protected]
Hélder Machado [email protected]
Nelson Carvalho [email protected]
2
Índice
Introdução ........................................................... 3
PARTE I ................................................................ 4
Parte II ............................................................... 22
Parte III .............................................................. 26
Parte IV ............................................................. 31
Parte V .............................................................. 42
Conclusão .......................................................... 62
3
Introdução
Este documento pretende descrever a abordagem ao problema apresentado no âmbito da disciplina de Métodos Determinísticos de Investigação Operacional, disciplina constituinte do curso Licenciatura em Engenharia Informática.
O problema consiste numa empresa que produz sumos de frutas, a produção consiste em misturar os concentrados de fruta, água, açucar e encher os pacotes de sumo na única linha de engarrafamento. E o tempo de produção de um dado sumo corresponde ao tempo de engarrafamento, além disso existem dois tipos de armazéns, o de matérias primas, onde são guardados os tambores com os concentrados de sumo, e o de produtos finais que guarda as paletes dos pacotes de sumo. Com este trabalho, pretende-se determinar as quantidades a comprar, produzir e a armazenar, em cada período e de cada tipo de sumo, com o objetivo de gastar o mínimo possível.
4
PARTE I I.1.Formule este problema como um modelo de programação linear. Explique com detalhe o significado das restrições e da função objetivo do modelo. Teça todas as considerações que considere necessárias.
Função Objetivo
A função objetivo é uma função de minimização de custos que determina as quantidades a comprar, a produzir e a armazenar, em cada período e de cada tipo de sumo, de modo a fornecer os pedidos dos clientes de forma a minimizar o custo total. Aqui vamos somar os custos totais da produção de sumo de cada tipo de cada mês.
Para nos facilitar na compreensão decidimos dar nomes às variáveis, ficando:
AC[X]_[Y] = Armazém Concentrado [X] no mês [Y]
APF[X]_[Y] = Arm. Prod. Final [X] no mês [Y]
CC[X]_[Y] = Compra Concentrado [X] no mês [Y]
PS[X][Y] = Produção de Sumo [X] no mês [Y]
VS[X][Y] = Venda de Sumo [X] no mês [Y]
Em que o [X] é sustituido por [L]aranjas, [M]açãs e [P]eras e o [Y] pelos meses de 1...12, correspondendo o 1 a Janeiro e o 12 a Dezembro, conforme o necessário.
De modo a que a função objetivo ficasse menos confusa decidimos fazer uma variável que define o custo de cada concentrado em cada mês, ou seja, por exemplo para o custo deprodução de sumo de laranjas no mês de Janeiro ,CUSTOL1 = 10PSL1 + ACL_1 + 3APFL_1 + 170CCL1, é o custo de produção*produção de sumo (10PSL1) + custo de armazenamento de concentrado*quantidade de concentrado (ACL_1) + custo de aramazenamento do produto final* quantidade de produto final (3APFL_1) + custo do concentrado*quantidade a comprar de concentrado(170CCL1), ficando do seguinte modo todas as outras restrições:
CUSTOL1 = 10PSL1 + ACL_1 + 3APFL_1 + 170CCL1; CUSTOM1 = 10PSM1 + ACM_1 + 3APFM_1 + 231CCM1; CUSTOP1 = 10PSP1 + ACP_1 + 3APFP_1 + 116CCP1; CUSTOL2 = 10PSL2 + ACL_2 + 3APFL_2 + 155CCL2; CUSTOM2 = 10PSM2 + ACM_2 + 3APFM_2 + 199CCM2; CUSTOP2 = 10PSP2 + ACP_2 + 3APFP_2 + 116CCP2; CUSTOL3 = 10PSL3 + ACL_3 + 3APFL_3 + 170CCL3; CUSTOM3 = 10PSM3 + ACM_3 + 3APFM_3 + 187CCM3; CUSTOP3 = 10PSP3 + ACP_3 + 3APFP_3 + 124CCP3; CUSTOL4 = 10PSL4 + ACL_4 + 3APFL_4 + 155CCL4; CUSTOM4 = 10PSM4 + ACM_4 + 3APFM_4 + 198CCM4;
5
CUSTOP4 = 10PSP4 + ACP_4 + 3APFP_4 + 120CCP4; CUSTOL5 = 10PSL5 + ACL_5 + 3APFL_5 + 170CCL5; CUSTOM5 = 10PSM5 + ACM_5 + 3APFM_5 + 210CCM5; CUSTOP5 = 10PSP5 + ACP_5 + 3APFP_5 + 132CCP5; CUSTOL6 = 10PSL6 + ACL_6 + 3APFL_6 + 155CCL6; CUSTOM6 = 10PSM6 + ACM_6 + 3APFM_6 + 208CCM6; CUSTOP6 = 10PSP6 + ACP_6 + 3APFP_6 + 128CCP6; CUSTOL7 = 10PSL7 + ACL_7 + 3APFL_7 + 170CCL7; CUSTOM7 = 10PSM7 + ACM_7 + 3APFM_7 + 211CCM7; CUSTOP7 = 10PSP7 + ACP_7 + 3APFP_7 + 136CCP7; CUSTOL8 = 12PSL8 + ACL_8 + 3APFL_8 + 155CCL8; CUSTOM8 = 12PSM8 + ACM_8 + 3APFM_8 + 220CCM8; CUSTOP8= 12PSP8 + ACP_8 + 3APFP_8 + 116CCP8; CUSTOL9 = 10PSL9 + ACL_9 + 3APFL_9 + 170CCL9; CUSTOM9 = 10PSM9 + ACM_9 + 3APFM_9 + 217CCM9; CUSTOP9 = 10PSP9 + ACP_9 + 3APFP_9 + 120CCP9; CUSTOL10 = 10PSL10 + ACL_10 + 3APFL_10 + 155CCL10; CUSTOM10 = 10PSM10 + ACM_10 + 3APFM_10 + 216CCM10; CUSTOP10 = 10PSP10 + ACP_10 + 3APFP_10 + 108CCP10; CUSTOL11 = 10PSL11 + ACL_11 + 3APFL_11 + 170CCL11; CUSTOM11 = 10PSM11 + ACM_11 + 3APFM_11 + 221CCM11; CUSTOP11 = 10PSP11 + ACP_11 + 3APFP_11 + 100CCP11; CUSTOL12 = 10PSL12 + ACL_12 + 3APFL_12 + 155CCL12; CUSTOM12 = 10PSM12 + ACM_12 + 3APFM_12 + 217CCM12; CUSTOP12 = 10PSP12 + ACP_12 + 3APFP_12 + 116CCP12; Resultando então a função objetivo: Min Z = CUSTOL1 + CUSTOL2 + CUSTOL3 + CUSTOL4 + CUSTOL5 + CUSTOL6 + CUSTOL7 + CUSTOL8 + CUSTOL9 + CUSTOL10 + CUSTOL11 + CUSTOL12 +CUSTOM1 + CUSTOM2 + CUSTOM3 + CUSTOM4 + CUSTOM5 + CUSTOM6 + CUSTOM7 + CUSTOM8 + CUSTOM9 + CUSTOM10 + CUSTOM11 + CUSTOM12 +CUSTOP1 + CUSTOP2 + CUSTOP3 + CUSTOP4 + CUSTOP5 + CUSTOP6 + CUSTOP7 + CUSTOP8 + CUSTOP9 + CUSTOP10 + CUSTOP11 + CUSTOP12;
Restrições
É-nos dito que a capacidade máxima do armazém de tambores de concentrado de sumo é de 30 U.E, e que a capacidade máxima de armazenagem dos pacotes de sumo é de 40U.E, portanto o armazém de concentrado de laranjas (ACL_x) mais o armazém de concentrado de maçãs (ACM_x) mais o armazém de concentrado de pêras (ACP_x) em cada mês (x=1,...,12) tem de ser menor ou igual a 30U.E. Assim como o armazém de produto final de laranjas (APFL_x) mais o armazém de produto final de maçãs (APFM_x) mais o armazém de
6
produto final de pêras (APFP_x) em cada mês (x=1,…,12) tem de ser menor ou igual a 40U.E., desta dedução resultam as seguintes restrições:
ACL_1 + ACM_1 + ACP_1 <= 30;
APFL_1 + APFM_1 + APFP_1 <= 40;
ACL_2 + ACM_2 + ACP_2 <= 30;
APFL_2 + APFM_2 + APFP_2 <= 40;
ACL_3 + ACM_3 + ACP_3 <= 30;
APFL_3 + APFM_3 + APFP_3 <= 40;
ACL_4 + ACM_4 + ACP_4 <= 30;
APFL_4 + APFM_4 + APFP_4 <= 40;
ACL_5 + ACM_5 + ACP_5 <= 30;
APFL_5 + APFM_5 + APFP_5 <= 40;
ACL_6 + ACM_6 + ACP_6 <= 30;
APFL_6 + APFM_6 + APFP_6 <= 40;
ACL_7 + ACM_7 + ACP_7 <= 30;
APFL_7 + APFM_7 + APFP_7 <= 40;
ACL_8 + ACM_8 + ACP_8 <= 30;
APFL_8 + APFM_8 + APFP_8 <= 40;
ACL_9 + ACM_9 + ACP_9 <= 30;
APFL_9 + APFM_9 + APFP_9 <= 40;
ACL_10 + ACM_10 + ACP_10 <= 30;
APFL_10 + APFM_10 + APFP_10 <= 40;
ACL_11 + ACM_11 + ACP_11 <= 30;
APFL_11 + APFM_11 + APFP_11 <= 40;
ACL_12 + ACM_12 + ACP_12 <= 30;
APFL_12 + APFM_12 + APFP_12 <= 40;
Como se pretende que no final do mês de dezembro as U.E. (unidades equivalentes) em ambos os armazéns sejam os mesmos que no início do ano, os valores de armazém de concentrado de laranjas, maçãs e pêras (ACL_12, ACM_12, ACP_12) e os valores de armazém de produto final de laranjas, maçãs e pêras (APFL_12, APFM_12, APFP_12) para o mês 12 deverão ser iguais aos valores iniciais de concentrado de laranjas, maçãs e pêras (ACL_I, ACM_I, ACP_I) e aos valores iniciais de produto final (APFL_I, APFM_I, APFP_I), portanto:
ACL_12 = ACL_I;
ACM_12 = ACM_I;
ACP_12 = ACP_I;
APFL_12 = APFL_I;
APFM_12 = APFM_I;
7
APFP_12 = APFP_I;
Para os restantes meses pretende-se que o fluxos (entrada e saída) se mantenham respeitando as restrições. Para isso usamos o seguinte algoritmo:
Para a quantidade do armazém de concentrado entram a compra do mês i e a quantidade que ficou em armazém no mês i – 1 e sai a quantidade produzida (que passa para o armazém de produtos finais).
Para a quantidade do armazém de produtos finais usamos um algoritmo semelhante em que neste caso entram a quantidade produzida (vinda do armazém de concentrados) e a quantidade que ficou em armazém no mês i -1. A quantidade de produto final que sai do armazém é aquele que é vendido.
ACL_i = ACL_i-1 + CCLi - PSLi;
APFL_i = APFL_i-1 + PSLi - VSLi;
ACM_i = ACM_i-1 + CCMi - PSMi;
APFM_i = APFM_i-1 + PSMi - VSMi;
ACP_i = ACP_i-1 + CCPi - PSPi;
APFP_i = APFP_i-1 + PSPi - VSPi;
Como a capacidade máxima de produção normal é de 30 U.E. por período, isto é, a produção dos três tipos de sumo não pode exceder as 30 U.E., então temos de considerar também a seguinte restrição:
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 <= 30;
PSL4+PSM4+PSP4 <= 30;
8
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 <= 30;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
I.2.Apresente o ficheiro de input (cut-and-past)
/* Objective function */
min : CUSTOL1 + CUSTOL2 + CUSTOL3 + CUSTOL4 + CUSTOL5 + CUSTOL6 + CUSTOL7 + CUSTOL8 + CUSTOL9 + CUSTOL10 + CUSTOL11 + CUSTOL12 +CUSTOM1 + CUSTOM2 + CUSTOM3 + CUSTOM4 + CUSTOM5 + CUSTOM6 + CUSTOM7 + CUSTOM8 + CUSTOM9 + CUSTOM10 + CUSTOM11 + CUSTOM12 + CUSTOP1 + CUSTOP2 + CUSTOP3 + CUSTOP4 + CUSTOP5 + CUSTOP6 + CUSTOP7 + CUSTOP8 + CUSTOP9 + CUSTOP10 + CUSTOP11 + CUSTOP12;
/* Variable bounds */
// VENDAS
VSL1 = 9; VSM1 = 5; VSP1 = 4; VSL2 = 9; VSM2 = 5; VSP2 = 4; VSL3 = 9; VSM3 = 5; VSP3 = 4; VSL4 = 12; VSM4 = 6; VSP4 = 5; VSL5 = 16; VSM5 = 8; VSP5 = 6; VSL6 = 17; VSM6 = 9; VSP6 = 7; VSL7 = 19; VSM7 = 10; VSP7 = 8; VSL8 = 19; VSM8 = 10; VSP8 = 8; VSL9 = 16; VSM9 = 8;
9
VSP9 = 6; VSL10 = 12; VSM10 = 6; VSP10 = 5; VSL11 = 10; VSM11 = 5; VSP11 = 4; VSL12 = 9; VSM12 = 5; VSP12 = 4;
//VALORES INICIAIS DOS ARMAZÉNS
ACL_I = 16; APFL_I = 20; ACM_I = 8; APFM_I = 10; ACP_I = 6; APFP_I = 10; // JANEIRO ACL_1 = ACL_I + CCL1 - PSL1; APFL_1 = APFL_I + PSL1 - VSL1; ACM_1 = ACM_I + CCM1 - PSM1; APFM_1 = APFM_I + PSM1 - VSM1; ACP_1 = ACP_I + CCP1 - PSP1; APFP_1 = APFP_I + PSP1 - VSP1; // FEVEREIRO ACL_2 = ACL_1 + CCL2 - PSL2; APFL_2 = APFL_1 + PSL2 - VSL2; ACM_2 = ACM_1 + CCM2 - PSM2; APFM_2 = APFM_1 + PSM2 - VSM2; ACP_2 = ACP_1 + CCP2 - PSP2; APFP_2 = APFP_1 + PSP2 - VSP2; // MARÇO ACL_3 = ACL_2 + CCL3 - PSL3; APFL_3 = APFL_2 + PSL3 - VSL3; ACM_3 = ACM_2 + CCM3 - PSM3; APFM_3 = APFM_2 + PSM3 - VSM3; ACP_3 = ACP_2 + CCP3 - PSP3; APFP_3 = APFP_2 + PSP3 - VSP3; // ABRIL ACL_4 = ACL_3 + CCL4 - PSL4; APFL_4 = APFL_3 + PSL4 - VSL4; ACM_4 = ACM_3 + CCM4 - PSM4; APFM_4 = APFM_3 + PSM4 - VSM4; ACP_4 = ACP_3 + CCP4 - PSP4; APFP_4 = APFP_3 + PSP4 - VSP4;
10
// MAIO ACL_5 = ACL_4 + CCL5 - PSL5; APFL_5 = APFL_4 + PSL5 - VSL5; ACM_5 = ACM_4 + CCM5 - PSM5; APFM_5 = APFM_4 + PSM5 - VSM5; ACP_5 = ACP_4 + CCP5 - PSP5; APFP_5 = APFP_4 + PSP5 - VSP5; // JUNHO ACL_6 = ACL_5 + CCL6 - PSL6; APFL_6 = APFL_5 + PSL6 - VSL6; ACM_6 = ACM_5 + CCM6 - PSM6; APFM_6 = APFM_5 + PSM6 - VSM6; ACP_6 = ACP_5 + CCP6 - PSP6; APFP_6 = APFP_5 + PSP6 - VSP6; // JULHO ACL_7 = ACL_6 + CCL7 - PSL7; APFL_7 = APFL_6 + PSL7 - VSL7; ACM_7 = ACM_6 + CCM7 - PSM7; APFM_7 = APFM_6 + PSM7 - VSM7; ACP_7 = ACP_6 + CCP7 - PSP7; APFP_7 = APFP_6 + PSP7 - VSP7; // AGOSTO ACL_8 = ACL_7 + CCL8 - PSL8; APFL_8 = APFL_7 + PSL8 - VSL8; ACM_8 = ACM_7 + CCM8 - PSM8; APFM_8 = APFM_7 + PSM8 - VSM8; ACP_8 = ACP_7 + CCP8 - PSP8; APFP_8 = APFP_7 + PSP8 - VSP8; // SETEMBRO ACL_9 = ACL_8 + CCL9 - PSL9; APFL_9 = APFL_8 + PSL9 - VSL9; ACM_9 = ACM_8 + CCM9 - PSM9; APFM_9 = APFM_8 + PSM9 - VSM9; ACP_9 = ACP_8 + CCP9 - PSP9; APFP_9 = APFP_8 + PSP9 - VSP9; // OUTUBRO ACL_10 = ACL_9 + CCL10 - PSL10; APFL_10 = APFL_9 + PSL10 - VSL10; ACM_10 = ACM_9 + CCM10 - PSM10; APFM_10 = APFM_9 + PSM10 - VSM10; ACP_10 = ACP_9 + CCP10 - PSP10; APFP_10 = APFP_9 + PSP10 - VSP10; // NOVEMBRO ACL_11 = ACL_10 + CCL11 - PSL11; APFL_11 = APFL_10 + PSL11 - VSL11; ACM_11 = ACM_10 + CCM11 - PSM11;
11
APFM_11 = APFM_10 + PSM11 - VSM11; ACP_11 = ACP_10 + CCP11 - PSP11; APFP_11 = APFP_10 + PSP11 - VSP11; // DEZEMBRO ACL_12 = ACL_11 + CCL12 - PSL12; APFL_12 = APFL_11 + PSL12 - VSL12; ACM_12 = ACM_11 + CCM12 - PSM12; APFM_12 = APFM_11 + PSM12 - VSM12; ACP_12 = ACP_11 + CCP12 - PSP12; APFP_12 = APFP_11 + PSP12 - VSP12;
// RESTRIÇÕES QUANTIDADES ARMAZÉNS ACL_1 + ACM_1 + ACP_1 <= 30; APFL_1 + APFM_1 + APFP_1 <= 40; ACL_2 + ACM_2 + ACP_2 <= 30; APFL_2 + APFM_2 + APFP_2 <= 40; ACL_3 + ACM_3 + ACP_3 <= 30; APFL_3 + APFM_3 + APFP_3 <= 40; ACL_4 + ACM_4 + ACP_4 <= 30; APFL_4 + APFM_4 + APFP_4 <= 40; ACL_5 + ACM_5 + ACP_5 <= 30; APFL_5 + APFM_5 + APFP_5 <= 40; ACL_6 + ACM_6 + ACP_6 <= 30; APFL_6 + APFM_6 + APFP_6 <= 40; ACL_7 + ACM_7 + ACP_7 <= 30; APFL_7 + APFM_7 + APFP_7 <= 40; ACL_8 + ACM_8 + ACP_8 <= 30; APFL_8 + APFM_8 + APFP_8 <= 40; ACL_9 + ACM_9 + ACP_9 <= 30; APFL_9 + APFM_9 + APFP_9 <= 40; ACL_10 + ACM_10 + ACP_10 <= 30; APFL_10 + APFM_10 + APFP_10 <= 40; ACL_11 + ACM_11 + ACP_11 <= 30; APFL_11 + APFM_11 + APFP_11 <= 40; ACL_12 + ACM_12 + ACP_12 <= 30; APFL_12 + APFM_12 + APFP_12 <= 40;
ACL_12 = ACL_I;
ACM_12 = ACM_I;
ACP_12 = ACP_I;
APFL_12 = APFL_I;
APFM_12 = APFM_I;
APFP_12 = APFP_I;
//RESTRIÇÕES DE PRODUÇÃO
PSL1+PSM1+PSP1 <= 30;
12
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 <= 30;
PSL4+PSM4+PSP4 <= 30;
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 <= 30;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
//CUSTOS DE CADA MÊS CUSTOL1 = 10PSL1 + ACL_1 + 3APFL_1 + 170CCL1; CUSTOM1 = 10PSM1 + ACM_1 + 3APFM_1 + 231CCM1; CUSTOP1 = 10PSP1 + ACP_1 + 3APFP_1 + 116CCP1; CUSTOL2 = 10PSL2 + ACL_2 + 3APFL_2 + 155CCL2; CUSTOM2 = 10PSM2 + ACM_2 + 3APFM_2 + 199CCM2; CUSTOP2 = 10PSP2 + ACP_2 + 3APFP_2 + 116CCP2; CUSTOL3 = 10PSL3 + ACL_3 + 3APFL_3 + 170CCL3; CUSTOM3 = 10PSM3 + ACM_3 + 3APFM_3 + 187CCM3; CUSTOP3 = 10PSP3 + ACP_3 + 3APFP_3 + 124CCP3;
CUSTOL4 = 10PSL4 + ACL_4 + 3APFL_4 + 155CCL4; CUSTOM4 = 10PSM4 + ACM_4 + 3APFM_4 + 198CCM4; CUSTOP4 = 10PSP4 + ACP_4 + 3APFP_4 + 120CCP4; CUSTOL5 = 10PSL5 + ACL_5 + 3APFL_5 + 170CCL5; CUSTOM5 = 10PSM5 + ACM_5 + 3APFM_5 + 210CCM5; CUSTOP5 = 10PSP5 + ACP_5 + 3APFP_5 + 132CCP5; CUSTOL6 = 10PSL6 + ACL_6 + 3APFL_6 + 155CCL6; CUSTOM6 = 10PSM6 + ACM_6 + 3APFM_6 + 208CCM6; CUSTOP6 = 10PSP6 + ACP_6 + 3APFP_6 + 128CCP6; CUSTOL7 = 10PSL7 + ACL_7 + 3APFL_7 + 170CCL7; CUSTOM7 = 10PSM7 + ACM_7 + 3APFM_7 + 211CCM7; CUSTOP7 = 10PSP7 + ACP_7 + 3APFP_7 + 136CCP7; CUSTOL8 = 12PSL8 + ACL_8 + 3APFL_8 + 155CCL8; CUSTOM8 = 12PSM8 + ACM_8 + 3APFM_8 + 220CCM8; CUSTOP8= 12PSP8 + ACP_8 + 3APFP_8 + 116CCP8; CUSTOL9 = 10PSL9 + ACL_9 + 3APFL_9 + 170CCL9; CUSTOM9 = 10PSM9 + ACM_9 + 3APFM_9 + 217CCM9;
13
CUSTOP9 = 10PSP9 + ACP_9 + 3APFP_9 + 120CCP9; CUSTOL10 = 10PSL10 + ACL_10 + 3APFL_10 + 155CCL10; CUSTOM10 = 10PSM10 + ACM_10 + 3APFM_10 + 216CCM10; CUSTOP10 = 10PSP10 + ACP_10 + 3APFP_10 + 108CCP10; CUSTOL11 = 10PSL11 + ACL_11 + 3APFL_11 + 170CCL11; CUSTOM11 = 10PSM11 + ACM_11 + 3APFM_11 + 221CCM11; CUSTOP11 = 10PSP11 + ACP_11 + 3APFP_11 + 100CCP11; CUSTOL12 = 10PSL12 + ACL_12 + 3APFL_12 + 155CCL12; CUSTOM12 = 10PSM12 + ACM_12 + 3APFM_12 + 217CCM12; CUSTOP12 = 10PSP12 + ACP_12 + 3APFP_12 + 116CCP12;
I.3.Apresente o ficheiro de output produzido pelo programa (cut-and-paste)
Variables result
52105
ACL_1 16
ACL_10 10
ACL_11 0
ACL_12 16
ACL_2 0
ACL_3 0
ACL_4 4
ACL_5 0
ACL_6 19
ACL_7 0
ACL_8 13
ACL_9 0
ACL_I 16
ACM_1 8
ACM_10 2
ACM_11 0
ACM_12 8
ACM_2 0
ACM_3 26
ACM_4 26
ACM_5 9
ACM_6 9
ACM_7 11
ACM_8 11
ACM_9 0
ACM_I 8
ACP_1 6
ACP_10 0
ACP_11 6
ACP_12 6
ACP_2 6
ACP_3 4
ACP_4 0
ACP_5 0
ACP_6 2
ACP_7 0
ACP_8 6
ACP_9 0
ACP_I 6
APFL_1 11
APFL_10 0
APFL_11 0
APFL_12 20
APFL_2 18
APFL_3 9
APFL_4 12
APFL_5 0
APFL_6 0
APFL_7 0
APFL_8 3
APFL_9 0
APFL_I 20
APFM_1 5
APFM_10 17
APFM_11 14
APFM_12 10
APFM_2 8
APFM_3 31
APFM_4 25
APFM_5 34
APFM_6 25
APFM_7 17
APFM_8 7
APFM_9 10
APFM_I 10
APFP_1 6
APFP_10 0
APFP_11 14
APFP_12 10
APFP_2 2
APFP_3 0
APFP_4 3
APFP_5 0
APFP_6 6
APFP_7 0
APFP_8 0
14
APFP_9 0
APFP_I 10
CCL1 0
CCL10 22
CCL11 0
CCL12 45
CCL2 0
CCL3 0
CCL4 19
CCL5 0
CCL6 36
CCL7 0
CCL8 35
CCL9 0
CCM1 0
CCM10 15
CCM11 0
CCM12 9
CCM2 0
CCM3 54
CCM4 0
CCM5 0
CCM6 0
CCM7 4
CCM8 0
CCM9 0
CCP1 0
CCP10 5
CCP11 24
CCP12 0
CCP2 0
CCP3 0
CCP4 4
CCP5 3
CCP6 15
CCP7 0
CCP8 14
CCP9 0
CUSTOL1 49
CUSTOL10 3540
CUSTOL11 100
CUSTOL12 7341
CUSTOL2 214
CUSTOL3 27
CUSTOL4 3135
CUSTOL5 40
CUSTOL6 5769
CUSTOL7 190
CUSTOL8 5711
CUSTOL9 130
CUSTOM1 23
CUSTOM10 3423
CUSTOM11 62
CUSTOM12 2001
CUSTOM2 104
CUSTOM3 10497
CUSTOM4 101
CUSTOM5 281
CUSTOM6 84
CUSTOM7 926
CUSTOM8 32
CUSTOM9 140
CUSTOP1 24
CUSTOP10 590
CUSTOP11 2628
CUSTOP12 36
CUSTOP2 12
CUSTOP3 24
CUSTOP4 569
CUSTOP5 426
CUSTOP6 2070
CUSTOP7 20
CUSTOP8 1726
CUSTOP9 60
PSL1 0
PSL10 12
PSL11 10
PSL12 29
PSL2 16
PSL3 0
PSL4 15
PSL5 4
PSL6 17
PSL7 19
PSL8 22
PSL9 13
PSM1 0
PSM10 13
PSM11 2
PSM12 1
PSM2 8
PSM3 28
PSM4 0
PSM5 17
PSM6 0
PSM7 2
PSM8 0
PSM9 11
PSP1 0
PSP10 5
PSP11 18
PSP12 0
PSP2 0
PSP3 2
PSP4 8
PSP5 3
PSP6 13
PSP7 2
PSP8 8
PSP9 6
VSL1 9
VSL10 12
VSL11 10
VSL12 9
VSL2 9
VSL3 9
VSL4 12
15
VSL5 16
VSL6 17
VSL7 19
VSL8 19
VSL9 16
VSM1 5
VSM10 6
VSM11 5
VSM12 5
VSM2 5
VSM3 5
VSM4 6
VSM5 8
VSM6 9
VSM7 10
VSM8 10
VSM9 8
VSP1 4
VSP10 5
VSP11 4
VSP12 4
VSP2 4
VSP3 4
VSP4 6
VSP5 6
VSP6 6
VSP7 6
VSP8 6
VSP9 6
I.4. Apresente o plano detalhado de produção, indicando, em redes separadas para cada
tipo de sumo, as quantidades a comprar, a produzir, a armazenar (nos armazéns de matérias primas e de produtos acabados) e a entregar em cada período.
Laranja
Quantidade a comprar
Quantidade a produzir
Quantidade a armazenar de concentrado
Quantidade armazenar de
sumo
Quantidade a entregar em cada período
Janeiro 0 0 16 11 9
Fevereiro 0 16 0 18 9
Março 0 0 0 9 9
Abril 19 15 4 12 12
Maio 0 4 0 0 16
Junho 36 17 19 0 17
Julho 0 19 0 0 19
Agosto 35 22 13 3 19
Setembro 0 13 0 0 16
Outubro 22 12 10 0 12
Novembro 0 10 0 0 10
Dezembro 45 29 16 20 9
16
Maçã
Quantidade a comprar
Quantidade a produzir
Quantidade a armazenar de concentrado
Quantidade armazenar de
sumo
Quantidade a entregar em cada período
Janeiro 0 0 8 5 5
Fevereiro 0 8 0 8 5
Março 54 28 26 31 5
Abril 0 0 26 25 6
Maio 0 17 9 34 8
Junho 0 0 9 25 9
Julho 4 2 11 17 10
Agosto 0 0 11 7 10
Setembro 0 11 0 10 8
Outubro 15 13 2 17 6
Novembro 0 2 0 14 5
Dezembro 9 1 8 10 5
Pêra
Quantidade a comprar
Quantidade a produzir
Quantidade a armazenar de concentrado
Quantidade armazenar de
sumo
Quantidade a entregar em cada período
Janeiro 0 0 6 6 4
Fevereiro 0 0 6 2 4
Março 0 2 4 0 4
Abril 4 8 0 3 5
Maio 3 3 0 0 6
Junho 15 13 2 6 7
Julho 0 2 0 0 8
Agosto 14 8 6 0 8
Setembro 0 6 0 0 6
17
Outubro 5 5 0 0 5
Novembro 24 18 6 14 4
Dezembro 0 0 6 10 4
I.5. (Para validar o modelo,) mostre que a solução é admissível, verificando que:
i) Há conservação de fluxo das quantidades em cada nó da rede, i.e., o fluxo que entra num nó é igual ao fluxo que entra num nó é igual ao fluxo que sai do nó;
Queremos confirmar que o que se encontra no armazém num determinado mês é o mesmo que o que se encontrava no mês anterior mais o que se comprou menos o custo de produção. Por isso calculamos os valores do armazenamento de concentrado e de produto final para cada mês e confirmamos com as tabelas acima (I.4.).
//VALORES INICIAIS DOS ARMAZÉNS
ACL_I = 16;
APFL_I = 20;
ACM_I = 8;
APFM_I = 10;
ACP_I = 6;
APFP_I = 10;
// JANEIRO
ACL_1 = ACL_I + CCL1 - PSL1 -> ACL_1 = 16+0-0=16
APFL_1 = APFL_I + PSL1 - VSL1 -> APFL_1 = 20+0-9=11
ACM_1 = ACM_I + CCM1 - PSM1 -> ACM_1 = 8+0-0=8
APFM_1 = APFM_I + PSM1 - VSM1 -> APFM_1 = 10+0-5=5
ACP_1 = ACP_I + CCP1 - PSP1 -> ACP_1 = 6+0-0=6
APFP_1 = APFP_I + PSP1 - VSP1 -> APFP_11 = 10+0-4=6
// FEVEREIRO
ACL_2 = ACL_1 + CCL2 - PSL2 -> ACL_2 = 16+0-16=0
APFL_2 = APFL_1 + PSL2 - VSL2 -> APFL_2 = 11+16-9=18
ACM_2 = ACM_1 + CCM2 - PSM2 -> ACM_2 = 8+0-8=0
APFM_2 = APFM_1 + PSM2 - VSM2 -> APFM_2 = 5+8-5=8
ACP_2 = ACP_1 + CCP2 - PSP2 -> ACP_2 = 6+0-0=6
APFP_2 = APFP_1 + PSP2 - VSP2 -> APFP_2 = 6+0-4=2
// MARÇO
ACL_3 = ACL_2 + CCL3 - PSL3 -> ACL_3 = 0+0-0=0
APFL_3 = APFL_2 + PSL3 - VSL3 -> APFL_3 = 18+0-9=9
ACM_3 = ACM_2 + CCM3 - PSM3 -> ACM_3 = 0+54-28=26
18
APFM_3 = APFM_2 + PSM3 - VSM3 -> APFM_3 = 8+28-5=31
ACP_3 = ACP_2 + CCP3 - PSP3 -> ACP_3 = 6+0-2=4
APFP_3 = APFP_2 + PSP3 - VSP3 -> APFP_3 = 2+2-4=0
// ABRIL
ACL_4 = ACL_3 + CCL4 - PSL4 -> ACL_4 = 0+19-15=4
APFL_4 = APFL_3 + PSL4 - VSL4 -> APFL_4 = 9+15-12=12
ACM_4 = ACM_3 + CCM4 - PSM4 -> ACM_4 = 26+0-0=26
APFM_4 = APFM_3 + PSM4 - VSM4 -> APFM_4 = 31+0-6=25
ACP_4 = ACP_3 + CCP4 - PSP4 -> ACP_4 = 4+4-8=0
APFP_4 = APFP_3 + PSP4 - VSP4 -> APFP_4 = 0+8-5=3
// MAIO
ACL_5 = ACL_4 + CCL5 - PSL5 -> ACL_5 = 4+0-4=0
APFL_5 = APFL_4 + PSL5 - VSL5 -> APFL_5 = 12+4-16=0
ACM_5 = ACM_4 + CCM5 - PSM5 -> ACM_5 = 26+0-17=9
APFM_5 = APFM_4 + PSM5 - VSM5 -> APFM_5 = 25+17-8=34
ACP_5 = ACP_4 + CCP5 - PSP5 -> ACP_5 = 0+3-3=0
APFP_5 = APFP_4 + PSP5 - VSP5 -> APFP_5 = 3+3-6=0
// JUNHO
ACL_6 = ACL_5 + CCL6 - PSL6 -> ACP_6 = 0+36-17=19
APFL_6 = APFL_5 + PSL6 - VSL6 -> APFP_6 = 0+17-17=0
ACM_6 = ACM_5 + CCM6 - PSM6 -> ACM_6 = 9+0-0=9
APFM_6 = APFM_5 + PSM6 - VSM6 -> APFM_6 = 34+0-9=25
ACP_6 = ACP_5 + CCP6 - PSP6 -> ACP_6 = 0+15-13=2
APFP_6 = APFP_5 + PSP6 - VSP6 -> APFP_6 = 0+13-7=6
// JULHO
ACL_7 = ACL_6 + CCL7 - PSL7 -> ACP_7 = 19+0-19=0
APFL_7 = APFL_6 + PSL7 - VSL7 -> APFL_7 = 0+19-19=0
ACM_7 = ACM_6 + CCM7 - PSM7 -> ACM_7 = 9+4-2=11
APFM_7 = APFM_6 + PSM7 - VSM7 -> APFM_7 = 25+2-10=17
ACP_7 = ACP_6 + CCP7 - PSP7 -> ACP_7 = 2+0-2=0
APFP_7 = APFP_6 + PSP7 - VSP7 -> APFP_7 = 6+2-8=0
// AGOSTO
ACL_8 = ACL_7 + CCL8 - PSL8 -> ACP_8 = 0+35-22=13
APFL_8 = APFL_7 + PSL8 - VSL8 -> APFL_8 = 0+22-19=3
ACM_8 = ACM_7 + CCM8 - PSM8 -> ACM_8 = 11+0-0=11
19
APFM_8 = APFM_7 + PSM8 - VSM8 -> APFM_8 = 17+0-10=7
ACP_8 = ACP_7 + CCP8 - PSP8 -> ACP_8 = 0+14-8=6
APFP_8 = APFP_7 + PSP8 - VSP8 -> APFP_8 = 0+8-8=0
// SETEMBRO
ACL_9 = ACL_8 + CCL9 - PSL9 -> ACL_9 = 13+0-13=0
APFL_9 = APFL_8 + PSL9 - VSL9 -> APFL_9 = 3+13-16=0
ACM_9 = ACM_8 + CCM9 - PSM9 -> ACM_9 = 11+0-11=0
APFM_9 = APFM_8 + PSM9 - VSM9 -> APFM_9 = 7+11-8=10
ACP_9 = ACP_8 + CCP9 - PSP9 -> ACP_9 = 6+0-6=0
APFP_9 = APFP_8 + PSP9 - VSP9 -> APFP_9 = 0+6-6=0
// OUTUBRO
ACL_10 = ACL_9 + CCL10 - PSL10 -> ACL_10 = 0+22-12=10
APFL_10 = APFL_9 + PSL10 - VSL10 -> APFL_10 = 0+12-12=0
ACM_10 = ACM_9 + CCM10 - PSM10 -> ACM_10 = 0+15-13=2
APFM_10 = APFM_9 + PSM10 - VSM10 -> APFM_10 = 10+13-6=17
ACP_10 = ACP_9 + CCP10 - PSP10 -> ACP_10 = 0+5-5=0
APFP_10 = APFP_9 + PSP10 - VSP10 ->APFP_10 = 0+5-5=0
// NOVEMBRO
ACL_11 = ACL_10 + CCL11 - PSL11 -> ACL_11 = 10+0-10=0
APFL_11 = APFL_10 + PSL11 - VSL11 -> APFL_11 = 0+10-10=0
ACM_11 = ACM_10 + CCM11 - PSM11 -> ACM_11 = 2+0-2=0
APFM_11 = APFM_10 + PSM11 - VSM11 -> APFM_11 = 17+2-5=14
ACP_11 = ACP_10 + CCP11 - PSP11 -> ACP_11 = 0+24-18=6
APFP_11 = APFP_10 + PSP11 - VSP11 -> APFP_11 = 0+18-4=14
// DEZEMBRO
ACL_12 = ACL_11 + CCL12 - PSL12 -> ACL_12 = 0+45-29=16
APFL_12 = APFL_11 + PSL12 - VSL12 -> APFL_12 = 0+29-9=20
ACM_12 = ACM_11 + CCM12 - PSM12 -> ACM_12 = 0+9-1=8
APFM_12 = APFM_11 + PSM12 - VSM12 ->APFM_12 = 14+1-5=10
ACP_12 = ACP_11 + CCP12 - PSP12 ->ACP_12 = 6+0-0=6
APFP_12 = APFP_11 + PSP12 - VSP12 -> APFP_12 = 14+0-4=10
ii)Todas as restrições de capacidade são respeitadas
RESTRIÇÕES QUANTIDADES ARMAZÉNS:
20
ACL_1 + ACM_1 + ACP_1 <= 30 -> 16+8+6 <= 30 -> 30 <= 30 ✓
APFL_1 + APFM_1 + APFP_1 <= 40 -> 11+5+6 <= 40 -> 22 <=40 ✓
ACL_2 + ACM_2 + ACP_2 <= 30 -> 0+0+6<=30 -> 6 <= 30 ✓
APFL_2 + APFM_2 + APFP_2 <= 40 -> 18+8+2 <= 40 -> 28 <=40 ✓
ACL_3 + ACM_3 + ACP_3 <= 30 -> 0+26+4 <= 30 -> 30<=30 ✓
APFL_3 + APFM_3 + APFP_3 <= 40 -> 9+31+0<=40 -> 40<=40 ✓
ACL_4 + ACM_4 + ACP_4 <= 30 -> 4+26+0 <= 30 -> 30<=30 ✓
APFL_4 + APFM_4 + APFP_4 <= 40 -> 12+25+3 <= 40 -> 40<=40 ✓
ACL_5 + ACM_5 + ACP_5 <= 30 -> 0+9+0 <= 30 -> 9<=30 ✓
APFL_5 + APFM_5 + APFP_5 <= 40 -> 0+34+0 <=40 -> 34<=40 ✓
ACL_6 + ACM_6 + ACP_6 <= 30 -> 19+9+2 <= 30 -> 30<=30 ✓
APFL_6 + APFM_6 + APFP_6 <= 40 -> 0+25+6<=40 -> 31<=40 ✓
ACL_7 + ACM_7 + ACP_7 <= 30 -> 0+11+0<=30 -> 11<=30 ✓
APFL_7 + APFM_7 + APFP_7 <= 40 -> 0+17+0<=40 -> 17<=40 ✓
ACL_8 + ACM_8 + ACP_8 <= 30 -> 13+11+6<=30 -> 30<=30 ✓
APFL_8 + APFM_8 + APFP_8 <= 40 -> 3+7+0<=40 -> 10<=40 ✓
ACL_9 + ACM_9 + ACP_9 <= 30 -> 0+0+0<=30 -> 0<=30 ✓
APFL_9 + APFM_9 + APFP_9 <= 40 -> 0+10+0<=40 -> 10<=40 ✓
ACL_10 + ACM_10 + ACP_10 <= 30 ->10+2+0<=30 -> 12<=30 ✓
APFL_10 + APFM_10 + APFP_10 <= 40 -> 0+17+0<=40 -> 17<=40 ✓
ACL_11 + ACM_11 + ACP_11 <= 30 -> 0+0+6<=30 -> 12<=30 ✓
APFL_11 + APFM_11 + APFP_11 <= 40 -> 10+7+0<=40 -> 17<=40 ✓
ACL_12 + ACM_12 + ACP_12 <= 30 -> 16+8+6<=30 -> 30<=30 ✓
APFL_12 + APFM_12 + APFP_12 <= 40 -> 20+10+10<=40 -> 40<=40 ✓
ACL_12 = ACL_I -> 16 =16 ✓
ACM_12 = ACM_I -> 8=8 ✓
ACP_12 = ACP_I -> 6=6 ✓
APFL_12 = APFL_I -> 20=20 ✓
APFM_12 = APFM_I -> 10=10 ✓
APFP_12 = APFP_I -> 10=10 ✓
RESTRIÇÕES DE PRODUÇÃO:
PSL1+PSM1+PSP1 <= 30 -> 0+0+0<=30 -> 0<=30 ✓
PSL2+PSM2+PSP2 <= 30 -> 16+8+0<=30 -> 24<=30 ✓
PSL3+PSM3+PSP3 <= 30 -> 0+28+2<=30 -> 30<=30 ✓
21
PSL4+PSM4+PSP4 <= 30 -> 15+0+8<=30 -> 23<=30 ✓
PSL5+PSM5+PSP5 <= 30 -> 4+17+3<=30 -> 24<=30 ✓
PSL6+PSM6+PSP6 <= 30 ->17+0+13<=30 -> 30<=30 ✓
PSL7+PSM7+PSP7 <= 30 -> 19+2+2<=30 -> 23<=30 ✓
PSL8+PSM8+PSP8 <= 30 ->22+0+8<=30 -> 30<=30 ✓
PSL9+PSM9+PSP9 <= 30 ->13+11+6<=30 -> 30<=30 ✓
PSL10+PSM10+PSP10 <= 30 ->12+13+5<=30 -> 30<=30 ✓
PSL11+PSM11+PSP11 <= 30 ->10+2+18<=30 ->30<=30 ✓
PSL12+PSM12+PSP12 <=30 ->29+1+0<=30 -> 30<=30 ✓
I.6. (Para validar o modelo), mostre que o custo da solução ótima está correto,
calculando separadamente os custos de compra de concentrado, de produção e armazenamento, cuja soma deverá ser igual ao valor da solução ótima.
Custos de compra de concentrado: CC (quantidade que vou comprar)*preço
● Laranjas: 19*155+36*155+35*155+22*155+45*155 =24335 ● Maças: 54*187+4*211+15*216+9*217=16135 ● Peras: 4*120+3*132+15*128+14*116+5*108+24*100=7360
Total: 24335+16135+7360=47830
Custos de produção de sumo: PS (quantidade de sumos que vou produzir)*preço
● Laranjas: 16*10+15*10+4*10+17*10+19*10+22*12+13*10+12*10+10*10+29*10=1614
● Maçãs: 8*10+28*10+17*10+2*10+11*10+13*10+2*10+1*10=820 ● Peras: 2*10+8*10+3*10+13*10+2*10+8*12+6*10+5*10+18*10=666
Total: 1614+820+666=3100
Custos de armazenamento:
1. Concentrado: 1*AC(concentrado armazenado) ● Laranjas: 16+4+19+13+10+16=78 ● Maçãs: 8+26+26+9+9+11+11+2+8=110 ● Peras: 6+6+4+2+6+6+6=36
2. Sumo: 3*APF (Quantidade de sumo armazenada) ● Laranjas: 11*3+18*3+9*3+12*3+3*3+20*3=219
22
● Maçãs: 5*3+8*3+31*3+25*3+34*3+25*3+17*3+7*3+17*3+10*3+14*3+10*3=609
● Peras: 6*3+2*3+3*3+6*3+14*3+10*3=123
Total: 78+110+36+219+609+123=1175
TOTAL DE CUSTOS FINAL: 47830+3100+1175=52105 c.q.d.
Parte II
Considere que é necessário proceder a uma operação de manutenção, que força uma paragem da linha de engarrafamento durante 15 dias, e a redução da capacidade de produção a metade. É possível agendar esta operação para o mês de Março ou Setembro.
II.1.Indique e explique o significado das restrições a adicionar ao modelo da Parte I para fazer uma comparação dos dois cenários. Teça todas as considerações que considere necessárias.
• Mês de Março:
Como houve uma redução de capacidade de produção para metade, neste caso no mês de Março, a alteração ocorrerá apenas na linha referente ao mês 3, as restantes ficam iguais ao modelo da parte I.
RESTRIÇÕES DE PRODUÇÃO:
(...)
PSL3+PSM3+PSP3 <= 15;
(...)
• Mês de Setembro:
Para o mês de Setembro o procedimento é o mesmo.
RESTRIÇÕES DE PRODUÇÃO:
(...)
PSL9+PSM9+PSP9 <= 15;
(...)
Neste mês não haverá solução, pois o que se produziu nos meses anteriores não foi o suficiente para cobrir as encomendas, como podemos verificar:
23
Quantidade se stock existente até ao mês de Setembro tem de ser maior ou igual à quantidade de encomenda:
Maçã: 5+8+31+25+24+25+17++7 >= 5+5+5+6+8+9+10+10 -> 142>=58 ✓
Pera: 6+2+3+6 >= 4+4+4+5+6+7+8+8 -> 17 >= 46 × Laranja 11+18+9+12+3 >=19+19+17+16+12+9+9+9 -> 53>=110 ×
Portanto, não será possível cobrir todas as encomendas.
II.2.Efetue uma comparação dos dois cenários. Qual das duas opções tem menores custos?
A opção em que não se produz no mês de Março tem um custo de 52182 U.M., na outra temos uma solução impossível, isto porque talvez como não existe produção no mês de setembro, a produção dos sumos e de stock não será suficiente para cobrir as vendas nos próximos meses.
Como o problema no mês de setembro é impossível, o mês de março é o melhor cenário.
II.3.Apresente o ficheiro de input (cut-and-paste)
• Mês de Março
O ficheiro input é igual ao da Parte I, com exceção da linha relativa do mês de março que fica PSL3+PSM3+PSP3 <= 15, pois como referido no enunciado do trabalho, a redução da capacidade de produção no mês de março passa a metade, ou seja de 30 para 15 U.E.
//RESTRIÇÕES DE PRODUÇÃO
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 <= 15;
PSL4+PSM4+PSP4 <= 30;
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 <= 30;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
• Mês de Setembro:
O ficheiro input é igual ao da Parte I, com exceção da linha relativa do mês de setembro que fica PSL9+PSM9+PSP9 <= 15, pois como referido no enunciado do trabalho, a
24
redução da capacidade de produção no mês de setembro passa a metade, ou seja de 30 para 15 U.E.
//RESTRIÇÕES DE PRODUÇÃO
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 <= 30;
PSL4+PSM4+PSP4 <= 30;
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 <= 15;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
II.4. Apresente o ficheiro de output produzido pelo programa (cut-and-paste)
Como o mês de Setembro não tem solução só existe output do mês de março.
• Mês de Março:
Variables result
52182
ACL_1 16
ACL_10 0
ACL_11 0
ACL_12 16
ACL_2 0
ACL_3 0
ACL_4 0
ACL_5 0
ACL_6 19
ACL_7 0
ACL_8 13
ACL_9 0
ACL_I 16
ACM_1 8
ACM_10 12
ACM_11 0
ACM_12 8
ACM_2 0
ACM_3 30
ACM_4 28
ACM_5 9
ACM_6 9
ACM_7 11
ACM_8 11
ACM_9 0
ACM_I 8
ACP_1 6
ACP_10 0
ACP_11 6
ACP_12 6
ACP_2 0
ACP_3 0
ACP_4 2
ACP_5 2
ACP_6 2
ACP_7 0
ACP_8 6
ACP_9 0
ACP_I 6
APFL_1 11
APFL_10 10
APFL_11 0
APFL_12 20
APFL_2 18
APFL_3 9
APFL_4 16
APFL_5 0
APFL_6 0
APFL_7 0
25
APFL_8 3
APFL_9 0
APFL_I 20
APFM_1 5
APFM_10 7
APFM_11 14
APFM_12 10
APFM_2 8
APFM_3 18
APFM_4 16
APFM_5 27
APFM_6 18
APFM_7 17
APFM_8 7
APFM_9 10
APFM_I 10
APFP_1 6
APFP_10 0
APFP_11 14
APFP_12 10
APFP_2 8
APFP_3 4
APFP_4 6
APFP_5 0
APFP_6 6
APFP_7 0
APFP_8 0
APFP_9 0
APFP_I 10
CCL1 0
CCL10 22
CCL11 0
CCL12 45
CCL2 0
CCL3 0
CCL4 19
CCL5 0
CCL6 36
CCL7 0
CCL8 35
CCL9 0
CCM1 0
CCM10 15
CCM11 0
CCM12 9
CCM2 0
CCM3 45
CCM4 2
CCM5 0
CCM6 0
CCM7 11
CCM8 0
CCM9 0
CCP1 0
CCP10 5
CCP11 24
CCP12 0
CCP2 0
CCP3 0
CCP4 9
CCP5 0
CCP6 13
CCP7 0
CCP8 14
CCP9 0
CUSTOL1 49
CUSTOL10 3660
CUSTOL11 0
CUSTOL12 7341
CUSTOL2 214
CUSTOL3 27
CUSTOL4 3183
CUSTOL5 0
CUSTOL6 5769
CUSTOL7 190
CUSTOL8 5711
CUSTOL9 130
CUSTOM1 23
CUSTOM10 3303
CUSTOM11 162
CUSTOM12 2001
CUSTOM2 104
CUSTOM3 8649
CUSTOM4 512
CUSTOM5 280
CUSTOM6 63
CUSTOM7 2473
CUSTOM8 32
CUSTOM9 140
CUSTOP1 24
CUSTOP10 590
CUSTOP11 2628
CUSTOP12 36
CUSTOP2 84
CUSTOP3 12
CUSTOP4 1170
CUSTOP5 2
CUSTOP6 1814
CUSTOP7 20
CUSTOP8 1726
CUSTOP9 60
PSL1 0
PSL10 22
PSL11 0
PSL12 29
PSL2 16
PSL3 0
PSL4 19
PSL5 0
PSL6 17
PSL7 19
PSL8 22
PSL9 13
PSM1 0
PSM10 3
PSM11 12
PSM12 1
26
PSM2 8
PSM3 15
PSM4 4
PSM5 19
PSM6 0
PSM7 9
PSM8 0
PSM9 11
PSP1 0
PSP10 5
PSP11 18
PSP12 0
PSP2 6
PSP3 0
PSP4 7
PSP5 0
PSP6 13
PSP7 2
PSP8 8
PSP9 6
VSL1 9
VSL10 12
VSL11 10
VSL12 9
VSL2 9
VSL3 9
VSL4 12
VSL5 16
VSL6 17
VSL7 19
VSL8 19
VSL9 16
VSM1 5
VSM10 6
VSM11 5
VSM12 5
VSM2 5
VSM3 5
VSM4 6
VSM5 8
VSM6 9
VSM7 10
VSM8 10
VSM9 8
VSP1 4
VSP10 5
VSP11 4
VSP12 4
VSP2 4
VSP3 4
VSP4 5
VSP5 6
VSP6 7
VSP7 8
VSP8 8
VSP9 6
Parte III
E se a operação de manutenção da linha de engarrafamento forçar uma paragem da linha durante um mês, sendo possível agendar esta operação para o mês de março ou de setembro?
III.1. Indique as restrições a adicionar ao modelo da Parte I e efetue uma comparação dos dois cenários. Teça todas as considerações que considere necessárias.
• Mês de março:
No mês de Março, devido à operação de manutenção da linha de engarrafamento, não haverá produção, isto significa que a produção dos três tipos de sumo neste mês será igual a zero, ou seja igualámos a restrição a zero: PSL3+PSM3+PSP3 = 0
//RESTRIÇÕES DE PRODUÇÃO
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 = 0;
PSL4+PSM4+PSP4 <= 30;
27
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 <= 30;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
• Mês de setembro:
Neste mês acontece o mesmo, pois a operação é forçada a parar, sendo que não haverá produção, isto significa que a produção dos três tipos de sumo neste mês será igual a zero, ou seja igualámos a restrição a zero: PSL9+PSM9+PSP9 = 0.
//RESTRIÇÕES DE PRODUÇÃO
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 <= 30;
PSL4+PSM4+PSP4 <= 30;
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 = 0;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
Como o problema no mês de setembro é impossível devido à produção de sumos em stock não ser suficiente para cobrir as vendas no meses seguintes, como já vimos na parte II, o mês de março é o melhor cenário.
III.2. Apresente o ficheiro de input (cut-and-paste)
• Mês de março:
O ficheiro input é igual ao da Parte I com exceção da restrição de produção do mês de Março (PSL3+PSM3+PSP3 = 0), pois como nos é dito a operação de manutenção da linha de engarrafamento força uma paragem durante este mês.
//RESTRIÇÕES DE PRODUÇÃO
28
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 = 0;
PSL4+PSM4+PSP4 <= 30;
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 <= 30;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
• Mês de Setembro:
O ficheiro input é igual ao da Parte I com exceção da restrição de produto do mês de Setembro (PSL9+PSM9+PSP9 = 0), pois como nos é dito a operação de manutenção da linha de engarrafamento força uma paragem durante este mês.
//RESTRIÇÕES DE PRODUÇÃO
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 <= 30;
PSL4+PSM4+PSP4 <= 30;
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 = 0;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
III.3. Apresente o ficheiro de output produzido pelo programa (cut-and-paste)
Como o mês de Setembro não tem solução só existe output do mês de Março.
• Mês de Março:
Variables result
52376 ACL_1 16
29
ACL_10 10
ACL_11 0
ACL_12 16
ACL_2 0
ACL_3 0
ACL_4 0
ACL_5 0
ACL_6 19
ACL_7 0
ACL_8 16
ACL_9 0
ACL_I 16
ACM_1 2
ACM_10 2
ACM_11 0
ACM_12 8
ACM_2 0
ACM_3 30
ACM_4 30
ACM_5 2
ACM_6 9
ACM_7 11
ACM_8 11
ACM_9 0
ACM_I 8
ACP_1 6
ACP_10 0
ACP_11 6
ACP_12 6
ACP_2 0
ACP_3 0
ACP_4 0
ACP_5 0
ACP_6 2
ACP_7 0
ACP_8 3
ACP_9 0
ACP_I 6
APFL_1 11
APFL_10 0
APFL_11 0
APFL_12 20
APFL_2 18
APFL_3 9
APFL_4 16
APFL_5 0
APFL_6 0
APFL_7 0
APFL_8 0
APFL_9 0
APFL_I 20
APFM_1 11
APFM_10 17
APFM_11 14
APFM_12 10
APFM_2 8
APFM_3 3
APFM_4 7
APFM_5 27
APFM_6 18
APFM_7 17
APFM_8 7
APFM_9 10
APFM_I 10
APFP_1 6
APFP_10 0
APFP_11 14
APFP_12 10
APFP_2 14
APFP_3 10
APFP_4 6
APFP_5 0
APFP_6 6
APFP_7 0
APFP_8 3
APFP_9 0
APFP_I 10
CCL1 0
CCL10 22
CCL11 0
CCL12 45
CCL2 0
CCL3 0
CCL4 19
CCL5 0
CCL6 36
CCL7 0
CCL8 35
CCL9 0
CCM1 0
CCM10 15
CCM11 0
CCM12 9
CCM2 0
CCM3 30
CCM4 10
CCM5 0
CCM6 7
CCM7 11
CCM8 0
CCM9 0
CCP1 0
CCP10 5
CCP11 24
CCP12 0
CCP2 6
CCP3 0
CCP4 1
CCP5 0
CCP6 15
CCP7 0
CCP8 14
CCP9 0
CUSTOL1 49
CUSTOL10 3540
CUSTOL11 100
CUSTOL12 7341
30
CUSTOL2 214
CUSTOL3 27
CUSTOL4 3183
CUSTOL5 0
CUSTOL6 5769
CUSTOL7 190
CUSTOL8 5669
CUSTOL9 160
CUSTOM1 95
CUSTOM10 3423
CUSTOM11 62
CUSTOM12 2001
CUSTOM2 44
CUSTOM3 5649
CUSTOM4 2131
CUSTOM5 363
CUSTOM6 1519
CUSTOM7 2473
CUSTOM8 32
CUSTOM9 140
CUSTOP1 24
CUSTOP10 590
CUSTOP11 2628
CUSTOP12 36
CUSTOP2 858
CUSTOP3 30
CUSTOP4 148
CUSTOP5 0
CUSTOP6 2070
CUSTOP7 20
CUSTOP8 1768
CUSTOP9 30
PSL1 0
PSL10 12
PSL11 10
PSL12 29
PSL2 16
PSL3 0
PSL4 19
PSL5 0
PSL6 17
PSL7 19
PSL8 19
PSL9 16
PSM1 6
PSM10 13
PSM11 2
PSM12 1
PSM2 2
PSM3 0
PSM4 10
PSM5 28
PSM6 0
PSM7 9
PSM8 0
PSM9 11
PSP1 0
PSP10 5
PSP11 18
PSP12 0
PSP2 12
PSP3 0
PSP4 1
PSP5 0
PSP6 13
PSP7 2
PSP8 11
PSP9 3
VSL1 9
VSL10 12
VSL11 10
VSL12 9
VSL2 9
VSL3 9
VSL4 12
VSL5 16
VSL6 17
VSL7 19
VSL8 19
VSL9 16
VSM1 5
VSM10 6
VSM11 5
VSM12 5
VSM2 5
VSM3 5
VSM4 6
VSM5 8
VSM6 9
VSM7 10
VSM8 10
VSM9 8
VSP1 4
VSP10 5
VSP11 4
VSP12 4
VSP2 4
VSP3 4
VSP4 5
VSP5 6
VSP6 7
VSP7 8
VSP8 8
VSP9 6
31
Parte IV Partindo do modelo da Parte I, considere que, para além da capacidade máxima de produção normal de 30 U.E. por período, pode haver produção extraordinária de mais de 6 U.E. por período, sendo o custo de produção [U.M./U.E.] acrescido de 50%.
IV.1. Mostre quais as modificações a efetuar no modelo de programação linear. Explique com detalhe as alterações das restrições e da função objetivo do modelo. Teça todas as considerações que considere necessárias.
Nesta parte, foi necessária a introdução de uma nova variável para representar uma produção extraordinária de mais 6 U.E. por período. A variável criada foi PS[x][y]_EXTRA, em que o [x] corresponde a [L]aranjas, [M]açãs ou [P]eras e o [y] aos meses de 1 a12 (Janeiro a Dezembro). Sendo assim, a produção extra de cada matéria num mês terá de ser menor ou igual a 6, exceto o mês de março que terá de ser igual a zero de acordo com a parte III.
//Produção extra
PSL1_EXTRA + PSM1_EXTRA + PSP1_EXTRA <= 6;
PSL2_EXTRA + PSM2_EXTRA + PSP2_EXTRA <= 6;
PSL3_EXTRA + PSM3_EXTRA + PSP3_EXTRA = 0;
PSL4_EXTRA + PSM4_EXTRA + PSP4_EXTRA <= 6; PSL5_EXTRA + PSM5_EXTRA + PSP5_EXTRA <= 6; PSL6_EXTRA + PSM6_EXTRA + PSP6_EXTRA <= 6; PSL7_EXTRA + PSM7_EXTRA + PSP7_EXTRA <= 6; PSL8_EXTRA + PSM8_EXTRA + PSP8_EXTRA <= 6; PSL9_EXTRA + PSM9_EXTRA + PSP9_EXTRA <= 6; PSL10_EXTRA + PSM10_EXTRA + PSP10_EXTRA <= 6; PSL11_EXTRA + PSM11_EXTRA + PSP11_EXTRA <= 6; PSL12_EXTRA + PSM12_EXTRA + PSP12_EXTRA <= 6;
Para conservar o fluxo em todos os meses o algoritmo usado foi o mesmo das partes anteriores mas desta vez adicionamos a produção extra à quantidade de saída do armazém de concentrados e à quantidade de entrada do armazém de produtos finais, segue-se abaixo um exerto de como ficaram estas restrições.
// JANEIRO ACL_1 = ACL_I + CCL1 - PSL1 - PSL1_EXTRA; APFL_1 = APFL_I + PSL1 + PSL1_EXTRA - VSL1; ACM_1 = ACM_I + CCM1 - PSM1 - PSM1_EXTRA; APFM_1 = APFM_I + PSM1 + PSM1_EXTRA - VSM1; ACP_1 = ACP_I + CCP1 - PSP1 - PSP1_EXTRA; APFP_1 = APFP_I + PSP1 + PSP1_EXTRA - VSP1;
IV.2. Apresente o ficheiro de input (cut-and-paste)
• Mês de março:
32
/* Objective function */
min : CUSTOL1 + CUSTOL2 + CUSTOL3 + CUSTOL4 + CUSTOL5 + CUSTOL6 + CUSTOL7 + CUSTOL8 + CUSTOL9 + CUSTOL10 + CUSTOL11 + CUSTOL12 +CUSTOM1 + CUSTOM2 + CUSTOM3 + CUSTOM4 + CUSTOM5 + CUSTOM6 + CUSTOM7 + CUSTOM8 + CUSTOM9 + CUSTOM10 + CUSTOM11 + CUSTOM12 +CUSTOP1 + CUSTOP2 + CUSTOP3 + CUSTOP4 + CUSTOP5 + CUSTOP6 + CUSTOP7 + CUSTOP8 + CUSTOP9 + CUSTOP10 + CUSTOP11 + CUSTOP12;
// VENDAS [1 = JAN ... 12 = DEZ]
VSL1 = 9;
VSM1 = 5;
VSP1 = 4;
VSL2 = 9;
VSM2 = 5;
VSP2 = 4;
VSL3 = 9;
VSM3 = 5;
VSP3 = 4;
VSL4 = 12;
VSM4 = 6;
VSP4 = 5;
VSL5 = 16;
VSM5 = 8;
VSP5 = 6;
VSL6 = 17;
VSM6 = 9;
VSP6 = 7;
VSL7 = 19;
VSM7 = 10;
VSP7 = 8;
VSL8 = 19;
VSM8 = 10;
VSP8 = 8;
VSL9 = 16;
VSM9 = 8;
VSP9 = 6;
VSL10 = 12;
VSM10 = 6;
VSP10 = 5;
VSL11 = 10;
VSM11 = 5;
VSP11 = 4;
33
VSL12 = 9;
VSM12 = 5;
VSP12 = 4;
//VALORES INICIAIS DOS ARMAZÉNS
ACL_I = 16;
APFL_I = 20;
ACM_I = 8;
APFM_I = 10;
ACP_I = 6;
APFP_I = 10;
// JANEIRO
ACL_1 = ACL_I + CCL1 - PSL1 - PSL1_EXTRA;
APFL_1 = APFL_I + PSL1 + PSL1_EXTRA - VSL1;
ACM_1 = ACM_I + CCM1 - PSM1 - PSM1_EXTRA;
APFM_1 = APFM_I + PSM1 + PSM1_EXTRA - VSM1;
ACP_1 = ACP_I + CCP1 - PSP1 - PSP1_EXTRA;
APFP_1 = APFP_I + PSP1 + PSP1_EXTRA - VSP1;
// FEVEREIRO
ACL_2 = ACL_1 + CCL2 - PSL2 - PSL2_EXTRA;
APFL_2 = APFL_1 + PSL2 + PSL2_EXTRA - VSL2;
ACM_2 = ACM_1 + CCM2 - PSM2 - PSM2_EXTRA;
APFM_2 = APFM_1 + PSM2 + PSM2_EXTRA - VSM2;
ACP_2 = ACP_1 + CCP2 - PSP2 - PSP2_EXTRA;
APFP_2 = APFP_1 + PSP2 + PSP2_EXTRA - VSP2;
// MARÇO
ACL_3 = ACL_2 + CCL3 - PSL3 - PSL3_EXTRA;
APFL_3 = APFL_2 + PSL3 + PSL3_EXTRA - VSL3;
ACM_3 = ACM_2 + CCM3 - PSM3 - PSM3_EXTRA;
APFM_3 = APFM_2 + PSM3 + PSM3_EXTRA - VSM3;
ACP_3 = ACP_2 + CCP3 - PSP3 - PSP3_EXTRA;
APFP_3 = APFP_2 + PSP3 + PSP3_EXTRA - VSP3;
// ABRIL
ACL_4 = ACL_3 + CCL4 - PSL4 - PSL4_EXTRA;
APFL_4 = APFL_3 + PSL4 + PSL4_EXTRA - VSL4;
ACM_4 = ACM_3 + CCM4 - PSM4 - PSM4_EXTRA;
34
APFM_4 = APFM_3 + PSM4 + PSM4_EXTRA - VSM4;
ACP_4 = ACP_3 + CCP4 - PSP4 - PSP4_EXTRA;
APFP_4 = APFP_3 + PSP4 + PSP4_EXTRA - VSP4;
// MAIO
ACL_5 = ACL_4 + CCL5 - PSL5 - PSL5_EXTRA;
APFL_5 = APFL_4 + PSL5 + PSL5_EXTRA - VSL5;
ACM_5 = ACM_4 + CCM5 - PSM5 - PSM5_EXTRA;
APFM_5 = APFM_4 + PSM5 + PSM5_EXTRA - VSM5;
ACP_5 = ACP_4 + CCP5 - PSP5 - PSP5_EXTRA;
APFP_5 = APFP_4 + PSP5 + PSP5_EXTRA - VSP5; // JUNHO ACL_6 = ACL_5 + CCL6 - PSL6 - PSL6_EXTRA; APFL_6 = APFL_5 + PSL6 + PSL6_EXTRA - VSL6; ACM_6 = ACM_5 + CCM6 - PSM6 - PSM6_EXTRA; APFM_6 = APFM_5 + PSM6 + PSM6_EXTRA - VSM6; ACP_6 = ACP_5 + CCP6 - PSP6 - PSP6_EXTRA; APFP_6 = APFP_5 + PSP6 + PSP6_EXTRA - VSP6; // JULHO ACL_7 = ACL_6 + CCL7 - PSL7 - PSL7_EXTRA; APFL_7 = APFL_6 + PSL7 + PSL7_EXTRA - VSL7; ACM_7 = ACM_6 + CCM7 - PSM7 - PSM7_EXTRA; APFM_7 = APFM_6 + PSM7 + PSM7_EXTRA - VSM7; ACP_7 = ACP_6 + CCP7 - PSP7 - PSP7_EXTRA; APFP_7 = APFP_6 + PSP7 + PSP7_EXTRA - VSP7; // AGOSTO ACL_8 = ACL_7 + CCL8 - PSL8 - PSL8_EXTRA; APFL_8 = APFL_7 + PSL8 + PSL8_EXTRA - VSL8; ACM_8 = ACM_7 + CCM8 - PSM8 - PSM8_EXTRA; APFM_8 = APFM_7 + PSM8 + PSM8_EXTRA - VSM8; ACP_8 = ACP_7 + CCP8 - PSP8 - PSP8_EXTRA; APFP_8 = APFP_7 + PSP8 + PSP8_EXTRA - VSP8; // SETEMBRO ACL_9 = ACL_8 + CCL9 - PSL9 - PSL9_EXTRA; APFL_9 = APFL_8 + PSL9 + PSL9_EXTRA - VSL9; ACM_9 = ACM_8 + CCM9 - PSM9 - PSM9_EXTRA; APFM_9 = APFM_8 + PSM9 + PSM9_EXTRA - VSM9; ACP_9 = ACP_8 + CCP9 - PSP9 - PSP9_EXTRA; APFP_9 = APFP_8 + PSP9 + PSP9_EXTRA - VSP9; // OUTUBRO ACL_10 = ACL_9 + CCL10 - PSL10 - PSL10_EXTRA; APFL_10 = APFL_9 + PSL10 + PSL10_EXTRA - VSL10; ACM_10 = ACM_9 + CCM10 - PSM10 - PSM10_EXTRA; APFM_10 = APFM_9 + PSM10 + PSM10_EXTRA - VSM10;
35
ACP_10 = ACP_9 + CCP10 - PSP10 - PSP10_EXTRA; APFP_10 = APFP_9 + PSP10 + PSP10_EXTRA - VSP10; // NOVEMBRO ACL_11 = ACL_10 + CCL11 - PSL11 - PSL11_EXTRA; APFL_11 = APFL_10 + PSL11 + PSL11_EXTRA - VSL11; ACM_11 = ACM_10 + CCM11 - PSM11 - PSM11_EXTRA; APFM_11 = APFM_10 + PSM11 + PSM11_EXTRA - VSM11; ACP_11 = ACP_10 + CCP11 - PSP11 - PSP11_EXTRA; APFP_11 = APFP_10 + PSP11 + PSP11_EXTRA - VSP11; // DEZEMBRO ACL_12 = ACL_11 + CCL12 - PSL12 - PSL12_EXTRA; APFL_12 = APFL_11 + PSL12 + PSL12_EXTRA - VSL12; ACM_12 = ACM_11 + CCM12 - PSM12 - PSM12_EXTRA; APFM_12 = APFM_11 + PSM12 + PSM12_EXTRA - VSM12; ACP_12 = ACP_11 + CCP12 - PSP12 - PSP12_EXTRA; APFP_12 = APFP_11 + PSP12 + PSP12_EXTRA - VSP12;
//RESTRIÇÕES DE PRODUÇÃO
PSL1+PSM1+PSP1 <= 30;
PSL2+PSM2+PSP2 <= 30;
PSL3+PSM3+PSP3 = 0;
PSL4+PSM4+PSP4 <= 30;
PSL5+PSM5+PSP5 <= 30;
PSL6+PSM6+PSP6 <= 30;
PSL7+PSM7+PSP7 <= 30;
PSL8+PSM8+PSP8 <= 30;
PSL9+PSM9+PSP9 <= 30;
PSL10+PSM10+PSP10 <= 30;
PSL11+PSM11+PSP11 <= 30;
PSL12+PSM12+PSP12 <= 30;
//Produção extra
PSL1_EXTRA + PSM1_EXTRA + PSP1_EXTRA <= 6;
PSL2_EXTRA + PSM2_EXTRA + PSP2_EXTRA <= 6;
PSL3_EXTRA + PSM3_EXTRA + PSP3_EXTRA = 0;
PSL4_EXTRA + PSM4_EXTRA + PSP4_EXTRA <= 6;
PSL5_EXTRA + PSM5_EXTRA + PSP5_EXTRA <= 6;
PSL6_EXTRA + PSM6_EXTRA + PSP6_EXTRA <= 6;
PSL7_EXTRA + PSM7_EXTRA + PSP7_EXTRA <= 6;
PSL8_EXTRA + PSM8_EXTRA + PSP8_EXTRA <= 6;
PSL9_EXTRA + PSM9_EXTRA + PSP9_EXTRA <= 6;
36
PSL10_EXTRA + PSM10_EXTRA + PSP10_EXTRA <= 6;
PSL11_EXTRA + PSM11_EXTRA + PSP11_EXTRA <= 6;
PSL12_EXTRA + PSM12_EXTRA + PSP12_EXTRA <= 6;
//CUSTOS DE CADA MÊS
CUSTOL1 = 10PSL1 + 15PSL1_EXTRA + ACL_1 + 3APFL_1 + 170CCL1;
CUSTOM1 = 10PSM1 + 15PSM1_EXTRA + ACM_1 + 3APFM_1 + 231CCM1;
CUSTOP1 = 10PSP1 + 15PSP1_EXTRA + ACP_1 + 3APFP_1 + 116CCP1;
CUSTOL2 = 10PSL2 + 15PSL2_EXTRA + ACL_2 + 3APFL_2 + 155CCL2;
CUSTOM2 = 10PSM2 + 15PSM2_EXTRA + ACM_2 + 3APFM_2 + 199CCM2;
CUSTOP2 = 10PSP2 + 15PSP2_EXTRA + ACP_2 + 3APFP_2 + 116CCP2;
CUSTOL3 = 10PSL3 + 15PSL3_EXTRA + ACL_3 + 3APFL_3 + 170CCL3;
CUSTOM3 = 10PSM3 + 15PSM3_EXTRA + ACM_3 + 3APFM_3 + 187CCM3;
CUSTOP3 = 10PSP3 + 15PSP3_EXTRA + ACP_3 + 3APFP_3 + 124CCP3;
CUSTOL4 = 10PSL4 + 15PSL4_EXTRA + ACL_4 + 3APFL_4 + 155CCL4;
CUSTOM4 = 10PSM4 + 15PSM4_EXTRA + ACM_4 + 3APFM_4 + 198CCM4;
CUSTOP4 = 10PSP4 + 15PSP4_EXTRA + ACP_4 + 3APFP_4 + 120CCP4;
CUSTOL5 = 10PSL5 + 15PSL5_EXTRA + ACL_5 + 3APFL_5 + 170CCL5;
CUSTOM5 = 10PSM5 + 15PSM5_EXTRA + ACM_5 + 3APFM_5 + 210CCM5;
CUSTOP5 = 10PSP5 + 15PSP5_EXTRA + ACP_5 + 3APFP_5 + 132CCP5;
CUSTOL6 = 10PSL6 + 15PSL6_EXTRA + ACL_6 + 3APFL_6 + 155CCL6;
CUSTOM6 = 10PSM6 + 15PSM6_EXTRA + ACM_6 + 3APFM_6 + 208CCM6;
CUSTOP6 = 10PSP6 + 15PSP6_EXTRA + ACP_6 + 3APFP_6 + 128CCP6;
CUSTOL7 = 10PSL7 + 15PSL7_EXTRA + ACL_7 + 3APFL_7 + 170CCL7;
CUSTOM7 = 10PSM7 + 15PSM7_EXTRA + ACM_7 + 3APFM_7 + 211CCM7;
CUSTOP7 = 10PSP7 + 15PSP7_EXTRA + ACP_7 + 3APFP_7 + 136CCP7;
CUSTOL8 = 12PSL8 + 18PSL8_EXTRA + ACL_8 + 3APFL_8 + 155CCL8;
CUSTOM8 = 12PSM8 + 18PSM8_EXTRA + ACM_8 + 3APFM_8 + 220CCM8;
CUSTOP8 = 12PSP8 + 18PSP8_EXTRA + ACP_8 + 3APFP_8 + 116CCP8;
CUSTOL9 = 10PSL9 + 15PSL9_EXTRA + ACL_9 + 3APFL_9 + 170CCL9;
CUSTOM9 = 10PSM9 + 15PSM9_EXTRA + ACM_9 + 3APFM_9 + 217CCM9;
37
CUSTOP9 = 10PSP9 + 15PSP9_EXTRA + ACP_9 + 3APFP_9 + 120CCP9;
CUSTOL10 = 10PSL10 + 15PSL10_EXTRA + ACL_10 + 3APFL_10 + 155CCL10;
CUSTOM10 = 10PSM10 + 15PSM10_EXTRA + ACM_10 + 3APFM_10 + 216CCM10;
CUSTOP10 = 10PSP10 + 15PSP10_EXTRA + ACP_10 + 3APFP_10 + 108CCP10;
CUSTOL11 = 10PSL11 + 15PSL11_EXTRA + ACL_11 + 3APFL_11 + 170CCL11;
CUSTOM11 = 10PSM11 + 15PSM11_EXTRA + ACM_11 + 3APFM_11 + 221CCM11;
CUSTOP11 = 10PSP11 + 15PSP11_EXTRA + ACP_11 + 3APFP_11 + 100CCP11;
CUSTOL12 = 10PSL12 + 15PSL12_EXTRA + ACL_12 + 3APFL_12 + 155CCL12;
CUSTOM12 = 10PSM12 + 15PSM12_EXTRA + ACM_12 + 3APFM_12 + 217CCM12;
CUSTOP12 = 10PSP12 + 15PSP12_EXTRA + ACP_12 + 3APFP_12 + 116CCP12;
• Mês de setembro:
O ficheiro input para o mês de Setembro é semelhante ao de Março sendo alterado apenas nas linhas de restrições de produção e produção extra.
//RESTRIÇÕES DE PRODUÇÃO PSL1+PSM1+PSP1 <= 30; PSL2+PSM2+PSP2 <= 30; PSL3+PSM3+PSP3 <= 30; PSL4+PSM4+PSP4 <= 30; PSL5+PSM5+PSP5 <= 30; PSL6+PSM6+PSP6 <= 30; PSL7+PSM7+PSP7 <= 30; PSL8+PSM8+PSP8 <= 30; PSL9+PSM9+PSP9 = 0; PSL10+PSM10+PSP10 <= 30; PSL11+PSM11+PSP11 <= 30; PSL12+PSM12+PSP12 <= 30; //Produção extra PSL1_EXTRA + PSM1_EXTRA + PSP1_EXTRA <= 6; PSL2_EXTRA + PSM2_EXTRA + PSP2_EXTRA <= 6; PSL3_EXTRA + PSM3_EXTRA + PSP3_EXTRA <= 6; PSL4_EXTRA + PSM4_EXTRA + PSP4_EXTRA <= 6; PSL5_EXTRA + PSM5_EXTRA + PSP5_EXTRA <= 6; PSL6_EXTRA + PSM6_EXTRA + PSP6_EXTRA <= 6; PSL7_EXTRA + PSM7_EXTRA + PSP7_EXTRA <= 6; PSL8_EXTRA + PSM8_EXTRA + PSP8_EXTRA <= 6; PSL9_EXTRA + PSM9_EXTRA + PSP9_EXTRA = 0; PSL10_EXTRA + PSM10_EXTRA + PSP10_EXTRA <= 6; PSL11_EXTRA + PSM11_EXTRA + PSP11_EXTRA <= 6; PSL12_EXTRA + PSM12_EXTRA + PSP12_EXTRA <= 6;
38
IV.3. Apresente o ficheiro de output produzido pelo programa (cut-and-paste)
• Mês de março:
Variables result
52334
ACL_1 16
ACL_10 3
ACL_11 0
ACL_12 16
ACL_2 0
ACL_3 0
ACL_4 0
ACL_5 0
ACL_6 19
ACL_7 0
ACL_8 16
ACL_9 0
ACL_I 16
ACM_1 8
ACM_10 13
ACM_11 0
ACM_12 8
ACM_2 0
ACM_3 30
ACM_4 29
ACM_5 9
ACM_6 9
ACM_7 8
ACM_8 8
ACM_9 0
ACM_I 8
ACP_1 0
ACP_10 0
ACP_11 6
ACP_12 6
ACP_2 0
ACP_3 0
ACP_4 1
ACP_5 0
ACP_6 2
ACP_7 0
ACP_8 6
ACP_9 0
ACP_I 6
APFL_1 11
APFL_10 7
APFL_11 0
APFL_12 20
APFL_2 18
APFL_3 9
APFL_4 16
APFL_5 0
APFL_6 0
APFL_7 0
APFL_8 0
APFL_9 0
APFL_I 20
APFM_1 5
APFM_10 0
APFM_11 8
APFM_12 10
APFM_2 8
APFM_3 3
APFM_4 8
APFM_5 20
APFM_6 11
APFM_7 10
APFM_8 0
APFM_9 0
APFM_I 10
APFP_1 12
APFP_10 0
APFP_11 14
APFP_12 10
APFP_2 14
APFP_3 10
APFP_4 5
APFP_5 0
APFP_6 6
APFP_7 0
APFP_8 0
APFP_9 0
APFP_I 10
CCL1 0
CCL10 22
CCL11 0
CCL12 45
CCL2 0
CCL3 0
CCL4 19
CCL5 0
CCL6 36
CCL7 0
CCL8 35
CCL9 0
CCM1 0
CCM10 19
CCM11 0
CCM12 15
CCM2 0
CCM3 30
CCM4 10
CCM5 0
CCM6 0
CCM7 8
CCM8 0
CCM9 0
CCP1 0
39
CCP10 5
CCP11 24
CCP12 0
CCP2 6
CCP3 0
CCP4 1
CCP5 0
CCP6 15
CCP7 0
CCP8 14
CCP9 0
CUSTOL1 49
CUSTOL10 3624
CUSTOL11 30
CUSTOL12 7341
CUSTOL2 214
CUSTOL3 27
CUSTOL4 3183
CUSTOL5 0
CUSTOL6 5769
CUSTOL7 190
CUSTOL8 5669
CUSTOL9 160
CUSTOM1 23
CUSTOM10 4177
CUSTOM11 174
CUSTOM12 3393
CUSTOM2 104
CUSTOM3 5649
CUSTOM4 2143
CUSTOM5 269
CUSTOM6 42
CUSTOM7 1816
CUSTOM8 8
CUSTOM9 80
CUSTOP1 96
CUSTOP10 590
CUSTOP11 2628
CUSTOP12 36
CUSTOP2 798
CUSTOP3 30
CUSTOP4 136
CUSTOP5 10
CUSTOP6 2070
CUSTOP7 20
CUSTOP8 1726
CUSTOP9 60
PSL1 0
PSL10 19
PSL10_EXTRA 0
PSL11 3
PSL11_EXTRA 0
PSL12 29
PSL12_EXTRA 0
PSL1_EXTRA 0
PSL2 16
PSL2_EXTRA 0
PSL3 0
PSL3_EXTRA 0
PSL4 19
PSL4_EXTRA 0
PSL5 0
PSL5_EXTRA 0
PSL6 17
PSL6_EXTRA 0
PSL7 19
PSL7_EXTRA 0
PSL8 19
PSL8_EXTRA 0
PSL9 16
PSL9_EXTRA 0
PSM1 0
PSM10 6
PSM10_EXTRA 0
PSM11 9
PSM11_EXTRA 4
PSM12 1
PSM12_EXTRA 6
PSM1_EXTRA 0
PSM2 8
PSM2_EXTRA 0
PSM3 0
PSM3_EXTRA 0
PSM4 11
PSM4_EXTRA 0
PSM5 20
PSM5_EXTRA 0
PSM6 0
PSM6_EXTRA 0
PSM7 9
PSM7_EXTRA 0
PSM8 0
PSM8_EXTRA 0
PSM9 8
PSM9_EXTRA 0
PSP1 6
PSP10 5
PSP10_EXTRA 0
PSP11 18
PSP11_EXTRA 0
PSP12 0
PSP12_EXTRA 0
PSP1_EXTRA 0
PSP2 6
PSP2_EXTRA 0
PSP3 0
PSP3_EXTRA 0
PSP4 0
PSP4_EXTRA 0
PSP5 1
PSP5_EXTRA 0
PSP6 13
PSP6_EXTRA 0
PSP7 2
PSP7_EXTRA 0
PSP8 8
PSP8_EXTRA 0
40
PSP9 6
PSP9_EXTRA 0
VSL1 9
VSL10 12
VSL11 10
VSL12 9
VSL2 9
VSL3 9
VSL4 12
VSL5 16
VSL6 17
VSL7 19
VSL8 19
VSL9 16
VSM1 5
VSM10 6
VSM11 5
VSM12 5
VSM2 5
VSM3 5
VSM4 6
VSM5 8
VSM6 9
VSM7 10
VSM8 10
VSM9 8
VSP1 4
VSP10 5
VSP11 4
VSP12 4
VSP2 4
VSP3 4
VSP4 5
VSP5 6
VSP6 7
VSP7 8
VSP8 8
VSP9 6
• Mês de setembro:
Variables result
52284
ACL_1 16
ACL_10 2
ACL_11 0
ACL_12 16
ACL_2 4
ACL_3 4
ACL_4 8
ACL_5 0
ACL_6 22
ACL_7 0
ACL_8 0
ACL_9 0
ACL_I 16
ACM_1 8
ACM_10 25
ACM_11 13
ACM_12 8
ACM_2 0
ACM_3 22
ACM_4 22
ACM_5 0
ACM_6 0
ACM_7 30
ACM_8 30
ACM_9 30
ACM_I 8
ACP_1 6
ACP_10 0
ACP_11 6
ACP_12 6
ACP_2 6
ACP_3 4
ACP_4 0
ACP_5 0
ACP_6 8
ACP_7 0
ACP_8 0
ACP_9 0
ACP_I 6
APFL_1 11
APFL_10 8
APFL_11 0
APFL_12 20
APFL_2 14
APFL_3 5
APFL_4 8
APFL_5 0
APFL_6 10
APFL_7 13
APFL_8 16
APFL_9 0
APFL_I 20
APFM_1 5
APFM_10 1
APFM_11 8
APFM_12 10
APFM_2 8
APFM_3 31
APFM_4 25
APFM_5 39
APFM_6 30
APFM_7 20
APFM_8 10
APFM_9 2
41
APFM_I 10
APFP_1 6
APFP_10 0
APFP_11 14
APFP_12 10
APFP_2 2
APFP_3 0
APFP_4 7
APFP_5 1
APFP_6 0
APFP_7 0
APFP_8 6
APFP_9 0
APFP_I 10
CCL1 0
CCL10 22
CCL11 0
CCL12 45
CCL2 0
CCL3 0
CCL4 19
CCL5 0
CCL6 49
CCL7 0
CCL8 22
CCL9 0
CCM1 0
CCM10 0
CCM11 0
CCM12 2
CCM2 0
CCM3 50
CCM4 0
CCM5 0
CCM6 0
CCM7 30
CCM8 0
CCM9 0
CCP1 0
CCP10 5
CCP11 24
CCP12 0
CCP2 0
CCP3 0
CCP4 8
CCP5 0
CCP6 14
CCP7 6,14E-13
CCP8 14
CCP9 0
CUSTOL1 49
CUSTOL10 3636
CUSTOL11 30
CUSTOL12 7341
CUSTOL2 166
CUSTOL3 19
CUSTOL4 3127
CUSTOL5 80
CUSTOL6 7932
CUSTOL7 259
CUSTOL8 3758
CUSTOL9 0
CUSTOM1 23
CUSTOM10 78
CUSTOM11 157
CUSTOM12 572
CUSTOM2 104
CUSTOM3 9745
CUSTOM4 97
CUSTOM5 337
CUSTOM6 90
CUSTOM7 6420
CUSTOM8 60
CUSTOM9 36
CUSTOP1 24
CUSTOP10 590
CUSTOP11 2628
CUSTOP12 36
CUSTOP2 12
CUSTOP3 24
CUSTOP4 1101
CUSTOP5 3
CUSTOP6 1860
CUSTOP7 80
CUSTOP8 1810
CUSTOP9 0
PSL1 0
PSL10 20
PSL10_EXTRA 0
PSL11 0
PSL11_EXTRA 2
PSL12 29
PSL12_EXTRA 0
PSL1_EXTRA 0
PSL2 12
PSL2_EXTRA 0
PSL3 0
PSL3_EXTRA 0
PSL4 15
PSL4_EXTRA 0
PSL5 8
PSL5_EXTRA 0
PSL6 24
PSL6_EXTRA 3
PSL7 22
PSL7_EXTRA 0
PSL8 16
PSL8_EXTRA 6
PSL9 0
PSL9_EXTRA 0
PSM1 0
PSM10 5
PSM10_EXTRA 0
PSM11 12
PSM11_EXTRA 0
PSM12 1
PSM12_EXTRA 6
42
PSM1_EXTRA 0
PSM2 8
PSM2_EXTRA 0
PSM3 28
PSM3_EXTRA 0
PSM4 0
PSM4_EXTRA 0
PSM5 22
PSM5_EXTRA 0
PSM6 0
PSM6_EXTRA 0
PSM7 0
PSM7_EXTRA 0
PSM8 0
PSM8_EXTRA 0
PSM9 0
PSM9_EXTRA 0
PSP1 0
PSP10 5
PSP10_EXTRA 0
PSP11 18
PSP11_EXTRA 0
PSP12 0
PSP12_EXTRA 0
PSP1_EXTRA 0
PSP2 0
PSP2_EXTRA 0
PSP3 2
PSP3_EXTRA 0
PSP4 12
PSP4_EXTRA 0
PSP5 0
PSP5_EXTRA 0
PSP6 6
PSP6_EXTRA 0
PSP7 8
PSP7_EXTRA 0
PSP8 14
PSP8_EXTRA 0
PSP9 0
PSP9_EXTRA 0
VSL1 9
VSL10 12
VSL11 10
VSL12 9
VSL2 9
VSL3 9
VSL4 12
VSL5 16
VSL6 17
VSL7 19
VSL8 19
VSL9 16
VSM1 5
VSM10 6
VSM11 5
VSM12 5
VSM2 5
VSM3 5
VSM4 6
VSM5 8
VSM6 9
VSM7 10
VSM8 10
VSM9 8
VSP1 4
VSP10 5
VSP11 4
VSP12 4
VSP2 4
VSP3 4
VSP4 5
VSP5 6
VSP6 7
VSP7 8
VSP8 8
VSP9 6
Parte V Partindo do modelo da Parte IV, considere agora que se pretende fazer um plano de produção em que, em cada período, apenas se produz um único tipo de sumo.
V.1. Formule este problema como um modelo de programação linear mista (i.e., usando variáveis binárias e variáveis reais). Explique detalhadamente o significado das novas restrições do modelo e da função objetivo do modelo. Teça todas as considerações que considere necessárias.
Para esta parte, uma vez que apenas se pretende produzir um único tipo de sumo por período (mês) foi necessário acrescentar variáveis binárias para a decisão de qual tipo de sumo produzir. Cada variável indica se devemos produzir (1) ou não (0) em cada mês. B[y][x], em que y representa o mês de 1 a 12 e x o tipo de sumo a produzir (L = laranja, M = maçã, P = pêra) foram os nomes escolhidos para as variáveis.
43
bin B1L, B2L, B3L, B4L, B5L, B6L, B7L, B8L, B9L, B10L, B11L, B12L,
B1M, B2M, B3M, B4M, B5M, B6M, B7M, B8M, B9M, B10M, B11M, B12M,
B1P, B2P, B3P, B4P, B5P, B6P, B7P, B8P, B9P, B10P, B11P, B12P;
Neste caso as restrições para a produção foram alteradas. Nestas novas restrições é indicado que a produção do sumo x no mês y terá que ser menor ou igual a 30 U.E. multiplicado pela variável de decisão. Então, caso se decida não produzir o tipo de sumo x (Byx=0), a produção desse sumo no mês y será PSxy <= 30 * 0, ou seja, PSxy <= 0. Pelo contrário, se se decidir produzir o sumo x (Byx=1), então a produção desse sumo no mês y será PSxy <= 30 * 1, ou seja, PSxy <= 30. Limitamos então a produção dos tipos de sumo a 0 U.E. ou a 30 U.E.
Para a produção extra usamos também o mesmo método (e mesmas variáveis binárias) mas desta vez limitando a produção a 0 U.E. ou a 6 U.E.
//RESTRIÇÕES DE PRODUÇÃO
PSxy <= 30Byx;
//Produção extra
PSxy_EXTRA <= 6Byx;
Como queremos produzir apenas um único tipo de sumo por mês devemos limitar a soma das variáveis binárias de cada mês e de cada produto a 1 tendo assim apenas uma variável a 1 e as restantes a 0 (ou então todas a 0). Com isto temos a certeza que ele apenas produzirá um único tipo de sumo em cada período.
//RESTRIÇÕES VARIÁVEIS BINÁRIAS
B1L + B1M + B1P <= 1;
B2L + B2M + B2P <= 1;
B3L + B3M + B3P <= 1;
B4L + B4M + B4P <= 1;
B5L + B5M + B5P <= 1;
B6L + B6M + B6P <= 1;
B7L + B7M + B7P <= 1;
B8L + B8M + B8P <= 1;
B9L + B9M + B9P <= 1;
B10L + B10M + B10P <= 1;
B11L + B11M + B11P <= 1;
B12L + B12M + B12P <= 1;
44
É considerado também que para este caso não haverá cortes de produção em nenhum mês.
V.2. Apresente o ficheiro de input (cut-and-paste)
/* Objective function */
min : CUSTOL1 + CUSTOL2 + CUSTOL3 + CUSTOL4 + CUSTOL5 + CUSTOL6 + CUSTOL7 + CUSTOL8 + CUSTOL9 + CUSTOL10 + CUSTOL11 + CUSTOL12 +CUSTOM1 + CUSTOM2 + CUSTOM3 + CUSTOM4 + CUSTOM5 + CUSTOM6 + CUSTOM7 + CUSTOM8 + CUSTOM9 + CUSTOM10 + CUSTOM11 + CUSTOM12 +CUSTOP1 + CUSTOP2 + CUSTOP3 + CUSTOP4 + CUSTOP5 + CUSTOP6 + CUSTOP7 + CUSTOP8 + CUSTOP9 + CUSTOP10 + CUSTOP11 + CUSTOP12;
/* Variable bounds */
// VENDAS [1 = JAN ... 12 = DEZ]
VSL1 = 9;
VSM1 = 5;
VSP1 = 4;
VSL2 = 9;
VSM2 = 5;
VSP2 = 4;
VSL3 = 9;
VSM3 = 5;
VSP3 = 4;
VSL4 = 12;
VSM4 = 6;
VSP4 = 5;
VSL5 = 16;
VSM5 = 8;
VSP5 = 6;
VSL6 = 17;
VSM6 = 9;
VSP6 = 7;
VSL7 = 19;
VSM7 = 10;
VSP7 = 8;
VSL8 = 19;
VSM8 = 10;
VSP8 = 8;
VSL9 = 16;
VSM9 = 8;
VSP9 = 6;
VSL10 = 12;
45
VSM10 = 6;
VSP10 = 5;
VSL11 = 10;
VSM11 = 5;
VSP11 = 4;
VSL12 = 9;
VSM12 = 5;
VSP12 = 4;
//VALORES INICIAIS DOS ARMAZÉNS
ACL_I = 16;
APFL_I = 20;
ACM_I = 8;
APFM_I = 10;
ACP_I = 6;
APFP_I = 10;
// JANEIRO ACL_1 = ACL_I + CCL1 - PSL1 - PSL1_EXTRA; APFL_1 = APFL_I + PSL1 + PSL1_EXTRA - VSL1; ACM_1 = ACM_I + CCM1 - PSM1 - PSM1_EXTRA; APFM_1 = APFM_I + PSM1 + PSM1_EXTRA - VSM1; ACP_1 = ACP_I + CCP1 - PSP1 - PSP1_EXTRA; APFP_1 = APFP_I + PSP1 + PSP1_EXTRA - VSP1;
// FEVEREIRO ACL_2 = ACL_1 + CCL2 - PSL2 - PSL2_EXTRA; APFL_2 = APFL_1 + PSL2 + PSL2_EXTRA - VSL2; ACM_2 = ACM_1 + CCM2 - PSM2 - PSM2_EXTRA; APFM_2 = APFM_1 + PSM2 + PSM2_EXTRA - VSM2; ACP_2 = ACP_1 + CCP2 - PSP2 - PSP2_EXTRA; APFP_2 = APFP_1 + PSP2 + PSP2_EXTRA - VSP2; // MARÇO ACL_3 = ACL_2 + CCL3 - PSL3 - PSL3_EXTRA; APFL_3 = APFL_2 + PSL3 + PSL3_EXTRA - VSL3; ACM_3 = ACM_2 + CCM3 - PSM3 - PSM3_EXTRA; APFM_3 = APFM_2 + PSM3 + PSM3_EXTRA - VSM3; ACP_3 = ACP_2 + CCP3 - PSP3 - PSP3_EXTRA; APFP_3 = APFP_2 + PSP3 + PSP3_EXTRA - VSP3; // ABRIL ACL_4 = ACL_3 + CCL4 - PSL4 - PSL4_EXTRA; APFL_4 = APFL_3 + PSL4 + PSL4_EXTRA - VSL4; ACM_4 = ACM_3 + CCM4 - PSM4 - PSM4_EXTRA; APFM_4 = APFM_3 + PSM4 + PSM4_EXTRA - VSM4;
46
ACP_4 = ACP_3 + CCP4 - PSP4 - PSP4_EXTRA; APFP_4 = APFP_3 + PSP4 + PSP4_EXTRA - VSP4; // MAIO ACL_5 = ACL_4 + CCL5 - PSL5 - PSL5_EXTRA; APFL_5 = APFL_4 + PSL5 + PSL5_EXTRA - VSL5; ACM_5 = ACM_4 + CCM5 - PSM5 - PSM5_EXTRA; APFM_5 = APFM_4 + PSM5 + PSM5_EXTRA - VSM5; ACP_5 = ACP_4 + CCP5 - PSP5 - PSP5_EXTRA; APFP_5 = APFP_4 + PSP5 + PSP5_EXTRA - VSP5; // JUNHO ACL_6 = ACL_5 + CCL6 - PSL6 - PSL6_EXTRA; APFL_6 = APFL_5 + PSL6 + PSL6_EXTRA - VSL6; ACM_6 = ACM_5 + CCM6 - PSM6 - PSM6_EXTRA; APFM_6 = APFM_5 + PSM6 + PSM6_EXTRA - VSM6; ACP_6 = ACP_5 + CCP6 - PSP6 - PSP6_EXTRA; APFP_6 = APFP_5 + PSP6 + PSP6_EXTRA - VSP6; // JULHO ACL_7 = ACL_6 + CCL7 - PSL7 - PSL7_EXTRA; APFL_7 = APFL_6 + PSL7 + PSL7_EXTRA - VSL7; ACM_7 = ACM_6 + CCM7 - PSM7 - PSM7_EXTRA; APFM_7 = APFM_6 + PSM7 + PSM7_EXTRA - VSM7; ACP_7 = ACP_6 + CCP7 - PSP7 - PSP7_EXTRA; APFP_7 = APFP_6 + PSP7 + PSP7_EXTRA - VSP7; // AGOSTO ACL_8 = ACL_7 + CCL8 - PSL8 - PSL8_EXTRA; APFL_8 = APFL_7 + PSL8 + PSL8_EXTRA - VSL8; ACM_8 = ACM_7 + CCM8 - PSM8 - PSM8_EXTRA; APFM_8 = APFM_7 + PSM8 + PSM8_EXTRA - VSM8; ACP_8 = ACP_7 + CCP8 - PSP8 - PSP8_EXTRA; APFP_8 = APFP_7 + PSP8 + PSP8_EXTRA - VSP8; // SETEMBRO ACL_9 = ACL_8 + CCL9 - PSL9 - PSL9_EXTRA; APFL_9 = APFL_8 + PSL9 + PSL9_EXTRA - VSL9; ACM_9 = ACM_8 + CCM9 - PSM9 - PSM9_EXTRA; APFM_9 = APFM_8 + PSM9 + PSM9_EXTRA - VSM9; ACP_9 = ACP_8 + CCP9 - PSP9 - PSP9_EXTRA; APFP_9 = APFP_8 + PSP9 + PSP9_EXTRA - VSP9; // OUTUBRO ACL_10 = ACL_9 + CCL10 - PSL10 - PSL10_EXTRA; APFL_10 = APFL_9 + PSL10 + PSL10_EXTRA - VSL10; ACM_10 = ACM_9 + CCM10 - PSM10 - PSM10_EXTRA; APFM_10 = APFM_9 + PSM10 + PSM10_EXTRA - VSM10; ACP_10 = ACP_9 + CCP10 - PSP10 - PSP10_EXTRA; APFP_10 = APFP_9 + PSP10 + PSP10_EXTRA - VSP10; // NOVEMBRO
47
ACL_11 = ACL_10 + CCL11 - PSL11 - PSL11_EXTRA; APFL_11 = APFL_10 + PSL11 + PSL11_EXTRA - VSL11; ACM_11 = ACM_10 + CCM11 - PSM11 - PSM11_EXTRA; APFM_11 = APFM_10 + PSM11 + PSM11_EXTRA - VSM11; ACP_11 = ACP_10 + CCP11 - PSP11 - PSP11_EXTRA; APFP_11 = APFP_10 + PSP11 + PSP11_EXTRA - VSP11;
// DEZEMBRO ACL_12 = ACL_11 + CCL12 - PSL12 - PSL12_EXTRA; APFL_12 = APFL_11 + PSL12 + PSL12_EXTRA - VSL12; ACM_12 = ACM_11 + CCM12 - PSM12 - PSM12_EXTRA; APFM_12 = APFM_11 + PSM12 + PSM12_EXTRA - VSM12; ACP_12 = ACP_11 + CCP12 - PSP12 - PSP12_EXTRA; APFP_12 = APFP_11 + PSP12 + PSP12_EXTRA - VSP12; // RESTRIÇÕES QUANTIDADES ARMAZÉNS ACL_1 + ACM_1 + ACP_1 <= 30; APFL_1 + APFM_1 + APFP_1 <= 40; ACL_2 + ACM_2 + ACP_2 <= 30; APFL_2 + APFM_2 + APFP_2 <= 40; ACL_3 + ACM_3 + ACP_3 <= 30; APFL_3 + APFM_3 + APFP_3 <= 40; ACL_4 + ACM_4 + ACP_4 <= 30; APFL_4 + APFM_4 + APFP_4 <= 40; ACL_5 + ACM_5 + ACP_5 <= 30; APFL_5 + APFM_5 + APFP_5 <= 40; ACL_6 + ACM_6 + ACP_6 <= 30; APFL_6 + APFM_6 + APFP_6 <= 40; ACL_7 + ACM_7 + ACP_7 <= 30; APFL_7 + APFM_7 + APFP_7 <= 40; ACL_8 + ACM_8 + ACP_8 <= 30; APFL_8 + APFM_8 + APFP_8 <= 40; ACL_9 + ACM_9 + ACP_9 <= 30; APFL_9 + APFM_9 + APFP_9 <= 40; ACL_10 + ACM_10 + ACP_10 <= 30; APFL_10 + APFM_10 + APFP_10 <= 40; ACL_11 + ACM_11 + ACP_11 <= 30; APFL_11 + APFM_11 + APFP_11 <= 40; ACL_12 + ACM_12 + ACP_12 <= 30; APFL_12 + APFM_12 + APFP_12 <= 40;
ACL_12 = ACL_I; ACM_12 = ACM_I; ACP_12 = ACP_I; APFL_12 = APFL_I; APFM_12 = APFM_I; APFP_12 = APFP_I;
48
//RESTRIÇÕES DE PRODUÇÃO
PSL1 <= 30B1L;
PSL2 <= 30B2L;
PSL3 <= 30B3L;
PSL4 <= 30B4L;
PSL5 <= 30B5L;
PSL6 <= 30B6L;
PSL7 <= 30B7L;
PSL8 <= 30B8L;
PSL9 <= 30B9L;
PSL10 <= 30B10L;
PSL11 <= 30B11L;
PSL12 <= 30B12L;
PSM1 <= 30B1M;
PSM2 <= 30B2M;
PSM3 <= 30B3M;
PSM4 <= 30B4M;
PSM5 <= 30B5M;
PSM6 <= 30B6M;
PSM7 <= 30B7M;
PSM8 <= 30B8M;
PSM9 <= 30B9M;
PSM10 <= 30B10M;
PSM11 <= 30B11M;
PSM12 <= 30B12M;
PSP1 <= 30B1P;
PSP2 <= 30B2P;
PSP3 <= 30B3P;
PSP4 <= 30B4P;
PSP5 <= 30B5P;
PSP6 <= 30B6P;
PSP7 <= 30B7P;
PSP8 <= 30B8P;
PSP9 <= 30B9P;
PSP10 <= 30B10P;
PSP11 <= 30B11P;
PSP12 <= 30B12P;
49
//RESTRIÇÕES VARIÁVEIS BINÁRIAS
B1L + B1M + B1P <= 1;
B2L + B2M + B2P <= 1;
B3L + B3M + B3P <= 1;
B4L + B4M + B4P <= 1;
B5L + B5M + B5P <= 1;
B6L + B6M + B6P <= 1;
B7L + B7M + B7P <= 1;
B8L + B8M + B8P <= 1;
B9L + B9M + B9P <= 1;
B10L + B10M + B10P <= 1;
B11L + B11M + B11P <= 1;
B12L + B12M + B12P = 1;
//Produção extra
PSL1_EXTRA <= 6B1L;
PSL2_EXTRA <= 6B2L;
PSL3_EXTRA <= 6B3l;
PSL4_EXTRA <= 6B4L;
PSL5_EXTRA <= 6B5L;
PSL6_EXTRA <= 6B6L;
PSL7_EXTRA <= 6B7L;
PSL8_EXTRA <= 6B8L;
PSL9_EXTRA <= 6B9L;
PSL10_EXTRA <= 6B10L;
PSL11_EXTRA <= 6B11L;
PSL12_EXTRA <= 6B12L;
PSM1_EXTRA <= 6B1M;
PSM2_EXTRA <= 6B2M;
PSM3_EXTRA <= 6B3M;
PSM4_EXTRA <= 6B4M;
PSM5_EXTRA <= 6B5M;
PSM6_EXTRA <= 6B6M;
PSM7_EXTRA <= 6B7M;
PSM8_EXTRA <= 6B8M;
PSM9_EXTRA <= 6B9M;
PSM10_EXTRA <= 6B10M;
PSM11_EXTRA <= 6B11M;
PSM12_EXTRA <= 6B12M;
50
PSP1_EXTRA <= 6B1P;
PSP2_EXTRA <= 6B2P;
PSP3_EXTRA <= 6B3P;
PSP4_EXTRA <= 6B4P;
PSP5_EXTRA <= 6B5P;
PSP6_EXTRA <= 6B6P;
PSP7_EXTRA <= 6B7P;
PSP8_EXTRA <= 6B8P;
PSP9_EXTRA <= 6B9P;
PSP10_EXTRA <= 6B10P;
PSP11_EXTRA <= 6B11P;
PSP12_EXTRA <= 6B12P;
//CUSTOS DE CADA MÊS
CUSTOL1 = 10PSL1 + 15PSL1_EXTRA + ACL_1 + 3APFL_1 + 170CCL1;
CUSTOM1 = 10PSM1 + 15PSM1_EXTRA + ACM_1 + 3APFM_1 + 231CCM1;
CUSTOP1 = 10PSP1 + 15PSP1_EXTRA + ACP_1 + 3APFP_1 + 116CCP1;
CUSTOL2 = 10PSL2 + 15PSL2_EXTRA + ACL_2 + 3APFL_2 + 155CCL2;
CUSTOM2 = 10PSM2 + 15PSM2_EXTRA + ACM_2 + 3APFM_2 + 199CCM2;
CUSTOP2 = 10PSP2 + 15PSP2_EXTRA + ACP_2 + 3APFP_2 + 116CCP2;
CUSTOL3 = 10PSL3 + 15PSL3_EXTRA + ACL_3 + 3APFL_3 + 170CCL3;
CUSTOM3 = 10PSM3 + 15PSM3_EXTRA + ACM_3 + 3APFM_3 + 187CCM3;
CUSTOP3 = 10PSP3 + 15PSP3_EXTRA + ACP_3 + 3APFP_3 + 124CCP3;
CUSTOL4 = 10PSL4 + 15PSL4_EXTRA + ACL_4 + 3APFL_4 + 155CCL4;
CUSTOM4 = 10PSM4 + 15PSM4_EXTRA + ACM_4 + 3APFM_4 + 198CCM4;
CUSTOP4 = 10PSP4 + 15PSP4_EXTRA + ACP_4 + 3APFP_4 + 120CCP4;
CUSTOL5 = 10PSL5 + 15PSL5_EXTRA + ACL_5 + 3APFL_5 + 170CCL5;
CUSTOM5 = 10PSM5 + 15PSM5_EXTRA + ACM_5 + 3APFM_5 + 210CCM5;
CUSTOP5 = 10PSP5 + 15PSP5_EXTRA + ACP_5 + 3APFP_5 + 132CCP5;
CUSTOL6 = 10PSL6 + 15PSL6_EXTRA + ACL_6 + 3APFL_6 + 155CCL6;
CUSTOM6 = 10PSM6 + 15PSM6_EXTRA + ACM_6 + 3APFM_6 + 208CCM6;
CUSTOP6 = 10PSP6 + 15PSP6_EXTRA + ACP_6 + 3APFP_6 + 128CCP6;
51
CUSTOL7 = 10PSL7 + 15PSL7_EXTRA + ACL_7 + 3APFL_7 + 170CCL7;
CUSTOM7 = 10PSM7 + 15PSM7_EXTRA + ACM_7 + 3APFM_7 + 211CCM7;
CUSTOP7 = 10PSP7 + 15PSP7_EXTRA + ACP_7 + 3APFP_7 + 136CCP7;
CUSTOL8 = 12PSL8 + 18PSL8_EXTRA + ACL_8 + 3APFL_8 + 155CCL8;
CUSTOM8 = 12PSM8 + 18PSM8_EXTRA + ACM_8 + 3APFM_8 + 220CCM8;
CUSTOP8 = 12PSP8 + 18PSP8_EXTRA + ACP_8 + 3APFP_8 + 116CCP8;
CUSTOL9 = 10PSL9 + 15PSL9_EXTRA + ACL_9 + 3APFL_9 + 170CCL9;
CUSTOM9 = 10PSM9 + 15PSM9_EXTRA + ACM_9 + 3APFM_9 + 217CCM9;
CUSTOP9 = 10PSP9 + 15PSP9_EXTRA + ACP_9 + 3APFP_9 + 120CCP9;
CUSTOL10 = 10PSL10 + 15PSL10_EXTRA + ACL_10 + 3APFL_10 + 155CCL10;
CUSTOM10 = 10PSM10 + 15PSM10_EXTRA + ACM_10 + 3APFM_10 + 216CCM10;
CUSTOP10 = 10PSP10 + 15PSP10_EXTRA + ACP_10 + 3APFP_10 + 108CCP10;
CUSTOL11 = 10PSL11 + 15PSL11_EXTRA + ACL_11 + 3APFL_11 + 170CCL11;
CUSTOM11 = 10PSM11 + 15PSM11_EXTRA + ACM_11 + 3APFM_11 + 221CCM11;
CUSTOP11 = 10PSP11 + 15PSP11_EXTRA + ACP_11 + 3APFP_11 + 100CCP11;
CUSTOL12 = 10PSL12 + 15PSL12_EXTRA + ACL_12 + 3APFL_12 + 155CCL12;
CUSTOM12 = 10PSM12 + 15PSM12_EXTRA + ACM_12 + 3APFM_12 + 217CCM12;
CUSTOP12 = 10PSP12 + 15PSP12_EXTRA + ACP_12 + 3APFP_12 + 116CCP12;
bin B1L, B2L, B3L, B4L, B5L, B6L, B7L, B8L, B9L, B10L, B11L, B12L,
B1M, B2M, B3M, B4M, B5M, B6M, B7M, B8M, B9M, B10M, B11M, B12M,
B1P, B2P, B3P, B4P, B5P, B6P, B7P, B8P, B9P, B10P, B11P, B12P;
V.3. Apresente o ficheiro de output produzido pelo programa (cut-and-paste)
Variables MILP Feasible MILP Better MILP Better2 MILP Better3 result
53153 53000 52980 52820 52820
ACL_1 16 16 16 4 4
ACL_10 0 0 0 0 0
ACL_11 0 0 0 0 0
ACL_12 16 16 16 16 16
ACL_2 0 4 5 4 4
ACL_3 0 4 0 4 4
ACL_4 0 0 0 0 0
ACL_5 0 0 0 0 0
52
ACL_6 0 0 0 0 0
ACL_7 0 0 0 0 0
ACL_8 0 0 0 0 0
ACL_9 0 0 0 0 0
ACL_I 16 16 16 16 16
ACM_1 0 8 8 8 8
ACM_10 0 20 0 0 0
ACM_11 0 0 0 0 0
ACM_12 8 8 8 8 8
ACM_2 0 8 8 8 8
ACM_3 30 26 26 26 26
ACM_4 30 26 30 30 30
ACM_5 0 26 0 3 3
ACM_6 4 30 4 3 3
ACM_7 30 1 30 30 30
ACM_8 30 1 30 30 30
ACM_9 0 1 0 0 0
ACM_I 8 8 8 8 8
ACP_1 6 0 4 6 6
ACP_10 0 0 0 0 0
ACP_11 6 6 6 6 6
ACP_12 6 6 6 6 6
ACP_2 21 0 4 0 0
ACP_3 0 0 4 0 0
ACP_4 0 4 0 0 0
ACP_5 0 0 0 0 0
ACP_6 26 0 26 27 27
ACP_7 0 0 0 0 0
ACP_8 0 29 0 0 0
ACP_9 0 0 0 0 0
ACP_I 6 6 6 6 6
APFL_1 11 11 11 23 23
APFL_10 10 10 10 10 10
APFL_11 0 0 0 0 0
APFL_12 20 20 20 20 20
APFL_2 18 14 32 14 14
APFL_3 9 5 28 5 5
APFL_4 16 16 16 16 16
APFL_5 0 0 0 0 0
APFL_6 19 19 19 19 19
APFL_7 0 0 0 0 0
APFL_8 16 16 16 16 16
APFL_9 0 0 0 0 0
APFL_I 20 20 20 20 20
APFM_1 17 5 5 5 5
53
APFM_10 20 0 20 20 20
APFM_11 15 15 15 15 15
APFM_12 10 10 10 10 10
APFM_2 12 0 0 0 0
APFM_3 7 28 12 17 17
APFM_4 1 22 6 11 11
APFM_5 29 14 29 30 30
APFM_6 20 5 20 21 21
APFM_7 10 24 10 11 11
APFM_8 0 14 0 1 1
APFM_9 26 6 26 26 26
APFM_I 10 10 10 10 10
APFP_1 6 15 8 6 6
APFP_10 0 18 0 0 0
APFP_11 14 14 14 14 14
APFP_12 10 10 10 10 10
APFP_2 2 11 4 22 22
APFP_3 19 7 0 18 18
APFP_4 14 2 14 13 13
APFP_5 8 23 8 7 7
APFP_6 1 16 1 0 0
APFP_7 19 8 19 19 19
APFP_8 11 0 11 11 11
APFP_9 5 23 5 5 5
APFP_I 10 10 10 10 10
B10L 1 1 1 1 1
B10M 0 0 0 0 0
B10P 0 0 0 0 0
B11L 0 0 0 0 0
B11M 0 1 0 0 0
B11P 1 0 1 1 1
B12L 1 1 1 1 1
B12M 0 0 0 0 0
B12P 0 0 0 0 0
B1L 0 0 0 1 1
B1M 1 0 0 0 0
B1P 0 1 1 0 0
B2L 1 1 1 0 0
B2M 0 0 0 0 0
B2P 0 0 0 1 1
B3L 0 0 0 0 0
B3l 0 0 0,833333333 0 0
B3M 0 1 1 1 1
B3P 1 0 0 0 0
B4L 1 1 0 1 1
54
B4M 0 0 0 0 0
B4P 0 0 1 0 0
B5L 0 0 0 0 0
B5M 1 0 1 1 1
B5P 0 1 0 0 0
B6L 1 1 1 1 1
B6M 0 0 0 0 0
B6P 0 0 0 0 0
B7L 0 0 0 0 0
B7M 0 1 0 0 0
B7P 1 0 1 1 1
B8L 1 1 1 1 1
B8M 0 0 0 0 0
B8P 0 0 0 0 0
B9L 0 0 0 0 0
B9M 1 0 1 1 1
B9P 0 1 0 0 0
CCL1 0 0 0 0 0
CCL10 22 22 22 22 22
CCL11 0 0 0 0 0
CCL12 45 45 45 45 45
CCL2 0 0 19 0 0
CCL3 0 0 0 0 0
CCL4 19 19 0 19 19
CCL5 0 0 0 0 0
CCL6 36 36 36 36 36
CCL7 0 0 0 0 0
CCL8 35 35 35 35 35
CCL9 0 0 0 0 0
CCM1 4 0 0 0 0
CCM10 0 19 0 0 0
CCM11 0 0 0 0 0
CCM12 8 8 8 8 8
CCM2 0 0 0 0 0
CCM3 30 51 35 40 40
CCM4 0 0 4 4 4
CCM5 6 0 1 0 0
CCM6 4 4 4 0 0
CCM7 26 0 26 27 27
CCM8 0 0 0 0 0
CCM9 4 0 4 3 3
CCP1 0 3 0 0 0
CCP10 0 0 0 0 0
CCP11 24 6 24 24 24
CCP12 0 0 0 0 0
55
CCP2 15 0 0 14 14
CCP3 0 0 0 0 0
CCP4 0 4 15 0 0
CCP5 0 23 0 0 0
CCP6 26 0 26 27 27
CCP7 0 0 0 0 0
CCP8 0 29 0 0 0
CCP9 0 0 0 0 0
CUSTOL1 49 49 49 193 193
CUSTOL10 3660 3660 3660 3660 3660
CUSTOL11 0 0 0 0 0
CUSTOL12 7341 7341 7341 7341 7341
CUSTOL2 214 166 3346 46 46
CUSTOL3 27 19 159 19 19
CUSTOL4 3183 3223 48 3223 3223
CUSTOL5 0 0 0 0 0
CUSTOL6 6027 6027 6027 6027 6027
CUSTOL7 0 0 0 0 0
CUSTOL8 5923 5923 5923 5923 5923
CUSTOL9 0 0 0 0 0
CUSTOM1 1095 23 23 23 23
CUSTOM10 60 4124 60 60 60
CUSTOM11 45 245 45 45 45
CUSTOM12 1774 1774 1774 1774 1774
CUSTOM2 36 8 8 8 8
CUSTOM3 5661 9992 6777 7777 7777
CUSTOM4 33 92 840 855 855
CUSTOM5 1737 68 612 363 363
CUSTOM6 896 877 896 66 66
CUSTOM7 5546 363 5546 5760 5760
CUSTOM8 30 43 30 33 33
CUSTOM9 1306 19 1306 1074 1074
CUSTOP1 24 483 48 24 24
CUSTOP10 0 54 0 0 0
CUSTOP11 2628 648 2628 2628 2628
CUSTOP12 36 36 36 36 36
CUSTOP2 1767 33 16 1890 1890
CUSTOP3 267 21 4 54 54
CUSTOP4 42 490 2032 39 39
CUSTOP5 24 3375 24 21 21
CUSTOP6 3357 48 3357 3483 3483
CUSTOP7 317 24 317 327 327
CUSTOP8 33 3393 33 33 33
CUSTOP9 15 359 15 15 15
PSL1 0 0 0 12 12
56
PSL10 22 22 22 22 22
PSL10_EXTRA 0 0 0 0 0
PSL11 0 0 0 0 0
PSL11_EXTRA 0 0 0 0 0
PSL12 29 29 29 29 29
PSL12_EXTRA 0 0 0 0 0
PSL1_EXTRA 0 0 0 0 0
PSL2 16 12 30 0 0
PSL2_EXTRA 0 0 0 0 0
PSL3 0 0 0 0 0
PSL3_EXTRA 0 0 5 0 0
PSL4 19 23 0 23 23
PSL4_EXTRA 0 0 0 0 0
PSL5 0 0 0 0 0
PSL5_EXTRA 0 0 0 0 0
PSL6 30 30 30 30 30
PSL6_EXTRA 6 6 6 6 6
PSL7 0 0 0 0 0
PSL7_EXTRA 0 0 0 0 0
PSL8 30 30 30 30 30
PSL8_EXTRA 5 5 5 5 5
PSL9 0 0 0 0 0
PSL9_EXTRA 0 0 0 0 0
PSM1 12 0 0 0 0
PSM10 0 0 0 0 0
PSM10_EXTRA 0 0 0 0 0
PSM11 0 20 0 0 0
PSM11_EXTRA 0 0 0 0 0
PSM12 0 0 0 0 0
PSM12_EXTRA 0 0 0 0 0
PSM1_EXTRA 0 0 0 0 0
PSM2 0 0 0 0 0
PSM2_EXTRA 0 0 0 0 0
PSM3 0 30 17 22 22
PSM3_EXTRA 0 3 0 0 0
PSM4 0 0 0 0 0
PSM4_EXTRA 0 0 0 0 0
PSM5 30 0 30 27 27
PSM5_EXTRA 6 0 1 0 0
PSM6 0 0 0 0 0
PSM6_EXTRA 0 0 0 0 0
PSM7 0 29 0 0 0
PSM7_EXTRA 0 0 0 0 0
PSM8 0 0 0 0 0
PSM8_EXTRA 0 0 0 0 0
57
PSM9 30 0 30 30 30
PSM9_EXTRA 4 0 4 3 3
PSP1 0 9 2 0 0
PSP10 0 0 0 0 0
PSP10_EXTRA 0 0 0 0 0
PSP11 18 0 18 18 18
PSP11_EXTRA 0 0 0 0 0
PSP12 0 0 0 0 0
PSP12_EXTRA 0 0 0 0 0
PSP1_EXTRA 0 0 0 0 0
PSP2 0 0 0 20 20
PSP2_EXTRA 0 0 0 0 0
PSP3 21 0 0 0 0
PSP3_EXTRA 0 0 0 0 0
PSP4 0 0 19 0 0
PSP4_EXTRA 0 0 0 0 0
PSP5 0 27 0 0 0
PSP5_EXTRA 0 0 0 0 0
PSP6 0 0 0 0 0
PSP6_EXTRA 0 0 0 0 0
PSP7 26 0 26 27 27
PSP7_EXTRA 0 0 0 0 0
PSP8 0 0 0 0 0
PSP8_EXTRA 0 0 0 0 0
PSP9 0 29 0 0 0
PSP9_EXTRA 0 0 0 0 0
VSL1 9 9 9 9 9
VSL10 12 12 12 12 12
VSL11 10 10 10 10 10
VSL12 9 9 9 9 9
VSL2 9 9 9 9 9
VSL3 9 9 9 9 9
VSL4 12 12 12 12 12
VSL5 16 16 16 16 16
VSL6 17 17 17 17 17
VSL7 19 19 19 19 19
VSL8 19 19 19 19 19
VSL9 16 16 16 16 16
VSM1 5 5 5 5 5
VSM10 6 6 6 6 6
VSM11 5 5 5 5 5
VSM12 5 5 5 5 5
VSM2 5 5 5 5 5
VSM3 5 5 5 5 5
VSM4 6 6 6 6 6
58
VSM5 8 8 8 8 8
VSM6 9 9 9 9 9
VSM7 10 10 10 10 10
VSM8 10 10 10 10 10
VSM9 8 8 8 8 8
VSP1 4 4 4 4 4
VSP10 5 5 5 5 5
VSP11 4 4 4 4 4
VSP12 4 4 4 4 4
VSP2 4 4 4 4 4
VSP3 4 4 4 4 4
VSP4 5 5 5 5 5
VSP5 6 6 6 6 6
VSP6 7 7 7 7 7
VSP7 8 8 8 8 8
VSP8 8 8 8 8 8
VSP9 6 6 6 6 6
V.4. Apresente o plano detalhado de produção, indicando, em redes separadas para cada tipo de sumo, as quantidades a comprar, a produzir, a armazenar (nos armazéns de matérias primas e de produtos acabados) e a entregar em cada período.
Laranja
Quantidade a comprar
Quantidade a produzir
Quantidade a armazenar de concentrado
Quantidade armazenar de
sumo
Quantidade a entregar em cada período
normal extra
Janeiro 0 12 0 4 23 9
Fevereiro 0 0 0 4 14 9
Março 0 0 0 4 5 9
Abril 19 23 0 0 16 12
Maio 0 0 0 0 0 16
Junho 36 30 6 0 19 17
Julho 0 0 0 0 0 19
Agosto 35 30 5 0 16 19
Setembro 0 0 0 0 0 16
Outubro 22 22 0 0 10 12
59
Novembro 0 0 0 0 0 10
Dezembro 45 29 0 16 20 9
Maçã
Quantidade a comprar
Quantidade a produzir
Quantidade a armazenar de concentrado
Quantidade armazenar de
sumo
Quantidade a entregar em cada período
normal Extra
Janeiro 0 0 0 8 5 5
Fevereiro 0 0 0 8 0 5
Março 40 22 0 26 17 5
Abril 4 0 0 30 11 6
Maio 0 27 0 3 30 8
Junho 0 0 0 3 21 9
Julho 27 0 0 30 11 10
Agosto 0 0 0 30 1 10
Setembro 3 30 3 0 26 8
Outubro 0 0 0 0 20 6
Novembro 0 0 0 0 15 5
Dezembro 8 0 0 8 10 5
Pera
Quantidade a comprar
Quantidade a produzir
Quantidade a armazenar de concentrado
Quantidade armazenar de
sumo
Quantidade a entregar em cada período
normal Extra
Janeiro 0 0 0 6 6 4
Fevereiro 14 20 0 0 22 4
60
Março 0 0 0 0 18 4
Abril 0 0 0 0 13 5
Maio 0 0 0 0 7 6
Junho 27 0 0 27 0 7
Julho 0 27 0 0 19 8
Agosto 0 0 0 0 11 8
Setembro 0 0 0 0 5 6
Outubro 0 0 0 0 0 5
Novembro 24 18 0 6 14 4
Dezembro 0 0 0 6 10 4
V.5. Verifique que a solução é admissível e que os custos estão corretos. Apresente evidência sumária do trabalho de validação do modelo.
Com este modelo podemos concluir que :
No mês de Janeiro só se produz sumo de laranja
No mês de Fevereiro só se produz sumo de pêra
No mês de Março só se produz sumo de maça
No mês de Abril só se produz sumo de laranja
No mês de Maio só se produz sumo de maça
No mês de Junho só se produz sumo de laranja
No mês de Julho só se produz sumo de pêra
No mês de Agosto só se produz sumo de laranja
No mês de Setembro só se produz sumo de maça
No mês de Outubro só se produz sumo de laranja
No mês de Novembro só se produz sumo de pêra
No mês de Dezembro só se produz sumo de laranja
Custo de concentrado:
Laranja=170CCL1+155CCL2+170CCL3+155CCL4+170CCL5+155CCL6+170CCL7+155CCL8+170CCL9+155CCL10+170CCL11+155CCL12;
Maçã=231CCM1+199CCM2+187CCM3+198CCM4+210CCM5+208CCM6+211CCM7+220CCM8+217CCM9+216CCM10+221CCM11+217CCM12;
61
Pera=116CCP1+116CCP2+124CCP3+120CCP4+132CCP5+128CCP6+136CCP7+116CCP8+120CCP9+108CCP10+100CCP11+116CCP12,
o que implica que:
Laranja: 155*19+155*36+155*35+155*22+155*45 = 24335
Maçã: 187*40+198*4+211*27+217*3+217*8 = 16356
Pera: 116*14+128*27+100*24 = 7480
Custo total: 24335+16356+7480=48171
Custo de produção:
Laranja=10PSL1+10PSL2+10PSL3+10PSL4+10PSL5+10PSL6+15PSL6_EXTRA+10PSL7+12PSL8+18PSL8_EXTRA+10PSL9+10PSL10+10PSL11+10PSL12;
Maçã=10PSM1+10PSM2+10PSM3+10PSM4+10PSM5+10PSM6+10PSM7+12PSM8+10PSM9+15PSM9_EXTRA+10PSM10+10PSM11+10PSM12;
Pera=10PSP1+10PSP2+10PSP3+10PSP4+10PSP5+10PSP6+10PSP7+10PSP8+10PSP9+10PSP10+10PSP11+10PSP12, o que implica que:
Laranjas: 12*10+23*10+30*10+6*15+30*12+5*18+22*10+29*10 = 1700
Maçãs : 22*10+27*10+30*10+15*3 = 835
Peras: 20*10+27*10+18*10 = 650
Custo total: 1700+835+650 = 3185
Custo de armazenamento:
Concentrado Laranjas:4+4+4+16 = 28 Maçãs: 8+8+26+30+3+3+30+30+8 = 146 Peras: 6+27+6+6 = 45 Custo total: 28+146+45 = 219
Sumo Laranja: 23*3+14*3+5*3+16*3+19*3+16*3+10*3+20*3 = 369 Maçã: 5*3+17*3+11*3+30*3+21*3+11*3+1*3+26*3+20*3+15*3+10*3 = 501 Pera: 6*3+22*3+18*3+13*3+7*3+19*3+11*3+5*3+14*3+10*3 = 375 Custo total: 369+501+375 = 1245
Custo total:219+1245 = 1464
Portanto: 48171+3185+1464=52820 c.q.d.
62
Conclusão
Este trabalho permitiu-nos analisar diferentes tipos de cenários, que nos permitiram saber as quantidades a comprar, a produzir e a armazenar de cada matéria prima, em cada período.
No primeiro cenário, correspondente à parte I, obtivemos um custo total de 52105 U.M., fizemos um modelo que respeitava as condições iniciais do enunciado.
No segundo cenário, correspondente à parte II, obtivemos um custo total de 52182 U.M., neste modelo houve uma paragem de 15 dias, o que fez com que a capacidade de produção fosse reduzida a metade, e para além disso a paragem poderia acontecer ou no mês de março ou setembro, sendo que a solução do mês de setembro era impossível, pois a produção de sumos em stock dos meses anteriores não era suficiente para cobrir as vendas dos meses seguintes.
No terceiro cenário, correspondente à parte III, obtivemos um custo total de 52376 U.M. , neste modelo a paragem foi durante um mês, podendo ser também ou no mês de março ou no mês de setembro, aqui também não houve solução do mês de setembro.
No quarto cenário, correspondente à parte IV, obtivemos um custo total para o mês de março de 52334 U.M., nesta parte poderia haver uma produção extraordinária de mais 6 U.E. por período, e ainda um aumento do custo de produção de 50%. E para o mês de setembro obtivemos um custo total de 52284 U.M., sujeito também às mesmas restrições do anterior.
No quinto cenário, correspondente à parte V, obtivemos um custo total de 52820 U.M., neste cenário o objetivo era a produção de apenas um tipo de sumo em cada mês.
Portanto, para concluir o cenário que encarga menores custos à empresa é o primeiro.