<?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>Diseño y distribución en planta &#187; Ingenieria Industrial Online</title>
	<atom:link href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/feed/" rel="self" type="application/rss+xml" />
	<link>https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/</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>Diseño y distribución en planta &#187; Ingenieria Industrial Online</title>
	<link>https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Método de la Ruta Crítica mediante Python (CPM)</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-de-la-ruta-critica-mediante-python-cpm/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-de-la-ruta-critica-mediante-python-cpm/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Fri, 22 Oct 2021 19:02:49 +0000</pubDate>
				<category><![CDATA[Actualidad]]></category>
		<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Gestión de proyectos]]></category>
		<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[CPM]]></category>
		<category><![CDATA[Pert]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruta crítica]]></category>
		<category><![CDATA[Teoría de redes]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=28576</guid>

					<description><![CDATA[<p>Para entender de qué se trata el método de Ruta Crítica, y cómo funciona como un algoritmo de redes, podemos dirigirnos a: Método de la Ruta Crítica (CPM). De acuerdo al objetivo de este artículo, basta con mencionar que la Ruta Crítica es una herramienta que soporta el análisis, la planificación, y la programación de &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-de-la-ruta-critica-mediante-python-cpm/">Método de la Ruta Crítica mediante Python (CPM)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="introduccion" data-title="Introducción" class="index-title"></div>
	
<p>Para entender de qué se trata el método de Ruta Crítica, y cómo funciona como un algoritmo de redes, podemos dirigirnos a: <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-de-la-ruta-critica-cpm/"><em><strong>Método de la Ruta Crítica (CPM)</strong></em></a>. De acuerdo al objetivo de este artículo, basta con mencionar que la Ruta Crítica es una herramienta que soporta el análisis, la planificación, y la programación de proyectos. Que básicamente, nos ayuda a determinar cuáles de las actividades que componen un proyecto, son críticos con relación en su efecto sobre el tiempo total del proyecto.</p>
<p><span>El objetivo de este artículo es el de, mediante herramientas tecnológicas, abordar un caso básico de CPM, para desarrollar el método utilizando un lenguaje de programación, en este caso</span> <em>Python</em>, que nos permita, automatizar los cálculos y así obtener las actividades críticas del proyecto, la duración del mismo y un diagrama de Gantt.</p>
<p>En el desarrollo de este ejercicio emplearemos:</p>

		<div class="plus tie-list-shortcode">
<div class="plus tie-list-shortcode">
<ul>
<li><em><strong>Colaboratory</strong>:<span> </span></em>Este es un entorno de programación y ejecución virtual de Python desarrollado por Google. Nos permitirá no tener la necesidad de realizar ninguna instalación en nuestros equipos. Todo lo que desarrollemos lo ejecutaremos en un cuaderno virtual.</li>
<li><strong><em>Python</em></strong>: Este será el lenguaje de programación que vamos a utilizar, y advertimos: No es necesario tener conocimientos previos, y el objetivo del artículo no es convertirnos en programadores expertos. Utilizaremos fragmentos de códigos, librerías disponibles, y explicaremos lo necesario para configurar nuestro desarrollo de acuerdo a los objetivos específicos de nuestros modelos.</li>
<li><strong><em>CriticalPath</em></strong>: Las librerías son a <em>Python</em>, lo que las <em>apps<span> </span></em>son a un teléfono celular. Esta es quizá una de las características más a tractivas de este lenguaje: Casi que existe una librería para cada necesidad. En este caso, <em>CriticalPath</em>, es una librería que calcula la ruta crítica a través de una red de tareas.</li>
<li><em><strong>Matplotlib</strong>:<span> </span></em>Es una biblioteca completa para crear visualizaciones estáticas, animadas e interactivas en Python. Nos permitirá visualizar nuestros nodos y nuestras localizaciones solución.</li>
<li><strong><em>Pandas</em></strong>:<span> </span><span>Es un paquete de Python que proporciona estructuras de datos rápidas, y flexibles, diseñadas para que el trabajo con datos estructurados (tabulares, multidimensionales, potencialmente heterogéneos) y de series de tiempo sea fácil e intuitivo.</span></li>
<li><em><strong>Numpy</strong>: </em>Es una librería que nos permitirá efectuar operaciones matriciales en Python.</li>
<li><em><strong>Datetime</strong></em>: Es un módulo que proporciona herramientas para manipular fechas y horas.</li>
</ul>

		</div>
	
</div>
<hr />
<p>&nbsp;</p>
<p><span>Para evaluar los resultados obtenidos a través del tratamiento de un problema técnicamente formulado y abordado, utilizaremos un caso descrito en el libro Investigación de Operaciones (9na edición), de Hamdy A. Taha (University of Arkansas, Fayetteville), (Ejemplo 6.5-1):</span></p>
<h2>Caso de aplicación</h2>

		<div id="caso-de-aplicacion" data-title="Caso de aplicación" class="index-title"></div>
	
<blockquote class=" quote-simple "><p>Un editor firmó un contrato con un autor para publicar un libro de texto. El autor somete a consideración una copia impresa de un archivo de computadora del manuscrito. Las actividades (simplificadas) asociadas con la producción del libro de texto se resumen en la siguiente tabla.</p></blockquote>
<table width="741">
<tbody>
<tr>
<td colspan="2" width="571" style="text-align: center;">Actividades</td>
<td width="90" style="text-align: center;">Predecesoras</td>
<td width="80" style="text-align: center;">Duración (semanas)</td>
</tr>
<tr>
<td style="text-align: center;">A</td>
<td style="text-align: center;">Corrección del manuscrito, por parte del editor</td>
<td style="text-align: center;">&#8211;</td>
<td style="text-align: center;">3</td>
</tr>
<tr>
<td style="text-align: center;">B</td>
<td style="text-align: center;">Preparación de páginas muestra</td>
<td style="text-align: center;">&#8211;</td>
<td style="text-align: center;">2</td>
</tr>
<tr>
<td style="text-align: center;">C</td>
<td style="text-align: center;">Diseño de la portada del libro</td>
<td style="text-align: center;">&#8211;</td>
<td style="text-align: center;">4</td>
</tr>
<tr>
<td style="text-align: center;">D</td>
<td style="text-align: center;">Preparación de las ilustraciones</td>
<td style="text-align: center;">&#8211;</td>
<td style="text-align: center;">3</td>
</tr>
<tr>
<td style="text-align: center;">E</td>
<td style="text-align: center;">Aprobación del manuscrito editado y de páginas muestra, por parte del autor</td>
<td style="text-align: center;">A, B</td>
<td style="text-align: center;">2</td>
</tr>
<tr>
<td style="text-align: center;">F</td>
<td style="text-align: center;">Formación del libro</td>
<td style="text-align: center;">E</td>
<td style="text-align: center;">4</td>
</tr>
<tr>
<td style="text-align: center;">G</td>
<td style="text-align: center;">Revisión de las páginas formadas, por parte del autor</td>
<td style="text-align: center;">F</td>
<td style="text-align: center;">2</td>
</tr>
<tr>
<td style="text-align: center;">H</td>
<td style="text-align: center;">Revisión de las ilustraciones por el autor</td>
<td style="text-align: center;">D</td>
<td style="text-align: center;">1</td>
</tr>
<tr>
<td style="text-align: center;">I</td>
<td style="text-align: center;">Producción de las placas de impresión</td>
<td style="text-align: center;">G, H</td>
<td style="text-align: center;">2</td>
</tr>
<tr>
<td style="text-align: center;">J</td>
<td style="text-align: center;">Producción y encuadernación del libro</td>
<td style="text-align: center;">C, I</td>
<td style="text-align: center;">4</td>
</tr>
</tbody>
</table>
<p>La tarea será determinar la Ruta Crítica (Actividades críticas) y la duración estimada del proyecto.</p>
<hr />
<h3>Paso 1: Crear el entorno de trabajo en Colaboratory</h3>

		<div id="paso-1-crear-el-entorno-de-trabajo-en-colaboratory" data-title="Paso 1: Crear el entorno de trabajo en Colaboratory" class="index-title"></div>
	
<p><span>Lo primero que vamos a hacer consiste en crear un entorno de trabajo en <em>Google</em> </span><em>Colaboratory</em><span>, así que vayamos allá: </span><a href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"><em><strong>Abrir cuaderno nuevo</strong></em></a><span>.</span></p>
<p>Verán que tienen un lienzo para programar el modelo, así que en este cuaderno podemos ir generando las líneas de código que explicaremos en los pasos siguientes.</p>
<h3>Paso 2: Importar las librerías necesarias</h3>

		<div id="paso-2-importar-las-librerias-necesarias" data-title="Paso 2: Importar las librerías necesarias" class="index-title"></div>
	
<p>Respecto a las librerías, en la introducción del artículo hicimos una descripción de la funcionalidad de cada una, veamos como importarlas en nuestro entorno:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Importar las librerías necesarias
!pip install criticalpath
from criticalpath import Node
import datetime
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Patch
import numpy as np</code></pre>
</div>
<p>De esta manera, tenemos todo lo necesario para empezar a desarrollar nuestro código.</p>
<h3>Paso 3: Ingresar los datos del modelo</h3>

		<div id="paso-3-ingresar-los-datos-del-modelo" data-title="Paso 3: Ingresar los datos del modelo" class="index-title"></div>
	
<p>Básicamente los datos del modelo corresponden a las tareas, su duración y las relaciones de dependencia que rigen la secuencia del proyecto.</p>
<p>El siguiente fragmento permite ingresar estos datos al modelo:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Ingresar los datos del modelo (Tareas y dependencias)

#Crear el proyecto "p"
p = Node('proyecto')

tareas = [("A", {"duracion": 3}), 
          ("B", {"duracion": 2}), 
          ("C", {"duracion": 4}), 
          ("D", {"duracion": 3}), 
          ("E", {"duracion": 2}), 
          ("F", {"duracion": 4}), 
          ("G", {"duracion": 2}), 
          ("H", {"duracion": 1}), 
          ("I", {"duracion": 2}), 
          ("J", {"duracion": 4})]

dependencias = [("A", "E"), 
                ("B", "E"), 
                ("E", "F"),
                ("F", "G"), 
                ("G", "I"), 
                ("I", "J"),
                ("C", "J"), 
                ("H", "I"), 
                ("D", "H")]

# Cargar al proyecto las tareas y sus duraciones
for i in tareas:
    p.add(Node(i[0], duration=i[1]["duracion"]))

# Cargar al proyecto sus dependencias (secuencias)
for j in dependencias:
    p.link(j[0],j[1])

# Actualizar el proyecto:
p.update_all()</code></pre>
</div>
<p>El anterior fragmento nos permite cargar todos los datos necesarios para conocer la Ruta Crítica del modelo. Veamos cómo obtenerla:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Obtener la Ruta Crítica del modelo
p.get_critical_path()</code></pre>
</div>
<p>Al ejecutar esta instrucción tenemos la siguiente salida:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica.png" alt="Ruta critica" width="492" height="104" class="size-full wp-image-28577 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica.png 492w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica-300x63.png 300w" sizes="(max-width: 492px) 100vw, 492px" /></p>
<p>De la misma manera, podemos obtener la duración estimada del proyecto:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Obtener la duración del proyecto
p.duration</code></pre>
</div>
<p>Al ejecutar esta instrucción tenemos la siguiente salida:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_duracion.png" alt="Ruta critica_duracion" width="492" height="84" class="size-full wp-image-28578 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_duracion.png 492w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_duracion-300x51.png 300w" sizes="(max-width: 492px) 100vw, 492px" /></p>
<p>Así entonces, de esta manera muy sencilla tenemos las actividades que componen la Ruta Crítica y la duración del proyecto de acuerdo a CPM (17 semanas). Podríamos finalizar el modelo hasta acá, sin embargo, queremos obtener el diagrama de Gantt del proyecto, y para eso es necesario obtener algunas variables adicionales.</p>
<h3>Paso 4: Obtener las variables de inicio y finalización</h3>

		<div id="paso-4-obtener-las-variables-de-inicio-y-finalizacion" data-title="Paso 4: Obtener las variables de inicio y finalización" class="index-title"></div>
	
<p>Ya que el problema planteado no establece fechas de inicio y finalización, podemos, mediante <em>Python</em>, utilizar una fecha de inicio artificial, por ejemplo: Hoy. <em>¿Con qué objetivo hacemos esto?</em> Los diagramas de Gantt requieren de una línea de tiempo y es preciso establecer estas variables. Estableceremos fechas de inicio, de finalización y un status para cada actividad del proyecto.</p>
<p>En este caso puntual, ya que la duración de cada actividad se nos da en semanas, multiplicaremos el valor de la duración por 7:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Obtener las variables de inicio y finalización
ruta_critica = [str(n) for n in p.get_critical_path()]

proj_fecha_inicio = datetime.date.today()

proj_calendario = pd.DataFrame([dict(Tarea = key, 
                                   Inicio = datetime.date.today(), 
                                   Fin = datetime.date.today() + datetime.timedelta(val['duracion']*7), 
                                   Status = 'Actividad Normal')
                              for key, val in dict(tareas).items()])

for key, val in dict(tareas).items():
    dep = [d for d in dependencias if d[1] == key]
    prev_tareas = [t[0] for t in dep]
    if prev_tareas:
        prev_fin = proj_calendario[proj_calendario.Tarea.isin(prev_tareas)]['Fin'].max()
        proj_calendario.loc[proj_calendario.Tarea == key, 'Inicio'] = prev_fin
        proj_calendario.loc[proj_calendario.Tarea == key, 'Fin'] = prev_fin + datetime.timedelta(val['duracion']*7)
        
proj_calendario.loc[proj_calendario.Tarea.isin(ruta_critica), 'Status'] = 'Ruta Crítica'
        
display(proj_calendario)</code></pre>
</div>
<p>Al ejecutar este fragmento de código, tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_fechas.png" alt="Ruta critica_fechas" width="381" height="342" class="size-full wp-image-28580 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_fechas.png 381w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_fechas-300x269.png 300w" sizes="(max-width: 381px) 100vw, 381px" /></p>
<p>Podemos apreciar cómo tenemos las fechas estimadas de inicio de cada actividad y su correspondiente fecha de finalización (teniendo en cuenta que la duración de las actividades está dada en semanas). También tenemos un <em>status</em> relacionado con la naturaleza de cada actividad: <em>Crítica o Normal</em>.</p>
<p>Y tenemos fechas de inicio y finalización, lo siguiente será calcular cuántos días pasan entre el inicio del proyecto y el inicio y finalización de cada actividad:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Número de días desde que el proyecto inicia hasta que la tarea inicia
proj_calendario['dias_inicio'] = (proj_calendario.Inicio-proj_fecha_inicio).dt.days
# Número de días desde que el proyecto inicia hasta que la tarea finaliza
proj_calendario['dias_fin'] = (proj_calendario.Fin-proj_fecha_inicio).dt.days
# Días entre el inicio y el fin de cada tarea
proj_calendario['dias_inicio_fin'] = proj_calendario.dias_fin - proj_calendario.dias_inicio

display(proj_calendario)</code></pre>
</div>
<p>Al ejecutar este fragmento de código, tendremos:<span style="background-color: inherit; color: inherit; font-family: inherit; font-size: 15px; font-weight: lighter; white-space: pre;"></span></p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_inicio_fin.png" alt="Ruta Crítica mediante Python" width="690" height="342" class="aligncenter wp-image-28581 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_inicio_fin.png 690w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Ruta-critica_inicio_fin-300x149.png 300w" sizes="(max-width: 690px) 100vw, 690px" /></p>
<h3>Paso 5: Obtener el diagrama de Gantt (Graficar)</h3>

		<div id="paso-5-obtener-el-diagrama-de-gantt-graficar" data-title="Paso 5: Obtener el diagrama de Gantt (Graficar)" class="index-title"></div>
	
<p>El siguiente paso consiste en graficar de acuerdo al diagrama de Gantt, ls actividades del proyecto. El eje <em>x</em> estará dado en días.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Graficar las actividades en un diagrama de Gantt
fig, ax = plt.subplots(1, figsize=(16,6))
ax.barh(proj_calendario.Tarea, proj_calendario.dias_inicio_fin, left=proj_calendario.dias_inicio)
plt.show()</code></pre>
</div>
<p>Al ejecutar el fragmento tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt.png" alt="diagrama_gantt" width="921" height="357" class="alignnone size-full wp-image-28583" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt.png 921w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt-300x116.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt-768x298.png 768w" sizes="(max-width: 921px) 100vw, 921px" /></p>
<h3>Paso 6: Mejorar el diagrama de Gantt</h3>

		<div id="paso-6-mejorar-el-diagrama-de-gantt" data-title="Paso 6: Mejorar el diagrama de Gantt" class="index-title"></div>
	
<p>Una vez obtenido el diagrama podemos realizar modificaciones sobre el mismo, por ejemplo: dar un color específico a las actividades de la ruta crítica, anexar leyendas, entre otros. Vamos a resaltar con rojo las actividades críticas, y a anexar alguna leyenda de actividades:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Dar color rojo a las columnas de actividades críticas
def color(row):
    c_dict = {'Ruta Crítica':'#E64646', 'Actividad Normal':'#4F81BE'}
    return c_dict[row['Status']]
proj_calendario['color'] = proj_calendario.apply(color, axis=1)
fig, ax = plt.subplots(1, figsize=(16,6))
ax.barh(proj_calendario.Tarea, proj_calendario.dias_inicio_fin, left=proj_calendario.dias_inicio, color=proj_calendario.color)

#Anexar leyendas
c_dict = {'Ruta crítica':'#E64646', 'Actividad normal':'#4F81BE'}
leyenda = [Patch(facecolor=c_dict[i], label=i)  for i in c_dict]
plt.legend(handles=leyenda)

plt.show()</code></pre>
</div>
<p>Al ejecutar el fragmento tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt_cpm.png" alt="Ruta Crítica mediante Python" width="921" height="357" class="alignnone wp-image-28584 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt_cpm.png 921w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt_cpm-300x116.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/diagrama_gantt_cpm-768x298.png 768w" sizes="(max-width: 921px) 100vw, 921px" /></p>
<p>Ahora tenemos un modelo capaz de obtener las actividades críticas de un proyecto, determinar su duración de acuerdo al algoritmo CPM y graficar las actividades mediante un diagrama de Gantt.</p>
<p>También es posible incorporar una variable de «estado de terminación» de cada actividad, para así observar el avance del proyecto.</p>
<p>El código completo de este desarrollo lo puedes encontrar en nuestro cuaderno: <a href="https://colab.research.google.com/drive/1AaFQDIQ_n1nR1BsrxQqZg4pEu_dyP_6K?usp=sharing" target="_blank" rel="noopener"><em><strong>Método de la Ruta Crítica (CPM) mediante Python</strong></em></a>.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-de-la-ruta-critica-mediante-python-cpm/">Método de la Ruta Crítica mediante Python (CPM)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-de-la-ruta-critica-mediante-python-cpm/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Localización de varios almacenes mediante agrupación geoespacial</title>
		<link>https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/localizacion-de-varios-almacenes-mediante-agrupacion-geoespacial/</link>
					<comments>https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/localizacion-de-varios-almacenes-mediante-agrupacion-geoespacial/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Thu, 14 Oct 2021 19:54:29 +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[Gestión de almacenes]]></category>
		<category><![CDATA[Inteligencia artificial]]></category>
		<category><![CDATA[Localización de instalaciones]]></category>
		<category><![CDATA[Logística]]></category>
		<category><![CDATA[Agrupación geoespacial]]></category>
		<category><![CDATA[Centro de masa]]></category>
		<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Localización]]></category>
		<category><![CDATA[Machine learning]]></category>
		<category><![CDATA[Mapa de calor]]></category>
		<category><![CDATA[Mapas de calor]]></category>
		<category><![CDATA[Método del Centro de gravedad]]></category>
		<category><![CDATA[Métodos de localización]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=28444</guid>

					<description><![CDATA[<p>En un artículo anterior, desarrollamos un modelo capaz de determinar la localización de una instalación (almacén), de acuerdo a un conjunto de ubicaciones existentes (clientes); estas ubicaciones tenían una ponderación determinada (peso, por ejemplo demanda), y basamos nuestro desarrollo en el algoritmo de Centro de Gravedad. El valor agregado del modelo consistía en la integración &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/localizacion-de-varios-almacenes-mediante-agrupacion-geoespacial/">Localización de varios almacenes mediante agrupación geoespacial</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="introduccion" data-title="Introducción" class="index-title"></div>
	
<p>En un artículo anterior, desarrollamos un modelo capaz de determinar la localización de una instalación (almacén), de acuerdo a un conjunto de ubicaciones existentes (clientes); estas ubicaciones tenían una ponderación determinada (peso, por ejemplo demanda), y basamos nuestro desarrollo en el algoritmo de Centro de Gravedad.</p>
<p>El valor agregado del modelo consistía en la integración de una capa de mapa de calor (para graficar la densidad), un proceso de geocodificación y el uso de un entorno geográfico real. 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.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Para ver el artículo: <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>
			</div>
		</div>
	
<p>La pregunta siguiente que nos hacemos es <em>¿Cómo determinar la localización de múltiples instalaciones?</em> En realidad, hay muchas respuestas para este interrogante, y gran parte de ellas conducen a la <strong>agrupación geoespacial</strong> (Clustering).</p>
<h2>¿Qué es la agrupación geoespacial (Clustering)?</h2>

		<div id="que-es-la-agrupacion-geoespacial-clustering" data-title="¿Qué es la agrupación geoespacial (Clustering)?" class="index-title"></div>
	
<p>La agrupación geoespacial es un método que se utiliza para asociar un conjunto de objetos espaciales en grupos denominados «<em>clusters</em>«. Los objetos que conforman cada grupo presentan un grado de similitud asociado a un atributo o varios atributos en particular.</p>
<p>El objetivo de la agrupación geoespacial, consiste en determinar una relación entre atributos espaciales (coordenadas, ubicación) y no espaciales (demanda, por ejemplo).</p>
<p>En la literatura encontraremos varios tipos de agrupación geoespacial, cada uno con un enfoque particular, y un campo de aplicación específico; entre los cuales podemos encontrar:</p>

		<div class="lightbulb tie-list-shortcode">
<ul>
<li>Agrupación de particiones</li>
<li>Agrupación jerárquica</li>
<li>Agrupación <em>Fuzzy</em></li>
<li>Agrupación basada en densidad</li>
</ul>

		</div>
	
<p>En nuestro caso, que pretendemos determinar la localización de varias instalaciones, considerando la ponderación y ubicación de los puntos existentes, requerimos de un modelo capaz de relacionar atributos espaciales (coordenadas) y no espaciales (peso de cada nodo). Que nos permita, primero agrupar los puntos dados (ubicaciones), y eventualmente, aplicar un algoritmo de <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-del-centro-de-gravedad/" target="_blank" rel="noopener"><strong>Centro de Gravedad</strong></a>, para determinar localizaciones potenciales.</p>
<p>Para tales efectos, vamos a utilizar la <strong>agrupación de particiones</strong>, que se caracteriza, entre otras, por:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Agrupar los puntos espaciales en subconjuntos</li>
<li>Cada punto agrupado pertenece solo a un subconjunto (clúster)</li>
<li>Cada subconjunto tiene al menos un punto</li>
</ul>

		</div>
	
<p>Vale la pena destacar que en cuanto a la agrupación de participaciones, en esta categoría encontraremos varios métodos de partición, y nosotros utilizaremos el método <em><strong>K-Means</strong></em>, un algoritmo de aprendizaje automático (Machine Learning) no supervisado. Para ello utilizaremos <em>Python</em>.</p>
<figure id="attachment_28445" aria-describedby="caption-attachment-28445" style="width: 299px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/clustering.png" alt="clustering" width="299" height="290" class=" wp-image-28445" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/clustering.png 471w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/clustering-300x291.png 300w" sizes="(max-width: 299px) 100vw, 299px" /><figcaption id="caption-attachment-28445" class="wp-caption-text">Agrupación por particiones</figcaption></figure>
<p>Para sintetizar, el objetivo de este artículo será el de emplear un algoritmo de aprendizaje automático capaz de agrupar nuestros nodos en <em>clusters</em>, de acuerdo a atributos espaciales (coordenadas) y no espaciales (ponderación); para luego, utilizar un algoritmo de Centro de Gravedad en cada <em>clúster</em> para determinar la localización de múltiples instalaciones (almacenes, depósitos, etc.).</p>
<p>En el desarrollo de este ejercicio emplearemos:</p>

		<div class="plus tie-list-shortcode">
<ul>
<li><em><strong>Colaboratory</strong>: </em>Este es un entorno de programación y ejecución virtual de Python desarrollado por Google. Nos permitirá no tener la necesidad de realizar ninguna instalación en nuestros equipos. Todo lo que desarrollemos lo ejecutaremos en un cuaderno virtual.</li>
<li><strong><em>Python</em></strong>: Este será el lenguaje de programación que vamos a utilizar, y advertimos: No es necesario tener conocimientos previos, y el objetivo del artículo no es convertirnos en programadores expertos. Utilizaremos fragmentos de códigos, librerías disponibles, y explicaremos lo necesario para configurar nuestro desarrollo de acuerdo a los objetivos específicos de nuestros modelos.</li>
<li><strong><em>SkLearn</em></strong>: Las librerías son a <em>Python</em>, lo que las <em>apps </em>son a un teléfono celular. Esta es quizá una de las características más a tractivas de este lenguaje: Casi que existe una librería para cada necesidad. En este caso, <em>SKLearn</em>, es una librería que integra un conjunto de métodos de aprendizaje automático y minería de datos.</li>
<li><em><strong>K-Means</strong>: </em>Este es un módulo de <em>SKLearn</em> que contiene el algoritmo de agrupación <em>KMeans,</em> el cual separa muestras en <em>n</em> grupos de varianza igual, minimizando un criterio conocido como inercia o suma de cuadrados dentro del grupo.</li>
<li><em><strong>Matplotlib</strong>: </em>Es una biblioteca completa para crear visualizaciones estáticas, animadas e interactivas en Python. Nos permitirá visualizar nuestros nodos y nuestras localizaciones solución.</li>
<li><strong><em>Pandas</em></strong>: <span>Es un paquete de Python que proporciona estructuras de datos rápidas, y flexibles, diseñadas para que el trabajo con datos estructurados (tabulares, multidimensionales, potencialmente heterogéneos) y de series de tiempo sea fácil e intuitivo.</span></li>
<li><em><strong>Numpy</strong>: </em>Es una librería que nos permitirá efectuar operaciones matriciales en Python.</li>
</ul>

		</div>
	
<hr />
<p>Para desarrollar estas herramientas, vamos a plantear un caso típico de localización de múltiples instalaciones a partir de la consideración de otros nodos (nodos de demanda, por ejemplo).</p>
<h2>Caso de aplicación</h2>

		<div id="caso-de-aplicacion" data-title="Caso de aplicación" class="index-title"></div>
	
<blockquote class=" quote-simple "><p>El Departamento de Desarrollo Sostenible de la ciudad de Cali se encuentra implementando una estrategia piloto de recolección de aceite de cocina usado. Ha articulado este proyecto con una Universidad, la cual desarrolló 4 contenedores inteligentes (BIN’s) para la disposición del bioresiduo.</p></blockquote>
<blockquote class=" quote-simple "><p>En investigaciones asociadas, la Universidad ha determinado que el reciclaje del aceite es un problema de densidad; esto quiere decir que es vital la ubicación de los contenedores (cobertura), para así mismo optimizar el proceso de disposición y recolección. El proyecto piloto piensa articular a las instituciones de educación como puntos potenciales de recolección. Por medio de las instituciones piensan socializar el programa con la comunidad. El primer reto del proyecto consiste en determinar la ubicación de los contenedores inteligentes (4 unidades). La información relacionada con las instituciones de educación que hacen parte del programa (ubicación geográfica / población estudiantil), se detalla a continuación:</p></blockquote>
<table width="611">
<tbody>
<tr>
<td width="80">Nodo</td>
<td width="224">Lugar (Colegios)</td>
<td width="127">Latitud</td>
<td width="100">Longitud</td>
<td width="80">Peso</td>
</tr>
<tr>
<td>0</td>
<td> Comfandi San Nicolás</td>
<td>3,453591118</td>
<td>-76,52254886</td>
<td>1494</td>
</tr>
<tr>
<td>1</td>
<td> Mayor de Santiago de Cali</td>
<td>3,451577758</td>
<td>-76,51023216</td>
<td>908</td>
</tr>
<tr>
<td>2</td>
<td> Municipal Comfandi</td>
<td>3,448107915</td>
<td>-76,51074714</td>
<td>697</td>
</tr>
<tr>
<td>3</td>
<td> Internado San Carlos</td>
<td>3,446994135</td>
<td>-76,51525325</td>
<td>1714</td>
</tr>
<tr>
<td>4</td>
<td> León de Greiff</td>
<td>3,447979402</td>
<td>-76,49993247</td>
<td>1731</td>
</tr>
<tr>
<td>5</td>
<td> Nuestra Señora de la Anunciación</td>
<td>3,445152112</td>
<td>-76,49641342</td>
<td>2297</td>
</tr>
<tr>
<td>6</td>
<td> Fernando de Aragón</td>
<td>3,437355603</td>
<td>-76,51383704</td>
<td>1265</td>
</tr>
<tr>
<td>7</td>
<td> Casa Evangélica</td>
<td>3,437955337</td>
<td>-76,52299947</td>
<td>1658</td>
</tr>
<tr>
<td>8</td>
<td> San Alberto Magno</td>
<td>3,433028941</td>
<td>-76,52707643</td>
<td>604</td>
</tr>
<tr>
<td>9</td>
<td> Santa María Goretty</td>
<td>3,433414486</td>
<td>-76,50720662</td>
<td>416</td>
</tr>
<tr>
<td>10</td>
<td> San Alberto Magno</td>
<td>3,433157456</td>
<td>-76,5267331</td>
<td>1584</td>
</tr>
<tr>
<td>11</td>
<td> San Ignacio de Loyola</td>
<td>3,431786629</td>
<td>-76,51733464</td>
<td>2350</td>
</tr>
<tr>
<td>12</td>
<td> Nuestro Futuro</td>
<td>3,430629992</td>
<td>-76,50360174</td>
<td>964</td>
</tr>
<tr>
<td>13</td>
<td> Sabio Caldas</td>
<td>3,429087807</td>
<td>-76,51660508</td>
<td>329</td>
</tr>
<tr>
<td>14</td>
<td> CREAD</td>
<td>3,425060978</td>
<td>-76,51488847</td>
<td>774</td>
</tr>
<tr>
<td>15</td>
<td> Licomtec</td>
<td>3,416664559</td>
<td>-76,51673383</td>
<td>1818</td>
</tr>
<tr>
<td>16</td>
<td>  Nuestra Señora De La Providencia</td>
<td>3,419534772</td>
<td>-76,49591989</td>
<td>1530</td>
</tr>
<tr>
<td>17</td>
<td> Real Suizo</td>
<td>3,415208029</td>
<td>-76,49323768</td>
<td>2106</td>
</tr>
<tr>
<td>18</td>
<td> Nuevo Edén</td>
<td>3,415722099</td>
<td>-76,53383559</td>
<td>330</td>
</tr>
<tr>
<td>19</td>
<td> Católico</td>
<td>3,413066071</td>
<td>-76,53984374</td>
<td>976</td>
</tr>
<tr>
<td>20</td>
<td> Santa María Stella</td>
<td>3,427031556</td>
<td>-76,55134505</td>
<td>1975</td>
</tr>
<tr>
<td>21</td>
<td> Santa Isabel</td>
<td>3,40805355</td>
<td>-76,50817223</td>
<td>936</td>
</tr>
<tr>
<td>22</td>
<td> Compartir</td>
<td>3,431957663</td>
<td>-76,47495575</td>
<td>1563</td>
</tr>
<tr>
<td>23</td>
<td> Lancaster</td>
<td>3,400770816</td>
<td>-76,55177421</td>
<td>1219</td>
</tr>
<tr>
<td>24</td>
<td> Parroquial Divino Salvador</td>
<td>3,397086588</td>
<td>-76,54259033</td>
<td>1954</td>
</tr>
<tr>
<td>25</td>
<td> Reyes Católicos</td>
<td>3,393316667</td>
<td>-76,53735466</td>
<td>399</td>
</tr>
<tr>
<td>26</td>
<td> Liceo Anglo del Valle</td>
<td>3,387318719</td>
<td>-76,51975937</td>
<td>1741</td>
</tr>
<tr>
<td>27</td>
<td> Laurence</td>
<td>3,383420238</td>
<td>-76,52078934</td>
<td>1111</td>
</tr>
<tr>
<td>28</td>
<td> Los Almendros</td>
<td>3,381278208</td>
<td>-76,52023144</td>
<td>1826</td>
</tr>
<tr>
<td>29</td>
<td> Bautista</td>
<td>3,37720834</td>
<td>-76,52327843</td>
<td>1772</td>
</tr>
<tr>
<td>30</td>
<td> Lacordaire</td>
<td>3,378150837</td>
<td>-76,54460736</td>
<td>1965</td>
</tr>
<tr>
<td>31</td>
<td> General José María Córdoba</td>
<td>3,393573314</td>
<td>-76,54932805</td>
<td>841</td>
</tr>
<tr>
<td>32</td>
<td> El Hogar</td>
<td>3,390745864</td>
<td>-76,5503151</td>
<td>770</td>
</tr>
<tr>
<td>33</td>
<td> Americano</td>
<td>3,379093255</td>
<td>-76,54688187</td>
<td>650</td>
</tr>
<tr>
<td>34</td>
<td> Santa Filomena</td>
<td>3,401969935</td>
<td>-76,51345082</td>
<td>1401</td>
</tr>
<tr>
<td>35</td>
<td> Tomás Vasconi</td>
<td>3,403040928</td>
<td>-76,5173132</td>
<td>1474</td>
</tr>
<tr>
<td>36</td>
<td> República del Salvador</td>
<td>3,404454636</td>
<td>-76,52143308</td>
<td>1926</td>
</tr>
<tr>
<td>37</td>
<td> Los Andes</td>
<td>3,429601077</td>
<td>-76,53761216</td>
<td>1566</td>
</tr>
<tr>
<td>38</td>
<td>Villacolombia</td>
<td>3,445493943</td>
<td>-76,50169202</td>
<td>2354</td>
</tr>
<tr>
<td>39</td>
<td>Las Américas</td>
<td>3,449220822</td>
<td>-76,50594064</td>
<td>2043</td>
</tr>
<tr>
<td>40</td>
<td>SantaFe</td>
<td>3,442238267</td>
<td>-76,50988885</td>
<td>2333</td>
</tr>
<tr>
<td>41</td>
<td>Evaristo García</td>
<td>3,440781776</td>
<td>-76,51752778</td>
<td>696</td>
</tr>
<tr>
<td>42</td>
<td>Alfredo Vasquez Cobo</td>
<td>3,435598366</td>
<td>-76,5164549</td>
<td>1073</td>
</tr>
<tr>
<td>43</td>
<td>Ciudad de Cali</td>
<td>3,431143181</td>
<td>-76,51272126</td>
<td>1275</td>
</tr>
<tr>
<td>44</td>
<td>INEM</td>
<td>3,482761991</td>
<td>-76,49976083</td>
<td>1485</td>
</tr>
<tr>
<td>45</td>
<td>Olaya Herrera</td>
<td>3,478178519</td>
<td>-76,51280709</td>
<td>1470</td>
</tr>
<tr>
<td>46</td>
<td>Guillermo Valencia</td>
<td>3,47449459</td>
<td>-76,5136654</td>
<td>1248</td>
</tr>
<tr>
<td>47</td>
<td>José Ignacio Rengifo</td>
<td>3,471624543</td>
<td>-76,5136654</td>
<td>2160</td>
</tr>
<tr>
<td>48</td>
<td>Santo Tomás</td>
<td>3,45830227</td>
<td>-76,5164549</td>
<td>1776</td>
</tr>
<tr>
<td>49</td>
<td>La Merced</td>
<td>3,46271449</td>
<td>-76,5024645</td>
<td>706</td>
</tr>
<tr>
<td>50</td>
<td>Pedro Antonio Molina</td>
<td>3,482804827</td>
<td>-76,48761579</td>
<td>2369</td>
</tr>
<tr>
<td>51</td>
<td>Santa Librada</td>
<td>3,46228612</td>
<td>-76,52302095</td>
<td>2498</td>
</tr>
<tr>
<td>52</td>
<td>República de Israel</td>
<td>3,463656904</td>
<td>-76,51053258</td>
<td>1510</td>
</tr>
<tr>
<td>53</td>
<td>San Vicente Paul</td>
<td>3,466227117</td>
<td>-76,50950261</td>
<td>2330</td>
</tr>
<tr>
<td>54</td>
<td>Manuel María Mallarino</td>
<td>3,456760129</td>
<td>-76,48851701</td>
<td>1464</td>
</tr>
<tr>
<td>55</td>
<td>Sebastían de Belalcazar</td>
<td>3,460229941</td>
<td>-76,48521253</td>
<td>628</td>
</tr>
<tr>
<td>56</td>
<td>Liceo Departamental</td>
<td>3,423860462</td>
<td>-76,5385563</td>
<td>364</td>
</tr>
<tr>
<td>57</td>
<td>Libardo Madrid</td>
<td>3,422061154</td>
<td>-76,54383489</td>
<td>2439</td>
</tr>
<tr>
<td>58</td>
<td>Metropolitano Santa Anita</td>
<td>3,401691038</td>
<td>-76,54218265</td>
<td>1815</td>
</tr>
<tr>
<td>59</td>
<td>San José</td>
<td>3,396935816</td>
<td>-76,55031511</td>
<td>2230</td>
</tr>
</tbody>
</table>
<hr />
<p>Para tales efectos, desarrollaremos un modelo que apoye el análisis preliminar y la localización de los múltiples contenedores. También, que tenga la capacidad de predecir el grupo (clúster) al que pertenecería un nodo nuevo.</p>
<hr />
<h3>Paso 1: Crear el entorno de trabajo en Colaboratory</h3>

		<div id="paso-1-crear-el-entorno-de-trabajo-en-colaboratory" data-title="Paso 1: Crear el entorno de trabajo en Colaboratory" class="index-title"></div>
	
<p><span>Lo primero que vamos a hacer consiste en crear un entorno de trabajo en <em>Google</em> </span><em>Colaboratory</em><span>, así que vayamos allá: </span><a href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"><em><strong>Abrir cuaderno nuevo</strong></em></a><span>.</span></p>
<p>Verán que tienen un lienzo para programar el modelo, así que en este cuaderno podemos ir generando las líneas de código que explicaremos en los pasos siguientes.</p>
<h3>Paso 2: Importar las librerías necesarias</h3>

		<div id="paso-2-importar-las-librerias-necesarias" data-title="Paso 2: Importar las librerías necesarias" class="index-title"></div>
	
<p>Respecto a las librerías, en la introducción del artículo hicimos una descripción de la funcionalidad de cada una, veamos como importarlas en nuestro entorno:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Importar las librerías necesarias
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans</code></pre>
</div>
<p>De esta manera, tenemos todo lo necesario para empezar a desarrollar nuestro código.</p>
<h3>Paso 3: Importar los datos desde Excel</h3>

		<div id="paso-3-importar-los-datos-desde-excel" data-title="Paso 3: Importar los datos desde Excel" class="index-title"></div>
	
<p>De acuerdo a las necesidades del modelo, podemos desarrollar un código que permita la entrada manual de la información, la captura de los datos desde entornos digitales (Internet, por ejemplo), o podemos, desde luego, alimentar nuestro modelo con información contenida en documentos externos, como es el caso de un archivo de Microsoft Excel.</p>
<p>Esta puede considerarse como una de las ventajas de utilizar <em>Python, </em>su capacidad de integrarse con cualquier fuente de datos. En nuestro caso, toda la información se encuentra contenida en un documento de Excel, el cual presenta el siguiente formato:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/datos_excel.png" alt="datos_excel" width="612" height="241" class="size-full wp-image-28446 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/datos_excel.png 612w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/datos_excel-300x118.png 300w" sizes="(max-width: 612px) 100vw, 612px" /></p>
<p>Ya veremos cómo, parte de estos datos son prescindibles y otros indispensables.</p>

		<div class="box download  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Puedes descargar el documento de Excel que utilizamos en este ejemplo: <a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/cluster.xlsx" target="_blank" rel="noopener"><strong>Base de datos</strong></a>
			</div>
		</div>
	
<p>En <em>Colaboratory</em>, el siguiente fragmento permitirá cargar un archivo al entorno de ejecución:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>from google.colab import files

uploaded = files.upload()

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))</code></pre>
</div>
<p>Al ejecutar este fragmento de código, se abrirá una ventana emergente del explorador que permitirá cargar nuestra base de datos, en nuestro caso el archivo tienen el nombre de <em>cluster.xlsx.</em></p>
<p>La siguiente línea de código permitirá almacenar los datos contenidos en el documento en un <em>Dataframe</em> de nuestro entorno, dentro de la variable <em>data</em>.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Leer el documento de Excel y almacenar los datos en la variable data
data = pd.read_excel('cluster.xlsx')</code></pre>
</div>
<p>Podemos en cualquier momento confirmar si la carga de los datos se ha realizado correctamente, para eso imprimiremos las primeras cinco filas del  <em>DataFrame:</em></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>data.head()</code></pre>
</div>
<p>Al ejecutar esta instrucción tenemos la siguiente salida:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head_cluster.png" alt="head_cluster" width="539" height="237" class="size-full wp-image-28448 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head_cluster.png 539w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head_cluster-300x132.png 300w" sizes="(max-width: 539px) 100vw, 539px" /></p>
<h3>Paso 4: Graficar los puntos dados iniciales (Nodos)</h3>

		<div id="paso-4-graficar-los-puntos-dados-iniciales-nodos" data-title="Paso 4: Graficar los puntos dados iniciales (Nodos)" class="index-title"></div>
	
<p>Nuestros puntos iniciales, o las ubicaciones de partida son las instituciones de educación que nos otorga el planteamiento del problema.</p>
<p>Para graficar estos puntos utilizamos el sistema de coordenadas disponible: Latitud y Longitud. Así entonces, debemos extraer estos datos de la hoja de cálculo (<em>DataFrame</em>) que hemos importado al modelo; convertir estas coordenadas en una matriz bidimensional (Latitud y Longitud) y graficar los puntos:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Graficar los nodos dados (ubicaciones)
Lat= data['Latitud']
Lon = data['Longitud']
Peso = data['Peso']
X = []
for i in range(len(data['Latitud'])):
    X.append(Lat[i])
    X.append(Lon[i])

X = np.array(X)

X = X.reshape(-1, 2,)


plt.scatter(Lat, Lon)
plt.show()</code></pre>
</div>
<p>Al ejecutar este fragmento de código, tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/ubicaciones-iniciales.png" alt="ubicaciones iniciales" width="393" height="248" class="size-full wp-image-28449 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/ubicaciones-iniciales.png 393w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/ubicaciones-iniciales-300x189.png 300w" sizes="(max-width: 393px) 100vw, 393px" /></p>
<p>Podemos apreciar cómo se encuentran dispersos los nodos iniciales, formando parte un mismo conjunto que es la población. Las coordenadas son latitud y longitud. Los nodos son, una vez más recordamos, las instituciones educativas, de acuerdo al caso de estudio.</p>
<h3>Paso 5: Agrupar los nodos geoespacialmente mediante Machine Learning</h3>

		<div id="paso-5-agrupar-los-nodos-geoespacialmente-mediante-machine-learning" data-title="Paso 5: Agrupar los nodos geoespacialmente mediante Machine Learning" class="index-title"></div>
	
<p>Cuando mencionamos Machine Learning, a menudo la primera consideración que tenemos es de complejidad. Pues bien, muchos de los algoritmos que hemos utilizado durante décadas son en realidad de aprendizaje automático, como por ejemplo la <a href="https://ingenieriaindustrialonline.com/pronostico-de-la-demanda/regresion-lineal-en-python/"><em><strong>regresión lineal</strong></em></a>. El algoritmo de <em>K-Means </em>que emplearemos de forma automatizada mediante <em>Python</em>, utiliza centroides que minimizan la inercia, o el criterio de suma de cuadrados de cada clúster:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/formula_cluster.png" alt="formula_cluster" width="203" height="65" class="size-full wp-image-28451 aligncenter" /></p>
<p>Me pareció conveniente explicar un poco la teoría, pero vayamos a la práctica. Toda vez que tenemos los nodos del modelo, lo siguiente que debemos indicar es la cantidad de agrupaciones que queremos (clúster). Ya que el problema plantea la disposición de 4 contenedores, vamos a dividir la población de nodos en 4 conjuntos.</p>
<p>Luego, correremos el algoritmo <em>K-Means, </em>veamos cómo:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Ejecutar el algoritmo KMeans
clusters = 4
KMean = KMeans(n_clusters=clusters)
KMean_g = KMean.fit_predict(X)
KMean.fit(X)</code></pre>
</div>
<p>Lo siguiente que haremos será establecer los centroides de cada clúster, es decir, la ubicación de nuestros contendores. En primer lugar, el modelo nos dará las coordenadas. Utilizaremos la siguiente línea de código:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Determinar los centroides de cada clúster
KMean.cluster_centers_</code></pre>
</div>
<p>Al ejecutarla tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides.png" alt="centroides" width="436" height="129" class="size-full wp-image-28452 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides.png 436w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides-300x89.png 300w" sizes="(max-width: 436px) 100vw, 436px" /></p>
<p>Estas son las coordenadas que indican el centro de cada uno de nuestros grupos de nodos. Y teóricamente ahí deberíamos disponer nuestros contenedores.</p>
<h3>Paso 6: Graficar los clusters y los centroides (Localizaciones múltiples)</h3>

		<div id="paso-6-graficar-los-clusters-y-los-centroides-localizaciones-multiples" data-title="Paso 6: Graficar los clusters y los centroides (Localizaciones múltiples)" class="index-title"></div>
	
<p>El siguiente paso consiste en graficar todas las coordenadas que ya tenemos: tantos los nodos iniciales, como los los centroides, o las localizaciones solución. Veamos cómo:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Graficar todas las coordenadas (Puntos y centroides)
plt.scatter(X[:,0], X[:,1], c=KMean_g) #Puntos iniciales

#Centroides
plt.scatter(KMean.cluster_centers_[0][0], KMean.cluster_centers_[0][1], s=50, c='r')
plt.scatter(KMean.cluster_centers_[1][0], KMean.cluster_centers_[1][1], s=50, c='r')
plt.scatter(KMean.cluster_centers_[2][0], KMean.cluster_centers_[2][1], s=50, c='r')
plt.scatter(KMean.cluster_centers_[3][0], KMean.cluster_centers_[3][1], s=50, c='r')</code></pre>
</div>
<p>Al ejecutar el fragmento tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_II.png" alt="centroides_II" width="393" height="248" class="size-full wp-image-28453 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_II.png 393w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_II-300x189.png 300w" sizes="(max-width: 393px) 100vw, 393px" /></p>
<p>Vemos cómo se han efectuado las agrupaciones de los nodos (colores), y los marcadores rojos indican los centroides. Este debería ser el final de nuestro desarrollo, sin embargo, no sé si lo han notado, siempre hemos hablado de centroides, nunca de centros de gravedad o centros de masa. Bien, no sé si también han identificado que en ningún momento hemos considerado el peso de cada nodo, en este caso la <em>población estudiantil </em>de cada institución.</p>
<p><em>¿Esto qué implica?</em> Implica que hemos desarrollado un modelo que tiene exclusivamente consideraciones espaciales. De hecho, visualmente puede observarse cómo, básicamente los centroides se ubican en lo que podría considerarse el medio de cada clúster, sin ninguna consideración adicional aparente, por lo menos a la vista.</p>
<p>Pues bien, vamos a solucionarlo, para ello debemos retocar algunos de los pasos anteriores:</p>
<h3>Paso 5 (Recargado): Agrupar los nodos geoespacialmente mediante Machine Learning (Considerando atributos espaciales y no espaciales)</h3>

		<div id="paso-5-recargado-agrupar-los-nodos-geoespacialmente-mediante-machine-learning-considerando-atributos-espaciales-y-no-espaciales" data-title="Paso 5 (Recargado): Agrupar los nodos geoespacialmente mediante Machine Learning (Considerando atributos espaciales y no espaciales)" class="index-title"></div>
	
<p>Dentro de nuestro marco de datos (<em>DataFrame</em>) tenemos la información relacionada al peso de cada nodo (<em>Población estudiantil</em>). Pues bien, vamos a considerarla al ejecutar el algoritmo <em>K-Means</em>.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Ejecutar el algoritmo KMeans (Considerando el peso de los nodos)
clusters = 4
KMean = KMeans(n_clusters=clusters)
KMean_g = KMean.fit_predict(X)
KMean.fit(X, sample_weight=Peso)</code></pre>
</div>
<p>Lo siguiente que haremos será establecer los centroides de cada clúster, que ahora sí serán Centros de Gravedad; es decir, la ubicación de nuestros contendores. En primer lugar, el modelo nos dará las coordenadas. Utilizaremos la siguiente línea de código:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Determinar los centroides de cada clúster
KMean.cluster_centers_</code></pre>
</div>
<p>Al ejecutarla tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_recargado.png" alt="centroides_recargado" width="436" height="129" class="size-full wp-image-28454 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_recargado.png 436w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_recargado-300x89.png 300w" sizes="(max-width: 436px) 100vw, 436px" /></p>
<p>Los centroides han cambiado, ahora son centros de gravedad afectados por el peso de cada nodo. Es posible que incluso haya cambiado la agrupación de los nodos (composición de los clusters).</p>
<h3>Paso 6 (Recargado): Graficar los clusters y los Centros de Gravedad (Localizaciones múltiples)</h3>

		<div id="paso-6-recargado-graficar-los-clusters-y-los-centros-de-gravedad-localizaciones-multiples" data-title="Paso 6 (Recargado): Graficar los clusters y los Centros de Gravedad (Localizaciones múltiples)" class="index-title"></div>
	
<p>El siguiente paso consiste en graficar todas las coordenadas que ya tenemos: tantos los nodos iniciales, como los los Centros de Gravedad, o las localizaciones solución. Veamos cómo:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Graficar todas las coordenadas (Puntos y centroides)
plt.scatter(X[:,0], X[:,1], c=KMean_g) #Puntos iniciales

#Centroides
plt.scatter(KMean.cluster_centers_[0][0], KMean.cluster_centers_[0][1], s=50, c='r')
plt.scatter(KMean.cluster_centers_[1][0], KMean.cluster_centers_[1][1], s=50, c='r')
plt.scatter(KMean.cluster_centers_[2][0], KMean.cluster_centers_[2][1], s=50, c='r')
plt.scatter(KMean.cluster_centers_[3][0], KMean.cluster_centers_[3][1], s=50, c='r')</code></pre>
</div>
<p>Al ejecutar el fragmento tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Centros-de-gravedad.png" alt="Centros de gravedad" width="393" height="248" class="size-full wp-image-28455 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Centros-de-gravedad.png 393w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Centros-de-gravedad-300x189.png 300w" sizes="(max-width: 393px) 100vw, 393px" /></p>
<p>El resultado respecto a los centroides es diferente. La consideración de un atributo no espacial, en este caso el peso de cada nodo (<em>población estudiantil de cada institución educativa</em>), ha incidido en la ubicación propuesta de las localizaciones solución. Y este debería ser el final de nuestro modelo.</p>
<p>Hemos logrado agrupar nuestros puntos iniciales en clusters, y luego hemos determinado los Centros de Gravedad de cada uno de los clusters.</p>
<p>Por último, veamos una característica de la librería <em>K-Means </em>Análisis predictivo de nodos en clusters, es decir, de acuerdo a unas coordenadas dadas, podemos estimar el grupo al que pertenecerá un nuevo nodo.</p>
<h3>Paso 7: Predicción de clusters</h3>

		<div id="paso-7-prediccion-de-clusters" data-title="Paso 7: Predicción de clusters" class="index-title"></div>
	
<p>En primer lugar ejecutaremos una línea que nos permite identificar a cada nodo dentro de un grupo. Ya que tenemos 4 grupos, estos se identificarán de la siguiente manera: 0, 1, 2, 3.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>KMean.labels_</code></pre>
</div>
<p>Al ejecutar esta línea tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/grupos_nodos.png" alt="grupos_nodos" width="622" height="111" class="size-full wp-image-28456 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/grupos_nodos.png 622w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/grupos_nodos-300x54.png 300w" sizes="(max-width: 622px) 100vw, 622px" /></p>
<p>Vemos como cada una de las 60 instituciones educativas (nodos), tienen un identificador de grupo dentro del modelo.</p>
<p>Ahor, dadas las coordenadas de un nuevo nodo, podemos predecir el grupo al cual pertenecerá:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>sample_test=np.array([-3.433,-76.22])
second_test=sample_test.reshape(1, -1)
KMean.predict(second_test)</code></pre>
</div>
<p>Al ejecutar este fragmento tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/nodos_prediccion.png" alt="nodos_prediccion" width="483" height="118" class="size-full wp-image-28457 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/nodos_prediccion.png 483w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/nodos_prediccion-300x73.png 300w" sizes="(max-width: 483px) 100vw, 483px" /></p>
<p>Es decir, el algoritmo predice que de acuerdo a las coordenada dadas, el nuevo nodo formaría parte del clúster 0.</p>
<hr />
<p>Pudimos observar cómo varía el resultado dependiendo de la consideración de atributos netamente geoespaciales, y de atributos no espaciales, como la ponderación de cada nodo.</p>

		<div class="post-content-slideshow-outer">
			<div class="post-content-slideshow">

			<div class="loader-overlay"><div class="spinner-circle"></div></div>

				<div class="tie-slick-slider">

			<div class="slide post-content-slide">
				 Atributos geoespaciales |</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_II.png" alt="centroides_II" width="393" height="248" class="size-full wp-image-28453 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_II.png 393w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centroides_II-300x189.png 300w" sizes="(max-width: 393px) 100vw, 393px" /></p>

			</div><!-- post-content-slide -->
		

			<div class="slide post-content-slide">
				 Atributos geoespaciales y de ponderación |</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Centros-de-gravedad.png" alt="Centros de gravedad" width="393" height="248" class="size-full wp-image-28455 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Centros-de-gravedad.png 393w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Centros-de-gravedad-300x189.png 300w" sizes="(max-width: 393px) 100vw, 393px" /></p>

			</div><!-- post-content-slide -->
		


					<div class="slider-nav-wrapper">
						<ul class="tie-slider-nav"></ul>
					</div>
				</div><!-- tie-slick-slider -->
			</div><!-- post-content-slideshow -->
		</div><!-- post-content-slideshow-outer -->
	
<h2>Integración con mapas de calor y entornos geográficos reales</h2>
<p>Uno de los puntos negativos del modelo que acabamos de desarrollar es quizá que no nos permite visualizar gráficamente la densidad de los puntos. Si observamos las gráficas, todos los puntos parecen tener el mismo tamaño, y si bien esta no es una consideración para el funcionamiento del algoritmo; en el análisis preliminar quisiéramos tener esta herramienta. Otra consideración adicional sería la posibilidad de graficar todos nuestros puntos, y los centros de gravedad de cada (clúster) en un entorno geográfico real.</p>
<p>Pues bien, una de las ventajas fundamentales de <em>Python </em>consiste en que podemos integrar distintos desarrollos en nuestros modelos, tal es el caso del desarrollo que efectúanos en un artículo anterior (<a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/mapas-de-calor-y-algoritmo-de-centro-de-gravedad-utilizando-python/"><strong>Mapas de calor y Entornos geográficos reales</strong></a>); de tal manera que podamos complementar nuestro modelo.</p>
<p>No vamos a profundizar en la librerías, ni en la definición de las variables, para eso recomendamos leer el artículo. Veamos entonces, como complementamos este modelo:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>import folium
import statistics
from folium.plugins import HeatMap
mediaLong = statistics.mean(Lon)
mediaLat = statistics.mean(Lat)

# Crear un objeto de mapa base Map()
mapa = folium.Map(location=[mediaLat, mediaLong], zoom_start = 13)

# Crear una capa de mapa de calor
mapa_calor = HeatMap( list(zip(Lat, Lon, data["Peso"])),
                   min_opacity=0.2,
                   max_val=data["Peso"].max(),
                   radius=50, 
                   blur=50, 
                   max_zoom=1)

#Creamos el marcador de Centro de Gravedad
tooltip = 'Centro de gravedad'
folium.Marker([KMean.cluster_centers_[0][0], KMean.cluster_centers_[0][1]], popup="Centro", tooltip = tooltip).add_to(mapa)
folium.Marker([KMean.cluster_centers_[1][0], KMean.cluster_centers_[1][1]], popup="Centro", tooltip = tooltip).add_to(mapa)
folium.Marker([KMean.cluster_centers_[2][0], KMean.cluster_centers_[2][1]], popup="Centro", tooltip = tooltip).add_to(mapa)
folium.Marker([KMean.cluster_centers_[3][0], KMean.cluster_centers_[3][1]], popup="Centro", tooltip = tooltip).add_to(mapa)

# Adherimos la capa de mapa de calor al mapa principal
mapa_calor.add_to(mapa)
mapa</code></pre>
</div>
<p>Al ejecutar este fragmento tendremos el siguiente resultado:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Mapa-de-calorII.png" alt="Mapa de calorII" width="700" height="394" class="size-full wp-image-28492 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Mapa-de-calorII.png 700w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Mapa-de-calorII-300x169.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/Mapa-de-calorII-390x220.png 390w" sizes="(max-width: 700px) 100vw, 700px" /></p>
<p>Ahora tenemos un modelo capaz de <strong>agrupar nuestros nodos en clusters</strong> de acuerdo a atributos geoespaciales; capaz de <strong>determinar los centros de gravedad</strong> de cada cluster de acuerdo a atributos no espaciales (en nuestro caso la población de los nodos); capaz de complementarse con una capa de visualización de <strong>mapa de calor</strong> que nos permite apreciar la densidad y todo esto <strong>puede visualizarse en un entorno geográfico real</strong>.</p>
<h2>Consideraciones finales</h2>

		<div id="consideraciones-finales" data-title="Consideraciones finales" class="index-title"></div>
	
<p>Ya lo expresamos anteriormente, la base del algoritmo <em>K-Means </em>es la consideración y minimización de la inercia, y en espacios de muy altas dimensiones, las distancias suelen inflarse, ya que esta no es una medida normalizada.</p>
<p>Sin embargo, para los efectos que hemos empleado, el algoritmo suele arrojar resultados satisfactorios.</p>
<p>El código completo de este desarrollo lo puedes encontrar en nuestro cuaderno: <a href="https://colab.research.google.com/drive/1qboyfxT1kdjn9XiqXudZBf74dUtxwCkn?usp=sharing" target="_blank" rel="noopener"><em><strong>Localización de varias instalaciones mediante agrupación geoespacial y Centro de Gravedad (Python)</strong></em></a>.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/localizacion-de-varios-almacenes-mediante-agrupacion-geoespacial/">Localización de varios almacenes mediante agrupación geoespacial</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/localizacion-de-varios-almacenes-mediante-agrupacion-geoespacial/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mapas de calor y Algoritmo de Centro de Gravedad utilizando Python</title>
		<link>https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/mapas-de-calor-y-algoritmo-de-centro-de-gravedad-utilizando-python/</link>
					<comments>https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/mapas-de-calor-y-algoritmo-de-centro-de-gravedad-utilizando-python/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Wed, 13 Oct 2021 04:14:19 +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[Gestión de almacenes]]></category>
		<category><![CDATA[Localización de instalaciones]]></category>
		<category><![CDATA[Logística]]></category>
		<category><![CDATA[Centro de masa]]></category>
		<category><![CDATA[Localización]]></category>
		<category><![CDATA[Localización de plantas]]></category>
		<category><![CDATA[Mapa de calor]]></category>
		<category><![CDATA[Mapas de calor]]></category>
		<category><![CDATA[Método del Centro de gravedad]]></category>
		<category><![CDATA[Métodos de localización]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=28400</guid>

					<description><![CDATA[<p>Ya en artículos anteriores hemos abordado el uso de tecnología como herramienta que permita desarrollar problemas de análisis preliminar y localización de instalaciones, con el objetivo de incrementar el nivel de aplicabilidad de estas herramientas, utilizando algunos entornos de programación, algunos sistemas de información geográfica, librerías de geocodificación; etc., que nos facilitan la adopción de &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/mapas-de-calor-y-algoritmo-de-centro-de-gravedad-utilizando-python/">Mapas de calor y Algoritmo de Centro de Gravedad utilizando Python</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="introduccion" data-title="Introducción" class="index-title"></div>
	
<p>Ya en artículos anteriores hemos abordado el uso de tecnología como herramienta que permita desarrollar problemas de análisis preliminar y localización de instalaciones, con el objetivo de incrementar el nivel de aplicabilidad de estas herramientas, utilizando algunos entornos de programación, algunos sistemas de información geográfica, librerías de geocodificación; etc., que nos facilitan la adopción de soluciones basadas en entornos reales.</p>
<p>Algunos de los artículos que hemos desarrollado al respecto son:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li><a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/" target="_blank" rel="noopener"><strong>Mapas de calor utilizando Google Maps (Javascript)</strong></a></li>
<li><a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/metodo-del-centro-de-gravedad-utilizando-r/" target="_blank" rel="noopener"><strong>Método de Centro de Gravedad utilizando R</strong></a></li>
</ul>

		</div>
	
<p>En estos artículos mencionamos que los mapas de calor aplicados a la localización de instalaciones, <strong>son capas de visualización</strong> que no nos proporcionan como resultado una localización específica; <strong>sí nos proporcionan una visión de densidad basada en un factor de ponderación</strong> establecido (Peso). Sin embargo, al utilizar mapas de calor en entornos como por ejemplo <em>Python, </em>podemos integrar a esta herramienta, un método heurístico que nos proporcione una localización específica, como por ejemplo el <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/metodo-del-centro-de-gravedad-utilizando-r/" target="_blank" rel="noopener"><strong>Centro de Gravedad</strong></a>.</p>
<p>El objetivo de este artículo será el de utilizar mapas de calor y el algoritmo de Centro de gravedad de manera simultánea a través de <em>Python</em>; como herramienta de análisis preliminar y de localización de una instalación.</p>
<p>En el desarrollo de este ejercicio emplearemos:</p>

		<div class="plus tie-list-shortcode">
<ul>
<li><em><strong>Colaboratory</strong>: </em>Este es un entorno de programación y ejecución virtual de Python desarrollado por Google. Nos permitirá no tener la necesidad de realizar ninguna instalación en nuestros equipos. Todo lo que desarrollemos lo ejecutaremos en un cuaderno virtual.</li>
<li><strong><em>Python</em></strong>: Este será el lenguaje de programación que vamos a utilizar, y advertimos: No es necesario tener conocimientos previos, y el objetivo del artículo no es convertirnos en programadores expertos. Utilizaremos fragmentos de códigos, librerías disponibles, y explicaremos lo necesario para configurar nuestro desarrollo de acuerdo a los objetivos específicos de nuestros modelos.</li>
<li><strong><em>Geopy</em></strong>: Las librerías son a <em>Python</em>, lo que las <em>apps </em>son a un teléfono celular. Esta es quizá una de las características más a tractivas de este lenguaje: Casi que existe una librería para cada necesidad. En este caso, <em>Geopy</em>, es una librería que nos permitirá geocodificar un conjunto de ubicaciones. Es decir, a partir de un listado de ciudades o direcciones, poder obtener sus coordenadas de latitud y longitud que nos permitan georeferenciar dichas ubicaciones.</li>
<li><em><strong>Statistics</strong>: </em>Esta es una librería con un conjunto de herramientas estadísticas que nos permitirán hallar algunas medidas centrales como soporte de los modelos.</li>
<li><em><strong>Folium</strong>: </em>Esta librería nos permitirá graficar sobre un sistema de geolocalización, emplear la capa de mapas de calor y georeferenciar el centro de gravedad del modelo.</li>
<li><strong><em>Pandas</em></strong>: <span>Es un paquete de Python que proporciona estructuras de datos rápidas, y flexibles, diseñadas para que el trabajo con datos estructurados (tabulares, multidimensionales, potencialmente heterogéneos) y de series de tiempo sea fácil e intuitivo.</span></li>
<li><em><strong>Numpy</strong>: </em>Es una librería que nos permitirá efectuar operaciones matriciales en Python.</li>
</ul>

		</div>
	
<hr />
<p>Para desarrollar estas herramientas, vamos a plantear un caso típico de localización de una instalación (por ejemplo un depósito) a partir de la consideración de otras instalaciones (nodos de demanda, por ejemplo).</p>
<h2>Caso de aplicación</h2>

		<div id="caso-de-aplicacion" data-title="Caso de aplicación" class="index-title"></div>
	
<blockquote class=" quote-simple "><p>La empresa Bio-Food está desarrollando un nuevo modelo de negocio en la ciudad de Cali, Colombia. Este consiste en abastecer de comida saludable a la comunidad por medio de Vending Machines (Máquinas expendedoras). En las etapas de formulación de negocio, algo quedó muy claro: El éxito de su modelo consiste en maximizar la disponibilidad de todos los SKUs en cantidades suficientes. Algunas de las referencias son productos perecederos, de manera que consideran que algunos de sus equipos requerirán visitas diarias de reposición, y otros quizá sean surtidos en más de dos ocasiones por día.</p></blockquote>
<blockquote class=" quote-simple "><p>La fase inicial de su proyecto consideró la instalación de 13 equipos expendedores en 13 instituciones de educación superior de la ciudad. La logística inicial de su proyecto fue caótica (en fase piloto), algunos equipos funcionaron como sub-bodegas; algunos equipos fueron abastecidos directamente por los proveedores; y consideran la instalación de una bodega principal desde la cual serán abastecidas todas las máquinas que tienen disponibles.</p></blockquote>
<blockquote class=" quote-simple "><p>La fase inicial del proyecto arrojó información alrededor del volumen de ventas de cada equipo. Por esta razón, el departamento de logística considera utilizar esta información para efectuar un análisis preliminar y establecer la localización de la bodega principal. A continuación, se relacionan los movimientos de los equipos (media de unidades vendidas por día):</p></blockquote>
<table width="664">
<tbody>
<tr>
<td width="80" style="text-align: center;"><strong>Máquina</strong></td>
<td width="459" style="text-align: center;"><strong>Institución / Lugar</strong></td>
<td width="125" style="text-align: center;"><strong>Unidades vendidas</strong></td>
</tr>
<tr>
<td style="text-align: center;">1</td>
<td style="text-align: center;">PONTIFICIA UNIVERSIDAD JAVERIANA</td>
<td style="text-align: center;">1800</td>
</tr>
<tr>
<td style="text-align: center;">2</td>
<td style="text-align: center;">UNIVERSIDAD DEL VALLE</td>
<td style="text-align: center;">1650</td>
</tr>
<tr>
<td style="text-align: center;">3</td>
<td style="text-align: center;">UNIVERSIDAD SAN BUENAVENTURA</td>
<td style="text-align: center;">1110</td>
</tr>
<tr>
<td style="text-align: center;">4</td>
<td style="text-align: center;">UNIVERSIDAD ICESI</td>
<td style="text-align: center;">1540</td>
</tr>
<tr>
<td style="text-align: center;">5</td>
<td style="text-align: center;">UNIVERSIDAD SANTIAGO DE CALI</td>
<td style="text-align: center;">820</td>
</tr>
<tr>
<td style="text-align: center;">6</td>
<td style="text-align: center;">UNIVERSIDAD AUTÓNOMA DE OCCIDENTE</td>
<td style="text-align: center;">1020</td>
</tr>
<tr>
<td style="text-align: center;">7</td>
<td style="text-align: center;">UNIVERSIDAD COOPERATIVA DE COLOMBIA</td>
<td style="text-align: center;">635</td>
</tr>
<tr>
<td style="text-align: center;">8</td>
<td style="text-align: center;">FUNDACIÓN UNIVERSITARIA SAN MARTÍN</td>
<td style="text-align: center;">420</td>
</tr>
<tr>
<td style="text-align: center;">9</td>
<td style="text-align: center;">UNIVERSIDAD LIBRE</td>
<td style="text-align: center;">569</td>
</tr>
<tr>
<td style="text-align: center;">10</td>
<td style="text-align: center;">UNIVERSIDAD ANTONIO NARIÑO</td>
<td style="text-align: center;">350</td>
</tr>
<tr>
<td style="text-align: center;">11</td>
<td style="text-align: center;">UNICATOLICA &#8211; FUNDACION UNIVERSITARIA CATÓLICA LUMEN GENTIUM</td>
<td style="text-align: center;">620</td>
</tr>
<tr>
<td style="text-align: center;">12</td>
<td style="text-align: center;">CECEP</td>
<td style="text-align: center;">800</td>
</tr>
<tr>
<td style="text-align: center;">13</td>
<td style="text-align: center;">UNIVERSIDAD OBRERA</td>
<td style="text-align: center;">250</td>
</tr>
</tbody>
</table>
<hr />
<p>Utilizar el algoritmo de Centro de Gravedad puede servir como referencia para establecer una ubicación tentativa. Sin embargo, las posibilidades de que las coordenadas solución correspondan con un espacio disponible para la ubicación de la instalación son, de verdad, muy pocas.</p>
<p>Por esta razón, es interesante complementar este modelo mediante una capa de visualización de mapas de calor, que consideren la densidad del volumen de ventas de los equipos. De esta manera, puede complementarse el análisis preliminar para la localización de la bodega principal.</p>
<hr />
<h3>Paso 1: Crear el entorno de trabajo en Colaboratory</h3>

		<div id="paso-1-crear-el-entorno-de-trabajo-en-colaboratory" data-title="Paso 1: Crear el entorno de trabajo en Colaboratory" class="index-title"></div>
	
<p><span>Lo primero que vamos a hacer consiste en crear un entorno de trabajo en <em>Google</em> </span><em>Colaboratory</em><span>, así que vayamos allá: </span><a href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"><em><strong>Abrir cuaderno nuevo</strong></em></a><span>.</span></p>
<p>Verán que tienen un lienzo para programar el modelo, así que en este cuaderno podemos ir generando las líneas de código que explicaremos en los pasos siguientes.</p>
<h3>Paso 2: Importar las librerías necesarias</h3>

		<div id="paso-2-importar-las-librerias-necesarias" data-title="Paso 2: Importar las librerías necesarias" class="index-title"></div>
	
<p>Respecto a las librerías, en la introducción del artículo hicimos una descripción de la funcionalidad de cada una, veamos como importarlas en nuestro entorno:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># importar las librerías necesarias
import pandas as pd
import numpy as np
import folium
import statistics
from folium.plugins import HeatMap
import geopy
from geopy.extra.rate_limiter import RateLimiter</code></pre>
</div>
<p>De esta manera, tenemos todo lo necesario para empezar a desarrollar nuestro código.</p>
<h3>Paso 3: Importar los datos desde Excel</h3>

		<div id="paso-3-importar-los-datos-desde-excel" data-title="Paso 3: Importar los datos desde Excel" class="index-title"></div>
	
<p>De acuerdo a las necesidades del modelo, podemos desarrollar un código que permita la entrada manual de la información, la captura de los datos desde entornos digitales (Internet, por ejemplo), o podemos, desde luego, alimentar nuestro modelo con información contenida en documentos externos, como es el caso de un archivo de Microsoft Excel.</p>
<p>Esta puede considerarse como una de las ventajas de utilizar <em>Python, </em>su capacidad de integrarse con cualquier fuente de datos. En nuestro caso, toda la información se encuentra contenida en un documento de Excel, el cual presenta el siguiente formato:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/datos.png" alt="datos" width="730" height="241" class="wp-image-28403 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/datos.png 853w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/datos-300x99.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/datos-768x253.png 768w" sizes="(max-width: 730px) 100vw, 730px" /></p>

		<div class="box download  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Puedes descargar el documento de Excel que utilizamos en este ejemplo: <a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/vending_machines-1.xlsx" target="_blank" rel="noopener"><strong>Base de datos</strong></a>
			</div>
		</div>
	
<p>En <em>Colaboratory</em>, el siguiente fragmento permitirá cargar un archivo al entorno de ejecución:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>from google.colab import files

uploaded = files.upload()

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))</code></pre>
</div>
<p>Al ejecutar este fragmento de código, se abrirá una ventana emergente del explorador que permitirá cargar nuestra base de datos, en nuestro caso el archivo tienen el nombre de <em>vending_machines.xlsx.</em></p>
<p>La siguiente línea de código permitirá almacenar los datos contenidos en el documento en un <em>Dataframe</em> de nuestro entorno, dentro de la variable <em>data</em>.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Leer el documento de Excel y almacenar los datos en la variable data
data = pd.read_excel('vending_machines.xlsx')</code></pre>
</div>
<h3>Paso 4: Geocodificar las ubicaciones</h3>

		<div id="paso-4-geocodificar-las-ubicaciones" data-title="Paso 4: Geocodificar las ubicaciones" class="index-title"></div>
	
<p>Nosotros podemos partir desde la disponibilidad de las coordenadas geográficas de los puntos disponibles (Equipos expendedores). En cuyo caso, geocodificar las ubicaciones no sería necesario. Sin embargo, en nuestro ejemplo, disponemos del nombre de cada institución donde se encuentran ubicados los equipos, así como la ciudad y el país (todos los equipos se encuentran en la misma ciudad); y es necesario geocodificar estos puntos para obtener las coordenadas de latitud y longitud de cada ubicación.</p>
<p>Para lograrlo, utilizaremos el servicio de la librería <em>Geopy (Llamado Nominatim)</em>, el cual puede geocodificar nuestras ubicaciones. El servicio funciona de una manera sencilla, recibe una cadena con la información de nuestra ubicación, por ejemplo: ciudad, país, nombre del lugar; y devuelve las coordenadas de latitud y longitud asociadas a cada cadena.</p>
<p>Las siguientes líneas en primer lugar construyen cada cadena por punto (dirección), es decir, concatenan los datos (país, ciudad y nombre del lugar), y luego son geocodificados por <em>Geopy</em>. Veamos:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># fusionamos los datos país, ciudad y lugar en una misma cadena de dirección
geopy.geocoders.options.default_user_agent = "my-application"
data["direccion"] = data["pais"] + ", " + data["ciudad"] + ", " + data["Institución / Lugar"]
#Envíamos los datos a geocodificación
servicio = geopy.Nominatim()
data["coordenadas"] = data["direccion"].apply(RateLimiter(servicio.geocode,min_delay_seconds=1))</code></pre>
</div>
<p>Pueden apreciar que el código establece que tanto las cadenas con las direcciones concatenadas, como las respuestas en manera de coordenadas, queden dentro del mismo <em>DataFrame </em>donde se encuentran los datos de entrada del modelo. Podemos en cualquier momento confirmar si la geocodificación se ha realizado correctamente, para eso imprimiremos las primeras cinco filas del  <em>DataFrame:</em></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>data.head()</code></pre>
</div>
<p>Al ejecutar esta instrucción tenemos la siguiente salida:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head.png" alt="head" width="1300" height="185" class="alignnone size-full wp-image-28405" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head.png 1300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head-300x43.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head-1024x146.png 1024w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/head-768x109.png 768w" sizes="(max-width: 1300px) 100vw, 1300px" /></p>
<p>Podemos observar cómo bajo la columna &#8216;<em>direccion&#8217; </em>se han concatenado las columnas <em>&#8216;pais&#8217;, &#8216;ciudad&#8217; e &#8216;Institución / Lugar&#8217;</em>, tal como lo establecimos previamente. Así mismo, podemos observar la respuesta de <em>Geopy </em> bajo la columna <em>&#8216;coordenadas&#8217;</em>.</p>
<h3>Paso 5: Calcular el Centro de Gravedad</h3>

		<div id="paso-5-calcular-el-centro-de-gravedad" data-title="Paso 5: Calcular el Centro de Gravedad" class="index-title"></div>
	
<p>El algoritmo de <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-del-centro-de-gravedad/" target="_blank" rel="noopener"><strong>Centro de Gravedad</strong></a> es relativamente sencillo, mucho más cuando se cuenta con los datos debidamente organizados. Las operaciones son sencillas, y en <em>Python</em>, se pueden desarrollar fácilmente mediante productos de matrices.</p>
<p>Ahora bien, la base del algoritmo son las coordenadas. En la respuesta obtenida desde <em>Geopy</em>, que se encuentra contenida en la columna <em>&#8216;coordenadas&#8217;</em> del <em>DataFrame &#8216;data&#8217;, </em>hay información adicional a las coordenadas necesarias. De hecho el servicio nos devuelve un nombre del lugar, una subregión, puede mostrarnos alguna nomenclatura y claro está, las coordenadas de latitud y longitud. Por tal razón, lo primero que debemos hacer es extraer las coordenadas de latitud y longitud, para eso utilizaremos las siguientes líneas:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Extraer las coordenadas de latitud y longitud en dos variables separadas (listas)
longs = [coord.longitude for coord in data["coordenadas"]]
lats = [coord.latitude for coord in data["coordenadas"]]</code></pre>
</div>
<p>Una vez que tengamos las coordenadas de todos los puntos en un par de variables separadas, procedemos a crear nuestro algoritmo de centro de gravedad:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>centro_gravedad = {}
centro_gravedad['longs'] = np.dot(longs, data['Unidades vendidas']) / np.sum(data['Unidades vendidas'])
centro_gravedad['lats'] = np.dot(lats, data['Unidades vendidas']) / np.sum(data['Unidades vendidas'])</code></pre>
</div>
<p>De esta manera, dentro del arreglo <em>&#8216;centro_gravedad&#8217; </em>deberán quedar las coordenadas solución. Recordemos que este algoritmo utiliza puntos ponderados, en este caso el peso que determina la ponderación está dado por el volumen de ventas de cada equipo (<em>&#8216;Unidades vendidas&#8217;</em>).</p>
<p>Podemos ver el resultado, imprimiendo la variable <em>&#8216;centro_gravedad&#8217;:</em></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>print(centro_gravedad)</code></pre>
</div>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad.png" alt="centro_gravedad" width="618" height="85" class="size-full wp-image-28406 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad.png 618w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad-300x41.png 300w" sizes="(max-width: 618px) 100vw, 618px" /></p>
<p>Estas son las coordenadas solución del método de Centro de Gravedad. Sin embargo, recordemos que debemos complementar el desarrollo del modelo mediante un mapa de calor.</p>
<h3>Paso 6: Graficar la capa del mapa de calor y el marcador de Centro de Gravedad</h3>

		<div id="paso-6-graficar-la-capa-del-mapa-de-calor-y-el-marcador-de-centro-de-gravedad" data-title="Paso 6: Graficar la capa del mapa de calor y el marcador de Centro de Gravedad" class="index-title"></div>
	
<p>En este caso utilizaremos la librería <em>Folium </em>para ambos fines: la capa del mapa de calor, y el marcador de Centro de Gravedad.</p>
<p>Lo primero que haremos será calcular la media de las latitudes y las longitudes para centrar el mapa que obtendremos.</p>
<p>Lo segundo que haremos será crear nuestro mapa, el cual configuraremos con las medidas centrales y un zoom inicial que podemos modificar de acuerdo a nuestras necesidades.</p>
<p>Lo tercero que haremos será crear nuestra capa de mapa de calor, utilizaremos como peso las <em>&#8216;Unidades vendidas&#8217;</em> para ponderar cada punto del mapa (Vending Machines). Configuramos algunos parámetros a nuestro criterio como la <em>opacidad, la intensidad, el radio de cada punto</em>.</p>
<p>Por último crearemos el marcador de Centro de Gravedad, para ello utilizaremos las coordenadas solución que hallamos en el paso anterior.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Calcular la media de las latitudes y las longitudes para centrar el mapa
mediaLong = statistics.mean(longs)
mediaLat = statistics.mean(lats)

# Crear un objeto de mapa base Map()
mapa = folium.Map(location=[mediaLat, mediaLong], zoom_start = 12)

# Crear una capa de mapa de calor
mapa_calor = HeatMap( list(zip(lats, longs, data["Unidades vendidas"])),
                   min_opacity=0.2,
                   max_val=data["Unidades vendidas"].max(),
                   radius=50, 
                   blur=50, 
                   max_zoom=1)

#Creamos el marcador de Centro de Gravedad
tooltip = 'Centro de gravedad'
folium.Marker([centro_gravedad['lats'], centro_gravedad['longs']], popup="Centro", tooltip = tooltip).add_to(mapa)

# Adherimos la capa de mapa de calor al mapa principal
mapa_calor.add_to(mapa)
mapa</code></pre>
</div>
<p>Al ejecutar estas líneas tendremos el siguiente resultado:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor.png" alt="centro_gravedad_mapa_calor" width="1404" height="760" class="alignnone size-full wp-image-28407" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor.png 1404w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor-300x162.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor-1024x554.png 1024w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor-768x416.png 768w" sizes="(max-width: 1404px) 100vw, 1404px" /></p>
<p>Podemos utilizar el zoom para explorar diversas visualizaciones de densidad:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor_II.png" alt="centro_gravedad_mapa_calor_II" width="1351" height="747" class="alignnone size-full wp-image-28408" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor_II.png 1351w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor_II-300x166.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor_II-1024x566.png 1024w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/centro_gravedad_mapa_calor_II-768x425.png 768w" sizes="(max-width: 1351px) 100vw, 1351px" /></p>
<p>El código completo de este desarrollo lo puedes encontrar en nuestro cuaderno: <a href="https://colab.research.google.com/drive/1CWCVFeh6NibQGTg62zF0lg1A9Qow0rld?usp=sharing" target="_blank" rel="noopener"><em><strong>Mapas de Calor y Centro de Gravedad</strong></em></a>.</p>
<hr />
<p>En este caso, y a diferencia del artículo <em><strong><a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/" target="_blank" rel="noopener">mapas de calor utilizando Google Maps</a>, </strong></em>empleamos una capa de visualización de densidad de cada punto, y simultáneamente identificamos unas coordenadas solución de una localización de acuerdo al modelo de Centro de Gravedad (Centro de masa). De esta forma, construimos una herramienta un poco más robusta que permite soportar los procesos de análisis preliminar de localización de instalaciones, ambientada en un entorno geográfico real.</p>
<p>Así mismo, en el desarrollo de la herramienta empleamos algunas instrucciones que nos permiten automatizar procesos de georeferenciación, y de uso de datos a partir de fuentes diversas.</p>
<hr />
<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>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/localizacion-de-instalaciones/mapas-de-calor-y-algoritmo-de-centro-de-gravedad-utilizando-python/">Mapas de calor y Algoritmo de Centro de Gravedad utilizando Python</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/mapas-de-calor-y-algoritmo-de-centro-de-gravedad-utilizando-python/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<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>
		<item>
		<title>Método de localización de instalaciones utilizando mapas de calor (Google Maps + Javascript)</title>
		<link>https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/</link>
					<comments>https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Mon, 23 Aug 2021 03:45:35 +0000</pubDate>
				<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Gestión de almacenes]]></category>
		<category><![CDATA[Localización de instalaciones]]></category>
		<category><![CDATA[Localización]]></category>
		<category><![CDATA[Localización de plantas]]></category>
		<category><![CDATA[Mapa de calor]]></category>
		<category><![CDATA[Mapas de calor]]></category>
		<category><![CDATA[Métodos de localización]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=27593</guid>

					<description><![CDATA[<p>Mucho se ha desarrollado en la literatura académica acerca de los métodos o algoritmos de localización de instalaciones. En el estudio de localización se pueden abordar dos grandes aspectos: macrolocalización y microlocalización. En ambos casos el procedimiento de análisis de localización abordará las fases de: Análisis preliminar Búsqueda de alternativas de localización Evaluación de alternativas &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/">Método de localización de instalaciones utilizando mapas de calor (Google Maps + Javascript)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Mucho se ha desarrollado en la literatura académica acerca de los <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodos-de-localizacion-de-planta/"><strong>métodos o algoritmos de localización</strong></a> de instalaciones. En el estudio de localización se pueden abordar dos grandes aspectos: <em><strong>macrolocalización</strong></em> y <em><strong>microlocalización</strong></em>. En ambos casos el procedimiento de análisis de localización abordará las fases de:</p>
<ul>
<li>Análisis preliminar</li>
<li>Búsqueda de alternativas de localización</li>
<li>Evaluación de alternativas</li>
<li>Selección de localización</li>
</ul>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span><strong>Macrolocalización</strong>: Es decir, la selección de la región o zona más adecuada, evaluando las regiones que preliminarmente presenten ciertos atractivos para la industria que se trate.</p>
<p><strong> Microlocalización</strong>: Es decir, la selección específica del sitio o terreno que se encuentra en la región que ha sido evaluada como la más conveniente.
			</div>
		</div>
	
<p>Algunos de los algoritmos que apoyan las fases del procedimiento de localización, presentan dificultades propias del contexto operacional real que se pretende abordar. Por ejemplo, el <strong><a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-del-centro-de-gravedad/">Método de Centro de Gravedad</a></strong>, requiere de la consideración de un conjunto de instalaciones existentes, y su objetivo es el de establecer la ubicación de un punto de <em>servicio / atención / suministro</em> para los puntos dados. Requiere para ello de la existencia de un sistema de coordenadas con un punto de origen.</p>
<p>Recuerdo que cuando utilicé este algoritmo en la <em>Universidad </em>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.</p>
<p>Otro método, como el <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-heuristico-de-ardalan/"><strong>Heurístico de Ardalan</strong></a>, utiliza un conjunto de instalaciones existentes, y un conjunto de localizaciones tentativas. Toma como base una matriz de distancias y el objetivo consiste en optimizar la cobertura. Sin embargo, obtener la información requiere del levantamiento de mínimo una matriz <em>n * m.</em> En la medida en la que el número de ubicaciones aumenta el algoritmo se convierte en complejo.</p>
<hr />
<p>Desde hace algunos años, la disponibilidad de servidores de aplicaciones de mapas, los sistemas de posicionamiento satelital, los sistemas de información geográfica, entre otros; han facilitado la adopción de soluciones basadas en entornos reales, como herramientas que apoyen algunas de las fases del procedimiento de localización de ubicaciones.</p>
<p>En este artículo utilizaremos mapas de calor y servidores de aplicaciones de mapas, como herramienta visual de soporte en los procesos de selección de localizaciones.</p>
<h2>¿Qué es un mapa de calor?</h2>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/heatmap.svg" alt="mapa de calor" class="wp-image-27617 alignright" width="178" height="178" />En este contexto, un mapa de calor es una capa de visualización que se utiliza para representar la intensidad de los datos en puntos geográficos (ubicaciones). Cuando la capa de mapa de calor se encuentra habilitada, aparecerá una superposición de color en la parte superior del mapa. De forma predeterminada (es un estándar), las áreas de mayor intensidad se colorearán en rojo y las áreas de menor intensidad aparecerán en verde.</p>
<p>La intensidad de los datos de una región en particular puede aumentar dada la concentración de ubicaciones en una zona específica. Del mismo modo, pueden utilizarse <em>puntos de datos ponderados</em>, es decir, que un punto geográfico en particular puede tener un peso que hará que el punto se represente con mayor intensidad.</p>
<p>Un ejemplo de aplicación práctica de los puntos de datos ponderados, puede ser la cantidad de individuos que vivan en un punto específico. En este caso, los puntos ponderados ayudarán a representar densidad poblacional.</p>
<hr />
<h2>Mapas de calor + Google Maps</h2>
<p>El servidor de aplicaciones de mapas más popular del mundo: <em>Google Maps</em>, cuenta con una librería de visualización que nos permite el uso de mapas de calor con puntos normales o ponderados. Evaluaremos su uso por medio de un caso práctico.</p>
<blockquote class=" quote-simple "><p>El Departamento de Desarrollo Sostenible de la ciudad de Cali se encuentra implementando una estrategia piloto de recolección de aceite de cocina usado. Ha articulado este proyecto con una Universidad, la cual desarrolló 4 contenedores inteligentes (BIN&#8217;s) para la disposición del bioresiduo. En investigaciones asociadas, la Universidad ha determinado que el reciclaje del aceite es un problema de densidad; esto quiere decir que es vital la ubicación de los contenedores (cobertura), para así mismo optimizar el proceso de disposición y recolección. El proyecto piloto piensa articular a las instituciones de educación como puntos potenciales de recolección. Por medio de las instituciones piensan socializar el programa con la comunidad. El primer reto del proyecto consiste en determinar la ubicación de los contenedores inteligentes (4 unidades). La información relacionada con las instituciones de educación que hacen parte del programa (<em>ubicación geográfica / población estudiantil</em>), se detalla a continuación:</p></blockquote>
<p>&nbsp;</p>
<table width="716">
<tbody>
<tr>
<td width="269" style="text-align: center;"><strong>Establecimiento</strong></td>
<td width="282" style="text-align: center;"><strong>Latitud / Longitud</strong></td>
<td width="165" style="text-align: center;"><strong>Número de estudiantes</strong></td>
</tr>
<tr>
<td> Comfandi San Nicolás</td>
<td>3.4535911182,  -76.522548858</td>
<td>1494</td>
</tr>
<tr>
<td> Mayor de Santiago de Cali</td>
<td>3.4515777580,  -76.510232156</td>
<td>908</td>
</tr>
<tr>
<td> Municipal Comfandi</td>
<td>3.4481079145, -76.510747140</td>
<td>697</td>
</tr>
<tr>
<td> Internado San Carlos</td>
<td>3.4469941349, -76.515253250</td>
<td>1714</td>
</tr>
<tr>
<td> León de Greiff</td>
<td>3.4479794015, -76.499932474</td>
<td>1731</td>
</tr>
<tr>
<td> Nuestra Señora de la Anunciación</td>
<td>3.4451521118, -76.496413416</td>
<td>2297</td>
</tr>
<tr>
<td> Fernando de Aragón</td>
<td>3.4373556029, -76.513837044</td>
<td>1265</td>
</tr>
<tr>
<td> Casa Evangélica</td>
<td>3.4379553366, -76.522999470</td>
<td>1658</td>
</tr>
<tr>
<td> San Alberto Magno</td>
<td>3.4330289411, -76.527076427</td>
<td>604</td>
</tr>
<tr>
<td> Santa María Goretty</td>
<td>3.4334144860, -76.507206624</td>
<td>416</td>
</tr>
<tr>
<td> San Alberto Magno</td>
<td>3.4331574561,  -76.526733104</td>
<td>1584</td>
</tr>
<tr>
<td> San Ignacio de Loyola</td>
<td>3.4317866287,  -76.517334644</td>
<td>2350</td>
</tr>
<tr>
<td> Nuestro Futuro</td>
<td>3.4306299916, -76.503601735</td>
<td>964</td>
</tr>
<tr>
<td> Sabio Caldas</td>
<td>3.4290878065, -76.516605083</td>
<td>329</td>
</tr>
<tr>
<td> CREAD</td>
<td>3.4250609784, -76.514888470</td>
<td>774</td>
</tr>
<tr>
<td> Licomtec</td>
<td>3.4166645586, -76.516733829</td>
<td>1818</td>
</tr>
<tr>
<td>  Nuestra Señora De La Providencia</td>
<td>3.4195347715,  -76.495919889</td>
<td>1530</td>
</tr>
<tr>
<td> Real Suizo</td>
<td>3.4152080294, -76.493237680</td>
<td>2106</td>
</tr>
<tr>
<td> Nuevo Edén</td>
<td>3.4157220988, -76.533835594</td>
<td>330</td>
</tr>
<tr>
<td> Católico</td>
<td>3.4130660706, -76.539843742</td>
<td>976</td>
</tr>
<tr>
<td> Santa María Stella</td>
<td>3.4270315559,  -76.551345054</td>
<td>1975</td>
</tr>
<tr>
<td> Santa Isabel</td>
<td>3.4080535495,  -76.508172225</td>
<td>936</td>
</tr>
<tr>
<td> Compartir</td>
<td>3.4319576632,  -76.474955752</td>
<td>1563</td>
</tr>
<tr>
<td> Lancaster</td>
<td>3.4007708157,  -76.551774213</td>
<td>1219</td>
</tr>
<tr>
<td> Parroquial Divino Salvador</td>
<td>3.3970865884, -76.542590328</td>
<td>1954</td>
</tr>
<tr>
<td> Reyes Católicos</td>
<td>3.3933166668,  -76.537354656</td>
<td>399</td>
</tr>
<tr>
<td> Liceo Anglo del Valle</td>
<td>3.3873187189,  -76.519759374</td>
<td>1741</td>
</tr>
<tr>
<td> Laurence</td>
<td>3.3834202377, -76.520789343</td>
<td>1111</td>
</tr>
<tr>
<td> Los Almendros</td>
<td>3.3812782083,  -76.520231443</td>
<td>1826</td>
</tr>
<tr>
<td> Bautista</td>
<td>3.3772083395,  -76.523278432</td>
<td>1772</td>
</tr>
<tr>
<td> Lacordaire</td>
<td>3.3781508370,  -76.544607357</td>
<td>1965</td>
</tr>
<tr>
<td> General José María Córdoba</td>
<td>3.3935733137, -76.549328047</td>
<td>841</td>
</tr>
<tr>
<td> El Hogar</td>
<td>3.3907458636,  -76.550315100</td>
<td>770</td>
</tr>
<tr>
<td> Americano</td>
<td>3.3790932549, -76.546881873</td>
<td>650</td>
</tr>
<tr>
<td> Santa Filomena</td>
<td>3.4019699352, -76.513450821</td>
<td>1401</td>
</tr>
<tr>
<td> Tomás Vasconi</td>
<td>3.4030409276, -76.517313202</td>
<td>1474</td>
</tr>
<tr>
<td> República del Salvador</td>
<td>3.4044546356, -76.521433075</td>
<td>1926</td>
</tr>
<tr>
<td> Los Andes</td>
<td>3.4296010767,  -76.537612160</td>
<td>1566</td>
</tr>
<tr>
<td>Villacolombia</td>
<td>3.4454939428, -76.501692020</td>
<td>2354</td>
</tr>
<tr>
<td>Las Américas</td>
<td>3.4492208216, -76.505940638</td>
<td>2043</td>
</tr>
<tr>
<td>Santa Fe</td>
<td>3.4422382667, -76.509888850</td>
<td>2333</td>
</tr>
<tr>
<td>Evaristo García</td>
<td>3.4407817764, -76.517527780</td>
<td>696</td>
</tr>
<tr>
<td>Alfredo Vásquez Cobo</td>
<td>3.4355983661,  -76.516454898</td>
<td>1073</td>
</tr>
<tr>
<td>Ciudad de Cali</td>
<td>3.4311431813,  -76.512721263</td>
<td>1275</td>
</tr>
<tr>
<td>INEM</td>
<td>3.4827619907, -76.4997608303</td>
<td>1485</td>
</tr>
<tr>
<td>Olaya Herrera</td>
<td>3.4781785185, -76.512807093</td>
<td>1470</td>
</tr>
<tr>
<td>Guillermo Valencia</td>
<td>3.4744945902,  -76.513665400</td>
<td>1248</td>
</tr>
<tr>
<td>José Ignacio Rengifo</td>
<td>3.4716245430, -76.513665400</td>
<td>2160</td>
</tr>
<tr>
<td>Santo Tomás</td>
<td>3.4583022697,  -76.516454898</td>
<td>1776</td>
</tr>
<tr>
<td>La Merced</td>
<td>3.4627144903, -76.502464496</td>
<td>706</td>
</tr>
<tr>
<td>Pedro Antonio Molina</td>
<td>3.4828048267, -76.487615789</td>
<td>2369</td>
</tr>
<tr>
<td>Santa Librada</td>
<td>3.4622861203, -76.523020945</td>
<td>2498</td>
</tr>
<tr>
<td>República de Israel</td>
<td>3.4636569037, -76.510532580</td>
<td>1510</td>
</tr>
<tr>
<td>San Vicente Paul</td>
<td>3.4662271172, -76.509502612</td>
<td>2330</td>
</tr>
<tr>
<td>Manuel María Mallarino</td>
<td>3.4567601292, -76.488517010</td>
<td>1464</td>
</tr>
<tr>
<td>Sebastián de Belalcázar</td>
<td>3.4602299411,  -76.485212529</td>
<td>628</td>
</tr>
<tr>
<td>Liceo Departamental</td>
<td>3.4238604624,  -76.538556302</td>
<td>364</td>
</tr>
<tr>
<td>Libardo Madrid</td>
<td>3.4220611537,  -76.543834890</td>
<td>2439</td>
</tr>
<tr>
<td>Metropolitano Santa Anita</td>
<td>3.4016910381, -76.542182651</td>
<td>1815</td>
</tr>
<tr>
<td>San José</td>
<td>3.3969358164,  -76.550315108</td>
<td>2230</td>
</tr>
</tbody>
</table>
<p>De acuerdo a la información disponible, es posible utilizar un mapa de calor como herramienta de análisis preliminar y búsqueda de alternativas de localización. Veamos.</p>
<h3><i>Agregar una capa de mapa de calor</i></h3>
<p>La API de Google Maps puede utilizarse de la misma manera en la que un sitio web incorpora un mapa tradicional a su plataforma (<em>Javascript</em>). También pueden utilizarse plataformas externas para su visualización como <a href="https://jsfiddle.net/"><em><strong>JSFiddle</strong></em></a>.</p>
<p>Lo primero que haremos es configurar el mapa sobre el cual se ubicarán los puntos:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code>let map, heatmap;

function initMap() {
  map = new google.maps.Map(document.getElementById("map"), {
    zoom: 13,
    center: { lat: 3.43, lng: -76.51 },
    mapTypeId: "satellite",
  });
  heatmap = new google.maps.visualization.HeatmapLayer({
    data: getPoints(),
    map: map,
  });
  document
    .getElementById("toggle-heatmap")
    .addEventListener("click", toggleHeatmap);
  document
    .getElementById("change-gradient")
    .addEventListener("click", changeGradient);
  document
    .getElementById("change-opacity")
    .addEventListener("click", changeOpacity);
  document
    .getElementById("change-radius")
    .addEventListener("click", changeRadius);
}</code></pre>
</div>
<p><em><strong>zoom: </strong></em>Indicará el nivel de cercanía inicial del mapa de acuerdo a su centro. De igual forma, como usuarios podemos utilizar los controles para acercar o alejar una vez tengamos la visualización.</p>
<p><em><strong>center: </strong></em>Indicará las coordenadas centrales del mapa (latitud y longitud). En nuestro ejemplo hemos adicionado las coordenadas de la ciudad de Cali (lat: 3.43, lng: -76.51).</p>
<p><em><strong>mapTypeId: </strong></em>Tipo de mapa a utilizar. Podemos elegir un mapa tipo <em>relieve </em>o un mapa <em>satelital </em>(<em>satellite</em>).</p>
<p>En este mapa utilizaremos algunas funciones que nos permitirán cambiar algunos atributos de visualización: <em>degradado, opacidad, radio de calor. </em></p>
<p><strong>gradient: </strong>Corresponde al degradado de color del mapa de calor, de manera predeterminada degradará desde el rojo (máxima intensidad) hacia el verde. Sin embargo, usted puede configurar la matriz de colores del degradado. En nuestro ejemplo, permitiremos que el usuario haga un cambio en la configuración del degradado con un clic.</p>
<p><strong>opacity</strong>: La opacidad corresponde a la transparencia de la capa del mapa de calor, expresada como un número entre 0 y 1. En nuestro ejemplo, permitiremos que el usuario haga un cambio en la configuración de la opacidad con un clic.</p>
<p><strong>radius</strong>: Corresponde al radio de influencia de cada punto de datos, en píxeles. Este es uno de los atributos más importantes del mapa de calor, ya que a partir de su valor podremos visualizar mejor o no, la data correspondiente. En nuestro ejemplo, permitiremos que el usuario haga un cambio en la configuración del radio con un clic.</p>
<h3><em>Cambio de atributos</em></h3>
<p>Las siguientes líneas permitirán cambiar los atributos ya mencionados con un solo clic. A continuación se establecen los valores opcionales de cada atributo.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code>function toggleHeatmap() {
  heatmap.setMap(heatmap.getMap() ? null : map);
}

function changeGradient() {
  const gradient = [
    "rgba(0, 255, 255, 0)",
    "rgba(0, 255, 255, 1)",
    "rgba(0, 191, 255, 1)",
    "rgba(0, 127, 255, 1)",
    "rgba(0, 63, 255, 1)",
    "rgba(0, 0, 255, 1)",
    "rgba(0, 0, 223, 1)",
    "rgba(0, 0, 191, 1)",
    "rgba(0, 0, 159, 1)",
    "rgba(0, 0, 127, 1)",
    "rgba(63, 0, 91, 1)",
    "rgba(127, 0, 63, 1)",
    "rgba(191, 0, 31, 1)",
    "rgba(255, 0, 0, 1)",
  ];
  heatmap.set("gradient", heatmap.get("gradient") ? null : gradient);
}

function changeRadius() {
  heatmap.set("radius", heatmap.get("radius") ? null : 20);
}

function changeOpacity() {
  heatmap.set("opacity", heatmap.get("opacity") ? null : 5);
}</code></pre>
</div>
<h3><em>Data de entrada: Ubicaciones</em></h3>
<p>A continuación se ingresarán las 50 ubicaciones de nuestro caso de ejemplo. Utilizaremos puntos ponderados, con coordenadas de latitud y longitud, y un peso determinado por la población estudiantil de cada punto.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code>function getPoints() {
  return [
    {location: new google.maps.LatLng(3.453591118286918, -76.52254885881977), weight: 1494},
    {location: new google.maps.LatLng(3.451577758085148, -76.51023215602375), weight: 908},
    {location: new google.maps.LatLng(3.4481079145332427, -76.51074714011278), weight: 697},
    {location: new google.maps.LatLng(3.4469941349057063, -76.51525325089182), weight: 1714},
    {location: new google.maps.LatLng(3.4479794015658674, -76.49993247424311), weight: 1731},
    {location: new google.maps.LatLng(3.4451521118907227, -76.49641341630138), weight: 2297},
    {location: new google.maps.LatLng(3.4373556029276764, -76.51383704461735), weight: 1265},
    {location: new google.maps.LatLng(3.4379553366684252, -76.52299947000571), weight: 1658},
    {location: new google.maps.LatLng(3.4330289411959662, -76.52707642704613), weight: 604},
    {location: new google.maps.LatLng(3.4334144860421287, -76.50720662416609), weight: 416},
    {location: new google.maps.LatLng(3.433157456127054, -76.52673310420856), weight: 1584},
    {location: new google.maps.LatLng(3.431786628745183, -76.51733464458373), weight: 2350},
    {location: new google.maps.LatLng(3.4306299916118603, -76.50360173554287), weight: 964},
    {location: new google.maps.LatLng(3.4290878065901618, -76.51660508379094), weight: 329},
    {location: new google.maps.LatLng(3.4250609784210844, -76.51488847016083), weight: 774},
    {location: new google.maps.LatLng(3.4166645586142086, -76.51673382932174), weight: 1818},
    {location: new google.maps.LatLng(3.419534771537968, -76.49591988905668), weight: 1530},
    {location: new google.maps.LatLng(3.41520802942298, -76.493237680305), weight: 2106},
    {location: new google.maps.LatLng(3.4157220988351096, -76.53383559476927), weight: 330},
    {location: new google.maps.LatLng(3.4130660706512925, -76.53984374247463), weight: 976},
    {location: new google.maps.LatLng(3.427031555952873, -76.55134505496746), weight: 1975},
    {location: new google.maps.LatLng(3.408053549563415, -76.50817222583817), weight: 936},
    {location: new google.maps.LatLng(3.431957663249241, -76.47495575209557), weight: 1563},
    {location: new google.maps.LatLng(3.400770815705138, -76.55177421321405), weight: 1219},
    {location: new google.maps.LatLng(3.3970865884759056, -76.54259032842468), weight: 1954},
    {location: new google.maps.LatLng(3.393316666803048, -76.53735465673438), weight: 399},
    {location: new google.maps.LatLng(3.387318718983735, -76.5197593748766), weight: 1741},
    {location: new google.maps.LatLng(3.3834202377137204, -76.52078934305466), weight: 1111},
    {location: new google.maps.LatLng(3.381278208361199, -76.52023144362487), weight: 1826},
    {location: new google.maps.LatLng(3.377208339558826, -76.52327843281832), weight: 1772},
    {location: new google.maps.LatLng(3.378150837005705, -76.54460735730136), weight: 1965},
    {location: new google.maps.LatLng(3.3935733137749238, -76.54932804783431), weight: 841},
    {location: new google.maps.LatLng(3.390745863684127, -76.55031510067163), weight: 770},
    {location: new google.maps.LatLng(3.3790932549330677, -76.54688187341141), weight: 650},
    {location: new google.maps.LatLng(3.4019699352880104, -76.51345082175563), weight: 1401},
    {location: new google.maps.LatLng(3.4030409276299833, -76.51731320242338), weight: 1474},
    {location: new google.maps.LatLng(3.4044546356985284, -76.52143307513562), weight: 1926},
    {location: new google.maps.LatLng(3.429601076750566, -76.53761216054455), weight: 1566},
    {location: new google.maps.LatLng(3.4454939428890783, -76.5016920200071), weight: 2354},
    {location: new google.maps.LatLng(3.4492208216317457, -76.50594063874162), weight: 2043},
    {location: new google.maps.LatLng(3.4422382667554077, -76.50988885009086), weight: 2333},
    {location: new google.maps.LatLng(3.4407817764607853, -76.51752778074483), weight: 696},
    {location: new google.maps.LatLng(3.435598366122187, -76.51645489840418), weight: 1073},
    {location: new google.maps.LatLng(3.431143181324255, -76.51272126375868), weight: 1275},
    {location: new google.maps.LatLng(3.48276199070547, -76.49976083030087), weight: 1485},
    {location: new google.maps.LatLng(3.4781785185724408, -76.51280709388969), weight: 1470},
    {location: new google.maps.LatLng(3.474494590235007, -76.51366540070475), weight: 1248},
    {location: new google.maps.LatLng(3.47162454307462, -76.51366540070475), weight: 2160},
    {location: new google.maps.LatLng(3.458302269741842, -76.51645489800703), weight: 1776},
    {location: new google.maps.LatLng(3.4627144903470133, -76.50246449692165), weight: 706},
    {location: new google.maps.LatLng(3.4828048267502214, -76.48761578902122), weight: 2369},
    {location: new google.maps.LatLng(3.4622861203152, -76.52302094514219), weight: 2498},
    {location: new google.maps.LatLng(3.4636569037348472, -76.51053258098315), weight: 1510},
    {location: new google.maps.LatLng(3.4662271172959103, -76.5095026128051), weight: 2330},
    {location: new google.maps.LatLng(3.4567601292443983, -76.4885170108912), weight: 1464},
    {location: new google.maps.LatLng(3.460229941169211, -76.48521252965324), weight: 628},
    {location: new google.maps.LatLng(3.423860462402868, -76.53855630259389), weight: 364},
    {location: new google.maps.LatLng(3.422061153775949, -76.54383489070575), weight: 2439},
    {location: new google.maps.LatLng(3.4016910381681438, -76.54218265181241), weight: 1815},
    {location: new google.maps.LatLng(3.396935816423716, -76.55031510890593), weight: 2230},
   
  ];
}</code></pre>
</div>
<hr />
<p>A partir de estas configuraciones y data de entrada, podemos obtener un mapa de calor soportado en Google Maps. Podemos ver este ejemplo en: <a href="https://jsfiddle.net/2p1xh4L6/"><strong>Mapa de calor Google Maps Ejemplo</strong></a>.</p>
<p>El resultado será:</p>
<p><iframe loading="lazy" width="100%" height="480" src="//jsfiddle.net/2p1xh4L6/embedded/result/" allowfullscreen="allowfullscreen" allowpaymentrequest="" frameborder="0"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
<p>Podemos ocultar o visualizar la capa del mapa de calor; cambiar los colores del degradado; cambar el radio de intensidad de cada punto ponderado; y por último, cambiar la transparencia de la capa.</p>
<p>Así mismo, podemos considerar, por ejemplo, que la representación visual se encuentra muy dispersa y no nos permite tener una idea concluyente. Podemos intentar ampliando el radio (<em>radius</em>) de cada punto (en el código directamente), es decir, su influencia. De manera que nos permita una visualización con mayor densidad. Ampliando a 70 píxeles el radio del código anterior, tendríamos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali4.jpg" alt="mapas de calor" width="654" height="371" class="aligncenter wp-image-27610 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali4.jpg 654w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali4-300x170.jpg 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali4-390x220.jpg 390w" sizes="(max-width: 654px) 100vw, 654px" /></p>
<p>A partir de esta imagen los <em>tomadores de decisiones </em>pueden tener una idea aproximada respecto a las zonas geográficas de mayor densidad poblacional. Al contrario de los algoritmos tradicionales, no obtendremos una coordenada específica (que probablemente conduzca a un lugar inhabitable o no disponible); tendremos zonas de densidad basadas en la ponderación deseada.</p>
<p>Podemos ampliar el <em>zoom</em> sobre una zona deseada y conocer los puntos específicos (con su intensidad respectiva):</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali5.jpg" alt="mapas de calor" width="654" height="371" class="aligncenter wp-image-27611 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali5.jpg 654w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali5-300x170.jpg 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali5-390x220.jpg 390w" sizes="(max-width: 654px) 100vw, 654px" /></p>
<p>Aquí podemos ver con claridad la diferencia del peso ponderado de los puntos; aquellos puntos más intensos serán aquellas instituciones educativas con mayor población estudiantil (de acuerdo a nuestro caso). Podemos incluso, haciendo uso del registro de imágenes en campo de Google, revisar un sector en específico; revisar el estado de las vías, revisar si existen unidades habitables, entre otros:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali6.jpg" alt="" width="654" height="371" class="size-full wp-image-27612 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali6.jpg 654w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali6-300x170.jpg 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/08/mapa_calor_cali6-390x220.jpg 390w" sizes="(max-width: 654px) 100vw, 654px" /></p>
<hr />
<p>Tal como lo hemos mencionado, los mapas de calor son no nos proporcionan como resultado una localización específica; nos proporcionan una visión de densidad basada en un factor de ponderación establecido. Además, es una herramienta dinámica, la cual puede integrarse con fuentes de datos diversas, que puede manipularse en un entorno geográfico real.</p>
<p>Es una herramienta que recomendamos para el análisis preliminar y la búsqueda de zonas de localización.</p>
<p>Sin embargo, al utilizar mapas de calor en entornos como por ejemplo <em>Python, </em>podemos integrar a esta herramienta, un método heurístico que nos proporcione una localización específica. Si quieres conocer un modelo que integra ambas herramientas, te invitamos a leer: <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>.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/">Método de localización de instalaciones utilizando mapas de calor (Google Maps + Javascript)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/diseno-y-distribucion-en-planta/metodo-de-localizacion-de-instalaciones-utilizando-mapas-de-calor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Colaboración cooperativa: Asistencia Cognitiva y Mesas de Trabajo</title>
		<link>https://ingenieriaindustrialonline.com/casos-de-exito/colaboracion-cooperativa-asistencia-cognitiva-y-mesas-de-trabajo/</link>
					<comments>https://ingenieriaindustrialonline.com/casos-de-exito/colaboracion-cooperativa-asistencia-cognitiva-y-mesas-de-trabajo/#respond</comments>
		
		<dc:creator><![CDATA[Item]]></dc:creator>
		<pubDate>Tue, 06 Jul 2021 16:55:20 +0000</pubDate>
				<category><![CDATA[Actualidad]]></category>
		<category><![CDATA[Casos de éxito]]></category>
		<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Industria 4.0]]></category>
		<category><![CDATA[Producción]]></category>
		<category><![CDATA[Asistencia cognitiva]]></category>
		<category><![CDATA[Colaboración cooperativa]]></category>
		<category><![CDATA[Item]]></category>
		<category><![CDATA[Lean Manufacturing]]></category>
		<category><![CDATA[Mejores prácticas]]></category>
		<category><![CDATA[Mesas de trabajo]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=26083</guid>

					<description><![CDATA[<p>Cómo combinar una solución digital y una analógica ayuda al personal a aprender nuevas tareas de empaque mucho más rápidamente El co-empaquetado se utiliza en numerosos sectores. Se refiere a una empresa que subcontrata el empaquetado de una parte de sus productos a un proveedor de servicios debido a la falta de capacidad o de &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/casos-de-exito/colaboracion-cooperativa-asistencia-cognitiva-y-mesas-de-trabajo/">Colaboración cooperativa: Asistencia Cognitiva y Mesas de Trabajo</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Cómo combinar una solución digital y una analógica ayuda al personal a aprender nuevas tareas de empaque mucho más rápidamente</h2>

		<div id="introduccion" data-title="Introducción" class="index-title"></div>
	El co-empaquetado se utiliza en numerosos sectores. Se refiere a una empresa que subcontrata el empaquetado de una parte de sus productos a un proveedor de servicios debido a la falta de capacidad o de espacio. <a href="https://www.sopp.com/"><strong>Sopp Industrie GmbH</strong></a>, con sede en Remscheid, proporciona co-empaquetado para un conocido fabricante de chocolate. Especializada en la producción de cintas, arcos y empaques, esta empresa tradicional fue fundada en 1888. Es uno de los mayores fabricantes del mundo de arcos decorativos hechos a mano. Esto lo hace ideal para empacar chocolates de marca en un empaque elegante, en forma de trineo o pajarera, por ejemplo. Es por eso por lo que Sopp se encarga del co-empaquetado a clasificación europea para todos los productos de la chocolatera distintos del chocolate crudo. Sin embargo, es posible que algunos productos de chocolate deban empacarse una y otra vez en cantidades menores. Para garantizar que el personal aprenda rápidamente los nuevos procesos de empaquetado, Sopp utiliza una combinación del sistema de asistencia cognitiva “<strong><a href="https://www.optimum-gmbh.de/en/products/smart-klaus">Smart Klaus</a></strong>” de Optimum datamanagement solutions GmbH y una <a href="https://mx.item24.com/es/mundo-de-los-productos/sistema-de-bancos-de-trabajo/"><strong>mesa de trabajo ergonómico</strong></a>.</p>
<h2>
		<div id="tecnologia-avanzada-para-el-control-de-calidad-y-capacidad" data-title="Tecnología avanzada para el control de calidad y capacidad" class="index-title"></div>
	Tecnología avanzada para el control de calidad y capacidad</h2>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image2-1.jpg" alt="Asistencia cognitiva" width="317" height="238" class="wp-image-26087 alignleft" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image2-1.jpg 800w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image2-1-300x225.jpg 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image2-1-768x576.jpg 768w" sizes="(max-width: 317px) 100vw, 317px" /><em><strong>Un sistema de asistencia cognitiva es un sistema técnico que utiliza nuevos datos y datos existentes para mostrar soluciones y apoyar así a los usuarios humanos</strong></em>. El ejemplo más conocido de un sistema de este tipo son probablemente los sistemas cotidianos de navegación por satélite que se encuentran en la mayoría de los automóviles Un sistema como “Smart Klaus” para la industria va mucho más allá: “En la parte superior de la mesa de trabajo se encuentra un panel de luz, en toldo de la mesa, mientras que en el centro se instala un sistema de cámara. La cámara observa la mesa de trabajo desde arriba y el software utiliza el reconocimiento de imagen para comprobar si los diferentes procesos se están llevando a cabo correctamente”, explica Magnus Blombach, jefe de proyecto e ingeniero comercial de Sopp.</p>
<p>Para ello, es necesario definir cada uno de los procesos pertinentes. Al mismo tiempo, los pasos de trabajo almacenados en el sistema sirven de guía digital, guiando al empleado a través del proceso de trabajo paso a paso en un monitor. Se puede utilizar una amplia gama de medios para proporcionar una mayor claridad, desde texto e imágenes hasta vídeos autohechos con comentarios. El sistema inteligente utiliza los parámetros introducidos (por ejemplo, contornos, colores o fuentes) para comprobar si se ha alcanzado el resultado deseado. Si todo ha ido bien, la siguiente fase del proceso de empaquetado se inicia de inmediato, pero si no lo ha hecho, se pide al empleado que haga las correcciones necesarias. Un juego de balanzas en el lado derecho de mesa se puede utilizar para controles adicionales, ya que las mercancías correctamente embaladas tendrán un peso específico predeterminado.</p>
<p>Originalmente, “Smart Klaus” se iba a desplegar con fines de control de calidad en una línea de flujo en Sopp, donde iba a contar productos individuales en paquetes – para calendarios de Adviento, por ejemplo. “Sin embargo, después de varias conversaciones con Optimum, descubrimos que hacerlo sobre la marcha no es tan sencillo todavía. De todos modos, estábamos muy impresionados con “Smart Klaus”, así que también queríamos usarlo de una manera diferente. En realidad, el sistema se utiliza en aplicaciones más complejas – para soldar placas de circuitos impresos o ensamblar cajas de conmutación, por ejemplo – pero es exactamente lo que necesitamos”, dice Blombach.</p>
<p>Esto nos lleva al campo de aplicación actual: si es necesario envasar cantidades más pequeñas de un producto, ya que hay que rellenar expositores adicionales en las tiendas, por ejemplo, esto se lleva a cabo en una mesa de trabajo independiente. En esta mesa de trabajo se representa todo el proceso de empaquetado, a diferencia de la línea de producción, donde sólo se realiza un paso de trabajo en cada estación. Gracias a la guía digital del sistema de asistencia cognitiva, estas tareas se pueden realizar en poco tiempo, incluso sin formación previa. Sin embargo, si se planifica una formación real, ya no se necesita personal de formación para ello, gracias a la presentación audiovisual de fácil utilización.</p>
<h2>
		<div id="socio-ideal-para-un-sistema-de-asistencia-cognitiva" data-title="Socio ideal para un sistema de asistencia cognitiva" class="index-title"></div>
	Socio ideal para un sistema de asistencia cognitiva</h2>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image3.jpg" alt="Asistencia cognitiva" width="312" height="234" class="wp-image-26089 alignright" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image3.jpg 800w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image3-300x225.jpg 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/07/Image3-768x576.jpg 768w" sizes="(max-width: 312px) 100vw, 312px" />A la hora de configurar la mesa de trabajo perfecto para el sistema de asistencia cognitiva, no se tardó mucho en elegir a item. Para Steffen Schubert, que lleva 30 años trabajando como instalador en Sopp y es responsable de pequeñas máquinas especializadas, la flexibilidad es la principal ventaja del <a href="https://mx.item24.com/es/mundo-de-los-productos/sistema-de-bancos-de-trabajo/">Sistema de Mesas de Trabajo</a>:” Ya sean uniones, soportes angulares o fundas, hay todo lo que necesita. Es muy fácil de usar y ahorra mucho tiempo. Eso nos beneficia enormemente”. La <a href="https://mx-product.item24.com/es/catalogar/products/bancos-de-trabajo-1001015736/">Mesa de Trabajo</a> fue configurado a la medida y preensamblado. La compañía solo necesitaba instalar “Smart Klaus” en el sitio, incluyendo pasos sencillos como conectar el panel de luz y montar un ordenador de procesamiento de imágenes. Un <a href="https://mx-product.item24.com/es/detalles-del-producto/products/fijacion-de-hardware-1001042887/monitor-arm-64944/">brazo para monitor</a> especial ajustable garantiza que los usuarios puedan ajustar la reproducción de medios para satisfacer sus necesidades específicas. Gracias a su diseño modular y a su flexibilidad, la mesa es fácil de adaptar y ampliar, lo que lo hace perfecto para combinarlo con una solución digital como un sistema de asistencia cognitiva. “Estamos interesados en continuar trabajando con item. El <a href="https://mx-product.item24.com/es/">Catálogo en línea</a> está especialmente bien diseñado, al igual que las diversas herramientas. Puede crear sus propios diseños en pantalla, eso es algo que me gusta mucho”, señala Schubert.</p>
<p><center><a href="https://mx.item24.com/es/soluciones-para-el-cliente/configuradores/?_ga=2.17523129.1463503057.1624389135-538168225.1607642829" target="_blank" rel="nofollow" class="shortc-button medium red">Conozca el software de configuración de item</a></center></p>
<hr />

		<div class="clearfix"></div>
		<div class="about-author about-author-box container-wrapper">
			<div class="author-avatar">
				<img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/07/Item-logo.png" alt="">
			</div>
			<div class="author-info">
				<h4>Item</h4>Item es la empresa pionera en sistemas de construcción modular para aplicaciones industriales y líder en el mercado global. Lleva diseñando y comercializando soluciones de construcción para maquinaria, accesorios y plantas desde 1976. En la actualidad, la cartera de productos de item consta de más de 3.000 componentes de alta calidad, diseñados para uso en bases de máquinas, bancos de trabajo, soluciones de automatización y aplicaciones de producción lean.
			</div>
		</div>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/casos-de-exito/colaboracion-cooperativa-asistencia-cognitiva-y-mesas-de-trabajo/">Colaboración cooperativa: Asistencia Cognitiva y Mesas de Trabajo</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/casos-de-exito/colaboracion-cooperativa-asistencia-cognitiva-y-mesas-de-trabajo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Industria 4.0 en producción: El aspecto ergonómico</title>
		<link>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/industria-4-0-en-produccion-el-aspecto-ergonomico/</link>
					<comments>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/industria-4-0-en-produccion-el-aspecto-ergonomico/#respond</comments>
		
		<dc:creator><![CDATA[Item]]></dc:creator>
		<pubDate>Sat, 24 Apr 2021 02:45:07 +0000</pubDate>
				<category><![CDATA[Actualidad]]></category>
		<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Ergonomía]]></category>
		<category><![CDATA[Industria 4.0]]></category>
		<category><![CDATA[Producción]]></category>
		<category><![CDATA[Seguridad y Salud Ocupacional]]></category>
		<category><![CDATA[Ergologística]]></category>
		<category><![CDATA[Estación de trabajo]]></category>
		<category><![CDATA[Estudio de movimientos]]></category>
		<category><![CDATA[Intralogística]]></category>
		<category><![CDATA[Item]]></category>
		<category><![CDATA[Lean Manufacturing]]></category>
		<category><![CDATA[Micromovimientos]]></category>
		<category><![CDATA[Puestos de trabajo]]></category>
		<category><![CDATA[Silla ergonómica]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=25548</guid>

					<description><![CDATA[<p>Por qué los principios ergonómicos son importantes, incluso en el futuro digital Al entrar en la era de la digitalización y la Industria 4.0, se siguen planteando las mismas preguntas una y otra vez. ¿Se reemplazará pronto al trabajador humano por colegas digitales? ¿Significa el concepto de “fábrica inteligente” que los procesos son dictados por &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/industria-4-0-en-produccion-el-aspecto-ergonomico/">Industria 4.0 en producción: El aspecto ergonómico</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>
		<div id="por-que-los-principios-ergonomicos-son-importantes-incluso-en-el-futuro-digital" data-title="Por qué los principios ergonómicos son importantes, incluso en el futuro digital" class="index-title"></div>
	Por qué los principios ergonómicos son importantes, incluso en el futuro digital</h2>
<p>Al entrar en la era de la digitalización y la <a href="https://item24us.news/es/tres-cosas-sobre-la-industria-4-0/"><em><strong>Industria 4.0</strong></em></a>, se siguen planteando las mismas preguntas una y otra vez. <em>¿Se reemplazará pronto al trabajador humano por colegas digitales? ¿Significa el concepto de “fábrica inteligente” que los procesos son dictados por maquinaria conectada en red?</em> Es comprensible pensar estas cosas, pero no hay razón para tener miedo. Nuestras capacidades cognitivas hacen que ni los robots ni los algoritmos puedan competir en muchos ámbitos de trabajo, y eso seguirá siendo así. Y esto queda más claro todavía si tenemos en cuenta los complejos procesos controlados por motores. Pero sigue habiendo incertidumbre en algunos aspectos. <em>¿Cómo será la mesa de trabajo industrial del futuro? ¿Qué efectos tiene la Industria 4.0 en producción sobre la ergonomía y el bienestar de los empleados?</em></p>
<p>&nbsp;</p>
<h2>La oportunidad de oro de la transformación digital
		<div id="la-oportunidad-de-oro-de-la-transformacion-digital" data-title="La oportunidad de oro de la transformación digital" class="index-title"></div>
	</h2>
<p>Una cosa es segura: la producción en serie tradicional pronto será cosa del pasado, ya que gradualmente se reemplazará por la producción en serie de piezas individuales personalizadas. <strong>La conexión en red inteligente de todas las estaciones que integran la cadena de valor añadido tiene como objetivo lograr una producción flexible y personalizada de un tamaño de lote de 1</strong>. Para conseguirlo, los procesos anteriores y posteriores a la producción tienen que intercambiar continuamente datos entre sí y con todas las etapas del proceso de producción. Esto ayudará a que se disponga tempranamente de un medio para evitar errores de coordinación causados, por ejemplo, por retrasos importantes en el banco de trabajo.</p>
<p>Sin embargo, los temores de que el entorno de trabajo industrial vaya a cambiar radicalmente carecen de fundamento. No cabe duda de que el trabajador tendrá que aceptar las nuevas tecnologías. En el contexto de la transformación digital, el concepto de aprendizaje permanente está en boca de todos. Pero eso no significa que tengamos que temer por nuestros trabajos. Cada vez serán más relevantes aspectos ya existentes, como la ergonomía, la personalización y la modularidad. Las empresas deben concentrarse en estos aspectos para mantener un lugar de trabajo atractivo para las generaciones futuras y garantizar el éxito en años venideros.</p>
<p>&nbsp;</p>
<h2>La ergonomía no está preparada para el montón de chatarra
		<div id="la-ergonomia-no-esta-preparada-para-el-monton-de-chatarra" data-title="La ergonomía no está preparada para el montón de chatarra" class="index-title"></div>
	</h2>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Image1-5.jpg" alt="Industria 4.0" width="317" height="211" class=" wp-image-25550 alignleft" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Image1-5.jpg 600w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Image1-5-300x200.jpg 300w" sizes="(max-width: 317px) 100vw, 317px" />Los aspectos ergonómicos continúan desempeñando un papel importante en el <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/por-que-una-mesa-de-trabajo-de-ensamblaje-ergonomica-es-una-necesidad/"><em><strong>diseño de la mesa de trabajo</strong></em></a>. Ayudan a aumentar por igual la productividad y la salud de los empleados. La individualización del banco de trabajo es un aspecto clave en este sentido. Un <a href="https://mx.item24.com/es/mundo-de-los-productos/sistema-de-bancos-de-trabajo/">sistema de mesa de trabajo ergonómico</a> es la base perfecta para garantizar que los procesos de producción manual sean más efectivos en el futuro. Un ejemplo son las <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/asiento-ergonomico-en-mesas-de-trabajo-industriales/">sillas y mesas de trabajo ajustables en altura</a>, que se pueden adaptar perfectamente a cualquier tipo de cuerpo. También se puede transformar fácilmente un banco de trabajo de pie en uno sentado (y viceversa). Además, el posicionamiento personalizado de materiales y herramientas evita tensiones físicas desiguales.</p>
<p>Un aspecto que a menudo se pasa por alto, pero que no es el menos importante: utilizar el LED correcto o la luz natural ayuda a aumentar los niveles de concentración y, por lo tanto, reduce el riesgo de errores. Por si fuera poco, un sistema de banco de trabajo modular se puede adaptar y ampliar a la perfección para adaptarse a un mundo laboral cada vez más mecánico. Implica relativamente poco esfuerzo o tiempo de inactividad. Por ejemplo, se pueden montar los monitores en una posición ergonómica o se pueden guardar los cables de forma segura en conductos para cables. Los brazos de monitor giratorios aseguran que todo esté organizado de forma precisa y personalizada para evitar tensiones físicas innecesarias. Las pantallas siempre deben colocarse en el campo de visión del trabajador, no al lado.</p>
<p>&nbsp;</p>
<h2>Industria 4.0 en producción: una ventaja para la ergonomía
		<div id="industria-4-0-en-produccion-una-ventaja-para-la-ergonomia" data-title="Industria 4.0 en producción: una ventaja para la ergonomía" class="index-title"></div>
	</h2>
<p>Los cambios demográficos y el aumento de la edad media de los trabajadores en países como Alemania, por ejemplo, ponen de relieve la importancia de la <a href="https://welcome.item24.mx/ergologista?_ga=2.238668480.1169720474.1606763771396817425.1572373092"><em><strong>ergonomía</strong></em></a>. Las empresas están interesadas en garantizar que sus trabajadores mayores y altamente calificados estén sanos y sean productivos durante el mayor tiempo posible. Después de todo, el diseño ergonómico del banco de trabajo también es una medida preventiva. La industria 4.0 en producción debe considerarse una forma de aliviar la carga de los empleados porque, pese a la creciente tendencia a la automatización, ni siquiera en el futuro podrán evitarse las tareas de montaje manual.</p>
<p>Aquí es donde entran en juego los <a href="https://ingenieriaindustrialonline.com/industria-4-0/colaboracion-entre-humanos-y-robots-cobots/"><em><strong>robots colaborativos</strong></em></a>. Su trabajo es ocuparse de los procesos de trabajo más cansados, como levantar y colocar objetos pesados, en lugar de los empleados que interactúan directamente con los robots. La implantación de los robots colaborativos también exige procedimientos de seguridad especialmente rigurosos. El riesgo de una posible colisión entre humanos y maquinaria debe mantenerse al mínimo. Los sistemas ciberfísicos (CPS) también se utilizan para ayudar a los trabajadores humanos y sirven además para almacenar información. El mecanismo puede decidir de forma autónoma qué empleado, en función de su complexión física, es el más adecuado para la próxima etapa de trabajo y quién debería tomarse un descanso.</p>
<p><em><strong>¿Cómo las estaciones de trabajo inteligentes aumentan la productividad?</strong></em></p>
<p><iframe loading="lazy" width="720" height="405" id="ytplayer" src="https://www.youtube.com/embed/MXWFsJj87Gg?rel=0&amp;color=white" frameborder="0" allowfullscreen="allowfullscreen"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
<h2 style="text-align: center;"><strong>¡Conozca más acerca de ergonomía y estaciones de trabajo!</strong></h2>
<p><center><a href="https://welcome.item24.mx/ergologista?_ga=2.238668480.1169720474.1606763771396817425.1572373092" target="_blank" class="shortc-button medium red">ERGONOMÍA E INDUSTRIA 4.0</a>
		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	</center><center></center><center></center>
		<div class="clearfix"></div>
		<div class="about-author about-author-box container-wrapper">
			<div class="author-avatar">
				<img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/07/Item-logo.png" alt="">
			</div>
			<div class="author-info">
				<h4>Item</h4>Item es la empresa pionera en sistemas de construcción modular para aplicaciones industriales y líder en el mercado global. Lleva diseñando y comercializando soluciones de construcción para maquinaria, accesorios y plantas desde 1976. En la actualidad, la cartera de productos de item consta de más de 3.000 componentes de alta calidad, diseñados para uso en bases de máquinas, bancos de trabajo, soluciones de automatización y aplicaciones de producción lean.
			</div>
		</div>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/industria-4-0-en-produccion-el-aspecto-ergonomico/">Industria 4.0 en producción: El aspecto ergonómico</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/industria-4-0-en-produccion-el-aspecto-ergonomico/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Asiento ergonómico en mesas de trabajo industriales</title>
		<link>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/asiento-ergonomico-en-mesas-de-trabajo-industriales/</link>
					<comments>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/asiento-ergonomico-en-mesas-de-trabajo-industriales/#respond</comments>
		
		<dc:creator><![CDATA[Item]]></dc:creator>
		<pubDate>Mon, 05 Apr 2021 20:34:39 +0000</pubDate>
				<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Ergonomía]]></category>
		<category><![CDATA[Lean Manufacturing]]></category>
		<category><![CDATA[Producción]]></category>
		<category><![CDATA[Seguridad y Salud Ocupacional]]></category>
		<category><![CDATA[Asiento ergonómico]]></category>
		<category><![CDATA[Ergologística]]></category>
		<category><![CDATA[Estación de trabajo]]></category>
		<category><![CDATA[Estudio de movimientos]]></category>
		<category><![CDATA[Item]]></category>
		<category><![CDATA[Micromovimientos]]></category>
		<category><![CDATA[Puestos de trabajo]]></category>
		<category><![CDATA[Silla ergonómica]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=25271</guid>

					<description><![CDATA[<p>Por qué sentarse es un peligro y cómo abordarlo Dentro de las prácticas ergonómicas de sentarse en entornos industriales hay dos lados en esta historia. La primera es el simple hecho de que las personas no están diseñadas para pasar largos períodos de tiempo sentadas. Aunque nuestros cuerpos pueden soportar una buena cantidad de tensión, &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/asiento-ergonomico-en-mesas-de-trabajo-industriales/">Asiento ergonómico en mesas de trabajo industriales</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>
		<div id="por-que-sentarse-es-un-peligro-y-como-abordarlo" data-title="Por qué sentarse es un peligro y cómo abordarlo" class="index-title"></div>
	Por qué sentarse es un peligro y cómo abordarlo</h2>
<p>Dentro de las prácticas ergonómicas de sentarse en entornos industriales hay dos lados en esta historia. La primera es el simple hecho de que las personas no están diseñadas para pasar largos períodos de tiempo sentadas. Aunque nuestros cuerpos pueden soportar una buena cantidad de tensión, tarde o temprano lucharán contra las presiones continuas. Y, cuando una <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/por-que-una-mesa-de-trabajo-de-ensamblaje-ergonomica-es-una-necesidad/">mesa de trabajo</a> no se ha adaptado para la anatomía del cuerpo humano, el estrés y las tensiones llegan a ser muy elevadas e intensas con el tiempo.</p>
<p>Esto nos lleva a la segunda cara de la historia: los asientos deben diseñarse de forma que sean lo más cómodos posible para los empleados y les ayuden a maximizar su eficiencia.</p>
<p>&nbsp;</p>
<h2>Evite la tensión innecesaria
		<div id="evite-la-tension-innecesaria" data-title="Evite la tensión innecesaria" class="index-title"></div>
	</h2>
<p><img decoding="async" class=" wp-image-25275 alignleft" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Imagen2-3.jpg" alt="ergonomía sillas" width="281" height="187" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Imagen2-3.jpg 600w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Imagen2-3-300x200.jpg 300w" sizes="(max-width: 281px) 100vw, 281px" />Pasar horas y horas en el trabajo en una sola y misma postura tarde o temprano cobra su precio, lo que a menudo resulta en tensión o en dolor. Dondequiera que los procesos lo permitan, tiene sentido cambiar entre una postura sentada y de pie. Una <a href="https://blog.item24.com/en/workbenches/ergonomic-sitting-at-industrial-work-benches/"><strong><em>mesa de trabajo ajustable</em></strong></a> en altura ofrece buenas oportunidades para hacer precisamente eso. Puede sonar extraño, pero fue hace sólo 250 años que la gente empezó a pasar largos períodos de tiempo sentados. Precisamente por eso nuestros cuerpos no están acostumbrados a esta posición. Desde un punto de vista ergonómico, cuando un empleado ha estado trabajando sentado durante mucho tiempo, es una buena idea que se cambie a una posición de pie. Esto le quita una gran cantidad de tensión a la espalda. La proporción ideal es 80 por ciento dinámico sentado a 20 por ciento de pie.</p>
<p>&nbsp;</p>
<h2>Sillas industriales ergonómicas
		<div id="sillas-industriales-ergonomicas" data-title="Sillas industriales ergonómicas" class="index-title"></div>
	</h2>
<p><img decoding="async" class=" wp-image-25273 alignright" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Imagen3-1.jpg" alt="Sillas industriales ergonómicas" width="347" height="522" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Imagen3-1.jpg 399w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/04/Imagen3-1-200x300.jpg 200w" sizes="(max-width: 347px) 100vw, 347px" /></p>
<p>Sentarse es inevitable en la mayoría de las actividades y por eso es esencial que las sillas sigan los principios ergonómicos. A la hora de seleccionar una <a href="https://mx-product.item24.com/es/catalogar/products/sillas-de-trabajo-1001016824/"><strong><em>silla para un entorno industrial</em></strong></a>, hay varios puntos que deben tenerse en cuenta. Por ejemplo, la tapicería debe ser resistente para que pueda limpiarse según sea necesario y soportar rasguños, raspaduras y manipulaciones bruscas. El factor más importante, sin embargo, es la adaptabilidad. El ajuste de altura es lo primero: cuando estás sentado con los pies planos en el suelo, tus piernas deben doblarse en un ángulo de poco más de 90 grados. Para garantizar un apoyo cómodo debajo de los muslos, el asiento debe inclinarse ligeramente hacia adelante.</p>
<p>Esto significa que puede sentarse cómodamente sin restringir el flujo sanguíneo en las piernas. Lo ideal es que el respaldo también incorpore un soporte lumbar. La región lumbar es el área de la columna vertebral que se curva hacia el estómago. Esta es la posición normal de la región lumbar. Sin embargo, si los músculos circundantes están débiles, la columna vertebral puede empezar a curvarse en la dirección opuesta (cifosis).</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Sentarse ergonómicamente y aliviar la tensión en la columna vertebral
		<div id="sentarse-ergonomicamente-y-aliviar-la-tension-en-la-columna-vertebral" data-title="Sentarse ergonómicamente y aliviar la tensión en la columna vertebral" class="index-title"></div>
	</h2>
<p>Los soportes lumbares están integrados en los respaldos de las sillas de trabajo para contrarrestar activamente la mala postura asociada con cifosis. El respaldo debe incluir un soporte lumbar a la altura correcta para la espalda baja del usuario, una función muy importante para garantizar una postura de sentado ergonómico.</p>
<p>Un mecanismo de inclinación reclinable en el respaldo que incluye control de tensión permite sentarse dinámicamente, lo que también nutre mejor las articulaciones espinales. Inclinar el asiento ligeramente hacia adelante cinco grados asegura que la pelvis esté en ángulo, lo que favorece una posición de sentado erguida. Las sillas son importantes en entornos industriales como en la oficina. Por consiguiente, deben cumplir siempre las normas ergonómicas actuales si quieren apoyar prácticas de trabajo eficaces y saludables.</p>
<p>&nbsp;</p>
<h2 style="text-align: center;"><strong>¡Conozca más acerca de ergonomía y estaciones de trabajo!</strong></h2>
<p><center><a href="https://item24us.online/solution-center/es/ergonomia-y-estaciones-de-trabajo/" target="_blank" class="shortc-button medium red">ERGONOMÍA Y ESTACIONES DE TRABAJO</a>
		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	</center><center></center>
		<div class="clearfix"></div>
		<div class="about-author about-author-box container-wrapper">
			<div class="author-avatar">
				<img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/07/Item-logo.png" alt="">
			</div>
			<div class="author-info">
				<h4>Item</h4>Item es la empresa pionera en sistemas de construcción modular para aplicaciones industriales y líder en el mercado global. Lleva diseñando y comercializando soluciones de construcción para maquinaria, accesorios y plantas desde 1976. En la actualidad, la cartera de productos de item consta de más de 3.000 componentes de alta calidad, diseñados para uso en bases de máquinas, bancos de trabajo, soluciones de automatización y aplicaciones de producción lean.
			</div>
		</div>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/asiento-ergonomico-en-mesas-de-trabajo-industriales/">Asiento ergonómico en mesas de trabajo industriales</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/asiento-ergonomico-en-mesas-de-trabajo-industriales/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sistemas de Escaleras y Plataformas</title>
		<link>https://ingenieriaindustrialonline.com/casos-de-exito/sistemas-de-escaleras-y-plataformas/</link>
					<comments>https://ingenieriaindustrialonline.com/casos-de-exito/sistemas-de-escaleras-y-plataformas/#respond</comments>
		
		<dc:creator><![CDATA[Item]]></dc:creator>
		<pubDate>Mon, 01 Feb 2021 19:40:27 +0000</pubDate>
				<category><![CDATA[Casos de éxito]]></category>
		<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Seguridad y Salud Ocupacional]]></category>
		<category><![CDATA[Barreras]]></category>
		<category><![CDATA[Cerramientos]]></category>
		<category><![CDATA[Escaleras]]></category>
		<category><![CDATA[Estación de trabajo]]></category>
		<category><![CDATA[Intralogística]]></category>
		<category><![CDATA[Item]]></category>
		<category><![CDATA[Mejores prácticas]]></category>
		<category><![CDATA[Plataformas]]></category>
		<category><![CDATA[Protección]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Soluciones de contención]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=24721</guid>

					<description><![CDATA[<p>Sistemas de Escaleras y Plataformas Un Sistema de Escaleras y Plataformas (TPS) ofrece una posibilidad de acceso a distintas zonas de una máquina o equipo; permitiendo la operación en distintos niveles. A través de un mismo sistema compatible, es posible la integración de pasillos, plataformas de mantenimiento para secciones elevadas de maquinaria, o escaleras de servicio. &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/casos-de-exito/sistemas-de-escaleras-y-plataformas/">Sistemas de Escaleras y Plataformas</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>
		<div id="introduccion" data-title="Introducción" class="index-title"></div>
	Sistemas de Escaleras y Plataformas</h2>
<p>Un Sistema de Escaleras y Plataformas (TPS) ofrece una posibilidad de acceso a distintas zonas de una máquina o equipo; permitiendo la operación en distintos niveles. A través de un mismo sistema compatible, es posible la integración de pasillos, plataformas de mantenimiento para secciones elevadas de maquinaria, o escaleras de servicio.</p>

		<div id="beneficios" data-title="Beneficios" class="index-title"></div>
	Los principales beneficios de un sistema integrado de escaleras y plataformas son los siguientes:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Escaleras de trabajo y barandales industriales seguros.</li>
<li>Plataformas hechas a la medida y de acuerdo a las necesidades de operación.</li>
<li>Ayudan a aprovechar al máximo el espacio: optimización en tres dimensiones.</li>
<li>Solución compacta con acceso a las áreas de difícil acceso</li>
<li>Seguras y flexibles.</li>
<li>Modulares, adaptables y practicas</li>
</ul>

		</div>
	
<h2>
		<div id="caso-de-exito" data-title="Caso de éxito" class="index-title"></div>
	Un caso de éxito de Sistema de Escaleras y Plataformas en la sede de Miele</h2>
<p>Miele es una empresa de gran tradición, fundada en 1899, y es conocida en todo el mundo por sus aparatos eléctricos para uso en el hogar, instalaciones médicas y plantas industriales. Su planta de electrodomésticos en Gütersloh, Alemania, es la más grande de sus doce centros de producción. Además de producir piezas prensadas, componentes fundidos y piezas de carcasa esmaltada para otros emplazamientos de Miele, esta planta fabrica principalmente lavadoras. Aproximadamente 2300 personas están involucradas en el desarrollo y la fabricación de estas máquinas en Gütersloh. Se utiliza un sistema de montaje especial en la producción de paneles de conmutación para lavadoras. Se trata de cintas transportadoras dispuestas en un rectángulo que transportan los componentes individuales a las estaciones de trabajo. Para asegurarse de que su personal pueda pasar por encima de las cintas transportadoras y acceder al área dentro del rectángulo de forma segura, Miele utiliza el <a href="https://mx.item24.com/es/mundo-de-los-productos/sistema-de-escalera-y-plataforma/"><em>Sistema de Escaleras y Plataformas</em></a> de <span class="tie-highlight tie-highlight-red"><strong>item</strong></span>.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-24722" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/Escaleras-Item.jpg" alt="Escaleras-Item" width="600" height="400" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/Escaleras-Item.jpg 600w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/Escaleras-Item-300x200.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Los transportadores de piezas de trabajo en circulación transportan componentes del panel de conmutación a las estaciones de trabajo. Aunque la disposición de las cintas transportadoras en un rectángulo hace el mejor uso posible del espacio de producción, el área dentro de este rectángulo es de difícil acceso. Como las cintas transportadoras son de la altura a la cintura y tienen un metro de ancho, no es posible pasar por encima de ellas sin ayuda. Sin embargo, se realizan regularmente trabajos de mantenimiento y revisión en el sistema de automatización, por lo que esta zona interior tiene que ser accesible. Por lo tanto, Miele requería diseños especiales para las escaleras y las plataformas, por lo que optó por un sistema compacto para garantizar que el personal pudiera llegar a varias zonas desde un punto de acceso.</p>
<p>&nbsp;</p>
<h2><strong>
		<div id="sistema-de-escaleras-item" data-title="Sistema de escaleras Item" class="index-title"></div>
	Sistema de Escaleras y Plataformas seguro y flexible</strong></h2>
<p>Gracias a su superficie antideslizante, los escalones, que están hechos de perfiles de aluminio, proporcionan una base segura. El sistema de escaleras y plataformas también ofrece protección contra las caídas, con componentes como puertas de escotilla en las aberturas de la escalera, un pasamanos, rieles para las rodillas y soportes que ayudan a prevenir los accidentes de trabajo.  Gracias a la <a href="https://item24us.news/es/una-union-de-alta-calidad/?p=2353">tecnología de fijación</a> modular y flexible utilizada, no se necesitan trabajos de soldadura o cortes de inglete en los rieles de seguridad. Todo tipo de componentes pueden ser atornillados a los <a href="https://item24us.news/es/los-perfiles-de-aluminio-en-la-ingenieria-mecanica-especializada-ideas-y-ventajas/">perfiles de aluminio</a>.</p>

		<div class="post-content-slideshow-outer">
			<div class="post-content-slideshow">

			<div class="loader-overlay"><div class="spinner-circle"></div></div>

				<div class="tie-slick-slider">

			<div class="slide post-content-slide">
				
<p><img decoding="async" class="aligncenter size-full wp-image-24727" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS1.jpg" alt="TPS1" width="604" height="402" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS1.jpg 604w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS1-300x200.jpg 300w" sizes="(max-width: 604px) 100vw, 604px" /></p>

			</div><!-- post-content-slide -->
		

			<div class="slide post-content-slide">
				
<p><img decoding="async" class="aligncenter size-full wp-image-24726" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS2.jpg" alt="TPS2" width="604" height="402" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS2.jpg 604w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS2-300x200.jpg 300w" sizes="(max-width: 604px) 100vw, 604px" /></p>

			</div><!-- post-content-slide -->
		

			<div class="slide post-content-slide">
				
<p><img decoding="async" class="aligncenter size-full wp-image-24725" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS3.jpg" alt="TPS3" width="604" height="402" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS3.jpg 604w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/02/TPS3-300x200.jpg 300w" sizes="(max-width: 604px) 100vw, 604px" /></p>

			</div><!-- post-content-slide -->
		


					<div class="slider-nav-wrapper">
						<ul class="tie-slider-nav"></ul>
					</div>
				</div><!-- tie-slick-slider -->
			</div><!-- post-content-slideshow -->
		</div><!-- post-content-slideshow-outer -->
	
<p>&nbsp;</p>
<p>Si los requisitos cambian, la construcción puede ser fácilmente modificada o ampliada. Esto no sólo se debe a la modularidad de la tecnología de fijación utilizada, sino también al hecho de que el sistema de escaleras y plataformas no está atornillado al sistema de producción. Por consiguiente, las posibles modificaciones no afectarán en absoluto al sistema de producción. El sistema se suministró en forma de unidades parcialmente ensambladas que se podían armar en muy poco tiempo. Toda la estructura fue probada por item en Solingen previamente. Si la solución hubiera utilizado múltiples cruces separados, el personal habría tenido que cruzar un puente tras otro. Sin embargo, pueden acceder a diferentes partes del sistema con mucha más facilidad utilizando la plataforma de 11.20 metros de longitud, lo que hace que las tareas de servicio y mantenimiento sean mucho más rápidas y convenientes. Hay numerosas rutas a las diferentes partes de la máquina, y todas parten de un punto central en la plataforma. El aumento de la capacidad de la planta pronto dio lugar a una segunda línea de producción del mismo diseño. Una vez más, Miele optó por el Sistema de Escaleras y Plataformas de item.</p>
<h2 style="text-align: center;"><strong>¡Descubra El sistema de escaleras/plataformas item!</strong></h2>
<p><center><a href="https://mx.item24.com/es/mundo-de-los-productos/sistema-de-escalera-y-plataforma/" target="_blank" class="shortc-button medium red">Sistema de escaleras</a>
		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	</center></p>
<hr />

		<div class="clearfix"></div>
		<div class="about-author about-author-box container-wrapper">
			<div class="author-avatar">
				<img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/07/Item-logo.png" alt="">
			</div>
			<div class="author-info">
				<h4>Item</h4>Item es la empresa pionera en sistemas de construcción modular para aplicaciones industriales y líder en el mercado global. Lleva diseñando y comercializando soluciones de construcción para maquinaria, accesorios y plantas desde 1976. En la actualidad, la cartera de productos de item consta de más de 3.000 componentes de alta calidad, diseñados para uso en bases de máquinas, bancos de trabajo, soluciones de automatización y aplicaciones de producción lean.
			</div>
		</div>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/casos-de-exito/sistemas-de-escaleras-y-plataformas/">Sistemas de Escaleras y Plataformas</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/casos-de-exito/sistemas-de-escaleras-y-plataformas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Por qué una mesa de trabajo de ensamblaje ergonómica es una necesidad?</title>
		<link>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/por-que-una-mesa-de-trabajo-de-ensamblaje-ergonomica-es-una-necesidad/</link>
					<comments>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/por-que-una-mesa-de-trabajo-de-ensamblaje-ergonomica-es-una-necesidad/#respond</comments>
		
		<dc:creator><![CDATA[Item]]></dc:creator>
		<pubDate>Mon, 30 Nov 2020 17:24:02 +0000</pubDate>
				<category><![CDATA[Diseño y distribución en planta]]></category>
		<category><![CDATA[Ergonomía]]></category>
		<category><![CDATA[Lean Manufacturing]]></category>
		<category><![CDATA[Producción]]></category>
		<category><![CDATA[Seguridad y Salud Ocupacional]]></category>
		<category><![CDATA[Ergologística]]></category>
		<category><![CDATA[Estación de trabajo]]></category>
		<category><![CDATA[Estudio de movimientos]]></category>
		<category><![CDATA[Item]]></category>
		<category><![CDATA[Micromovimientos]]></category>
		<category><![CDATA[Puestos de trabajo]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=24242</guid>

					<description><![CDATA[<p>A pesar de las innovaciones asociadas a la digitalización y a la Industria 4.0, el trabajo manual sigue siendo indispensable en la industria. La mayoría de las operaciones manuales son muy repetitivas. Según el informe de salud de 2018 de Techniker Krankenkasse (un proveedor de seguros de salud legal alemán), las dolencias musculoesqueléticas son la &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/por-que-una-mesa-de-trabajo-de-ensamblaje-ergonomica-es-una-necesidad/">¿Por qué una mesa de trabajo de ensamblaje ergonómica es una necesidad?</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>
		<div id="introduccion" data-title="Introducción" class="index-title"></div>
	A pesar de las innovaciones asociadas a la digitalización y a la Industria 4.0, el trabajo manual sigue siendo indispensable en la industria.</h2>
<p>La mayoría de las operaciones manuales son muy repetitivas. Según el <em>informe de salud de 2018 de Techniker Krankenkasse (un proveedor de seguros de salud legal alemán)</em>, las dolencias musculoesqueléticas son la principal causa de absentismo laboral. Especialmente en el caso de las mesas de trabajo de ensamblaje industrial, por lo tanto, es esencial que los empleadores cumplan con los <a href="https://ingenieriaindustrialonline.com/ingenieria-de-metodos/micromovimientos/"><strong>principios de diseño ergonómico</strong></a> del lugar de trabajo. Hacerlo no ofrece más que beneficios para todos los implicados, como explica el experto en ergonomía de <span class="tie-highlight tie-highlight-red"><em><strong>item</strong></em></span> Marius Geibel:</p>
<p><em>«La ergonomía se considera a menudo como una forma innecesaria y costosa de intentar convertir el lugar de trabajo en una especie de spa. Sin embargo, en un enfoque holístico, mejorar la productividad es un aspecto integral de la ergonomía. En términos prácticos, la ergonomía y la eficiencia van de la mano. El personal que no está sometido a una tensión innecesaria está más motivado y tiene mejor rendimiento. La ergonomía ayuda a las empresas a retener su fuerza de trabajo a largo plazo». </em></p>
<p>Este post tiene como objetivo explorar los diversos factores de interconexión que crea una mesa de trabajo de ensamblaje ergonómico.</p>
<p>&nbsp;</p>
<h2>Mesa de ensamblaje con altura ajustable y silla industrial
		<div id="mesa-de-ensamblaje-con-altura-ajustable-y-silla-industrial" data-title="Mesa de ensamblaje con altura ajustable y silla industrial" class="index-title"></div>
	</h2>
<p>Trabajar durante varias horas en la misma posición pronto cobra su precio, causando una tensión que puede convertirse en un dolor crónico a largo plazo. Por lo tanto, siempre que los procesos lo permitan, los empleados deben poder cambiar entre sentarse y pararse mientras hacen su trabajo. <strong>Una forma rápida de lograr esto y aliviar la tensión es usar una mesa de ensamblaje con altura ajustable</strong>, idealmente una que pueda ser levantada y bajada eléctricamente. Los humanos no están hechos para sentarse durante largos períodos. Hacerlo solo ha sido parte de nuestra vida cotidiana (de trabajo) durante unos 250 años, por lo que es aconsejable cambiar a trabajar de pie después de estar sentado un tiempo.</p>
<p>En última instancia, sentarse en una mesa de trabajo de ensamblaje es inevitable. Por lo tanto, al seleccionar las sillas industriales hay que tener en cuenta una serie de factores. Al igual que las mesas de ensamblaje, las sillas también deben ser de altura ajustable sin escalonamiento, por lo que un sistema de mesa de trabajo de ensamblaje como el que ofrece <span class="tie-highlight tie-highlight-red"><em><strong>item</strong></em></span> cubre ambos requisitos. Las opciones de ajuste personalizado de las sillas deberían fomentar la sesión dinámica, en la que los empleados eviten la tensión desigual y la sobrecarga de los grupos musculares individuales, cambiando su posición y postura con la mayor frecuencia posible. Otros requisitos clave para las sillas industriales son la robustez de los materiales y la estabilidad al desplazar el peso.</p>
<p>&nbsp;</p>
<h2>Importancia de la zona de manipulación para las mesas de trabajo de ensamblaje
		<div id="importancia-de-la-zona-de-manipulacion-para-las-mesas-de-trabajo-de-ensamblaje" data-title="Importancia de la zona de manipulación para las mesas de trabajo de ensamblaje" class="index-title"></div>
	</h2>
<p>El área de manipulación tiene un gran papel en el diseño de una mesa de trabajo de ensamblaje. Hay varias formas en las que puede variar. Se puede distinguir entre la <strong>zona de manipulación exterior</strong> (accesible con el brazo extendido) y la <strong>zona de manipulación interior</strong> (accesible con el brazo doblado). El área también puede dividirse en tres zonas diferentes. La <strong>zona de dos manos</strong> está situada directamente delante del operador, es decir, donde el proceso se lleva a cabo realmente. Por lo tanto, los materiales y herramientas que se necesitan regularmente deben colocarse en esta zona para que el personal pueda acceder a ellos fácilmente sin tener que girar el cuerpo para hacerlo. Por el contrario, los materiales de trabajo están al alcance de la mano en la <strong>zona de una sola mano</strong>. Por último, pero no menos importante, la zona extendida de una mano cubre la parte más exterior del área de manejo.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-24243" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/image2-1.jpg" alt="Puesto de trabajo ergonómico " width="600" height="400" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/image2-1.jpg 600w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/image2-1-300x200.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Sin embargo, <strong>las distintas zonas del área de manipulación difieren para cada persona, por lo que todos y cada uno de los empleados deben ser capaces de adaptar el aprovisionamiento y la recogida de material en la mesa de trabajo de ensamblaje a sus necesidades particulares para evitar una mala postura</strong>. Esto puede evitarse específicamente, por ejemplo, utilizando brazos giratorios para colocar herramientas en la zona de una mano. Los componentes que van desde los contenedores de piezas hasta los ganchos y soportes para el suministro de herramientas, son fáciles de sujetar a estos brazos.</p>
<p>&nbsp;</p>
<h2>Iluminación ergonómica en la mesa de trabajo de ensamblaje
		<div id="iluminacion-ergonomica-en-la-mesa-de-trabajo-de-ensamblaje" data-title="Iluminación ergonómica en la mesa de trabajo de ensamblaje" class="index-title"></div>
	</h2>
<p>La iluminación es un factor que a menudo se pasa por alto en la ergonomía de las mesas de trabajo de ensamblaje, pero <strong>ignorar los principios ergonómicos puede resultar perjudicial</strong>. Incluso el color de la luz de una luminaria LED afecta a la salud del personal y, por tanto, a su rendimiento. Las siguientes reglas básicas se aplican al color de la luz:</p>

		<div class="lightbulb tie-list-shortcode">
<ul>
<li>La luz blanca fría tiene un efecto estimulante en las personas (3330 a 5300 Kelvin)</li>
<li>La luz blanca cálida crea una atmósfera relajante y tranquilizadora (2700 a 3300 Kelvin)</li>
</ul>

		</div>
	
<p><img decoding="async" class=" wp-image-24244 alignleft" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Image3-1.jpg" alt="Iluminación ergonómica en la mesa de trabajo de ensamblaje" width="371" height="247" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Image3-1.jpg 600w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Image3-1-300x200.jpg 300w" sizes="(max-width: 371px) 100vw, 371px" /></p>
<p>Con eso en mente, es importante asegurar un buen equilibrio al iluminar una mesa de trabajo de ensamblaje. Se recomienda un color claro de alrededor de 4000 Kelvin. Esto se encuentra entre la iluminación blanca y cálida de una bombilla (2500 a 2700 Kelvin) y la luz normal del día (5800 a 6500 Kelvin).</p>
<p>El fenómeno de los focos individuales que crean sombras duras superpuestas -conocidas como sombras múltiples- también puede causar fatiga ocular, lo que lleva rápidamente a claros signos de fatiga y lapsos de concentración. La iluminación homogénea de una luz industrial LED, por otra parte, produce sólo sombras suaves, que <strong>someten a los ojos a mucha menos tensión</strong>. Este es incluso el caso de la luz sin parpadeos de las luces industriales LED de alta frecuencia. Cualquier otra cosa es contraproducente en una mesa de trabajo de ensamblaje, porque incluso el parpadeo de baja frecuencia que no se percibe fácilmente causa tensión.</p>
<p>&nbsp;</p>
<h2>¿Cómo las estaciones de trabajo inteligentes aumenta la productividad? 
		<div id="como-las-estaciones-de-trabajo-inteligentes-aumenta-la-productividad" data-title="¿Cómo las estaciones de trabajo inteligentes aumenta la productividad?" class="index-title"></div>
	</h2>
<p><iframe loading="lazy" id="ytplayer" src="https://www.youtube.com/embed/Q1U2bIGYv00?rel=0&amp;color=white" width="720" height="405" frameborder="0" allowfullscreen="allowfullscreen"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span><br />
</iframe></p>
<h2 style="text-align: center;"><strong>¡Conozca los Sistemas de puestos de trabajo de item!</strong></h2>
<p><center><a href="https://mx.item24.com/es/mundo-de-los-productos/sistema-de-bancos-de-trabajo/?_ga=2.93080475.728742225.1606228977-396817425.1572373092" target="_blank" class="shortc-button medium red">SISTEMAS DE ESTACIONES DE TRABAJO</a>
		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	</center><center></center>
		<div class="clearfix"></div>
		<div class="about-author about-author-box container-wrapper">
			<div class="author-avatar">
				<img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/07/Item-logo.png" alt="">
			</div>
			<div class="author-info">
				<h4>Item</h4>Item es la empresa pionera en sistemas de construcción modular para aplicaciones industriales y líder en el mercado global. Lleva diseñando y comercializando soluciones de construcción para maquinaria, accesorios y plantas desde 1976. En la actualidad, la cartera de productos de item consta de más de 3.000 componentes de alta calidad, diseñados para uso en bases de máquinas, bancos de trabajo, soluciones de automatización y aplicaciones de producción lean.
			</div>
		</div>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/por-que-una-mesa-de-trabajo-de-ensamblaje-ergonomica-es-una-necesidad/">¿Por qué una mesa de trabajo de ensamblaje ergonómica es una necesidad?</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/seguridad-y-salud-ocupacional/ergonomia/por-que-una-mesa-de-trabajo-de-ensamblaje-ergonomica-es-una-necesidad/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
