Paquete de Inventarios InvControl

El paquete de inventarios se creó con base en el libro guía R Packages (Wickman (2019b)), capítulo 2: The Whole Game. En este texto guía se explica cómo crear un paquete en el lenguaje de programación R utilizando el paquete devtools (Wickman et al. (2021)). devtools tiene el objetivo de hacer el desarrollo de paquetes más sencillo proporcionando funciones que simplifican procesos comunes para la creación de paquetes en R.

Para el paquete de InvControl, se siguieron los siguientes pasos:

  1. Creación del paquete con la función create_package(“InvControl”). Inicialmente, este paquete se creó en una carpeta local para luego realizar la publicación en la plataforma GitHub.
  2. Creación de cada una de las funciones utilizando la función (del paquete devtools) use_r(“Nombre de la funcion”). Por ejemplo, para crear la función de \(QR\) con distribución Poisson, se utilizó use_r(“qrPoisson”).
  3. Una vez creada la primera función es necesario completar la información de la licencia utilizada para el paquete InvControl. Para esto se selecciona la licencia del MIT con la función use_mit_license(). Esta función se debe utilizar solo una vez, ya que bajo esta licencia se construye todo el contenido del paquete InvControl completo.
  4. Una vez creada cada una de las funciones, se debe realizar la carga al paquete con la función load_all().
  5. Para realizar una revisión de errores luego de creada la función, se utiliza la función check(). Esta función da como resultado los errores (“errors”), las advertencias (“warnings”) y notas (“notes”), como se muestra en la Figura 0.1. Con el resultado de la revisión es posible interpretar los errores que deben ser ajustados en cada una de la función. En cuanto a las notas que arroja el resultado, es recomendable realizar los ajustes, sin embargo, estas notas no afectan el correcto funcionamiento de la función o el paquete como sí afectan los errores o las advertencias; por esta razón se debe realizar la interpretación de estos para asegurarse de que la función o el paquete no fallen al momento de utilizarlos.
  6. Al momento de utilizar alguna función es indispensable tener una descripción de cada función, sus parámetros y los resultados que arroja dicha función, como muestra la Figura 0.2. Para esto, se realiza la documentación de la función por medio de document(). Inicialmente es necesario escribir, en el archivo .R de la función en la cual se está escribiendo la documentación, la descripción, los parámetros, con el tipo (double, int, boolean, entre otros), el significado de cada parámetro y lo que arroja la función al momento de utilizarla. En la Figura 0.3 se muestra la parte inicial de la función qrPoisson(), donde se puede observar la manera en que se debe crear la documentación de la función.
  7. Luego de realizar la documentación de la función y el paquete es recomendable realizar otra revisión, es decir, repetir el paso 5.
  8. Para que quede consolidado todo el paquete con las funciones creadas recientemente, se debe realizar la instalación con la función install().
Resultado de Revisión con la Función _check()_

Figure 0.1: Resultado de Revisión con la Función check()

Documentación de la Función _qrPoisson()_

Figure 0.2: Documentación de la Función qrPoisson()

Creación de Descripción de la Función _qrPoisson()_

Figure 0.3: Creación de Descripción de la Función qrPoisson()

Siguiendo los pasos anteriores se crearon cada una de las funciones que componen el paquete de control de inventarios InvControl. Dentro de este paquete están las siguientes funciones:

  • EOQ_const(): esta función se basa en encontrar la cantidad económica de pedido con una demanda constante y conocida.
  • EOQ_ncd(): esta función se basa en encontrar la cantidad económica de pedido con una demanda variable pero conocida dentro de un mismo ciclo, es decir, cada vez que se realiza una orden empieza un nuevo ciclo, en el cual se tiene diferentes tasas de demanda. Para esta función no es necesario conocer el tiempo de ciclo, ya que este se obtiene a partir de la cantidad económica de pedido \(Q*\).
  • EOQ_tknown(): esta función se basa en encontrar la cantidad económica de pedido con una demanda variable y conocida en un horizonte de tiempo conocido. Con esta modificación del modelo \(EOQ\), se consideran estaciones pero se puede ordenar múltiples veces en el horizonde de tiempo conocido.
  • qrNormal(): esta función se basa en encontrar la cantidad de pedido y el punto de reorden óptimo para un sistema con demanda estocástica con distribución de probabilidad Normal.
  • qrPoisson(): esta función se basa en encontrar la cantidad de pedido y el punto de reorden óptimo para un sistema con demanda estocástica con distribución de probabilidad Poisson.

Cada una de estas funciones retorna el resultado esperado, en el caso de EOQ la cantidad económica de pedido y para los modelos QR el punto de reorden \(R\) y la cantidad óptima de pedido \(Q\). Así mismo, devuelve el costo promedio total esperado y una gráfica de simulación del nivel de inventario a través del tiempo.

Finalmente, el paquete InvControl fue cargado en un repositorio público en la plataforma GitHub. Este procedimiento para cargar el paquete de control de inventarios se realizó siguiendo las instrucciones proporcionadas por Hansen Johnson (Wickman (2018)), junto con el libro guía R Packages, Capítulo 18: “Git and GitHub” (Wickman (2019a)).

Para acceder al paquete InvControl es necesario instalar el paquete devtools:

  1. Se instala el paquete devtools utilizando la siguiente línea de código:

    install.packages("devtools")
  2. Se instala el paquete InvControl utilizando la siguiente línea de código:

    devtools::install_github("jfroa10/InvControl")

    Esta línea de código ingresa a la plataforma de GitHub e instala el paquete InvControl que se encuentra en el repositorio del usuario “jfroa10”.

References

Wickman, Hadley. 2018. Sync GitHub Repository with Existing r Project. https://hansenjohnson.org/post/sync-github-repository-with-existing-r-project/.
———. 2019a. R Packages - Git and GitHub. https://r-pkgs.org/git.html#git.
———. 2019b. R Packages - Whole Game. https://r-pkgs.org/whole-game.html.
Wickman, Hadley, Jim Hester, Winston Chang, and Jennifer Bryan. 2021. Devtools. https://devtools.r-lib.org/.