<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>R archivos &#187; Ingenieria Industrial Online</title>
	<atom:link href="https://ingenieriaindustrialonline.com/tag/r/feed/" rel="self" type="application/rss+xml" />
	<link>https://ingenieriaindustrialonline.com/tag/r/</link>
	<description>ingenieriaindustriaonline.com</description>
	<lastBuildDate>Tue, 10 Jan 2023 23:27:11 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/cropped-faVicon-32x32.png</url>
	<title>R archivos &#187; Ingenieria Industrial Online</title>
	<link>https://ingenieriaindustrialonline.com/tag/r/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Método del Centro de gravedad utilizando R</title>
		<link>https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/metodo-del-centro-de-gravedad-utilizando-r/</link>
					<comments>https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/metodo-del-centro-de-gravedad-utilizando-r/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Tue, 05 Oct 2021 00:17:12 +0000</pubDate>
				<category><![CDATA[Actualidad]]></category>
		<category><![CDATA[Análisis de datos]]></category>
		<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Localización de instalaciones]]></category>
		<category><![CDATA[Logística]]></category>
		<category><![CDATA[Centro de masa]]></category>
		<category><![CDATA[Localización de Instalaciones]]></category>
		<category><![CDATA[Método del Centro de gravedad]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[R]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=28249</guid>

					<description><![CDATA[<p>Cuando escribí el artículo método del centro de gravedad hice esta anotación: «Recuerdo que cuando utilicé este algoritmo en la Universidad, utilizamos la copia de un mapa de la región, sobre ella trazamos un plano cartesiano, definimos las ubicaciones del caso, registramos las coordenadas y como resultado obtuvimos las coordenadas de la localización ideal. La dificultad subyace &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/metodo-del-centro-de-gravedad-utilizando-r/">Método del Centro de gravedad utilizando R</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Cuando escribí el artículo <strong><a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-del-centro-de-gravedad/">método del centro de gravedad</a> </strong>hice esta anotación: «<em>Recuerdo que cuando utilicé este algoritmo en la Universidad, utilizamos la copia de un mapa de la región, sobre ella trazamos un plano cartesiano, definimos las ubicaciones del caso, registramos las coordenadas y como resultado obtuvimos las coordenadas de la localización ideal. La dificultad subyace en la falta de practicidad».</em></p>
<p><span>El objetivo de este artículo es precisamente ese, apoyarnos en las nuevas herramientas que nos proporciona la tecnología, para abordar un problema de localización de una instalación aplicando el algoritmo de centro de gravedad de una manera práctica. Para ello utilizaremos R, de hecho, utilizaremos las librerías de R en un cuaderno virtual de <em>Python</em>.</span></p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>R es un entorno y lenguaje de programación con un enfoque al análisis estadístico. 
			</div>
		</div>
	
<p>El resultado de nuestro código nos arrojará la localización, de acuerdo al sistema de coordenadas que empleemos, además de que graficará la misma, y los puntos ponderados del modelo (peso de acuerdo a su demanda, producción, capacidad, etc.).</p>
<div id="cc-m-5713476913" class="j-module n j-text ">
<h3><em>Ejemplo de aplicación del Centro de gravedad</em></h3>
<div class="cc-m-hgrid-column last">
<div id="cc-matrix-1350164513">
<div id="cc-m-5713479913" class="j-module n j-text ">
<p><img decoding="async" class="size-full wp-image-2067 alignleft" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Sin-título-58.png" alt="" width="171" height="144" /></p>
<p>La empresa GASOL S.A desea ubicar una instalación intermedia que requiere de disponibilidad de gasolina, desea ubicar esta instalación entre la ciudad de Barrancabermeja y sus principales distribuidores. En el siguiente cuadro se relaciona la información acerca de las coordenadas y el aporte de galones de gasolina de cada distribuidor.</p>
</div>
</div>
</div>
<p><img decoding="async" class="aligncenter size-full wp-image-2068" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Sin-título-59.png" alt="" width="419" height="148" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Sin-título-59.png 419w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Sin-título-59-300x106.png 300w" sizes="(max-width: 419px) 100vw, 419px" /></p>
<p><em>Ubicación de las puntos en el plano cartesiano:</em></p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Plano-Cartesiano.png" alt="Método de gravedad" width="615" height="279" class="aligncenter wp-image-27319" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Plano-Cartesiano.png 2560w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Plano-Cartesiano-300x136.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Plano-Cartesiano-1024x464.png 1024w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Plano-Cartesiano-768x348.png 768w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Plano-Cartesiano-1536x696.png 1536w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/09/Plano-Cartesiano-2048x928.png 2048w" sizes="(max-width: 615px) 100vw, 615px" /></p>
<p>Los cálculos empleados en el algoritmo manual pueden ser consultados en: <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-del-centro-de-gravedad/"><strong>Modelo de Centro de Gravedad</strong></a>.</p>
</div>
<h2>Requerimientos para ejecutar el modelo</h2>
<p>En este caso sugerimos utilizar un entorno virtual de programación. Recomendamos el uso de <em><strong>Colaboratory de Google</strong></em>, un entorno que cuenta con todas las herramientas necesarias para nuestros desarrollos en <em>Python</em>. No tendremos que instalar nada en nuestro equipo, y aprovecharemos la potencia de las máquinas de Google, y su capacidad para ejecutar R.</p>
<h2>Programación del modelo de Centro de Gravedad en R</h2>
<p>Vamos a asumir que utilizarán el entorno virtual de <em>Colaboratory</em>, así que vayamos allá: <a href="https://colab.research.google.com/#create=true"><em><strong>Abrir cuaderno nuevo</strong></em></a>.</p>
<p>Ya que este entorno está desarrollado para escribir y ejecutar códigos en <em>Python</em>, lo primero que debemos hacer es ejecutar el siguiente comando en nuestro cuaderno, para así poder utilizar R en nuestro entorno:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>import rpy2
rpy2.__version__
import rpy2.robjects.conversion
%load_ext rpy2.ipython</code></pre>
</div>
<p>Después de eso, cada vez que desee usar R, agregue %%R al comienzo de cada celda. Veamos.</p>
<p>Lo primero que crearemos será a función del cálculo del Centro de Gravedad, la matemática detrás de esto no es nada especial, se trata de un <em>producto cruzado de matrices</em> para cada coordenada, para lo que utilizaremos <em>crossprod</em> de R.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>%%R 
centro_gravedad &lt;- function(x,y,w){
  c(crossprod(x,w)/sum(w),crossprod(y,w)/sum(w))
}</code></pre>
</div>
<p><em>x </em>= Coordenada en <em>x</em> (Que puede ser una coordenada cartesiana, latitud, etc.)</p>
<p><em>y </em>= Coordenada en <em>y</em> (Que puede ser una coordenada cartesiana, longitud, etc.)</p>
<p><em>w = </em>Representa el peso de cada punto dado (Que puede ser la demanda, la capacidad, la producción)</p>
<p>En nuestro caso, <strong><em>x</em></strong> y <strong><em>y</em></strong> serán coordenadas cartesianas, y <em><strong>w</strong></em> será la capacidad de suministro de gasolina de cada distribuidor. La función anterior calculará el centro de gravedad de acuerdo a los datos de entrada del modelo.</p>
<p>Ahora crearemos el marco de datos (<em>dataframe </em>al cual llamaremos <em>estaciones_df</em>) en el que se consignarán nuestros datos de entrada:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>%%R
estaciones_df &lt;- as.data.frame(matrix(nrow=5,ncol=3))
encabezados(estaciones_df) &lt;- c("x","y","galones")

estaciones_df$x &lt;- c(58.7, 26.2, 32.9, 42.5, 36.4)
estaciones_df$y &lt;- c(4.4, 5.2, 3.8, 4.1, 6.2)
estaciones_df$galones &lt;- c(3800, 2700, 310, 420, 250)</code></pre>
</div>
<p>El código anterior crea un marco de datos (<em>matrix</em>) de 5 filas y 3 columnas. Las filas representan el número de estaciones de gasolina que nos da el ejemplo, y las columnas servirán para consignar 3 valores: <em>coordenada en x, coordenada en y y el suministro de gasolina en galones de cada estación</em>.</p>
<p>Consignaremos los datos de entrada del ejemplo cuidando el orden estricto en el que registramos la información. Al finalizar tendremos toda la información consignada en nuestro marco de datos; para comprobarlo ejecutaremos el siguiente código:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>%%R
(estaciones_df)</code></pre>
</div>
<p>Al ejecutarlo, tendremos la siguiente salida:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/gravedad_1.png" alt="gravedad_1" width="343" height="125" class="size-full wp-image-28250 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/gravedad_1.png 343w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/gravedad_1-300x109.png 300w" sizes="(max-width: 343px) 100vw, 343px" /></p>
<p>Podemos corroborar que la información se ha consignado adecuadamente.</p>
<p>El siguiente paso consiste en calcular el centro de gravedad del modelo, para eso asignaremos los datos de entrada a la función inicial de centro de gravedad:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>%%R
centro_gravedad(estaciones_df$x,estaciones_df$y,estaciones_df$galones)</code></pre>
</div>
<p>Recordemos que de acuerdo a la función inicial, esta necesita 3 argumentos: <em><strong>x</strong></em>, <em><strong>y</strong></em>, <em><strong>w</strong></em> (coordenada en <em>x</em>, coordenada en <em>y</em>, peso). Esta información se encuentra en el marco de datos de entrada (<em>estaciones_df</em>).</p>
<p>Al ejecutarlo, tendremos la siguiente salida:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/gravedad_2.png" alt="gravedad_2" width="464" height="43" class="size-full wp-image-28251 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/gravedad_2.png 464w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/gravedad_2-300x28.png 300w" sizes="(max-width: 464px) 100vw, 464px" /></p>
<p><span>Esto quiere decir que en el sistema de coordenadas utilizado para establecer las ubicaciones propuestas en el ejercicio, la instalación óptima se ubicaría en las coordenadas </span><em><strong>X = 44,2</strong></em><span> – </span><em><strong>Y = 4,7. </strong></em>podemos confirmar que son las mismas coordenadas obtenidas mediante el <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-del-centro-de-gravedad/"><strong>modelo matemático original de Centro de Gravedad</strong></a>.</p>
<p>Tanto el resultado obtenido, como las ubicaciones de entrada (estaciones) pueden graficarse para una mayor comprensión del modelo. Utilizaremos un gráfico utilizando la librería <em>ggplot2</em> que nos muestre las instalaciones con un marcador de acuerdo a su ponderación. Veamos:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>%%R
library(ggplot2)
grafico_df &lt;- rbind(estaciones_df,c(centro_gravedad(estaciones_df$x,estaciones_df$y,estaciones_df$galones),2500))
grafico_df$tipo &lt;- c(rep(x="distribuidores",times=5),"instalacion")
ggplot(data=grafico_df) + geom_point(mapping=aes(x=x,y=y,size=galones,color=tipo))</code></pre>
</div>
<p>Al ejecutar tendremos el siguiente resultado:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro-de-gravedad.png" alt="centro de gravedad" width="480" height="480" class="size-full wp-image-28252 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro-de-gravedad.png 480w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro-de-gravedad-300x300.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro-de-gravedad-150x150.png 150w" sizes="(max-width: 480px) 100vw, 480px" /></p>
<p>El marcador azul representa la ubicación sugerida por el modelo, de acuerdo a la ubicación del suministro de acuerdo a las estaciones. Podemos ver como el tamaño de las estaciones varía de acuerdo a su capacidad de suministro. Esta forma de desarrollar el modelo de Centro de Gravedad puede complementarse con diversas fuentes de datos, <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/"><strong>mapas de calor</strong></a>, tipos de coordenadas, etc.</p>
<hr />
<p>Puedes ver el cuaderno de este módulo en nuestro <em>Colaboratory: <a href="https://colab.research.google.com/drive/1wSSla3U6NuJJHX6t-eetFiUSTvDpENUF?usp=sharing"><strong>Problema de localización de instalaciones mediante Centro de Gravedad</strong></a>.</em></p>
<h2>Consideraciones finales</h2>
<p><span>El alcance de este modelo se encuentra determinado por la localización de una sola instalación (depósito, almacén, etc.), y en los casos en los que se requiera determinar múltiples localizaciones, el modelo no aplica.</span></p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Para ver un modelo para varias localizaciones: <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/localizacion-de-varios-almacenes-mediante-agrupacion-geoespacial/"><em><strong>Localización de varios almacenes mediante agrupación espacial</strong></em></a>
			</div>
		</div>
	
<hr />

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Lo invitamos a leer: <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/"><em><strong>Método de localización de instalaciones utilizando mapas de calor</strong></em></a> y <em><a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/mapas-de-calor-y-algoritmo-de-centro-de-gravedad-utilizando-python/" target="_blank" rel="noopener"><strong>Mapas de calor y Algoritmo de Centro de Gravedad utilizando Python</strong></a></em>
			</div>
		</div>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/metodo-del-centro-de-gravedad-utilizando-r/">Método del Centro de gravedad utilizando R</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/metodo-del-centro-de-gravedad-utilizando-r/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
