Financial Planning cplex python

L'objectif est de maximiser les rendements total après avoir investi dans différents organisme financiers, dépend du montant total d'argent à investir dans chacun d'eux.

  • Le montant total à investir dans tous les organismes est de 200 000$
  • Le régime de retraite ne devrait pas avoir plus de 10 % de tous les autres régimes investis.
  • La sécurité du gouvernement devrait être investie avec au moins 50 000$
  • Au moins 20 \% des actions des catégories à risque moyen et élevé doivent être investies dans des actions de la catégorie à faible risque.
  • Le montant total à investir dans les actions ne doit pas dépasser 20 000 $

Cela aboutit à la définition de variables de décision où chacun d'entre eux se rapporte au montant investi dans un instrument particulier. Ainsi,

  • x1 = montant d'argent investi dans le régime de retraite
  • x2 = montant d'argent investi dans la sécurité du gouvernement
  • x3 = montant d'argent investi dans l'action A
  • x4 = montant d'argent investi dans l'action B
  • x4 = montant d'argent investi dans l'action C

La compréhension et la formulation des variables de décision aident à créer une fonction objectif. Dans ce cas, l'objectif est de maximiser les rendements. Une unité de régime de retraite, un titre gouvernemental, les actions A, B et C donne en moyenne un rendement annuel de 5 %, 8,8 %, 9 %, 11 % et 13 %, respectivement. Ainsi, l'investissement indiqué par les variables de décision conduirait à une fonction objective de :

Modèle Mathématique

Objective function
Maximize Z
\begin{equation} \begin{aligned} Z = 0.05 x_{1} + 0.088 x_{2} + 0.09 x_{3} + 0.11 x_{4} + 0.13 x_{5} \end{aligned} \end{equation}
Contraintes:
contrainte1:

Le montant total à investir est de 200 000 $.

\begin{equation} \begin{aligned} x_{1} + x_{2} + x_{3} + x_{4} + x_{5} = 200,000 \end{aligned} \end{equation}
contrainte2:

Le régime de retraite ne devrait pas avoir plus de 10 % de tous les autres régimes investis.

\begin{equation} x_{1} \leq 0.1 \left(x_{2} + x_{3} + x_{4} + x_{5} \right) \end{equation}
contrainte3:

La sécurité du gouvernement devrait être investie avec au moins 50 000 $.

\begin{equation} x_{2} \geq 50,000 \end{equation}
contrainte4:

Le montant total à investir dans les actions ne doit pas dépasser 20 000 $.

\begin{equation} x_{3} + x_{4} + x_{5} \leq 20,000 \end{equation}
contrainte5:

Au moins 20 % des actions des catégories à risque moyen et élevé doivent être investies dans des actions de la catégorie à faible risque.

\begin{equation} x_{3} \geq 0.20 \left( x_{4} + x_{5} \right) \end{equation}

Code Cplex avec language python

# ### Import

from docplex.mp.model import Model


# ### Créer model


model=Model(name="hello")


# ### créer variable de décision

x1 = model.continuous_var(name='x1')
x2 = model.continuous_var(name='x2')
x3 = model.continuous_var(name='x3')
x4 = model.continuous_var(name='x4')
x5 = model.continuous_var(name='x5')


# ### Fonction objective

# In[4]:


model.maximize(0.05*x1+0.088*x2+0.09*x3+0.11*x4+0.13*x5)


# ### Contraintes


model.add_constraint(x1+x2+x3+x4+x5 == 200000)
model.add_constraint(x1 <= 0.1*(x2+x3+x4+x5))
model.add_constraint(x2 >= 50000)
model.add_constraint(x3+x4+x5 <= 20000)
model.add_constraint(x3 >= 0.2*(x4+x5))


# ### Affichage résultats


print(model.export_to_string())

solution = model.solve(log_output=True)

solution.display()

print(solution.get_values([x1,x2,x3,x4,x5]))

Vidéo explicative Cplex :