Giter VIP home page Giter VIP logo

portfolio-optimizer's Introduction

Contexto

Con cierta independencia de la industria en la que nos encontremos, es común dentro de la gestión comercial, o de atención a clientes, tener equipos de personas (ejecutivos) responsables de estar pendientes de las necesidades de los clientes en busca de nuevas oportunidades de cross y/o up selling. Para este propósito, los ejecutivos tienen una cartera de clientes asignada, la cual puede o no estar "bien" balanceada, en el sentido de que todos los ejecutivos tienen igual cantidad de clientes en su cartera.

La importancia de tener carteras balanceadas radica en entregarles a todas las personas igualdad de oportunidades para cross o up selling, ya que estas usualmente se encuentran asociadas a comisiones por venta. Si un ejecutivo tiene 10 clientes, y otro tiene 100, podemos suponer que no se encuentran en igualdad de condiciones para realizar su trabajo y, por lo tanto, tampoco las mismas oportunidades de generar ingresos por ventas. Sin embargo, que todos los ejecutivos tengan la misma cantidad de clientes en su cartera tampoco asegura igualdad de oportunidades de venta, por lo que es necesario considerar otros factores, donde uno de estos podría ser la facturación que acumula la cartera de cada ejecutivo. Si dos ejecutivos tienen 100 clientes cada uno en su cartera, pero lo que facturan los clientes de una asciende a $1 millón, mientras que la de otro a $10 millones, entonces parece que las carteras siguen sin estar balanceadas, suponiendo que lo que pagan los clientes es, en cierta medida, un indicador de intensidad de necesidades y/o disposición a pagar.

Estando de acuerdo con lo anterior, ahora el problema es ¿cómo asignamos los clientes a la cartera de cada ejecutivo, cuidando a la vez que todos tengan igual cantidad de clientes y facturación? Si nos enfrentamos a una arbitrariamente pequeña cantidad de clientes y ejecutivos donde distribuirlos, quizás se puedan balancear las carteras manualmente sin mucho esfuerzo, pero en la medida que crecen la cantidad de clientes y ejecutivos esta tarea se vuelve virtualmente imposible de realizar a "prueba y error".

Luego, lo que propone este proyecto es un modelo de optimización en base a programación lineal binaria que busca la mejor asignación de clientes, de tal forma que todos los ejecutivos tengan igual cantidad de clientes y facturación en sus carteras. Aunque cabe destacar que lo que se presenta como "facturación" puede ser, en realidad, sustituido por cualquier medida que se encuentre apropiada.

Modelo de Optimización Homogénea

Este es el caso más "simple", y es donde tenemos una lista de de n clientes que queremos asignar sobre m ejecutivos, bajo el supuesto de que ningún ejecutivo tiene clientes asignados previamente. Es decir, los n clientes serán asignados a los m ejecutivos con independencia de su cartera actual. A modo de ejemplo, si tenemos 7.500 clientes, que en total suman $6.000 millones, y los queremos asignar entre 5 ejecutivos, entonces el resultado sería como se muestra en la siguiente tabla:

Ejecutivo Clientes Facturación
Ejecutivo 1 1.500 $1.200 millones
Ejecutivo 2 1.500 $1.200 millones
Ejecutivo 3 1.500 $1.200 millones
Ejecutivo 4 1.500 $1.200 millones
Ejecutivo 5 1.500 $1.200 millones
Total 7.500 $6.000 millones

Luego, en concreto, el modelo propuesto para este caso es el siguiente:

Sea la cantidad de clientes que queremos asignar entre ejecutivos:

Variables de decisión

Parámetros necesarios

Parámetros opcionales

Función objetivo:

Sujeto a:

  1. Cantidad de clientes por ejecutivo

  1. Facturación total por ejecutivo

  1. Asignar cada cliente a un solo ejecutivo

  1. Variables de decisión binarias

Consideraciones

  1. Si la cantidad de clientes no es múltiplo de la cantidad de ejecutivos , entonces para las restricciones de clientes por ejecutivo (1) se toma el entero inferior de este cociente. Por lo tanto, puede que algunos clientes no sean asignados.

  2. Si la facturación total de los clientes a asignar no es múltiplo de la cantidad de ejecutivos , entonces también puede que algunos clientes queden sin asignar, ya que se tomará como parámetro de las restricciones de facturación total por ejecutivo (2) el entero inferior de este cociente.

  3. Las restricciones que resultan de (3) permiten que algunos clientes queden sin asignar. Esto permite que el modelo se pueda ejecutar más rápido cuando la solución óptima es muy ajustada.

  4. Los parámetros opcionales de holgura y son para poder relajar las restricciones (1) y (2), permitiendo al modelo no asignar todos los clientes para mejorar su tiempo de ejecución. El valor de los parámetros se aplica sobre cada una de las restricciones, y es el mismo que se defina para todas. Esto quiere decir que, por ejemplo, el modelo no permite quitar arbitrariamente distinta cantidad de clientes a cada ejecutivo. Si se define , se aplica el mismo valor a las restricciones que resultan de (1). Exactamente lo mismo aplica para el parámetro . Además, que se permita no asignar todos los clientes no implica necesesariamente que no todos sean asignados.

Modelo de Optimización Heterogénea

Es una generalización del modelo homogéneo, donde se considera que los ejecutivos podrían tener una cartera previamente asignada, y se requiere asignar un pull de nuevos clientes a los ejecutivos, de tal manera que las carteras resultantes queden balanceadas.

Sea la cantidad de clientes que cada uno de los ejecutivos tenía previamente, la facturación total de la cartera de cada ejecutivo previamente y la cantidad de clientes nuevos que se quiere asignar.

Variables de decisión

Parámetros necesarios

Parámetros opcionales

Función objetivo:

Sujeto a:

  1. Cantidad de clientes por ejecutivo

  1. Facturación total por ejecutivo

  1. Asignar cada cliente a un solo ejecutivo

  1. Variables de decisión binarias

portfolio-optimizer's People

Contributors

mschiaff avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.