ComeçarComece de graça

Resolvendo o problema de orçamento de capital

Relembre o problema de orçamento de capital.

Sua gerente define a estratégia da empresa e considera os projetos \(A\), \(B\), \(C\), sendo que \(A\) é pré-requisito para \(B\). Os lucros são respectivamente \(V = [250, 200, 300]\), o investimento necessário é I = [2000, 1900, 2500] e apenas $4600 estão disponíveis. \(o\) é uma variável binária indicando se um projeto é selecionado.

Sua gerente lhe passou o problema:

\(\max\ \ o_AV_A + o_{AB}V_B + o_CV_C\) \(s.t.\ o_AI_A + o_{AB}I_B + o_CI_C\leq 4600\)

Sua tarefa é linearizar e resolver o problema de lucro.

Nós já importamos pulp e definimos um model com os parâmetros V, I, names para os nomes dos projetos (A, B, C e AB indexados nessa ordem) e o representando a decisão binária usando a mesma indexação.

Este exercício faz parte do curso

Introdução à Otimização em Python

Ver curso

Instruções do exercício

  • Defina a função objetivo linearizada preenchendo a função para os projetos B e C, considerando o pré-requisito de B.
  • Defina as restrições usando a variável AB atualizada.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Define the objective
model += o[0]*V[0] + ____*V[1] + ____*V[2]

# Define the constraints
model += o[0]*I[0] + ____*I[1] + o[2]*I[2] <= 4600, 'budget constraint'
model += o[____] <= o[0]
model += o[____] <= o[1]
model += o[____] >= o[0] + o[1] - 1 

status = model.solve()
print(f"{'Optimal found' if status == 1 else 'Ignore solution'}")

for i, name in enumerate(names):
    print(f"{name}: {'accepted' if o[i].varValue == 1 else 'rejected'}")
print(f'Total profit = ${value(model.objective)}')
Editar e executar o código