Você está na página 1de 9

Mestrado em Engenharia Informática e Tecnologia WEB

Investigação Operacional – 2023/2024

Maximização de lucros e minimização de custos em projectos de


desenvolvimento de Soluções Informáticas

Membros do grupo 6.
 Abderrazak Mahi
 Alberto Fanheiro
 Gervásio Caetano
 Milton Ferreira
 Ornélio Jotamo
Índice

Motivação da escolha do problema apresentado. ................................................................. 3


Enunciado do problema. ......................................................................................................... 3
Definição das variáveis utilizadas. ........................................................................................... 4
Função objetivo e as restrições aplicadas. ............................................................................. 4
Demonstração da resolução e resultados obtidos. ................................................................ 5
Método Gráfico ........................................................................................................................ 6
Código-fonte enviado ao solver (ficheiro anexo à parte). ..................................................... 6
Interpretação económica do resultado. ................................................................................. 8
Fundamentação da decisão de gestão a tomar, baseada no resultado. .............................. 8
Papéis desempenhado por cada membro do grupo. ............................................................. 9
Motivação da escolha do problema apresentado.
A motivação da escolha do tema relacionada a maximização de lucros em projetos de
desenvolvimento de soluções informáticas, surge tendo em conta os seguintes pontos:

Inovação Tecnológica – visto que a tecnologia está em constante evolução, e o desenvolvimento


de soluções informáticas permite criar e aplicar novas ideias e tecnologias para resolver problemas
de forma mais eficiente e inovadora;

Solução de Problemas – as soluções informáticas têm o poder de resolver uma variedade de


problemas em diferentes áreas, desde a saúde, educação, negócios, entretenimento, entre outras.
Essas soluções podem melhorar processos, otimizar recursos e facilitar tarefas complexas.

Desafios – o desenvolvimento de soluções informáticas apresenta desafios técnicos, de


engenharia e criatividade constantes, para profissionais em desenvolvimento de software,
programação, análise de sistemas, engenharia de software, segurança da informação, entre outras
áreas.

Adaptação e Mudança – a rápida evolução da tecnologia requer adaptação e mudança constantes,


o que torna este tema desafiante e dinâmico para aqueles que gostam de estar sempre
aprendendo e evoluindo.

Resumidamente, a escolha do tema relacionado ao desenvolvimento de soluções informáticas


está fundamentada na relação entre o tempo de trabalho do programador e a maximização de
lucros, garantido qualidade das soluções em projetos informáticos com recursos mínimos.

Enunciado do problema.
A empresa Grupo 6 Technology, trabalha na área de desenvolvimento de soluções informáticas,
tem em curso dois projetos A e B e para sua materialização, contratou uma equipa de 2
programadores, e cada um pode trabalhar em apenas um projeto a cada hora, o projeto A precisa
de 60 horas para ser concluído e o projeto B precisa de 25 horas para ser concluído, o projeto A
gera um lucro de 100 euros por hora, o projeto B gera um lucro de 60 euros por hora, a empresa
decidiu limitar o tempo de trabalho do projeto A à 30 horas e 10 horas para o projeto B, há uma
penalização de 10 euros/hora por não concluir o projeto A e 6 euros/hora por não concluir o
projeto B, a empresa pretende maximiza o lucro

Definição das variáveis utilizadas.

Neste problema, temos dois projetos (Projeto A e Projeto B) e dois programadores (programador
1 e programador 2). Definimos as variáveis da seguinte forma

x1: A quantidade de horas do programador 1 trabalhando no projeto A


x2: A quantidade de horas do programador 2 trabalhando no projeto A
y1: A quantidade de horas do programador 1 trabalhando no projeto B
y1: A quantidade de horas do programador 2 trabalhando no projeto B
c1: A quantidade de horas do projeto A que não foi concluída
c2: A quantidade de horas do projeto B que não foi concluída

Função objetivo e as restrições aplicadas.


Temos duas funções objetivo:

Maximização do lucro: Minimização de custos:


Z máximo: 100x1 + 100x2 + 60y1 + 60y2 Z mínimo: 10c1 + 6c2

Existem dois tipos principais de restrições neste problema: restrições de trabalho e restrições de
capacidade de tempo.

Jornada de trabalho:
O total de horas de trabalho para o projeto A não pode exceder 60 horas:
x1 + x2 <= 60
O total de horas de trabalho para o projeto B não pode exceder 25 horas
y1 + y2 <= 25
Restrições de capacidade:
x1 + x2 <= 30
y1 + y2 <= 10

Disponibilidade de horário de trabalho:


A quantidade total de horas do Projeto A deve ser concluída ou não: x1 + x2 + c1 = 60
A quantidade total de horas do Projeto B deve ser concluída ou não: y1 + y2 + c2 = 25

Todas as variáveis deste problema devem ser não negativas, pois não podemos ter quantidades
negativas de horas de trabalho ou penalização. Portanto, as restrições de não negatividade são:

x1 ≥ 0;
x2 ≥ 0;
y1 ≥ 0;
y2 ≥ 0;
c1 ≥ 0;
c2 ≥ 0

Demonstração da resolução e resultados obtidos.

Função objetivo (z):


 Z máximo: 100x1 + 100x2 + 60y1 + 60y2
 Z mínimo: 10c1 + 6c2
Total é Max Z - Min Z
Total Z: 100x1 + 100x2 + 60y1 + 60y2 - 10c1 - 6c2

Restrições funcionais: Restrições de não negatividade:


x1 + x2 <= 60 x1 ≥ 0
y1 + y2 <= 25 x2 ≥ 0
x1 + x2 <= 30 y1 ≥ 0
y1 + y2 <= 10 y2 ≥ 0
x1 + x2 + c1 = 60 c1 ≥ 0
y1 + y2 + c2 = 25 c2 ≥ 0

Método Gráfico
Pela complexidade do exercício, foram testados varias aplicativos de geração de gráficos, mas,
infelizmente não respondiam as solicitações de uma equação com 6 variáveis, as que permitiam,
não respondiam na globalidade como por exemple o Geogebra, PHP Simplex (que permite apenas
duas varias no seu método gráfico), entre outros.
Portanto, para gerar o gráfico foi usado o Mathway como feramente de apoio.

Código-fonte enviado ao solver (ficheiro anexo).


A resolução de um problema de programação linear multiobjectivo é bastante complexa e poucos
solvers são capazes de lidar com este tipo de problemas. Mesmo alguns solvers capazes de lidar
com os mesmos, não são capazes de resolver todos os tipos de problemas. Após uma primeira
abordagem com recurso ao software Julia e recorrendo à biblioteca MultiObjectiveAlgorithms,
verificou-se que o solver não seria capaz de resolver este problema concreto. Assim foi necessário
rever a nossa abordagem e transformar as duas funções objetivo numa única função que pudesse
ser usada num solver mais simples, como o LPSolve.
Usámos a técnica de ponderação ou escalarização para tentar encontrar uma função objetivo que
permitisse solucionar o nosso problema. Considerámos que a importância de maximização do
lucro era a mesma da minimização do custo, então os pesos colocados na combinação das 2
funções foi o mesmo (1:1).
Assim a nossa nova função objetivo passou a ser:
Max Z = 100x1+100x2+60y1+60y2-10c1-6c2

Através da análise de sensibilidade podemos afirmar que o nosso resultado é robusto e que o valor
da função objetivo irá permanecer igual, mesmo que os valores das variáveis se alterem dentro
do intervalo permitido.
Também podemos afirmar que qualquer variação nos valores das variáveis conduzirá sempre ao
mesmo resultado. Ou seja, podemos alocar as horas de trabalho dos nossos programadores como
desejarmos, desde que respeitando as restrições, e teremos sempre o mesmo lucro.
As restrições R1 e R2 são redundantes e, conforme esperado, têm o mesmo resultado das
restrições R3 e R4. Através da análise do dual, podemos verificar que R1 e R2 têm o valor 0 e,
portanto, a sua variação não altera o resultado final.
Interpretação económica do resultado.

Usando o LPSolve, com o código em anexo, concluímos que o lucro máximo obtido com a nossa
formulação é de 3210€, com o trabalho distribuído da seguinte forma: o programador 1 trabalha
30 horas no projeto A e 10 horas no projeto B; e o programador 2 é dispensado de qualquer
trabalho (0 horas em ambos os projetos). É um resultado perfeitamente válido, mas é só um dos
resultados possíveis.

Fundamentação da decisão de gestão a tomar, baseada no resultado.


Pelos resultados obtidos pelo LP Solve, com vista a maximizar o lucro e minimizar custos, a
empresa decidiu trabalhar com um único programador 1, dispensando o segundo programador 2,
pois cumpre com o horário recomendado e consegue responder os dois projetos sem atrasos na
entrega dos mesmos.
Papéis desempenhado por cada membro do grupo.

Líder
 Gervásio Caetano
Designer
 Abderrazak Mahi
 Ornélio Jotamo
Analyst
 Milton Ferreira
 Alberto Fanheiro

Você também pode gostar