<?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>Ing. Bryan Salazar López</title>
	<atom:link href="https://ingenieriaindustrialonline.com/author/adm1n/feed/" rel="self" type="application/rss+xml" />
	<link>https://ingenieriaindustrialonline.com/author/adm1n/</link>
	<description>ingenieriaindustriaonline.com</description>
	<lastBuildDate>Tue, 21 Mar 2023 20:44:15 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/cropped-faVicon-32x32.png</url>
	<title>Ing. Bryan Salazar López</title>
	<link>https://ingenieriaindustrialonline.com/author/adm1n/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Visión Computarizada</title>
		<link>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/vision-computarizada/</link>
					<comments>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/vision-computarizada/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 21:14:44 +0000</pubDate>
				<category><![CDATA[Habilitadores Tecnológicos]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[Logística y Nuevas Tecnologías]]></category>
		<category><![CDATA[Inteligencia artificial]]></category>
		<category><![CDATA[Inteligencia Artificial Interactiva]]></category>
		<category><![CDATA[Internet de las Cosas]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Logística 4.0]]></category>
		<category><![CDATA[OCR]]></category>
		<category><![CDATA[Visión Computarizada]]></category>
		<guid isPermaLink="false">https://www.ingenieriaindustrialonline.com/?p=33590</guid>

					<description><![CDATA[<p>La Inteligencia Artificial es una rama de la informática y la tecnología que se enfoca en crear sistemas que puedan realizar tareas que normalmente requieren inteligencia humana, como el reconocimiento de patrones, la toma de decisiones y la resolución de problemas. En otras palabras, la Inteligencia Artificial es la capacidad de una máquina para «pensar» &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/vision-computarizada/">Visión Computarizada</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>
	 La Inteligencia Artificial es una rama de la informática y la tecnología que se enfoca en crear sistemas que puedan realizar tareas que normalmente requieren inteligencia humana, como el <strong>reconocimiento de patrones</strong>, la toma de decisiones y la resolución de problemas. En otras palabras, la Inteligencia Artificial es la capacidad de una máquina para «pensar» y aprender como lo hace un ser humano, aunque usando algoritmos y reglas programadas en vez de la complejidad del cerebro humano.</p>
<p>Si lo vemos desde el punto de vista de replicar acciones humanas, una calculadora sería potencialmente una forma de Inteligencia Artificial; si lo vemos desde la perspectiva del aprendizaje desde las formas humanas: a través del entrenamiento, esta definición agruparía modelos y sistemas mucho más complejos.</p>
<p>En la siguiente gráfica podemos ver el crecimiento en el desempeño de reconocimiento de distintos datos de entrada no estructurados, y cómo los mejores modelos comienzan a superar el desempeño de los humanos en el reconocimiento de patrones naturales, como por ejemplo, las imágenes.</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM.jpeg" alt="IA" width="438" height="540" class="wp-image-33587 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM.jpeg 1037w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM-243x300.jpeg 243w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM-830x1024.jpeg 830w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM-768x948.jpeg 768w" sizes="(max-width: 438px) 100vw, 438px" /></p>
<p>El anterior es un repaso conceptual de la categoría tecnológica a la cual pertenece la tendencia tecnológica que analizaremos a continuación: <strong>Visión computarizada (reconocimiento de imágenes mediante IA)</strong>.</p>
<h3>¿Qué es la visión computarizada (reconocimiento de imágenes)?</h3>
<p>La tendencia de Visión Computarizada utiliza dispositivos de entrada de imágenes, como cámaras para capturar fotos o videos y <strong>aplica algoritmos de inteligencia artificial (IA) para analizar los datos extraídos</strong> de estas imágenes digitales. Los sistemas más básicos de IA visual están entrenados para diferenciar objetos entre sí, mientras que las versiones más avanzadas pueden rastrear objetos a través de puntos de vista, asociar imágenes con otros contextos en distintos formatos y aprender por sí mismos.</p>
<p><em>Un ejemplo de reconocimiento de imágenes mediante Visión Computarizada e integración con un modelo de análisis optimizado para el diálogo (GPT-4):</em></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">
				 Input: Qué puedo preparar con estos ingredietntes? |</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/cafe-gpt4.jpg" alt="" width="307" height="334" class="alignnone wp-image-33614" /></p>

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

			<div class="slide post-content-slide">
				 Output |</p>
<p>¡Hay muchas opciones para lo que puedes hacer con estos ingredientes! Algunas posibilidades incluyen:</p>
<p>&#8211; Panqueques o gofres<br />
&#8211; Crepes<br />
&#8211; Tostada francesa<br />
&#8211; Tortilla o frittata<br />
&#8211; Quiche<br />
&#8211; Natillas o budín<br />
&#8211; Torta o cupcakes<br />
&#8211; Muffins o pan- Galletas o bizcochos</p>
<p>Estos son solo algunos ejemplos, ¡pero las posibilidades son infinitas!</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>Como se puede apreciar, se trata de tareas de reconocimiento, clasificación y análisis, para dar como resultado una respuesta a una instrucción de texto específica que trasciende el reconocimiento, ya que requiere de asociación con el contexto de la solicitud. Además, se aprecia cierto nivel de empatía en la respuesta (en este caso específico).</p>
<p>La Visión Computarizada se ha desarrollado junto con el avance del aprendizaje automático profundo, aprovechando la calidad creciente y la disminución del costo de los dispositivos que captan imágenes, y la capacidad creciente y los costos de modelos de lenguaje robustos. En 2020, el mercado de visión artificial a nivel mundial valía 9400 millones de dólares y, a medida que la IA, los sistemas de visión y el procesamiento informático mejoran continuamente, se anticipa que este mercado se cuadriplicará con creces hasta los 41400 millones de dólares estadounidenses en 2030.</p>
<p>Vivimos tiempos disruptivos, el avance desde los primeros modelos de reconocimiento de imágenes hasta los modelos más avanzados es asombroso. La integración con modelos de lenguaje natural no es una visión a futuro, desde el lanzamiento de GPT-4 en marzo de 2023, es una realidad. Las posibilidades de aplicación aun se están explorando por estos días. De acuerdo a la infografía de capacidades de reconocimiento, los modelos actuales pueden realizar una clasificación con un desempeño superior al de los seres humanos; probemos:</p>
<p><em>Clic en una de las imágenes de ejemplo, </em>carguen la imagen en el modelo, luego clic en «<em><strong>Caption It!</strong></em>»</p>
<p><iframe loading="lazy" width="700" height="900" src="https://salesforce-blip2.hf.space" frameborder="0"><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>
<p><em>¿Qué tal les pareció? </em>Si aprecian bien, podemos dar instrucciones específicas al modelo anterior, de manera que no solo le pedimos un reconocimiento de la imagen, sino también inferencias e información de acuerdo a una instrucción de texto expresada en lenguaje natural.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	<gradio-app src="https://kadirnar-yolov8.hf.space"></gradio-app></p>
<h2>Aplicaciones en Logística: ¿Puede la Visión Computarizada remover restricciones logísticas? 
		<div id="aplicaciones-en-logistica-puede-la-vision-computarizada-remover-restricciones-logisticas" data-title="Aplicaciones en Logística: ¿Puede la Visión Computarizada remover restricciones logísticas?" class="index-title"></div>
	</h2>
<h3>Inventarios, procesamiento de órdenes y envíos
		<div id="inventarios-procesamiento-de-ordenes-y-envios" data-title="Inventarios, procesamiento de órdenes y envíos" class="index-title"></div>
	</h3>
<p>Muchas tareas que se desarrollan desde el CEDI hasta las góndolas en puntos minoristas involucran a humanos para evaluar o confirmar visualmente los elementos de un producto, caja o estiba a medida que pasa por las instalaciones. Muchas de esas tareas de reconocimiento y clasificación visual se pueden delegar gradualmente a sistemas de IA habilitados para visión por computadora. Y no hablamos del tradicional OCR (Reconocimiento Óptico de Caracteres), hablamos de sistemas robustos que tengan la capacidad de reconocer imágenes en diversos formatos y analizarlas en distintos contextos, en interacción con instrucciones no estructuradas (por ejemplo, lenguaje natural).</p>
<p>Un caso de uso práctico que proponen los especialistas de DHL es dimensionar un envío o medir su área o volumen (también determinar el tamaño de la flota). Esto puede ser difícil cuando los envíos son grandes o tienen formas extrañas, o se encuentran en cintas transportadoras que se mueven rápidamente. Empresas como Metrilus, con sede en Alemania, han desarrollado recientemente soluciones de bajo costo que automatizan este proceso de dimensionamiento, capturando medidas en milisegundos y enviando estos datos al sistema de gestión de almacenes (algoritmos de optimización). La medición precisa y la detección de volumen permiten seleccionar el empaque que mejor se ajuste para evitar el envío aéreo, lo que reduce el desperdicio y mantiene la sostenibilidad a la vanguardia de la logística.</p>
<p>Otro caso de uso es la identificación de objetos para recoger y empacar. Actualmente, la mayoría de los pedidos se recogen a mano, y aquellos que utilizan visión por computadora en soluciones robóticas tienden a identificar un producto por su código de barras o código QR. Pero los avances en la visión artificial han permitido que los robots identifiquen decenas de miles de productos con gran precisión, independientemente de la presencia de códigos de identificación.</p>
<div style="width: 960px;" class="wp-video"><video class="wp-video-shortcode" id="video-33590-1" width="960" height="540" preload="metadata" controls="controls"><source type="video/mp4" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/1-Publicacion-LinkedIn.mp4?_=1" /><a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/1-Publicacion-LinkedIn.mp4">https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/1-Publicacion-LinkedIn.mp4</a></video></div>
<p>&nbsp;</p>
<p>Con este nivel de IA visual, los proveedores de logística pueden optimizar los procesos, reduciendo los costos, apoyando la gestión del flujo y aumentando el rendimiento del sistema.</p>
<p>También podemos mencionar las aplicaciones de esta tecnología en góndola, desde las prestaciones para disminuir agotados, hasta el soporte de accesibilidad para usuarios con limitaciones físicas. Imáginese la integración de la visión computarizada con un sistema de reabastecimiento automatizado, que active no solo la solicitud de pedido hacia el proveedor, sino la solicitud de reabastecimiento interno de la góndola.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p><strong>La Visión Computarizada puede procesar la detección de uno o varios objetos y clasificar una serie de elementos a partir de una sola imagen</strong></p>
<p><em>Probemos con la siguiente imagen procesada por un modelo sencillo.</em></p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/pexels-anna-shvets-3962285.jpg" alt="" width="640" height="427" class="size-full wp-image-33605 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/pexels-anna-shvets-3962285.jpg 640w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/pexels-anna-shvets-3962285-300x200.jpg 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>Descarguen la imagen y utilicenla en el siguiente modelo: <a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/pexels-anna-shvets-3962285.jpg"><em>Descargar imagen</em></a></p>
<p><iframe loading="lazy" width="850" height="450" src="https://kadirnar-yolov8.hf.space" frameborder="0"></iframe></p>
<h3><strong>Caso de estudio</strong></h3>
<p><iframe loading="lazy" title="Volume measurement 2.0" width="200" height="113" src="https://www.youtube.com/embed/Cl4eOVlSJyw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<h2>Desafíos de esta tecnología
		<div id="desafios-de-esta-tecnologia" data-title="Desafíos de esta tecnología" class="index-title"></div>
	</h2>

		<div class="thumbdown tie-list-shortcode">
<ul>
<li>Los empleados pueden resistirse a las soluciones de visión por computadora, bajo la idea de estar siendo constantemente vigilados ya que pueden considerar que sus datos personales están en riesgo.</li>
<li>De acuerdo a especialistas de DHL: Mientras que aproximadamente el 90% de las cámaras de protocolo de Internet (IP) pueden ser fácilmente integradas y configuradas en nuevas plataformas de software, la tecnología de cámaras más antiguas debe ser actualizada para escalar soluciones de visión por computadora.</li>
<li>A menos que se consideren y fortalezcan las medidas de ciberseguridad, existe un riesgo de hackeo y manipulación malintencionada de datos, lo que resulta en análisis sesgados y un rendimiento de IA alterado.</li>
<li>El cumplimiento del Reglamento General de Protección de Datos y otras leyes de privacidad y protección de datos, debe ser considerado y puede limitar la escalabilidad de una solución de visión por computadora en diferentes regiones.</li>
</ul>

		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Perspectivas 2023
		<div id="perspectivas-2023" data-title="Perspectivas 2023" class="index-title"></div>
	</h2>
<p>La tendencia de la Visión Computarizada tiene campos de aplicación en prácticamente todos los procesos logísticos y a lo largo de una cadena de suministro. La tecnología puede ser de gran ayuda para la gestión del flujo y por ende en las organizaciones logísticas en la optimización de operaciones, el control de los activos, la mejora de la salud y seguridad de los trabajadores, y la reducción de costos. La integración con modelos de lenguaje robustos serán el paso siguiente a nivel logístico.</p>
<p>A medida que los proyectos piloto de hoy superen sus pruebas, se prevé una implementación rápida en los próximos años, ya que se trata de una tecnología de alto impacto en la logística.</p>
<p><em>*Recomiendo revisar el concepto de: <a href="https://cloudonair.withgoogle.com/events/digital-supply-chain-event" target="_blank" rel="noopener">Cadena de Suministros Digital</a>.</em></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p>Recuerde:</p>
<blockquote class=" quote-simple "><p>«Una nueva tecnología traerá beneficios para la empresa, si y solo si, tiene la capacidad potencial de remover restricciones activas del sistema» <cite>Eliyahu Goldratt</cite></p></blockquote>
<p>De manera que en el ejercicio de desarrollo de la <em>Ruta Tecnológica</em>, considere cuáles son las restricciones del sistema logístico (convencionales y transaccionales); cuáles son las reglas de operación actuales que están condicionadas por las restricciones; cómo la Visión Computarizada puede remover las restricciones del sistema; cuáles serían las nuevas reglas de operación con esta nueva tecnología y cómo se puede mejorar.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/vision-computarizada/">Visión Computarizada</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/vision-computarizada/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/1-Publicacion-LinkedIn.mp4" length="1874431" type="video/mp4" />

			</item>
		<item>
		<title>Inteligencia Artificial Interactiva</title>
		<link>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/inteligencia-artificial-interactiva/</link>
					<comments>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/inteligencia-artificial-interactiva/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 17:06:59 +0000</pubDate>
				<category><![CDATA[Habilitadores Tecnológicos]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[Logística y Nuevas Tecnologías]]></category>
		<category><![CDATA[Análitica]]></category>
		<category><![CDATA[Big data]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Gemelos digitales]]></category>
		<category><![CDATA[Inteligencia artificial]]></category>
		<category><![CDATA[Inteligencia Artificial Interactiva]]></category>
		<category><![CDATA[Internet de las Cosas]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Logística 4.0]]></category>
		<guid isPermaLink="false">https://www.ingenieriaindustrialonline.com/?p=33573</guid>

					<description><![CDATA[<p>La Inteligencia Artificial es una rama de la informática y la tecnología que se enfoca en crear sistemas que puedan realizar tareas que normalmente requieren inteligencia humana, como el reconocimiento de patrones, la toma de decisiones y la resolución de problemas. En otras palabras, la Inteligencia Artificial es la capacidad de una máquina para «pensar» &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/inteligencia-artificial-interactiva/">Inteligencia Artificial Interactiva</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>
	 La Inteligencia Artificial es una rama de la informática y la tecnología que se enfoca en crear sistemas que puedan realizar tareas que normalmente requieren inteligencia humana, como el reconocimiento de patrones, la toma de decisiones y la resolución de problemas. En otras palabras, la Inteligencia Artificial es la capacidad de una máquina para «pensar» y aprender como lo hace un ser humano, aunque usando algoritmos y reglas programadas en vez de la complejidad del cerebro humano.</p>
<p>Si lo vemos desde el punto de vista de replicar acciones humanas, una calculadora sería potencialmente una forma de Inteligencia Artificial; si lo vemos desde la perspectiva del aprendizaje desde las formas humanas: a través del entrenamiento, esta definición agruparía modelos y sistemas mucho más complejos.</p>
<p>En la siguiente gráfica podemos ver el crecimiento en el desempeño de reconocimiento de distintos datos de entrada no estructurados, y cómo los mejores modelos comienzan a superar el desempeño de los humanos en el reconocimiento de patrones naturales.</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM.jpeg" alt="IA" width="438" height="540" class="wp-image-33587 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM.jpeg 1037w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM-243x300.jpeg 243w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM-830x1024.jpeg 830w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/WhatsApp-Image-2023-03-20-at-12.33.13-PM-768x948.jpeg 768w" sizes="(max-width: 438px) 100vw, 438px" /></p>
<p>El anterior es un repaso conceptual de la categoría tecnológica a la cual pertenece la tendencia tecnológica que analizaremos a continuación: Inteligencia Artificial Interactiva.</p>
<h3>¿Qué es la Inteligencia Artificial Interactiva?</h3>
<p>La Inteligencia Artificial, en su forma general, requiere del procesamiento de datos de entrada de múltiples fuentes, ya sea en el entrenamiento como en la instrucción. La tendencia de la Inteligencia Artificial Interactiva implica algoritmos de inteligencia artificial (IA) que pueden <strong>procesar la entrada de los usuarios humanos</strong>, como texto, voz y gestos, y proporcionar una respuesta razonable. Formas avanzadas de esta tecnología pueden interpretar varios estilos de escritura y acentos, sostener conversaciones complejas, realizar tareas complejas más allá de comandos simples y simular un sentido de empatía con los usuarios humanos. Si usted se está introduciendo en estos temas, debe considerar que se trata de probablemente la revolución tecnológica más potente de los últimos años: <em>¡Cambió las reglas de juego!</em></p>
<p>Emergiendo de la tendencia general de la IA, hay varios tipos de IA interactiva con aplicaciones variables que van desde la geolocalización y navegación, detección y reconocimiento facial, chatbots, asistentes digitales, dictado de voz a texto, salidas de texto a voz, procesamiento de imagen a texto y pagos electrónicos, por nombrar algunos. La tendencia, sobre todo con el lanzamiento de la cuarta generación GPT, es: procesamiento desde cualquier formato a cualquier formato; y esto despliega infinitas aplicaciones.</p>
<p>En logística y la cadena de suministro, este tipo de interacción tiene la capacidad potencial de lograr que las actividades cotidianas de los empleados sean menos manuales y, al mismo tiempo, puedan ofrecer una experiencia más automatizada al cliente. El foco disruptivo y polémico radica en que ya no se trata de una sustitución de tareas humano-pantalla operativas, también tareas humano-pantalla analíticas. <em>¿Cuál será el rol humano en la Cadena de Suministro? </em>Sin duda, y como mínimo, será la toma de decisiones asistida, es decir, el ser humano en el corto plazo desempeñará sus tareas dentro de la Cadena de Suministro con alguna forma de asistencia basada en Inteligencia Artificial Interactiva; siendo más arriesgado, creo que el rol del ser humano puede relegarse a la supervisión de las tareas ejecutadas por un modelo de IA.</p>
<p>Expertos desde DHL consideran que se esperan más desarrollos en los próximos 5 años para la tendencia de la IA Interactivaen Logística (yo creería que en mucho menos tiempo). Esto tendrá un impacto poderoso en los enfoques empresariales centrados en el cliente para las empresas de logística, ya que se están identificando casos de uso en una multitud de procesos de flujo de trabajo <strong>en todos los niveles transaccionales en la cadena de suministro</strong>. La adopción y escalabilidad continua de la tecnología de IA interactiva dentro de almacenes y otros entornos operativos, así como en flujos de trabajo de oficina, demuestran las oportunidades para la colaboración humano-máquina.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Este contenido está actualizado con las tendencias 2023. Hace un año (inicio de 2022) cursé un programa de Inteligencia Artificial de una Institución de Helsinki. Gran parte del alcance del curso se vio superado por los avances disruptivos del 2022 &#8211; 2023. Lo que en el programa se consideraba como paradigma hoy es una realidad (un ritmo frenético)
			</div>
		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Aplicaciones en Logística: ¿Puede la Inteligencia Artificial Interactiva remover restricciones logísticas? 
		<div id="aplicaciones-en-logistica-puede-la-inteligencia-artificial-interactiva-remover-restricciones-logisticas" data-title="Aplicaciones en Logística: ¿Puede la Inteligencia Artificial Interactiva remover restricciones logísticas?" class="index-title"></div>
	</h2>
<p>Para responder a esta pregunta, es necesario cuestionar lo que sabemos y creemos acerca de la logística. En este sentido, se puede evocar uno de los principios de la Teoría de Restricciones de Goldratt: nunca asumir que ya se sabe todo.</p>
<p>En general, los objetivos de la logística son asegurar que el cliente o consumidor tenga acceso al producto correcto, en el momento adecuado, en el lugar preciso, en la cantidad correcta, con la calidad correcta y a un precio justo. Para ello, es fundamental asegurar la disponibilidad del producto en el punto de venta, ya que esto es el resultado de la sinergia de toda la cadena de suministro. Como bien lo dijo Goldratt, «en la cadena de suministro, ningún eslabón habrá alcanzado el resultado hasta que el cliente final no haya comprado».</p>
<p>Sin embargo, aunque estos objetivos siguen siendo importantes, el actor clave de la cadena, el consumidor, no se mantiene estático, sino que ha sufrido cambios disruptivos en sus hábitos de consumo. En la actualidad, nos enfrentamos a un consumidor hiperconectado que ha transformado la ruta de consumo. Esto es relevante en términos logísticos, ya que para el consumidor hiperconectado, la disponibilidad física del producto es solo un factor más en la ruta de consumo. Este tipo de consumidor se rige por sesgos particulares, como el poder del ahora, el sesgo de escasez, el sesgo de autoridad, la prueba social y el compromiso asumido. Por lo tanto, para este tipo de consumidor, la disponibilidad del producto no es necesariamente más importante que la visibilidad digital de dicha disponibilidad.</p>
<p>Por ejemplo, si un punto de venta tiene 1000 unidades de un SKU y no logra hacer que dicha disponibilidad sea visible digitalmente para el consumidor, difícilmente logrará una ventaja competitiva frente a otro punto de venta que tenga solo 10 unidades disponibles pero que logre una visibilidad digital del stock (además de su ubicación geográfica). Esto se debe a que el consumidor final ha incorporado a su ruta de consumo procesos como la investigación, la navegación digital y la consulta digital del punto físico y la disponibilidad, incluso antes de realizar la compra física.</p>
<p>La logística 4.0 consiste en la integración entre el mundo físico y digital, aprovechando los impulsos de conectividad, procesamiento, almacenamiento y accesibilidad, y haciendo uso de tecnologías habilitadoras que permiten dicha integración. El objetivo es eliminar las restricciones logísticas convencionales, como la disponibilidad, así como aquellas propias de la era digital que tienen impacto en la logística, a través de soluciones y aplicaciones. El objetivo final sigue siendo el mismo: conectar al consumidor con el producto en las condiciones adecuadas. Este cambio de chip, nos permite evaluar a la Inteligencia Artificial Interactiva como tendencia tecnológica capaz de remover restricciones logísticas transaccionales.</p>
<h3>Automatización de la interacción con el cliente / Nivel de servicio
		<div id="automatizacion-de-la-interaccion-con-el-cliente-nivel-de-servicio" data-title="Automatización de la interacción con el cliente / Nivel de servicio" class="index-title"></div>
	</h3>
<p>Con la experiencia del cliente en el centro del objetivo logístico, los departamentos de servicio al cliente y soporte son muy importantes para las empresas de logística. Los chatbots pueden ayudar a estas empresas a manejar consultas de centros de llamadas de baja y mediana intensidad sobre, por ejemplo, solicitudes de entregas, edición de pedidos, seguimiento de envíos y respuestas a preguntas frecuentes. Los chatbots también pueden facilitar valiosas métricas de análisis, lo que permite a la empresa comprender mejor las necesidades del cliente y mejorar la experiencia del cliente. En un futuro cercano, la relación con el cliente será automatizada y la promesa de servicio será propuesta por algún modelo de Inteligencia Artificial Interactivo, que tenga acceso a los flujos de datos relacionados con los flujos físicos.</p>
<p>Como resultado, los chatbots representan el canal de comunicación de marca de más rápido crecimiento de hoy en día, con una tasa de manejo de chat de inicio a fin del 68,9% en 2020 (un aumento del 260% en la resolución de extremo a extremo desde 2017), y se espera que la contribución a las transacciones de comercio electrónico alcance los 112 mil millones de dólares para 2023 (creo que, dada la salida en vivo de la <a href="https://platform.openai.com/docs/api-reference/chat">API de GPT</a>, esta predicción será ampliamente superada).</p>
<p>Con la IA interactiva, la automatización del servicio al cliente también se extiende al procesamiento de la entrada del usuario a través de otros canales de comunicación comúnmente utilizados, como respuestas de correo electrónico inmediatas, servicios telefónicos automatizados, integración con plataformas de mensajes de texto e incluso, asistencia digital en punto físico de venta. Esto amplía los ámbitos en los que los clientes pueden obtener respuestas inmediatas y satisfactorias a sus consultas.</p>
<figure id="attachment_33576" aria-describedby="caption-attachment-33576" style="width: 655px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/chatbots.png" alt="" width="655" height="302" class="size-full wp-image-33576" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/chatbots.png 655w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/chatbots-300x138.png 300w" sizes="(max-width: 655px) 100vw, 655px" /><figcaption id="caption-attachment-33576" class="wp-caption-text">Fuente: <a href="https://thrivemyway.com/chatbot-statistics/">Thrive my way</a></figcaption></figure>
<h3>IA Interactiva en el lugar de trabajo
		<div id="ia-interactiva-en-el-lugar-de-trabajo" data-title="IA Interactiva en el lugar de trabajo" class="index-title"></div>
	</h3>
<p>En el contexto de los lugares de trabajo digitales, los chatbots son comúnmente utilizados en casi todos los sectores, ya que pueden permitir que los trabajadores accedan a la información necesaria para completar su trabajo.</p>
<p>Según Gartner, el 70% de los trabajadores de oficina interactuarán con plataformas de chatbots a diario para finales de 2022. Estas plataformas, al igual que en aplicaciones de servicio al cliente, pueden proporcionar información y respuestas inmediatas a los trabajadores de oficina, ayudando a la organización a difundir detalles sobre la gestión del cambio, recursos humanos, soporte de helpdesk, servicios generales, informes de anomalías y organización de reuniones.</p>
<p>Para las operaciones logísticas, los chatbots pueden optimizar el manejo y la gestión de inventario, seguimiento de cargas y programación de entregas, así como actualizaciones de gestión de relaciones con clientes (CRM) y sistemas de gestión de almacenes (<a href="https://ingenieriaindustrialonline.com/gestion-de-almacenes/que-es-un-wms/">WMS</a>), el software dedicado de <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/realidad-extendida/">Realidad Extendida</a>, los <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/gemelos-digitales/">Gemelos Digitales</a>. La adopción de tecnología de IA interactiva dentro de la cadena de suministro automatiza los flujos de trabajo y la gestión de pedidos, liberando a los empleados de operaciones para enfocarse en tareas más complejas y de mayor valor. En caso de que un chatbot no pueda completar una consulta, asigna la tarea a un humano para una acción adicional mientras notifica al solicitante sobre este estado.</p>
<p>El siguiente es un ejemplo de Inteligencia Artificial Interactiva que se integra a la tendencia tecnológica de la Realidad Extendida para el desarrollo de un proceso logístico convencional: Packing:</p>
<figure id="attachment_33526" aria-describedby="caption-attachment-33526" style="width: 511px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR_AI.png" alt="" width="511" height="682" class="size-full wp-image-33526" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR_AI.png 511w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR_AI-225x300.png 225w" sizes="(max-width: 511px) 100vw, 511px" /><figcaption id="caption-attachment-33526" class="wp-caption-text">Autor: Ing. Bryan Salazar López</figcaption></figure>
<p>La consulta del operario se expres en su lenguaje natural y se procesa a través de Inteligencia Artificial Interactiva: <em>¡Jarvis en el CEDI!</em></p>
<h3>IA Intercativa para la accesibilidad en puntos minoristas
		<div id="ia-intercativa-para-la-accesibilidad-en-puntos-minoristas" data-title="IA Intercativa para la accesibilidad en puntos minoristas" class="index-title"></div>
	</h3>
<p>&nbsp;</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Desafíos de esta tecnología
		<div id="desafios-de-esta-tecnologia" data-title="Desafíos de esta tecnología" class="index-title"></div>
	</h2>

		<div class="thumbdown tie-list-shortcode">
<ul>
<li>La experiencia del cliente es una fuerza impulsora para las empresas de logística, sin embargo, los estudios muestran resistencia a los chatbots, con un 60% de los consumidores prefiriendo esperar a un agente en lugar de hablar con un dispositivo de inteligencia artificial interactivo. Vale la pena considerar que la experiencia del cliente se ha medido sobre una base tecnológica distinta, ya que no se trata de chatbots con modelos optimizados para el diálogo. Vimos en el gráfico como el 90% de los consumidores aceptan la interacción con los modelos de última generación.</li>
</ul>
<ul>
<li>Las plataformas de inteligencia artificial interactiva generan datos personales de los usuarios, lo que aumenta los niveles de riesgo para la gobernanza de datos, la privacidad, la seguridad y el cumplimiento del GDPR, lo que potencialmente puede generar desafíos legislativos.</li>
<li>Las brechas de conocimiento pueden impedir la adopción fluida de la tecnología de inteligencia artificial interactiva; las organizaciones deberán asignar presupuestos adicionales de TI a esta habilidad de nicho para construir la infraestructura de TI y desplegar soluciones de inteligencia artificial interactiva.</li>
<li><em>¿Cuál será el rol de los seres humanos en la logística? </em>Este será un desafío que se debe considerar en contextos como el nuestro. ¿Cuál será la respuesta de las organizaciones sindicales? ¿Cuál seráel impacto social?</li>
</ul>

		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Perspectivas 2023
		<div id="perspectivas-2023" data-title="Perspectivas 2023" class="index-title"></div>
	</h2>
<p>Si bien hemos visto saltos de desarrollo en IA en los últimos años, sigue generando interés e inversión y se predice que crecerá a largo plazo en la expansión de aplicaciones de IA interactivas capaces de impulsar un valor económico significativo; los desarrollos de IA interactiva en lo corrido de este año son exponenciales. Los cuatro bloques de impulsores clave de más datos (conectividad), mejores algoritmos y mayor potencia informática (procesamientos y almaceanmiento) y accesibilidad, indican que es probable que estos casos de uso se materialicen y escalen.</p>
<p>De acuerdo con los especialistas de DHL: La logística y la cadena de suministro son fundamentales para los crecientes niveles de adopción de IA cada año. Se predice que la tasa de adopción de IA en la industria sea del 42,9% CAGR, alcanzando un valor de 6,5 mil millones de dólares para 2023. Al adoptar la tecnología de IA interactiva, la industria logística puede responder de manera efectiva a los desafíos operativos del creciente demanda B2B y B2C de entrega inmediata de bienes.</p>
<p><em>*Recomiendo revisar el concepto de: <a href="https://cloudonair.withgoogle.com/events/digital-supply-chain-event" target="_blank" rel="noopener">Cadena de Suministros Digital</a>.</em></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p>Recuerde:</p>
<blockquote class=" quote-simple "><p>«Una nueva tecnología traerá beneficios para la empresa, si y solo si, tiene la capacidad potencial de remover restricciones activas del sistema» <cite>Eliyahu Goldratt</cite></p></blockquote>
<p>De manera que en el ejercicio de desarrollo de la <em>Ruta Tecnológica</em>, considere cuáles son las restricciones del sistema logístico (convencionales y transaccionales); cuáles son las reglas de operación actuales que están condicionadas por las restricciones; cómo la Inteligencia Artificial Analítica puede remover las restricciones del sistema; cuáles serían las nuevas reglas de operación con esta nueva tecnología y cómo se puede mejorar.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/inteligencia-artificial-interactiva/">Inteligencia Artificial Interactiva</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/inteligencia-artificial-interactiva/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Análisis masivo de datos (Big Data Analytics)</title>
		<link>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/analisis-masivo-de-datos-big-data-analytics/</link>
					<comments>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/analisis-masivo-de-datos-big-data-analytics/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 04:50:13 +0000</pubDate>
				<category><![CDATA[Habilitadores Tecnológicos]]></category>
		<category><![CDATA[Infraestructura Digital]]></category>
		<category><![CDATA[Internet de las Cosas]]></category>
		<category><![CDATA[Logística y Nuevas Tecnologías]]></category>
		<category><![CDATA[Análitica]]></category>
		<category><![CDATA[Big data]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Gemelos digitales]]></category>
		<category><![CDATA[Inteligencia Artificial Interactiva]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Logística 4.0]]></category>
		<category><![CDATA[Sensores]]></category>
		<guid isPermaLink="false">https://www.ingenieriaindustrialonline.com/?p=33552</guid>

					<description><![CDATA[<p>Uno de los fenómenos impulsores de la Industria 4.0 es sin duda la conectividad. Hablamos de la era de la hiperconexión; millones de objetos con integración digital y esto implica, en el nivel más básico, la generación y transmisión de datos masivos. La pregunta fundamental: ¿Para qué queremos esos datos? Cualquiera que sea la respuesta &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/analisis-masivo-de-datos-big-data-analytics/">Análisis masivo de datos (Big Data Analytics)</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>
	 Uno de los fenómenos impulsores de la Industria 4.0 es sin duda la conectividad. Hablamos de la era de la hiperconexión; millones de objetos con integración digital y esto implica, en el nivel más básico, la generación y transmisión de datos masivos. La pregunta fundamental: <em>¿Para qué queremos esos datos?</em> Cualquiera que sea la respuesta lógica, motiva la existencia del <strong>Big Data Analytics</strong>.</p>
<p>Si esto de la Industria 4.0 tiene un sentido (que creo que lo tiene), la generación y transmisión de datos tiene una razón de ser; pues bien, estos datos deben procesarse y analizarse para que cobren sentido. Big Data se refiere al análisis de grandes cantidades de datos para revelar patrones del pasado, resaltar cambios en tiempo real en el estado actual y crear predicciones y pronósticos para el futuro. Esta tendencia implica diversas técnicas de procesamiento de datos estructurados, que consisten en números y valores específicos que son buscables y se almacenan en un formato predefinido, así como datos no estructurados, que pueden presentarse en diversos formatos nativos, como archivos de video, audio de sensores, publicaciones en redes sociales y por estos días el boom, lenguaje natural.</p>
<figure id="attachment_33559" aria-describedby="caption-attachment-33559" style="width: 596px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Big-Data-V.png" alt="Big Data" width="596" height="408" class="wp-image-33559 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Big-Data-V.png 596w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Big-Data-V-300x205.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Big-Data-V-220x150.png 220w" sizes="(max-width: 596px) 100vw, 596px" /><figcaption id="caption-attachment-33559" class="wp-caption-text">Los Big Data son un conjunto de datos que presenta las cinco “V”</figcaption></figure>
<p>&nbsp;</p>
<p>Incluso los expertos en <em>management</em> más excépticos con la Industria 4.0 reconocen el valor de la capacidad de procesar grandes conjuntos de datos. Sin datos y análisis, no se puede optimizar, ni siquiera tener previsión para prepararse para lo que está por venir; sin datos, el desarrollo de los más básicos procesos logísticos puede llegar a ser caótico.</p>
<p>Como un paso más allá de las capacidades de procesamiento de datos de los sistemas transaccionales tradicionales, muchos líderes logísticos han adoptado sensores, paneles de control y otras tecnologías para recopilar y mostrar flujos de información (provenientes de diversas fuentes). A medida que aumenta el uso de dispositivos de recopilación de datos, combinado con el crecimiento exponencial de datos brutos encontrados en las redes sociales y en Internet en general, la tasa de llegada de datos supera con creces la tasa de procesamiento, con 463 quintillones (1018) de bytes (o 463 mil millones de GB) de datos que se producirán diariamente en 2025 (según <a href="https://www.dhl.com/global-en/home/insights-and-innovation/thought-leadership/trend-reports/big-data-analytics.html">DHL</a>). Para diferenciar estas enormes acumulaciones de datos estructurados y no estructurados, de datos más tradicionales que se pueden manipular fácilmente en una hoja de cálculo, los expertos han etiquetado los primeros como «big data»: voluminosos, que se generan de foma veloz, que tienen un valor y que son variados.</p>
<p>Diversos investigadores (<a href="https://sciencedirect.proxyuao.elogim.com/science/article/pii/S0167739X18313645?via%3Dihub">The role of big data analytics in industrial Internet of Things</a>) y portales especializados (<a href="https://www.dhl.com/global-en/home/insights-and-innovation/thought-leadership/trend-reports/big-data-analytics.html">DHL</a>) clasifican en 4 o 5 los tipos principales de análisis de big data que podrían aplicarse en casos de uso a lo largoy ancho de la cadena de suministro:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Análisis descriptivo</li>
<li>Análisis diagnóstico</li>
<li>Análisis predictivo</li>
<li>Análisis prescriptivo</li>
<li>Análisis en tiempo real</li>
</ul>

		</div>
	
<p>El análisis descriptivo busca comprender la situación existente y responder a la pregunta de qué sucedió, mientras que el análisis diagnóstico intenta investigar por qué sucedió algo. Mientras tanto, el análisis predictivo, como sugiere su nombre, genera predicciones y pronósticos de lo que podría suceder en el futuro, y el análisis prescriptivo utiliza datos históricos y situacionales para recomendar cambios en lo que se debe hacer.</p>
<figure id="attachment_33561" aria-describedby="caption-attachment-33561" style="width: 677px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/1-s2.0-S0167739X18313645-gr4.jpg" alt="" width="677" height="408" class="size-full wp-image-33561" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/1-s2.0-S0167739X18313645-gr4.jpg 677w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/1-s2.0-S0167739X18313645-gr4-300x181.jpg 300w" sizes="(max-width: 677px) 100vw, 677px" /><figcaption id="caption-attachment-33561" class="wp-caption-text">Fuente: <a href="https://sciencedirect.proxyuao.elogim.com/science/article/pii/S0167739X18313645?via%3Dihub">The role of big data analytics in industrial Internet of Things</a></figcaption></figure>
<p>&nbsp;</p>
<p>Pensemos en una situación «tipo» en logística. El análisis descriptivo puede arrojarnos información relacionada con la existencia de roturas de stock; mientras tanto, el análisis diagnóstico puede delimitarnos a través de los datos las causas correlacionadas de la rotura del stock. A través del análisis predictivo, se pueden generar pronósticos de rotura de stock; y el análisis prescriptivo utiliza los datos históticos y situacionales para modificar los parámetros de reabastecimiento o emitir órdenes, es decir, recomendar cambios en el proceso logístico.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span><em>¿Recuerdan el fenómeno de la Paleta Drácula?</em> Pues bien, a pesar de haber sido un éxito en ventas, fue evidente que la demanda superó ampliamente a la oferta: agotados a lo largo y ancho del país. Fue un feómeno promocional que se activó y creció en las redes sociales, una mezcla de nostalgia, popularidad y aceptación, motivó que una generación, ahora con capacidad adquisitiva, se volcara a adquirir un producto cuyo público objetivo eran los niños. Probablemente, los nuevos modelos analíticos aplicados a logística (predicción de demanda), incorporen las redes sociales como flujo de datos no estructurados para analizar las conversaciones sostenidas en lenguaje natural y predecir fenómenos de esta naturaleza. ¡Big Data Analytics!
			</div>
		</div>
	
<p>La tendencia del Big Data tiene un impacto moderadamente alto en la logística y lo clasificamos como una tendencia que se agrupa dentro de los habilitadores de <strong>infrestructura digital</strong> (Digital Backbone), es decir, forma parte esencial de la integración del mundo físico y digital, es transversal (es imposible pensar en Industria 4.0 sin considerar la capacidad de procesar datos masivos). Si bien no transforma directamente la apariencia y el aspecto de la cadena de suministro físicamente, la mayor visibilidad y la toma de decisiones optimizada que resultan de esta tendencia pueden conducir a una optimización estratégica a lo largo de los segmentos de la cadena de suministro, mejorando sustancialmente los niveles de servicio, desde un almacenamiento de estibas más eficiente en una instalación hasta el aseguramiento de la disponibilidad. En términos de realización, el análisis de big data está mucho más cerca en la industria logística que en otras industrias. Muchos, si no todos, los líderes logísticos han aprovechado los grandes datos en los últimos años.</p>
<p style="text-align: center;"><strong>Big Data no solo es «análisis»</strong></p>
<figure id="attachment_33563" aria-describedby="caption-attachment-33563" style="width: 503px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/big-data-analytics.png" alt="" width="503" height="360" class=" wp-image-33563" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/big-data-analytics.png 1744w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/big-data-analytics-300x215.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/big-data-analytics-1024x734.png 1024w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/big-data-analytics-768x550.png 768w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/big-data-analytics-1536x1101.png 1536w" sizes="(max-width: 503px) 100vw, 503px" /><figcaption id="caption-attachment-33563" class="wp-caption-text">Fuente: DHL</figcaption></figure>
<p>&nbsp;</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Aplicaciones en Logística: ¿Puede el Big Data remover restricciones logísticas? 
		<div id="aplicaciones-en-logistica-puede-el-big-data-remover-restricciones-logisticas" data-title="Aplicaciones en Logística: ¿Puede el Big Data remover restricciones logísticas?" class="index-title"></div>
	</h2>
<h3>Gestión de activos e inventarios
		<div id="gestion-de-activos-e-inventarios" data-title="Gestión de activos e inventarios" class="index-title"></div>
	</h3>
<p>Una de las principales oportunidades que tiene big data es proporcionar a los distintos actores de la cadena de suministro una visibilidad en tiempo real organizada, filtrada y digerible de la situación actual en instalaciones como almacenes y centros de distribución. El flujo puede gestionarse toda vez que los datos relevantes sean visibles.</p>
<p>El análisis de datos de inventario proveniente de sensores puede ayudar a determinar si los niveles de stock están bajando, por ejemplo. Para fines de diagnóstico, los análisis pueden revelar cómo ciertos envíos provocan que un transportador particular se averíe con frecuencia o pueden identificar eventos mundiales o locales que tienen un efecto dramático en el nivel de inventario de productos específicos: Cadena de Suministros Digital.</p>
<p>El equipo de Applied Analytics de DHL, por ejemplo, realiza estudios para clientes que pueden recomendar cambios basados en patrones identificados en los datos, donde el inventario puede haber excedido las previsiones originales de demanda, por ejemplo, o en los que el stock de seguridad puede haber disminuido por debajo de umbrales críticos. Para los activos, se puede procesar datos históricos para sugerir el mejor lugar para almacenar herramientas y otros equipos para limitar la distancia que deben recorrer los trabajadores para recuperarlos: optimización intralogística (el recurso correcto y la tarea correcta).</p>
<p>En general, el análisis de big data puede dar a las organizaciones logísticas la visibilidad necesaria para optimizar el almacenamiento y movimiento de envíos a través de las instalaciones, así como para mejorar la utilidad y vida útil de los activos.</p>
<p>Veamos un ejemplo de aplicación de Big Data, la operación de este CEDI de Amazon no sería posible sin la analítica de datos masivos:</p>
<p><iframe loading="lazy" title="Amazon Fulfillment Center Video Tour" width="1220" height="686" src="https://www.youtube.com/embed/UAKPoAn2cB0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<h3>Transporte, distribución y gestión del riesgo
		<div id="transporte-distribucion-y-gestion-del-riesgo" data-title="Transporte, distribución y gestión del riesgo" class="index-title"></div>
	</h3>
<p>Big Data puede ofrecer varias soluciones para rmover las restricciones que las organizaciones logísticas a menudo enfrentan en los segmentos de transporte y entrega de la cadena de suministro: Interrupciones del flujo que luego afectan la disponibilidad (objetivo logístico clave).</p>
<p>En cuanto al análisis descriptivo, el procesamiento de Big Data puede ayudar a monitorear los niveles de servicio en una ruta en particular, identificando interrupciones como las averías de camiones en tiempo real cuando estas ocurren. Además, los datos de docenas a miles de sensores brindan visibilidad a las organizaciones de la cadena de suministro sobre si los productos se entregan en un estado de alta calidad o si están dañados en el camino; esta visibilidad no solo puede utilzarse para remover restricciones logísticas tradicionales, ya que también pueden contribuir a remover restricciones transaccionales de un consumidor hiperconectado que quiere conocer o prever la disponibilidad y/o trazabilidad de sus productos. Con el análisis diagnóstico, las empresas pueden ver por qué ciertos envíos siempre llegan tarde, ya que esto puede deberse a que el horario de la ruta coincide con el tráfico de hora punta o el envío pasa por puertos de entrada con personal insuficiente, por ejemplo.</p>

		<div class="box success  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Everstream Analytics utiliza feeds de noticias globales y otros datos propietarios para hacer predicciones para sus clientes de la cadena de suministro en 30 categorías de riesgo, incluidos desastres naturales y violencia política (flujos de datos no estructurados). Al hacerlo, afirma reducir las pérdidas de ingresos causadas por interrupciones en un 30%, logrando 100 millones de dólares en ahorros por optimización del modo de transporte.
			</div>
		</div>
	
<p>El ecosistema tecnológico del Big Data se compone de:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Múltiples fuentes de datos (integración): sensores, sistemas transaccionales (ERP), sistemas MES, sistemas SCADA, sistemas CRM&#8217;s, servicios IoT, feeds de noticias, datos provenientes de redes sociales, correos electrónicos, conversaciones, imágenes en tiempo real (gracias a los desarrollos que se pueden apreciar 2022 &#8211; 2023).</li>
<li>Técnicas de análisis: analítica de texto, machine learning, data mining, estadística, lenguaje natural (la tendencia #1 del 2022-2023: GPT).</li>
<li>Herramientas de análisis: repositorio de algoritmos, software de analítica, herramientas de visualizacion, herramientas de modelamiento y optimización, paquetes de analítica online.</li>
<li>Aquitecturas e infraestructuras funcionales: computación en la nube.</li>
<li>Ciberseguridad.</li>
</ul>

		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Desafíos de esta tecnología
		<div id="desafios-de-esta-tecnologia" data-title="Desafíos de esta tecnología" class="index-title"></div>
	</h2>

		<div class="thumbdown tie-list-shortcode">
<ul>
<li>La mayoría de los datos, especialmente los provenientes de internet, son no estructurados y deben ser «limpiados» y filtrados para alcanzar la calidad suficiente para el análisis; este proceso y los intentos de automatizarlo requieren tiempo, dinero y talento. Sin embargo, debemos considerar que en el último año los modelos de análisis se han desarrollado ampliamente, con capacidades de limpieza y procesamiento considerables a muy bajo costo.</li>
<li>Los datos pueden tener un alto valor monetario y protegerlos requiere una infraestructura sólida de ciberseguridad.</li>
<li>El análisis de grandes datos requiere datos; antes de embarcarse en un viaje de análisis de grandes datos, una empresa logística debe identificar qué tipos de datos son valiosos para la organización y luego construir redes de recolección de datos apropiadas mediante sensores y otras tecnologías. De manera que es una cuestión de enfoque, y separar las <a href="https://ingenieriaindustrialonline.com/analisis-de-datos/seis-errores-que-a-menudo-cometemos-al-usar-datos/">señales de los ruidos</a> no es una habilidad intuitiva, debe desarrollarse.</li>
</ul>

		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Perspectivas 2023
		<div id="perspectivas-2023" data-title="Perspectivas 2023" class="index-title"></div>
	</h2>
<p>La tendencia del análisis de Big Data tiene un gran potencial para aumentar el rendimiento de la cadena de suministro y del negocio utilizando la infraestructura existente con casi ningún cambio. Aunque los desafíos incluyen la transformación de datos no estructurados en algo significativo, muchas empresas de logística han decidido abordar esto y han logrado beneficios muy valiosos. Los avances continuos en la inteligencia artificial analítica están aumentando la capacidad de procesar incluso más datos en menos tiempo y detectar patrones más profundos para mejorar y optimizar aún más la logística. La integración con modelos de inteligencia artificial interactiva será el paso siguiente en el ámbito logístico. El lanzamiento de la cuarta generación GPT (Generative Pre-trained Transformer &#8211; <a href="https://openai.com/product/gpt-4"><em>GPT-4 lanzado en 2023</em></a>), y sobre todo, el anuncio de la disminución de los costos de procesamiento, permite dilucidar que la integración de los datos no estructurados provenientes de las interacciones naturales humanas serán una realidad en el corto plazo.</p>
<p>En el contexto de la logística, los modelos tipo GPT pueden ser utilizados para la generación de informes automatizados, la respuesta automática de consultas de clientes, la detección de anomalías y el análisis de sentimientos / interacciones de los clientes. El uso de modelos tipo GPT en la logística puede permitir una mayor automatización de las operaciones y una toma de decisiones más eficiente y rápida.</p>
<p>Para integrar el Big Data con modelos tipo GPT en la logística, se requiere una infraestructura de datos sólida que pueda proporcionar los datos necesarios para entrenar y alimentar los modelos. Los datos deben ser procesados y limpiados para asegurar su calidad antes de ser utilizados en los modelos. Además, se requiere un equipo de expertos en ciencia de datos y aprendizaje automático para desarrollar y ajustar los modelos de acuerdo con las necesidades específicas de la cadena de suministro.</p>
<p><em>*Recomiendo revisar el concepto de: <a href="https://cloudonair.withgoogle.com/events/digital-supply-chain-event" target="_blank" rel="noopener">Cadena de Suministros Digital</a>.</em></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p>Recuerde:</p>
<blockquote class=" quote-simple "><p>«Una nueva tecnología traerá beneficios para la empresa, si y solo si, tiene la capacidad potencial de remover restricciones activas del sistema» <cite>Eliyahu Goldratt</cite></p></blockquote>
<p>De manera que en el ejercicio de desarrollo de la <em>Ruta Tecnológica</em>, considere cuáles son las restricciones del sistema logístico; cuáles son las reglas de operación actuales que están condicionadas por las restricciones; cómo analítica de Big Data pueden remover las restricciones del sistema; cuáles serían las nuevas reglas de operación con esta nueva tecnología y cómo se puede mejorar.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/analisis-masivo-de-datos-big-data-analytics/">Análisis masivo de datos (Big Data Analytics)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/analisis-masivo-de-datos-big-data-analytics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gemelos Digitales</title>
		<link>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/gemelos-digitales/</link>
					<comments>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/gemelos-digitales/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Sun, 19 Mar 2023 17:37:35 +0000</pubDate>
				<category><![CDATA[Habilitadores Tecnológicos]]></category>
		<category><![CDATA[Internet de las Cosas]]></category>
		<category><![CDATA[Logística y Nuevas Tecnologías]]></category>
		<category><![CDATA[Big data]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Inteligencia Artificial Interactiva]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Logística 4.0]]></category>
		<category><![CDATA[Sensores]]></category>
		<guid isPermaLink="false">https://www.ingenieriaindustrialonline.com/?p=33536</guid>

					<description><![CDATA[<p>Un gemelo digital es una aplicación del Internet de las Cosas (IoT) que consiste en la una representación virtual computarizada de las condiciones y/o comportamientos de un objeto (entidad), una persona, un activo, sistema o un servicio físico. En esencia, un objeto físico transmite la información deseada la cual es procesada y proyectada en un entorno &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/gemelos-digitales/">Gemelos Digitales</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>
	<span>Un gemelo digital es una aplicación del Internet de las Cosas (IoT) que consiste en </span><strong>la una representación virtual computarizada de las condiciones y/o comportamientos de un objeto</strong><span> (entidad), una persona, un activo, sistema o un servicio físico. En esencia, un objeto físico transmite la información deseada la cual es procesada y proyectada en un entorno digital, esta información se actualiza periódicamente a través de los datos de sensores, a través de tecnologías de seguimiento, y en teoría, una mayor frecuencia de actualización y una mayor calidad de los datos, mejorará la precisión del modelo digital que proporciona valor por medio de la visualización, diagnóstico, análisis, predicción, simulación y/u optimización sin la necesidad de interacción con el gemelo físico.</span></p>
<figure id="attachment_33538" aria-describedby="caption-attachment-33538" style="width: 690px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/digital-twins.png" alt="Gemelos Digitales" width="690" height="406" class="wp-image-33538" /><figcaption id="caption-attachment-33538" class="wp-caption-text">Fuente: <a href="https://www.dhl.com/global-en/home/insights-and-innovation/thought-leadership/trend-reports/digital-twins-supply-chain.html">DHL</a></figcaption></figure>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Aplicaciones en Logística: ¿Puede un Gemelo Digital remover restricciones logísticas? 
		<div id="aplicaciones-en-logistica-puede-un-gemelo-digital-remover-restricciones-logisticas" data-title="Aplicaciones en Logística: ¿Puede un Gemelo Digital remover restricciones logísticas?" class="index-title"></div>
	</h2>
<h3>Optimización de procesos logísticos
		<div id="optimizacion-de-procesos-logisticos" data-title="Optimización de procesos logísticos" class="index-title"></div>
	</h3>
<p>Cuando nos preguntamos acerca de los procesos logísticos susceptibles de ser replicados de manera digital, llegamos a la conclusión de que prácticamente todos los procesos dentro de las cadenas de suministro pueden beneficiarse de la tendencia de los Gemelos Digitales; o por lo menos pueden ser representados digitalmente. La pregunta siguiente y clave será <em>¿Para qué?</em></p>
<p>Los más grandes exponentes del <em>management</em> coinciden en que los gestores de las operaciones son el componente transversal de los sistemas, ya que tienen la visión del flujo de principio a fin. Por lo menos eso afirmaban <a href="https://ingenieriaindustrialonline.com/columnas/lecciones-de-gerencia-de-taiichi-ohno-parte-vii/">Taiichi Ohno (TPS) y Eliyahu Goldratt (TOC)</a>. La clave del anterior enunciado es «<strong>visión del flujo</strong>«, ya que un Gemelo Digital puede contribuir desde la asignación adecuada de cargas de trabajo hasta la gestión total del flujo, así que <strong>un gemelo digital puede facilitar la optimización logística global a través de la visibilidad</strong>. La pregunta que subyace es: Ya que tiene visibilidad <em>¿Cuál es su plan? </em>Mi posición es que no basta con tener visibilidad (este es el insumo y es clave), hay que desarrollar principios del flujo para tomar decisiones focalizadas.</p>
<p>Veamos un ejemplo de aplicación de un Gemelo Digital en logística:</p>

		<div class="box success  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Por ejemplo, la cadena de droguerías alemana <em>dm-drogerie markt</em> utilizó gemelos digitales para optimizar las operaciones de inventario, incluyendo el reabastecimiento de productos en las estanterías. La cadena creó gemelos digitales de cada una de sus más de 2,000 tiendas, incluyendo el diseño de las estanterías y la ubicación de todos los productos en cada sucursal. Al tener visibilidad en tiempo real de la disponibilidad de productos en todas sus ubicaciones, <em>dm-drogerie markt</em> ha podido combinar de manera óptima los productos en los pallets mixtos entrantes desde los centros de distribución para asegurar que las estanterías estén debidamente abastecidas con la menor cantidad de palets necesarios. Además, como la cadena sabe exactamente dónde pertenece cada producto en cada sucursal, puede ayudar a minimizar las distancias que los empleados recorren dentro de la tienda. En la pantalla del teléfono móvil, el personal puede ver la ruta óptima para reabastecer cada producto.
			</div>
		</div>
	
<p>El ecosistema tecnológico de una implementación de estas características requiere de la integración de:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Sensores (hardware): los <a href="https://ingenieriaindustrialonline.com/transformacion-digital/que-son-los-gemelos-digitales-aplicaciones-en-la-industria/">sensores</a> son esenciales para capturar datos en tiempo real de los objetos físicos, procesos y eventos que se desean modelar en el gemelo digital.</li>
<li>Conectividad (red digital IoT): el IoT se utiliza para <a href="https://ingenieriaindustrialonline.com/transformacion-digital/que-son-los-gemelos-digitales-aplicaciones-en-la-industria/">conectar los sensores</a> y otros dispositivos que se encuentran en diferentes ubicaciones y permitir que los datos se transmitan en tiempo real.</li>
<li>Big data (almacenamiento y procesamiento): se necesita una plataforma de big data para almacenar, procesar y analizar grandes cantidades de datos generados por los sensores y otros dispositivos.</li>
<li>Computación en la nube: la computación en la nube es esencial para manejar grandes cantidades de datos y proporcionar un entorno escalable y seguro para ejecutar las aplicaciones de gemelo digital.</li>
<li>Inteligencia artificial (IA) y aprendizaje automático (Machine Learning): la IA y el aprendizaje automático se utilizan para analizar y procesar grandes cantidades de datos generados por los sensores y otros dispositivos y para crear modelos de análisis del gemelo digital que sean precisos y escalables. ¿Para qué queremos los datos? Diagnóstico, análisis, predicción, por ejemplo.</li>
<li>Realidad virtual y aumentada; simulación; plataformas digitlaes: la realidad virtual y aumentada se pueden emplear para visualizar y manipular los modelos de gemelos digitales, lo que permite a los usuarios interactuar con los modelos y simular diferentes escenarios y situaciones. También pueden emplearse dispositivos móviles convencionales.</li>
</ul>
<p>En general, para implementar un gemelo digital aplicado en logística, se requiere una combinación de tecnologías avanzadas (habilitadores) y la integración de diferentes sistemas y dispositivos para capturar, procesar, analizar y visualizar los datos en tiempo real.</p>

		</div>
	
<p>El conjunto de datos requerido para la construcción del gemelo digital de un sistema de producción / logístico varía de un sistema a otro, sin embargo, puede considerar la información del siguiente cuadro como un caso típico:</p>
<table width="524">
<tbody>
<tr>
<td rowspan="6" width="184">Datos estructurales de la planta</td>
<td width="340">Layout</td>
</tr>
<tr>
<td>Número de máquinas</td>
</tr>
<tr>
<td>Número de Sistemas de Manejo de Materiales (MHS)</td>
</tr>
<tr>
<td>Rutas de los MHS</td>
</tr>
<tr>
<td>Áreas</td>
</tr>
<tr>
<td>Restricciones</td>
</tr>
<tr>
<td rowspan="3" width="184">Datos de manufactura</td>
<td>Tiempos de ciclo</td>
</tr>
<tr>
<td>Tiempos de carga (Setup)</td>
</tr>
<tr>
<td>Calendario de mantenimiento preventivo</td>
</tr>
<tr>
<td rowspan="3" width="184">Datos del flujo de materiales</td>
<td>Rutas y secuencias de productos</td>
</tr>
<tr>
<td>Rutas producto &#8211; MHS</td>
</tr>
<tr>
<td>Redes de transporte detalladas (transportadoras)</td>
</tr>
<tr>
<td rowspan="4">Datos de la producción</td>
<td>Planes de producción</td>
</tr>
<tr>
<td>Calendarios de producción</td>
</tr>
<tr>
<td>Volúmenes de producción</td>
</tr>
<tr>
<td>Tipo de producción (Masiva/Lotes)</td>
</tr>
</tbody>
</table>
<p>Así podemos ver entonces, que el desarrollo de un gemelo digital requiere del conocimiento profundo del objeto físico (entidad, activo, sistema, etc.). Además, de la consideración de las tecnologías de seguimiento, pero sobre todo, del enfoque sistémico que le permita determinar sobre la pertinencia de esta aplicación tecnológica.</p>
<h3>Caso de aplicación: Whirlpool Corporation (Polonia)</h3>
<p>Whirlpool Corporation en Polonia con 80.000 m², docenas de montacargas y remolcadores. Más de 250 sensores <a data-toggle="tooltip" data-placement="top" class="post-tooltip tooltip-top" title="Real Time Location System">RTLS</a> para el análisis de logística y 60 estaciones de trabajo equipadas con un sistema de pedidos automatizado para la gestión logística. Diagramas de espagueti, análisis de mapas de calor y saturación para identificar cuellos de botella, ineficiencias y otros potenciales de mejora continua.</p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/Y8Mo2mFsiFU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="allowfullscreen"></iframe></p>
<p><em><strong>¿Desea probar un Gemelo Digital en su móvil?</strong></em></p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/twinzo.png" alt="gemelos digitales" width="634" height="313" class="size-full wp-image-28283 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/twinzo.png 634w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/twinzo-300x148.png 300w" sizes="(max-width: 634px) 100vw, 634px" /></p>
<p>Si quieres probar un demo de gemelo digital desde tu celular, puedes hacerlo a través de:</p>

		<div class="one_half tie-columns">
<p><a href="https://play.google.com/store/apps/details?id=eu.twinzo.digitaltwin" target="_blank" rel="noopener"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/google-play.png" alt="" width="190" height="59" class="wp-image-28285 size-full aligncenter" /></a></p>

		</div>
	

		<div class="one_half tie-columns last">
<p><a href="https://apps.apple.com/us/app/twinzo-digital-twin/id1561970281" target="_blank" rel="noopener"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/10/app-store.png" alt="" width="188" height="59" class="wp-image-28284 size-full aligncenter" /></a></p>

		</div>
		<div class="clearfix"></div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Desafíos de esta tecnología
		<div id="desafios-de-esta-tecnologia" data-title="Desafíos de esta tecnología" class="index-title"></div>
	</h2>

		<div class="thumbdown tie-list-shortcode">
<ul>
<li>Los datos en tiempo real de alta calidad son la base de cualquier solución de gemelo digital, pero las condiciones exigentes (conectividad en un contexto de aplicación real en una industria de nuestra región) o prohibitivas (privacidad y tratamiento de datos personales) en el campo pueden limitar el acceso a los datos y degradar la precisión de un gemelo digital.</li>
<li>Los gemelos digitales requieren una inversión considerable en tecnología de sensores, plataformas, desarrollo de modelos, mantenimiento e implementación.</li>
<li>Algunas características de un activo complejo, como su estado químico, eléctrico y térmico, pueden ser extremadamente costosas y difíciles de replicar con precisión, lo que a menudo obliga a los usuarios a hacer suposiciones y simplificaciones generalizadas y menos precisas en los modelos de gemelos digitales. Esto aleja de la realidad al modelo.</li>
<li>Con una conexión directa a objetos físicos, los gemelos digitales potencialmente representan un riesgo de seguridad, dando a los ciberdelincuentes un posible nuevo punto de entrada para interrumpir las operaciones de una organización. La accesibilidad tiene un riesgo implícito. Si el Gemelo Digital permite actuación sobre los procesos a través de la conectividad, el riesgo de actuaciones no deseadas debe mapearse y debe existir un plan de mitigación (ciberseguridad = inversión).</li>
<li>“Lo que usted no haga bien en papel y lápiz, difícilmente lo hará bien con tecnología”. Es por eso que vale la pena plantearse si la disponibilidad de información en tiempo real de mi sistema (entidad, proceso, producto, etc.) es una necesidad que justifica un proyecto de implementación de gemelos digitales. ¿Quiero datos en tiempo real para actuar cada 12 horas?</li>
</ul>

		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Perspectivas 2023
		<div id="perspectivas-2023" data-title="Perspectivas 2023" class="index-title"></div>
	</h2>
<p>La visión de expertos proyecta una adopción generalizada en los próximos 5-10 años (en países del primer mundo). Por ahora, las principales áreas de aplicación serán principalmente activos singulares y sistemas contenidos. Sin embargo, para la gestión de la cadena de suministro, el siguiente nivel de adopción será el de los gemelos digitales de toda la cadena de suministro, que involucra a miles de activos que abarcan varios actores.</p>
<p>Mi visión respecto a la adopción generalizada dista mucho de los renders atractivos; considero que se avanzará a pasos agigantados hacia la Cadena de Suministro Digital, pero no necesariamente a través de simulación. Un Gemelo Digital puede replicar los datos esenciales sin que esto implique una réplica gráfica simulada.</p>
<p>Otra de las perspectivas importantes tiene que ver, sin duda, con la disrupción de los modelos robustos de Inteligencia Artificial Interactiva. Les planteo una visión, que al día de hoy es perfectamente realizable:</p>
<p>Los modelos como GPT (Generative Pre-trained Transformer &#8211; <a href="https://openai.com/product/gpt-4"><em>GPT-4 lanzado en 2023</em></a>) se pueden integrar en los Gemelos Digitales con aplicación en logística. Estos modelos de lenguaje natural pueden ser utilizados para analizar y procesar grandes cantidades de datos no estructurados, instruidos por medio de solicitudes humanas naturales. Los datos que pueden potencialmente analizarse son movimientos de los productos a través de la cadena de suministro, tendencias, demanda, flujos de datos provenientes de clientes y proveedores. Por ejemplo, un minorista podría utilizar los datos del Gemelo Digital para predecir qué productos se venderán mejor en una temporada determinada y en qué ubicaciones geográficas. Los modelos GPT podrían analizar los datos de ventas históricos, así como la información sobre las tendencias del mercado, el clima y otros factores que puedan influir en la demanda. De esta manera, el minorista podría planificar su cadena de suministro para asegurar que tenga suficiente inventario para satisfacer la demanda prevista y evitar la pérdida de ventas por falta de existencias.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p>Recuerde:</p>
<blockquote class=" quote-simple "><p>«Una nueva tecnología traerá beneficios para la empresa, si y solo si, tiene la capacidad potencial de remover restricciones activas del sistema» <cite>Eliyahu Goldratt</cite></p></blockquote>
<p>De manera que en el ejercicio de desarrollo de la <em>Ruta Tecnológica</em>, considere cuáles son las restricciones del sistema logístico; cuáles son las reglas de operación actuales que están condicionadas por las restricciones; cómo los Gemelos Digitales pueden remover las restricciones del sistema; cuáles serían las nuevas reglas de operación con esta nueva tecnología y cómo se puede mejorar.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/gemelos-digitales/">Gemelos Digitales</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/gemelos-digitales/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Realidad Extendida</title>
		<link>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/realidad-extendida/</link>
					<comments>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/realidad-extendida/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Sat, 18 Mar 2023 19:32:20 +0000</pubDate>
				<category><![CDATA[Habilitadores Tecnológicos]]></category>
		<category><![CDATA[Logística y Nuevas Tecnologías]]></category>
		<category><![CDATA[Mejoras biónicas]]></category>
		<category><![CDATA[Inteligencia Artificial Interactiva]]></category>
		<category><![CDATA[Logística 4.0]]></category>
		<category><![CDATA[Realidad Aumentada]]></category>
		<category><![CDATA[Realidad Extendida]]></category>
		<category><![CDATA[Realidad Virtual]]></category>
		<guid isPermaLink="false">https://www.ingenieriaindustrialonline.com/?p=33509</guid>

					<description><![CDATA[<p>El concepto de Realidad Extendida (XR) engloba diferentes tecnologías de experiencia, como la Realidad Aumentada (AR), Realidad Virtual (VR) y Realidad Mixta (MR). La AR enriquece el mundo físico con pantallas digitales visuales o superposiciones en el momento y lugar adecuados (¿Recuerdan Pokemon Go?); la VR es una experiencia digital completamente inmersiva que requiere dispositivos &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/realidad-extendida/">Realidad Extendida</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>
	El concepto de <strong>Realidad Extendida (XR) engloba diferentes tecnologías de experiencia</strong>, como la Realidad <em><strong>Aumentada (AR)</strong></em>, <em><strong>Realidad Virtual (VR)</strong></em> y <em><strong>Realidad Mixta (MR)</strong></em>. La AR enriquece el mundo físico con pantallas digitales visuales o superposiciones en el momento y lugar adecuados (¿Recuerdan Pokemon Go?); la VR es una experiencia digital completamente inmersiva que requiere dispositivos especiales (un aislamiento del mundo físico); y la MR se encuentra en la intersección de ambas, infundiendo contenido virtual interactivo dentro del mundo físico (una inmersión donde el mundo físico hace parte de la experiencia digital). Mientras que la AR y la VR han sido utilizadas por el mercado de juegos y la industria, la MR está emergiendo y se espera que se desarrolle rápidamente en el futuro cercano. Las ventas de dispositivos XR aumentaron significativamente durante la pandemia de Covid-19 e impulsada por la disrupción de Meta. Múltiples sectores, incluyendo la logística, están utilizando AR como una guía del flujo de trabajo y soporte remoto (una especie de asistencia cognitiva), mientras que VR es utilizada principalmente para capacitación y simulación.</p>
<figure id="attachment_33517" aria-describedby="caption-attachment-33517" style="width: 675px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR.png" alt="" width="675" height="337" class="wp-image-33517 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR.png 675w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR-300x150.png 300w" sizes="(max-width: 675px) 100vw, 675px" /><figcaption id="caption-attachment-33517" class="wp-caption-text">Fuente: <a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/AUTCON_Osorto-Chen_MRArchiDesign_ms.pdf" target="_blank" rel="noopener">Differences between AR, MR and VR. Reference: (researchgate.net)</a></figcaption></figure>
<p>&nbsp;</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Aplicaciones en Logística: ¿Puede la XR remover restricciones logísticas? 
		<div id="aplicaciones-en-logistica-puede-la-xr-remover-restricciones-logisticas" data-title="Aplicaciones en Logística: ¿Puede la XR remover restricciones logísticas?" class="index-title"></div>
	</h2>
<h3>Asistencia en el flujo de trabajo: Desde el listado, pasando por el Voice Picking, hacia el Vision Picking
		<div id="asistencia-en-el-flujo-de-trabajo-desde-el-listado-pasando-por-el-voice-picking-hacia-el-vision-picking" data-title="Asistencia en el flujo de trabajo: Desde el listado, pasando por el Voice Picking, hacia el Vision Picking" class="index-title"></div>
	</h3>
<p>En la logística la clave es la gestión del flujo: La eficiencia de los procesos que involucran el flujo de unidades logísticas (acomodamiento, picking, packing, cargue) <strong>se puede ver afectada por restricciones del flujo</strong> como la poca velocidad en la ejecución de las tareas y la imprecisión implícita de la intervención humana.</p>
<p><span>El uso de tecnologías como AR y MR puede ayudar a remover restricciones logísticas convencionales: Transformando micromovimientos y microacciones, como por ejemplo, la búsqueda por la selección (que aumentaría la velocidad en la ejecución de la tareas); y la asistencia cognitiva incrementando el nivel de certeza de las acciones: tarea correcta, unidad correcta, cantidad correcta, ubicación correcta.</span></p>
<p>El ecosistema tecnológico de un proceso de estas características requiere de la integración de:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Dispositivos de visualización: AR o MR headsets, como <a href="https://support.google.com/glass-enterprise/customer/answer/9220200?hl=en&amp;ref_topic=9235678">Google Glass</a>, <a href="https://www.vuzix.com/pages/smart-glasses">Vuzix M300</a>, <a href="https://www.microsoft.com/es-es/hololens">Microsoft HoloLens</a>, o <a href="https://www.magicleap.com/en-us/">Magic Leap</a>.</li>
<li>Software dedicado / Integración con otros sistemas transaccionales: para proporcionar instrucciones detalladas en tiempo real a través de la visualización de los dispositivos; como <a href="https://www.teamviewer.com/en-us/frontline/xpick/">Ubimax Xpick (ahora Team Viewer)</a>.</li>
<li>Sensores: para detectar la posición y movimiento del trabajador, lo que permite que las instrucciones se ajusten en consecuencia.</li>
<li>Conectividad / Integración con otros sistemas transaccionales: para integrar los dispositivos y el software con otros sistemas de gestión de la cadena de suministro; como por ejemplo, Wi-Fi Industrial, Internet Satelital.</li>
<li>No-code applications: para digitalizar y ejecutar los flujos de trabajo en los dispositivos de visualización de manera fácil y rápida.</li>
</ul>

		</div>
	
<p><em><strong>Dispositivos de visualización</strong></em></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">
				 Vuzix M400 |</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Vuzix-M400.png" alt="" width="294" height="304" class="size-full wp-image-33521 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Vuzix-M400.png 294w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Vuzix-M400-290x300.png 290w" sizes="(max-width: 294px) 100vw, 294px" /></p>

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

			<div class="slide post-content-slide">
				 Microsoft HoloLens 2 |</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Microsoft-HoloLens-2.png" alt="" width="294" height="304" class="size-full wp-image-33520 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Microsoft-HoloLens-2.png 294w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Microsoft-HoloLens-2-290x300.png 290w" sizes="(max-width: 294px) 100vw, 294px" /></p>

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

			<div class="slide post-content-slide">
				 Google Glass Enterprise 2 |</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Glass.png" alt="" width="294" height="304" class="size-full wp-image-33519 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Glass.png 294w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/Glass-290x300.png 290w" sizes="(max-width: 294px) 100vw, 294px" /></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><em><strong>Software dedicado</strong></em></p>
<p><iframe loading="lazy" title="Vision Picking for logistics and warehousing with xPick | TeamViewer" width="200" height="113" src="https://www.youtube.com/embed/9C92ijIPFao?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p><em>*Este tipo de software no solo funciona con XR, también lo puede hacer con relojes inteligentes, terminales convencionales o dispositivos de audio.</em></p>
<p>&nbsp;</p>
<p><em><strong>Casos de uso</strong></em></p>
<p><iframe loading="lazy" title="Logistics 4.0 - Augmented Reality Use Cases" width="200" height="113" src="https://www.youtube.com/embed/3YqaRrzkM4c?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h3>Entrenamiento y simulación en Logística mediante Realidad Virtual
		<div id="entrenamiento-y-simulacion-en-logistica-mediante-realidad-virtual" data-title="Entrenamiento y simulación en Logística mediante Realidad Virtual" class="index-title"></div>
	</h3>
<p>VR puede ser utilizado para crear experiencias de entrenamiento totalmente inmersivas (la concentración del individuo se centra al máximo), simulando escenarios realistas en un entorno totalmente virtual. Entre los expertos de la industria, VR es a menudo considerado como el futuro del entrenamiento. Los participantes en sesiones de entrenamiento VR aprenden 4 veces más rápido que en entrenamiento en un aula (de acuerdo con <a href="https://www.pwc.com/us/en/tech-effect/emerging-tech/virtual-reality-study.html">PWC</a>). Esto podría explicarse por el hecho de que los participantes muestran una conexión emocional significativamente mayor con el contenido virtual y están mucho menos distraídos durante el entrenamiento VR completamente inmersivo.</p>
<p>¿Puede esto aplicarse a Logística? Por supuesto: Teniendo en cuenta el tiempo de entrenamiento que se puede ahorrar y el hecho de que ahora es más fácil crear contenido (y hay más editores sin código disponibles), está volviéndose cada vez más atractivo invertir en VR para el entrenamiento. DHL Express ya está utilizando VR como herramienta de entrenamiento y compromiso para empleados y audiencias externas. En un enfoque de gamificación, las personas <strong>pueden aprender a cargar paletas</strong> y <strong>contenedores con envíos</strong>. Se les otorgan más puntos si utilizan el espacio de manera óptima y prestan atención a las etiquetas de manipulación especial.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h3>Implementación robótica en Logística mediante Realidad Aumentada
		<div id="implementacion-robotica-en-logistica-mediante-realidad-aumentada" data-title="Implementación robótica en Logística mediante Realidad Aumentada" class="index-title"></div>
	</h3>
<p>La Realidad Aumentada (AR) es una herramienta tecnológica que puede ser utilizada para simplificar procesos de configuración e implementación robótica en la industria logística. Un ejemplo concreto es la implementación de un sistema de paletización robótica que puede ser configurado en tan solo 10 minutos utilizando la tecnología AR. Además, con la AR se pueden introducir nuevos parámetros de caja en segundos y crear, guardar y cambiar entre cientos de diseños de manera rápida y sencilla. La AR también permite la conexión sin problemas con otros equipos y maquinarias, lo que la hace una herramienta altamente efectiva para mejorar los procesos logísticos y aumentar la eficiencia en la cadena de suministro.</p>
<div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-33509-2" width="640" height="360" preload="metadata" controls="controls"><source type="video/mp4" src="https://native-robotics.com/assets/images/robotend.mp4?_=2" /><a href="https://native-robotics.com/assets/images/robotend.mp4">https://native-robotics.com/assets/images/robotend.mp4</a></video></div>
<a href="https://native-robotics.com/demo/omni-fit" class="shortc-button medium blue">Explore OmniFit (Configuración de Pallets)</a>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Desafíos de esta tecnología
		<div id="desafios-de-esta-tecnologia" data-title="Desafíos de esta tecnología" class="index-title"></div>
	</h2>

		<div class="thumbdown tie-list-shortcode">
<ul>
<li>La mayoría de los casos de uso de XR requieren hardware específico para mostrar la información, lo que requiere una inversión importante y capacitación para los empleados que aún no están familiarizados con el uso de estos dispositivos (considere el contexto nacional). Recuerde que se trata de tecnología de punta de proveedores externos y valorada en dólares. La referencia de AR de Google puede encontrarse en $949 USD la unidad (<a href="https://www.mobileadvance.com/glass-enterprise-edition-2-developer-kit/">ver precio</a>); mientras que una unidad de MR de Microsoft puede encontrarse desde los $3500 USD la unidad (<a href="https://www.microsoft.com/en-us/d/hololens-2-development-edition/92f64zpzzzd4?activetab=pivot:overviewtab">ver precio</a>). A esto hay que sumarle el software dedicado que se licencia por un cargo mensual que oscila los $159 USD / mes (<a href="https://service.teamviewer.com/en-co/overview">ver precio</a>). No olvide considerar los costos de implementación (potencialmente a través de un integrador logístico de clase mundial).</li>
<li>Muchas aplicaciones requieren conectividad en vivo, con suficiente ancho de banda para extraer datos de un sistema a través de la conectividad de llamadas de video en vivo y con la transmisión real de contenido 3D totalmente inmersivo, debe considerar si la conectividad de la región / empresa puede ofrecer dichas prestaciones.</li>
<li>Se necesita tiempo y esfuerzo para crear contenido completamente inmersivo y contenido de flujo de trabajo, pero con cada vez más plataformas que proporcionan aplicaciones de editores sin código, esta barrera está disminuyendo; pero a la larga representa un costo.</li>
</ul>

		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Perspectivas 2023
		<div id="perspectivas-2023" data-title="Perspectivas 2023" class="index-title"></div>
	</h2>
<p>Los primeros auriculares intercambiaban la potencia de computación y la duración de la batería con el tamaño y el peso, pero los avances tecnológicos están cambiando esto. Una empresa emergente llamada Mojo Vision incluso ha desarrollado un primer prototipo de lente de contacto inteligente. En respuesta a los desarrollos del metaverso, es probable que los anteojos AR conquisten pronto el mercado de consumo; Apple podría lanzar Apple Glass y Google, aunque es cauteloso sobre las preocupaciones de privacidad, puede probar públicamente nuevos prototipos de anteojos inteligentes (anunció que regresa al mercado en septiembre de 2023). Al ver estos desarrollos de hardware y el crecimiento de la cobertura 5G, en DHL, por ejemplo, consideran que es el momento adecuado para prepararse para la adopción masiva de aplicaciones de VR y MR que requieren muchos datos.</p>
<p>Otra de las perspectivas importantes tiene que ver, sin duda, con la disrupción de los modelos robustos de Inteligencia Artificial Interactiva. Les planteo una visión, que al día de hoy es perfectamente realizable:</p>
<figure id="attachment_33526" aria-describedby="caption-attachment-33526" style="width: 511px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR_AI.png" alt="" width="511" height="682" class="size-full wp-image-33526" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR_AI.png 511w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/03/XR_AI-225x300.png 225w" sizes="(max-width: 511px) 100vw, 511px" /><figcaption id="caption-attachment-33526" class="wp-caption-text">Autor: Ing. Bryan Salazar López</figcaption></figure>
<p>&nbsp;</p>
<p>Por ejemplo, se podría utilizar un modelo de GPT (<a href="https://openai.com/product/gpt-4"><em>GPT-4 lanzado en 2023</em></a>) entrenado para comprender el lenguaje natural (a través de un modelo habla a texto como <a href="https://openai.com/research/whisper"><em>Whisper</em></a>) y generar respuestas automatizadas para interactuar con los trabajadores de la cadena de suministro (en tareas como el almacenamiento, picking, packing, cargue). Al combinar esta capacidad con la Realidad Aumentada (RA), se podría proporcionar información en tiempo real sobre las unidades logísticas, recursos y procesos logísticos en función de las consultas realizadas por los trabajadores en su lenguaje natural.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p>Recuerde:</p>
<blockquote class=" quote-simple "><p>«Una nueva tecnología traerá beneficios para la empresa, si y solo si, tiene la capacidad potencial de remover restricciones activas del sistema» <cite>Eliyahu Goldratt</cite></p></blockquote>
<p>De manera que en el ejercicio de desarrollo de la <em>Ruta Tecnológica</em>, considere cuáles son las restricciones del sistema logístico; cuáles son las reglas de operación actuales que están condicionadas por las restricciones; cómo la Realidad Extendida (XR) puede remover las restricciones del sistema; cuáles serían las nuevas reglas de operación con esta nueva tecnología y cómo se puede mejorar.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/realidad-extendida/">Realidad Extendida</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/logistica-y-nuevas-tecnologias/realidad-extendida/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://native-robotics.com/assets/images/robotend.mp4" length="10135579" type="video/mp4" />

			</item>
		<item>
		<title>Cambios en el lado derecho de las restricciones (Método gráfico)</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/cambios-en-el-lado-derecho-de-las-restricciones-metodo-grafico/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/cambios-en-el-lado-derecho-de-las-restricciones-metodo-grafico/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Tue, 14 Feb 2023 00:04:02 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Análisis de sensibilidad]]></category>
		<category><![CDATA[Análisis postóptimo]]></category>
		<category><![CDATA[Cambios en RHS]]></category>
		<category><![CDATA[Método gráfico]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<guid isPermaLink="false">https://www.ingenieriaindustrialonline.com/?p=33214</guid>

					<description><![CDATA[<p>El análisis de sensibilidad mediante método gráfico es una técnica utilizada en modelos matemáticos para determinar cómo los cambios en los valores de entrada afectan a las salidas del modelo. Los resultados estáticos obtenidos a través de un método de solución son una fotografía, corresponden a la optimización de acuerdo a unos parámetros inalterables. Las &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/cambios-en-el-lado-derecho-de-las-restricciones-metodo-grafico/">Cambios en el lado derecho de las restricciones (Método gráfico)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[
		<div id="inrtoduccion" data-title="Inrtoducción" class="index-title"></div>
	 El análisis de sensibilidad mediante método gráfico es una técnica utilizada en modelos matemáticos para determinar cómo los cambios en los valores de entrada afectan a las salidas del modelo.</p>
<p>Los resultados estáticos obtenidos a través de un método de solución son una fotografía, corresponden a la optimización de acuerdo a unos parámetros inalterables. Las preguntas que dan pie, tanto al análisis de sensibilidad como al análisis postóptimo son: <em><strong>¿Qué pasaría si los valores de algunos parámetros cambian? ¿Cómo afecta esto a la solución óptima o la factibilidad del modelo? ¿Cómo afecta a las variables de decisión y/o la función objetivo?</strong></em></p>
<p>Para responder a estas preguntas acudimos a los análisis complementarios: <strong>Sensibilidad</strong> y <strong>Postóptimo</strong>.</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/camara.webp" alt="fotografía" width="236" height="243" class="size-full wp-image-33219 alignleft" />El análisis de sensibilidad determina las condiciones que mantendrán la solución actual sin cambios (desde el punto de vista geométrico, ya que es posible que la función objtivo y las variables de decisión cambien ante los cambios de los parámetros del modelo), mientras que el análisis postóptimo determina la nueva solución óptima cuando los datos del modelo cambian. Las tecnologías actuales, como Geogebra, han reducido la diferencia entre estos dos tipos de análisis, permitiendo una transición fluida desde el análisis de sensibilidad (indicadores lineales) hasta el análisis postóptimo mediante técnicas dinámicas.</p>
<p>Es importante destacar que, aunque el <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-grafico/"><strong>método gráfico</strong></a> es útil para comprender las relaciones en el sistema, existen otras herramientas más robustas, como la programación paramétrica con lenguajes de programación, que superan las limitaciones de la cantidad máxima de variables que puede manejar el método gráfico. Por lo tanto, el método gráfico puede ser una buena opción para visualizar los resultados, pero no es la herramienta más adecuada para un análisis exhaustivo y detallado de la sensibilidad.</p>
<p>Empezaremos por uno de los casos de análisis de sensibilidad más conocidos:</p>
<h2>Cambios en el lado derecho de las restricciones
		<div id="cambios-en-el-lado-derecho-de-las-restricciones" data-title="Cambios en el lado derecho de las restricciones" class="index-title"></div>
	</h2>
<p>También conocido como «cambio en la disponibilidad de los recursos», este tipo de análisis de sensibilidad es técnicamente definido como «cambio en el lado derecho de las restricciones» y es uno de los más populares. Sin embargo, es importante destacar que las restricciones en un sistema no solo se relacionan con la disponibilidad de recursos, sino que también representan condiciones, relaciones y políticas que rigen al sistema en sí. Por lo tanto, denominar este tipo de análisis como «cambio en la disponibilidad de los recursos» puede generar ambigüedad y no reflejar completamente su alcance.</p>
<p>En palabras más sencillas: Vamos a explorar el impacto que tiene en los resultados del modelo de programación lineal, los cambios en el lado derecho de las restricciones. ¿Cambios en plural? Sí, lea la siguiente advertencia:</p>

		<div class="box warning  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>
<p>En la educación y la literatura sobre este tipo de análisis de sensibilidad, a menudo se encuentra la afirmación equivocada de que «el método gráfico solo permite cambios en un solo parámetro mientras mantiene todos los demás inalterados». Sin embargo, la tecnología actual nos permite explorar el impacto en la solución de cambios simultáneos en los parámetros mediante técnicas dinámicas. Es importante tener en cuenta que estos cambios simultáneos pueden tener efectos combinados en los resultados del modelo.</p>

			</div>
		</div>
	
<p>Los paradigmas de la enseñanza tradicional no paran ahí, también tenemos que:</p>

		<div class="box warning  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>
<p>En la educación y la literatura sobre este tipo de análisis de sensibilidad, a menudo se encuentra la afirmación equivocada de que «el análisis de sensibilidad ante los cambios en el lado derecho de las restricciones se reduce a analizar el intervalo de aquellas restricciones que afectan el punto óptimo». Sin embargo, la tecnología actual nos permite explorar el impacto en la solución de cambios en restricciones que no necesariamente afectan el punto óptimo (tanto sensibilidad como postóptimo).</p>

			</div>
		</div>
	
<p>Con el propósito de 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 3.6-1):</p>
<blockquote class=" quote-simple "><p>JOBCO fabrica dos productos en dos máquinas. Una unidad del producto 1 requiere 2 horas en la máquina 1, y 1 hora en la máquina 2. Una unidad del producto 2 requiere 1 hora en la máquina 1, y 3 horas en la máquina 2. Los ingresos por unidad de los productos 1 y 2 son de $30 y $20, respectivamente. El tiempo de procesamiento diario total disponible en cada máquina es de 8 horas.</p></blockquote>
<p>Si <em><strong>x</strong></em> e <em><strong>y</strong></em> son las cantidades diarias de productos 1 y 2, respectivamente, el modelo se da como:</p>
<p style="text-align: center;"><strong>Zmax</strong> = 30<strong>x</strong> + 20<strong>y</strong></p>
<p>Sujeto a:</p>
<p style="text-align: center;">2<strong>x</strong> + <strong>y</strong> &lt;= 8 (Máquina 1)</p>
<p style="text-align: center;"><strong>x</strong> + 3<strong>y</strong> &lt;= 8 (Máquina 2)</p>
<p style="text-align: center;"><strong>x</strong>, <strong>y</strong> &gt;= 0 (No negatividad)</p>
<p>La solución de este modelo mediante método gráfico nos muestra lo siguiente:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco.png" alt="óptima_jobco" width="613" height="630" class="size-full wp-image-33222 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco.png 613w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco-292x300.png 292w" sizes="(max-width: 613px) 100vw, 613px" /></p>
<p>Es decir que tenemos:</p>
<table style="border-collapse: collapse; width: 100%; height: 111px;">
<tbody>
<tr style="height: 37px;">
<td style="width: 50%; text-align: center; height: 37px;"><strong>x (producto 1)</strong></td>
<td style="width: 50%; height: 37px; text-align: center;">3.2</td>
</tr>
<tr style="height: 37px;">
<td style="width: 50%; text-align: center; height: 37px;"><strong>y (producto 2)</strong></td>
<td style="width: 50%; height: 37px; text-align: center;">1.6</td>
</tr>
<tr style="height: 37px;">
<td style="width: 50%; text-align: center; height: 37px;"><strong>Z (ingresos)</strong></td>
<td style="width: 50%; height: 37px; text-align: center;">$ 128</td>
</tr>
</tbody>
</table>
<p>La pregunta que pretende responder este caso de análisis de sensibilidad es <em>¿Qué pasaría con estos resultados si cambia el lado derecho de algunas de sus restricciones? </em>Propiamente, qué pasaría si aumenta o disminuye la disponibilidad de tiempo de alguna de las máquinas de acuerdo al caso planteado (máquina 1 / máquina 2).</p>
<p>Así que, vamos a formular específiamente la pregunta a resolver:</p>
<p><strong>¿Qué pasaría con los resultados del modelo si el tiempo disponible de la máquina 1 aumenta en una hora?</strong></p>
<p>Un cambio en la restricción supone un cambio en la representación gráfica de la misma, en consecuencia, debemos trazar la línea que representa la restricción ante este cambio de disponibilidad.</p>
<table style="border-collapse: collapse; width: 100%; height: 74px;">
<tbody>
<tr style="height: 37px;">
<td style="width: 50%; height: 37px; text-align: center;"><strong>Restricción inicial (R1)</strong></td>
<td style="width: 50%; height: 37px; text-align: center;"><strong>Restricción nueva (R1&#8242;)</strong></td>
</tr>
<tr style="height: 37px;">
<td style="width: 50%; height: 37px; text-align: center;">2x + y &lt;= 8</td>
<td style="width: 50%; height: 37px; text-align: center;">2x + y &lt;= 9</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">La representación gráfica de una línea requiere un mínimo de dos puntos. La representación gráfica de un punto requiere dos coordenadas; por lo tanto vamos a tabular las coordenadas necesarias (en la igualdad).</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 50%; text-align: center;"><strong>¿Qué valor tomaría Y cuando X sea 0?</strong></td>
<td style="width: 50%; text-align: center;"><strong>¿Qué valor tomaría X cuando Y sea 0?</strong></td>
</tr>
<tr>
<td style="width: 50%; text-align: center;">2(0) + y = 9</td>
<td style="width: 50%; text-align: center;">2x + 0 = 9</td>
</tr>
<tr>
<td style="width: 50%; text-align: center;">y = 9</td>
<td style="width: 50%; text-align: center;">2x = 9</td>
</tr>
<tr>
<td style="width: 50%; text-align: center;"></td>
<td style="width: 50%; text-align: center;">x = 9/2</td>
</tr>
<tr>
<td style="width: 50%; text-align: center;"></td>
<td style="width: 50%; text-align: center;">x = 4.5</td>
</tr>
</tbody>
</table>
<p>Así entonces, tenemos nuestras coordenadas:</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>R1&#8242;: 2x + y &lt;= 9</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>x</strong></td>
<td style="width: 33.3333%; text-align: center;"><strong>y</strong></td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Punto 1</strong></td>
<td style="width: 33.3333%; text-align: center;">0</td>
<td style="width: 33.3333%; text-align: center;">9</td>
</tr>
<tr>
<td style="width: 33.3333%; text-align: center;"><strong>Punto 2</strong></td>
<td style="width: 33.3333%; text-align: center;">4.5</td>
<td style="width: 33.3333%; text-align: center;">0</td>
</tr>
</tbody>
</table>
<p>Trazamos los puntos y la línea que representan a R1:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco2.png" alt="óptima_jobco2" width="602" height="634" class="size-full wp-image-33223 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco2.png 602w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco2-285x300.png 285w" sizes="(max-width: 602px) 100vw, 602px" /></p>
<p>Trazar esta nueva restricción nos muestra que si desplazamos R1 hacia el lugar en el que se muestra R1&#8242; (aumento de la disponibilidad del recurso), tendremos una nueva intersección óptima. Simplificando: El cambio en el lado derecho de esta restricción tendría un efecto sobre los resultados obtenidos inicialmente. ¿Cuál es este efecto? Para saberlo debemos hallar la nueva intersección.</p>
<p>Si usamos técnicas matemáticas, tendremos que recurrir a la solución de ecuaciones de 2 * 2. Se trata de encontrar la intersección entre R1&#8242; y R2. Veamos el método de reducción / eliminación:</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 19.125%; text-align: center;"><strong>R1&#8242;</strong></td>
<td style="width: 45.125%; text-align: center;">2x + y = 9</td>
</tr>
<tr>
<td style="width: 19.125%; text-align: center;"><strong>R2</strong></td>
<td style="width: 45.125%; text-align: center;">x + 3y = 8</td>
</tr>
<tr>
<td style="width: 19.125%; text-align: center;"><strong>R1&#8242; * (-3)</strong></td>
<td style="width: 45.125%; text-align: center;">-6x -3y = -27</td>
</tr>
<tr>
<td style="width: 19.125%; text-align: center;"><strong>R1&#8217;*(-3) + R2</strong></td>
<td style="width: 45.125%; text-align: center;">-5x = -19</td>
</tr>
<tr>
<td style="width: 19.125%; text-align: center;"></td>
<td style="width: 45.125%; text-align: center;">x = -19/-5</td>
</tr>
<tr>
<td style="width: 19.125%; text-align: center;"></td>
<td style="width: 45.125%; text-align: center;">x = 3.8</td>
</tr>
</tbody>
</table>
<p>Si despejamos x = 3.8 en cualquiera de las restricciones tendremos el valor de y:</p>
<p style="text-align: center;">2(3.8) + y = 9</p>
<p style="text-align: center;">7.6 + y = 9</p>
<p style="text-align: center;">y = 9 &#8211; 7.6</p>
<p style="text-align: center;">y = 1.4</p>
<p>Por lo tanto tenemos las coordenadas del nuevo punto óptimo (3.8, 1.4):</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco3.png" alt="óptima_jobco3" width="605" height="634" class="size-full wp-image-33224 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco3.png 605w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/02/optima_jobco3-286x300.png 286w" sizes="(max-width: 605px) 100vw, 605px" /></p>
<p>Si evaluamos la función objetivo en este nuevo punto tendremos que:</p>
<p style="text-align: center;"><strong>Zmáx</strong> = 30(3.8) + 20(1.4)</p>
<p style="text-align: center;"><strong>Zmáx</strong> = 142</p>
<p>Podemos afirmar que un cambio en el lado derecho de la restricción 1 (tiempo disponible en horas de la máquina 1), tuvo un efecto en los resultados de la siguiente manera:</p>
<table style="border-collapse: collapse; width: 100%; height: 148px;">
<tbody>
<tr style="height: 37px;">
<td style="width: 7.4167%; height: 37px;"></td>
<td style="width: 38.7917%; text-align: center; height: 37px;"><strong>Solución inicial</strong></td>
<td style="width: 40.2083%; text-align: center; height: 37px;"><strong>Solución nueva (cambio en el RHS)</strong></td>
<td style="width: 13.5833%; text-align: center; height: 37px;"><strong>Diferencia</strong></td>
</tr>
<tr style="height: 37px;">
<td style="width: 7.4167%; height: 37px;"><strong>x</strong></td>
<td style="width: 38.7917%; text-align: center; height: 37px;">3.2</td>
<td style="width: 40.2083%; text-align: center; height: 37px;">3.8</td>
<td style="width: 13.5833%; text-align: center; height: 37px;"></td>
</tr>
<tr style="height: 37px;">
<td style="width: 7.4167%; height: 37px;"><strong>y</strong></td>
<td style="width: 38.7917%; text-align: center; height: 37px;">1.6</td>
<td style="width: 40.2083%; text-align: center; height: 37px;">1.4</td>
<td style="width: 13.5833%; text-align: center; height: 37px;"></td>
</tr>
<tr style="height: 37px;">
<td style="width: 7.4167%; height: 37px;"><strong>Z</strong></td>
<td style="width: 38.7917%; text-align: center; height: 37px;">$ 128</td>
<td style="width: 40.2083%; text-align: center; height: 37px;">$ 142</td>
<td style="width: 13.5833%; text-align: center; height: 37px;">$14</td>
</tr>
</tbody>
</table>
<p>La diferencia en la función objetivo entre la solución nueva y la solución inicial ante un cambio unitario en el lado derecho de una restricción es un indicador lineal conocido como valor dual. En este caso, el valor dual es de 14 $/hora. Es decir, por cada hora que aumente la disponibilidad de la máquina 1, la utilidad se incrementará en $14. Del mismo modo funciona de manera inversa: Por cada hora que disminuya la disponibilidad de la máquina 1, la utilidad disminuirá en $14.</p>
<p><strong>¿Este valor dual tiene validez ante cualquier cambio en este recurso?</strong> ¡No! Este indicador lineal tiene validez dentro de unos límites denominados límites de factibilidad.</p>
<p><strong>¿Entonces es imposible calcular el impacto por fuera de los límites del valor dual? </strong>¡No! La literatura invita a recalcular todo el modelo. Sin embargo, si utilizamos un software como Geogebra podemos calcular el impacto de un cambio por fuera de los límites de factibilidad:</p>
<h2>Cambios en el lado derecho de las restricciones con Geogebra
		<div id="cambios-en-el-lado-derecho-de-las-restricciones-con-geogebra" data-title="Cambios en el lado derecho de las restricciones con Geogebra" class="index-title"></div>
	</h2>
<p>Utilice los desplazadores para ver el impacto del cambio del lado derecho de las restricciones en los resultados del modelo.</p>
<p><iframe loading="lazy" width="650" height="750" style="border: 1px solid #e4e4e4; border-radius: 4px;" src="https://www.geogebra.org/classic/g3vc2hwb?embed" allowfullscreen="allowfullscreen" frameborder="0"><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><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
<p>De acuerdo a la representación gráfica de Geogebra vemos cómo podemos lograr conocer el impacto de cambios simultáneos en los lados derechos de las restricciones. También podemos validar el resutado obtenido manualmente, validar ese valor dual de $14 si aumentamos la disponibilidad de la máquina 1 a 9 horas y verificar, desde luego, que dicho impacto lineal no es ilimitado, ya que existen límites que abordaremos en un próximo post.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/cambios-en-el-lado-derecho-de-las-restricciones-metodo-grafico/">Cambios en el lado derecho de las restricciones (Método gráfico)</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/cambios-en-el-lado-derecho-de-las-restricciones-metodo-grafico/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Una hora perdida en el cuello de botella es una hora perdida en el sistema?</title>
		<link>https://ingenieriaindustrialonline.com/teoria-de-restricciones-toc/una-hora-perdida-en-el-cuello-de-botella-es-una-hora-perdida-en-el-sistema/</link>
					<comments>https://ingenieriaindustrialonline.com/teoria-de-restricciones-toc/una-hora-perdida-en-el-cuello-de-botella-es-una-hora-perdida-en-el-sistema/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Fri, 27 Jan 2023 23:30:34 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Teoría de restricciones (TOC)]]></category>
		<category><![CDATA[Eliyahu Goldratt]]></category>
		<category><![CDATA[Investigación de Operaciones]]></category>
		<category><![CDATA[Restricciones]]></category>
		<category><![CDATA[TOC]]></category>
		<guid isPermaLink="false">https://www.ingenieriaindustrialonline.com/?p=33065</guid>

					<description><![CDATA[<p>Hace poco leí una publicación sobre una conversación con Javier Arévalo, experto en Teoría de Restricciones. Durante esta conversación, Javier mencionó algo que me llamó la atención: “¡Nada es más práctico que una buena teoría y una buena teoría es un conjunto de relaciones de causa y efecto que explican el funcionamiento y describen las &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/teoria-de-restricciones-toc/una-hora-perdida-en-el-cuello-de-botella-es-una-hora-perdida-en-el-sistema/">¿Una hora perdida en el cuello de botella es una hora perdida en el sistema?</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hace poco leí una publicación sobre una conversación con Javier Arévalo, experto en <a href="https://ingenieriaindustrialonline.com/teoria-de-restricciones-toc/que-es-teoria-de-restricciones-toc/"><strong>Teoría de Restricciones</strong></a>. Durante esta conversación, Javier mencionó algo que me llamó la atención: <em><strong>“¡Nada es más práctico que una buena teoría y una buena teoría es un conjunto de relaciones de causa y efecto que explican el funcionamiento y describen las decisiones que deben tomarse a medida que la realidad cambia para tener el máximo éxito!”</strong></em>.</p>
<p>Aunque la publicación me llamó la atención, con el tiempo se me fue olvidando, hasta que en una clase de Ingeniería Industrial formulé una pregunta que consideré diagnóstica para la introducción del curso de Investigación de Operaciones:</p>
<blockquote class=" quote-simple "><p>«Considere las siguientes operaciones interdependientes y sin variabilidad (una línea de ensamble). En color rojo, debajo de cada operación se encuentran los tiempos por unidad. Si se producen 100 unidades desde 0, ¿En cuántos minutos terminaría la producción?”</p></blockquote>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/interdependencia.png" alt="interdependencia" width="540" height="165" class="size-full wp-image-33066 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/interdependencia.png 540w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/interdependencia-300x92.png 300w" sizes="(max-width: 540px) 100vw, 540px" /></p>
<p>La pregunta plantea un problema de producción «<a href="https://ingenieriaindustrialonline.com/produccion/sistema-de-produccion-flow-shop/"><strong>flow shop</strong></a>«, en el que sus tareas pasan a través de todos sus procesos en el mismo orden, en el que varias operaciones pueden ocurrir simultáneamente en diferentes máquinas, pero con secuencialidad. La interdependencia indica, al menos, lo siguiente: la operación D no puede comenzar antes de que C lo proporcione, y este a su vez no puede comenzar antes de que B lo proporcione, y este a su vez no puede comenzar antes de que A lo proporcione.</p>
<p>Me sorprendió no obtener respuestas acertadas cuando pregunté a los estudiantes sobre esto, basándome en los principios del flujo creí que la respuesta estaba a la vista. Por lo tanto, me dirigí a la herramienta de moda por estos días, la herramienta de inteligencia artificial optimizada para el diálogo, llamada <em><strong>ChatGPT</strong></em>, para obtener una respuesta. Esta herramienta, que condensa el conocimiento humano disponible en digital hasta el 2021, o al menos ha sido entrenada con gran parte de él, me proporcionó múltiples respuestas incorrectas (entre ellas caracterizó el sistema como «<a href="https://ingenieriaindustrialonline.com/produccion/sistema-de-produccion-job-shop/"><strong>job shop</strong></a>«) y solo después de interactuar un buen tiempo, logró llegar al resultado acertado.</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">
				 Interacción Inicial | <img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow.png" alt="ChatGPT, restricciones" width="653" height="442" class="alignnone wp-image-33068 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow.png 653w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow-300x203.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow-220x150.png 220w" sizes="(max-width: 653px) 100vw, 653px" /> 
			</div><!-- post-content-slide -->
		

			<div class="slide post-content-slide">
				 Retroalimentación | <img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow2.png" alt="ChatGPT" width="653" height="442" class="alignnone size-full wp-image-33069" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow2.png 653w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow2-300x203.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/flow2-220x150.png 220w" sizes="(max-width: 653px) 100vw, 653px" /> 
			</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>Para aclarar mis dudas, decidí consultar con varios profesionales egresados de programas de Ingeniería Industrial en Latinoamérica, algunos con experiencia en la gestión de operaciones secuenciales. Sin embargo, las respuestas que obtuve no fueron satisfactorias.</p>
<p>De repente recordé aquel post de Javier Arévalo y pensé en la pertinencia de sus palabras: ¡Nada es más práctico que una buena teoría! Esto me llevó a reflexionar sobre los principios y teorías que siguen los profesionales de Ingeniería Industrial, y cómo toman decisiones.</p>
<p>Como docente, consideré la responsabilidad de explicar el resultado del problema planteado, lo hice acudiendo a una sabia frase de Eliyahu Goldratt:</p>
<blockquote class=" quote-simple "><p>“Una hora perdida en la restricción es una hora perdida en todo el sistema, y una hora ganada en cualquier otro recurso es un espejismo”. <cite>Eliyahu Goldratt</cite></p></blockquote>
<p>Si partimos de este principio, la respuesta del problema es clara: 405 minutos.</p>
<h2>¿Creer o reventar? No, no es un acto de fe</h2>
<p>La Investigación de Operaciones es una disciplina que a menudo se asocia con el modelamiento matemático, las ecuaciones y los algoritmos. Por lo menos así la recuerdan los estudiantes; pero en realidad se trata de un enfoque sistémico que se centra en la comprensión de las restricciones que impiden alcanzar los objetivos de un sistema. También se enfatiza el contraste de paradigmas, como el mundo de los costos y los óptimos locales, los principios del flujo, y el papel del gestor de operaciones en la toma de decisiones. Todo esto abordado desde las herramientas de análisis cuantitativo, o como diría Javier: ¡Una buena teoría!</p>
<p>En clase, utilizamos herramientas cuantitativas y un enfoque teórico para demostrar cómo se puede llegar a la solución de un problema, utilizando un diagrama de Gantt en Excel. En resumen, 405 minutos es el resultado.</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/gantt.png" alt="Gantt, restricciones" width="616" height="348" class="aligncenter wp-image-33070 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/gantt.png 616w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/gantt-300x169.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/gantt-390x220.png 390w" sizes="(max-width: 616px) 100vw, 616px" /></p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 50%;">Primera unidad</td>
<td style="width: 50%;">1 unidad * (1 m/unidad + 2 m/unidad + 4 m/unidad + 2 m/unidad)</td>
</tr>
<tr>
<td style="width: 50%;">Unidades restantes</td>
<td style="width: 50%;">99 unidades * (4 m/unidad)</td>
</tr>
<tr>
<td style="width: 50%;">Tiempo total</td>
<td style="width: 50%;">9 minutos + 396 minutos</td>
</tr>
<tr>
<td style="width: 50%;">Tiempo total (100 unidades)</td>
<td style="width: 50%;">405 minutos</td>
</tr>
</tbody>
</table>
<p>El tiempo de procesamiento de las unidades, excepto la primera, está determinado por la operación que tenga el mayor tiempo de procesamiento por unidad, conocido como la restricción activa. Este principio es esencial para comprender el flujo y las variables que lo controlan. Con el objetivo de ilustrar este principio, utilicé la simulación determinística en Bizagi. Como resultado, se demostró que el tiempo total para completar las 100 unidades fue de 6 horas y 45 minutos, es decir, 405 minutos.</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi1.png" alt="bizagi, restricciones" width="602" height="453" class="aligncenter wp-image-33072 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi1.png 602w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi1-300x226.png 300w" sizes="(max-width: 602px) 100vw, 602px" />Además, para seguir explorando este tema, también se aumentó el tiempo de procesamiento de la operación restricción (C), pasando de 4 minutos por unidad a 5 minutos por unidad; con esto quise abordar mediante simulación un aspecto de la frase de Goldratt: <strong>«Una hora perdida en la restricción es una hora perdida en el sistema»</strong>.</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi2.png" alt="" width="600" height="450" class="size-full wp-image-33073 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi2.png 600w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi2-300x225.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Desde luego, de acuerdo con los principios que rigen el flujo y las restricciones del proceso, ese minuto adicional sobre la restricción activa tuvo un impacto en el desempeño general del sistema.</p>
<p>Ahora evaluemos el postulado restante de Goldratt: <strong>«Una hora ganada en cualquier otro recurso es un espejismo»</strong>. Para eso mejoramos la «eficiencia» local de una operación cualquiera (no una restricción activa), por ejemplo, la operación B. Una mejora local puede ser pasar de un tiempo de procesamiento de 2 m/unidad a 1 m/unidad. Veamos los resultados de la simulación:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi3.png" alt="bizagi3" width="600" height="450" class="size-full wp-image-33074 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi3.png 600w, https://ingenieriaindustrialonline.com/wp-content/uploads/2023/01/bizagi3-300x225.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p><em><strong>¡Un espejismo!</strong></em></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p>En palabras de Javier, <em>«la práctica debe guiarse de una buena teoría».</em> En el caso de los ingenieros industriales y/o gestores de operaciones, el ideal es el de fortalecer los bases que le permitan entender las restricciones, los principios del flujo y el óptimo global. No es un asunto exclusivo de un cuerpo de conocimiento, como lo es la Teoría de las Restricciones de Goldratt, también <a href="https://ingenieriaindustrialonline.com/columnas/lecciones-de-gerencia-de-taiichi-ohno-parte-vii/"><strong>Ohno destacaba que el componente transversal de los procesos lo tenían quienes tenían la visión del flujo</strong></a>.</p>
<p>Y para todos aquellos que se debaten entre la teoría y la práctica, Javier nos deja un mensaje claro: <em>«Si no tienes una buena teoría, mi mejor deseo para ti es: ¡Buena suerte!»</em>.</p>
<blockquote class=" quote-simple "><p>«Si no tienes una buena teoría, mi mejor deseo para ti es: ¡Buena suerte!» <cite>Javier Arévalo</cite></p></blockquote>
<p>&nbsp;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/teoria-de-restricciones-toc/una-hora-perdida-en-el-cuello-de-botella-es-una-hora-perdida-en-el-sistema/">¿Una hora perdida en el cuello de botella es una hora perdida en el sistema?</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/teoria-de-restricciones-toc/una-hora-perdida-en-el-cuello-de-botella-es-una-hora-perdida-en-el-sistema/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Casos especiales de programación lineal (Método Gráfico)</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/casos-especiales-de-programacion-lineal-metodo-grafico/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/casos-especiales-de-programacion-lineal-metodo-grafico/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Thu, 08 Dec 2022 19:53:51 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Análisis de sensibilidad]]></category>
		<category><![CDATA[casos especiales]]></category>
		<category><![CDATA[Investigación de Operaciones]]></category>
		<category><![CDATA[modelamiento de problemas]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<category><![CDATA[restricciones inactivas]]></category>
		<category><![CDATA[solución infactible]]></category>
		<category><![CDATA[solución óptima acotada]]></category>
		<category><![CDATA[solución óptima no acotada]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=32764</guid>

					<description><![CDATA[<p>Para empezar, es importante recordar que en un modelo de programación lineal, se busca encontrar la solución óptima que maximiza o minimiza una función objetivo, sujeta a un conjunto de restricciones. En el método gráfico, se representa gráficamente la función objetivo y las restricciones en un plano cartesiano, formando una región factible que contiene todas &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/casos-especiales-de-programacion-lineal-metodo-grafico/">Casos especiales de programación lineal (Método Gráfico)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Para empezar, es importante recordar que en un modelo de <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/"><strong>programación lineal</strong></a>, se busca encontrar la solución óptima que maximiza o minimiza una función objetivo, sujeta a un conjunto de restricciones. En el <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-grafico/"><strong>método gráfico</strong></a>, se representa gráficamente la función objetivo y las restricciones en un plano cartesiano, formando una región factible que contiene todas las soluciones posibles. Sin embargo, en algunos casos, la solución óptima no siempre se encuentra en uno de los vértices de la región factible. Estos son los denominados casos especiales de programación lineal.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Recordemos que en el área de solución se encuentran todas las posibles soluciones que satisfacen el conjunto de restricciones, lo que se denomina factibilidad. La optimalidad es diferente, ya que dentro de las soluciones factibles, una o algunas de ellas serán las que minimicen o maximicen la función objetivo. Esto es fundamental, tanto en la enseñanza de la programación lineal como en el aprendizaje.
			</div>
		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>
		<div id="casos-especiales" data-title="Casos especiales" class="index-title"></div>
	Casos especiales</h2>
<h3>
		<div id="soluciones-optimas-multiples" data-title="Soluciones óptimas múltiples" class="index-title"></div>
	Soluciones óptimas múltiples</h3>
<p>En ocasiones, pueden existir múltiples soluciones que maximizan o minimizan la función objetivo de un modelo de programación lineal, es decir, múltiples soluciones óptimas. La elección de la solución en un contexto de aplicación práctico dependerá tanto de la sensibilidad de las restricciones activas como de los factores propios del sistema que no se consideran en un modelo matemático.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>En el caso en el que los vectores solución sean consecutivos, esta cantidad de soluciones óptimas puede tender a infinito.
			</div>
		</div>
	
<p>Por ejemplo, supongamos que tenemos el siguiente modelo de programación lineal:</p>
<blockquote class=" quote-simple "><p>La ebanistería «López S.A.S» ha recibido una gran cantidad de partes prefabricadas para la elaboración de mesas, pero no ha podido iniciar un plan de producción enfocado en ellas debido a la alta demanda de sus otros productos. Las mesas que se pueden elaborar con las partes prefabricadas son de dos modelos: A y B. Estas mesas solo requieren ser ensambladas y pintadas.</p>
<p>Esta semana se ha determinado dedicar 10 horas a ensamblar y 8 horas a pintar para elaborar la mayor cantidad de mesas posibles, teniendo en cuenta que cada mesa modelo A requiere 2 horas de ensamble y 1 hora de pintura, mientras que cada mesa modelo B requiere 1 hora de ensamble y 2 horas de pintura. Si el margen de utilidad es de $20000 por cada mesa modelo A y $10000 por cada mesa modelo B, determine el modelo de producción adecuado para esta semana.</p></blockquote>
<p><em><strong>Variables</strong></em></p>
<p>x = Mesas modelo A a fabricar esta semana</p>
<p>y = Mesas modelo B a fabricar esta semana</p>
<p><em><strong>Restricciones</strong></em></p>
<p>2x + y &lt;= 10        «Horas de ensamble»</p>
<p>x + 2y &lt;= 8          «Horas de pintura»</p>
<p>x &gt;= 0                  «No negatividad»</p>
<p>y &gt;= 0                  «No negatividad»</p>
<p><em><strong>Función objetivo</strong></em></p>
<p>Zmax = 20000x + 10000y</p>
<p><em><strong>Solución gráfica:</strong></em></p>
<p><iframe loading="lazy" width="800" height="600" style="border: 1px solid #e4e4e4; border-radius: 4px;" src="https://www.geogebra.org/graphing/b9squs3s?embed" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Como se puede observar, la región factible tiene dos vértices que maximizan la función Z: <strong>C</strong>(4,2) y <strong>D</strong>(6,0). Ambas soluciones son óptimas, ya que maximizan la función Z dentro de las restricciones del modelo. En este caso, la elección de la solución dependerá de factores propios del sistema que no se consideran en el modelo matemático, como por ejemplo la disponibilidad de recursos o el costo de producción; del mismo modo, sería conveniente evaluar la sensibilidad de las restricciones activas en cada vértice.</p>
<table style="border-collapse: collapse; width: 100%; height: 111px;">
<tbody>
<tr style="height: 37px;">
<td style="width: 33.3333%; height: 37px; background-color: #487acf;"><span style="color: #ffffff;"><strong>Solución óptimas</strong></span></td>
<td style="width: 21.0833%; text-align: center; height: 37px; background-color: #487acf;"><span style="color: #ffffff;">20000(<strong>x</strong>)</span></td>
<td style="width: 23.9167%; text-align: center; height: 37px; background-color: #487acf;"><span style="color: #ffffff;">10000(<strong>y</strong>)</span></td>
<td style="width: 21.6667%; text-align: center; height: 37px; background-color: #487acf;"><span style="color: #ffffff;"><strong>Z</strong></span></td>
</tr>
<tr style="height: 37px;">
<td style="width: 33.3333%; height: 37px;">Vértice C</td>
<td style="width: 21.0833%; text-align: center; height: 37px;">20000(<strong>4</strong>)</td>
<td style="width: 23.9167%; text-align: center; height: 37px;">10000(<strong>2</strong>)</td>
<td style="width: 21.6667%; height: 37px; text-align: center;">100000</td>
</tr>
<tr style="height: 37px;">
<td style="width: 33.3333%; height: 37px;">Vértice D</td>
<td style="width: 21.0833%; text-align: center; height: 37px;">20000(<strong>5</strong>)</td>
<td style="width: 23.9167%; text-align: center; height: 37px;">10000(<strong>0</strong>)</td>
<td style="width: 21.6667%; height: 37px; text-align: center;">100000</td>
</tr>
</tbody>
</table>
<p>En este caso se da una condición particular, ya que los vértices son consecutivos. Esto implica que cada punto en el tramo que une a C y a D son soluciones óptimas.</p>
<p>Con la ayuda de GeoGebra, se puede mover la barra de desplazamiento que representa la utilidad y evaluar que la función objetivo alcanza el máximo de 100000 tanto en C como en D, así como en cualquier punto del tramo CD. Esto demuestra que en este caso existen múltiples soluciones óptimas y que cualquier punto en el tramo CD es una solución válida.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-dashed">
	
<h3>
		<div id="solucion-optima-no-acotada" data-title="Solución óptima no acotada" class="index-title"></div>
	Solución óptima no acotada</h3>
<p>Otra de las variantes que presentan los modelos de programación lineal es la solución óptima no acotada, es decir, problemas con infinitas soluciones óptimas. Dada la naturaleza finita de las restricciones en los contextos reales, estos problemas suelen deberse a un mal planteamiento de las restricciones, pero en el mundo académico es común evaluar este tipo de problemas.</p>
<p>Por ejemplo, supongamos que tenemos el siguiente modelo de programación lineal:</p>
<blockquote class=" quote-simple "><p>La compañía comercializadora de bebidas energéticas «WILD» está promocionando dos nuevas bebidas: la tipo A y la tipo B. Dado que se encuentran en promoción, se puede asegurar el cubrimiento de cualquier cantidad de demanda. Sin embargo, la empresa debe tener en cuenta dos políticas:</p>
<p>1. La cantidad de bebidas tipo A que se vendan no puede ser menor que la de tipo B.</p>
<p>2. Se deben vender por lo menos 1500 bebidas de cualquier tipo.</p>
<p>Estas políticas pueden ser representadas mediante restricciones en un modelo de programación lineal, que nos permitirá determinar la cantidad óptima de bebidas tipo A y B a vender en promoción.</p>
<p>El precio de venta de ambas bebidas es de $1800 por unidad</p></blockquote>

		<div class="box warning  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Antes de pasar al modelo matemático, es importante evaluar críticamente el problema planteado. El primer supuesto considera la capacidad de atender cualquier demanda, es decir, una demanda infinita. En la realidad, esto implicaría la existencia de recursos de producción infinitos, lo cual es un supuesto poco realista. De hecho, es una apelación al absurdo que se utiliza para definir la gestión de las restricciones en la programación lineal.</p>
<p>Es importante tener en cuenta estos supuestos y ajustar el modelo matemático en consecuencia, para obtener soluciones realistas y viables en un contexto de aplicación práctico.
			</div>
		</div>
	
<p><em><strong>Variables</strong></em></p>
<p>x = Bebidas tipo A a vender en promoción</p>
<p>y = Bebidas tipo B a vender en promoción</p>
<p><em><strong>Restricciones</strong></em></p>
<p>x &gt;= y                     «Políticas de ventas»</p>
<p>x + y &gt;= 1500          «Horas de pintura»</p>
<p>x &gt;= 0                      «No negatividad»</p>
<p>y &gt;= 0                      «No negatividad»</p>
<p><em><strong>Función objetivo</strong></em></p>
<p>Zmax = 1800x + 1800y</p>
<p><em><strong>Solución gráfica:</strong></em></p>
<p><iframe loading="lazy" width="800" height="600" style="border: 1px solid #e4e4e4; border-radius: 4px;" src="https://www.geogebra.org/graphing/r2rkwssf?embed" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>Como se puede observar, la región factible no está acotada, lo que significa que el conjunto de posibles soluciones factibles es infinito. En consecuencia, la solución óptima tiende a infinito, lo que hace que el modelo no tenga solución.</p>
<p>En este caso, el problema planteado tiene un mal planteamiento de las restricciones, lo que ha llevado a una solución no acotada. Para solucionar este problema, es necesario ajustar las restricciones del modelo para que la región factible sea acotada y tenga una solución óptima finita.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>En mi experiencia docente, este es uno de los casos más frecuentes que se dan en el modelamiento por parte de los estudiantes. Es importante que los estudiantes desarrollen habilidades para comprender si las restricciones presentes acotan suficientemente el modelo o no. Esto es fundamental para obtener soluciones realistas y viables en un contexto de aplicación práctico. 
			</div>
		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-dashed">
	
<h3>
		<div id="solucion-inviable-o-infactible" data-title="Solución inviable o infactible" class="index-title"></div>
	Solución inviable o infactible</h3>
<p>La solución infactible es un caso común en la programación lineal, y corresponde a aquellos casos en los que no existen soluciones que cumplan con todas las restricciones del modelo. Las restricciones acotan el sistema y establecen límites para alcanzar el objetivo del modelo. Cuando estas restricciones no se pueden cumplir en su totalidad, la solución es infactible.</p>
<p>En contexto de aplicación práctica, este caso es más común de lo que parece, y se da en escenarios en los que se plantean proporciones de oferta y demanda inviables en el modelo.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span><span>En mi experiencia, el síndrome del trabajador quemado es una de las principales consecuencias de una mala gestión de recursos en un plan de trabajo (un típico escenario de soluciones no acotadas en un contexto real). Cuando un trabajador se encuentra a cargo de cumplir con un plan que no cuenta con los recursos necesarios, se ve obligado a realizar un esfuerzo excesivo para lograr cumplir con las metas establecidas, lo que puede llevar a un agotamiento laboral y una disminución en su rendimiento y calidad de vida.</span>
			</div>
		</div>
	
<p>Por ejemplo, supongamos que tenemos el siguiente modelo de programación lineal:</p>
<blockquote class=" quote-simple "><p>La compañía de galletas «CAROLA» desea planificar la producción de galletas que deberá entregar a su cliente en dos semanas. Según el contrato, la empresa se compromete a entregar al menos 300 cajas de galletas, cualquiera sea su tipo (presentación D, presentación N o una combinación de ambas).</p>
<p>La producción de cada caja de galletas presentación D requiere 2 horas de elaboración y 3 horas de horneado, mientras que la producción de cada caja de presentación N requiere 3 horas de elaboración y 1 hora de horneado. La empresa cuenta con 550 horas para elaboración y 480 horas de horneado en las próximas dos semanas.</p>
<p>El margen de utilidad de cada caja de galletas presentación D es de $8500, y el margen de utilidad de cada caja de presentación N es de $8100. Para maximizar las utilidades, la empresa debe utilizar un modelo de programación lineal que le permita determinar el plan de producción adecuado.</p></blockquote>
<p><em><strong>Variables</strong></em></p>
<p>x = Cajas de galletas de presentación D a producir en dos semanas</p>
<p>y = Cajas de galletas de presentación N a producir en dos semanas</p>
<p><em><strong>Restricciones</strong></em></p>
<p>2x + 3y &lt;= 550               «Horas de elaboración»</p>
<p>3x + y &lt;= 480                 «Horas de horneado»</p>
<p>x + y &gt;= 300                   «Demanda según el contrato»</p>
<p>x &gt;= 0                             «No negatividad»</p>
<p>y &gt;= 0                             «No negatividad»</p>
<p><em><strong>Función objetivo</strong></em></p>
<p>Zmax = 8500x + 8100y</p>
<p><em><strong>Solución gráfica:</strong></em></p>
<p><iframe loading="lazy" width="800" height="600" style="border: 1px solid #e4e4e4; border-radius: 4px;" src="https://www.geogebra.org/graphing/bk7tfxmp?embed" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>La gráfica muestra el área sombreada que se delimita a partir de la representación de las restricciones que corresponden a los recursos de producción. Se puede apreciar cómo no existe una intersección entre las restricciones de capacidad y la restricción de demanda (sombreada de azul), lo que indica que no existen soluciones que cumplan con todas las restricciones del modelo. En este caso, se trata de una solución infactible.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-dashed">
	
<h3>
		<div id="restricciones-redundantes" data-title="Restricciones redundantes" class="index-title"></div>
	Restricciones redundantes</h3>
<p>Existen en los modelos de programación lineal un tipo de restricciones que no tienen ningún efecto en la determinación del conjunto solución (ni en la solución óptima). Estas restricciones se conocen como redundantes, ya que no afectan la solución del modelo.</p>
<p>En algunos casos, las restricciones redundantes pueden ser útiles para el análisis de sensibilidad, ya que nos permiten evaluar cómo cambia la solución óptima ante cambios en los valores de las restricciones. En lugar de eliminar estas restricciones, se pueden dejar en el modelo y marcar como inactivas. De esta manera, no afectan la solución óptima del modelo, pero se pueden utilizar para el análisis de sensibilidad.</p>

		<div class="box error  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span><span>Es importante tener en cuenta que, aunque algunos autores recomiendan eliminar las restricciones redundantes para mejorar la precisión del modelo, esta práctica no siempre es recomendable, de hecho, definitivamente desaconsejo esta práctica. </span></p>
<p><span>En contextos de aplicación real, el profesional debe gestionar las restricciones del sistema, lo que implica que la restricción activa puede cambiar con el tiempo y las acciones tomadas (la restricción de un sistema se mueve, las restricciones se activan ante cambios en los parámetros). Por lo tanto, es importante considerar todas las restricciones del modelo y utilizarlas en el análisis de sensibilidad. </span>
			</div>
		</div>
	
<p>Por ejemplo, supongamos que tenemos el siguiente modelo de programación lineal:</p>
<blockquote class=" quote-simple "><p>La compañía «CONGELADORES MAJO» se encuentra en la necesidad de planificar su producción semanal de congeladores tipo A y B. Cada uno de ellos requiere pasar por tres operaciones: Ensamblaje, pintura y control de calidad. Los congeladores tipo A requieren 2 horas de ensamblaje, 3 kg de pintura y 4 horas de control de calidad; los congeladores tipo B requieren 3 horas de ensamblaje, 6 kg de pintura y 5 horas de control de calidad. La compañía cuenta con un margen contributivo de $102000 y $98000 por cada congelador tipo A y B respectivamente. La disponibilidad semanal de recursos se encuentra limitada a 300 horas de ensamblaje, 840 kg de pintura y 450 horas de control de calidad. A partir de esta información, se debe determinar la cantidad de unidades a producir semanalmente de cada referencia, con el fin de maximizar las utilidades.</p></blockquote>
<p><em><strong>Variables</strong></em></p>
<p>x = Congeladores tipo A a producir semanalmente</p>
<p>y = Congeladores tipo B a producir semanalmente</p>
<p><em><strong>Restricciones</strong></em></p>
<p>2x + 3y &lt;= 300               «Horas de ensamblaje»</p>
<p>3x + 5y &lt;= 840                «Kg de pintura»</p>
<p>4x + 5y &lt;= 450                «Horas de control de calidad»</p>
<p>x &gt;= 0                             «No negatividad»</p>
<p>y &gt;= 0                             «No negatividad»</p>
<p><em><strong>Función objetivo</strong></em></p>
<p>Zmax = 102000x + 98000y</p>
<p><em><strong>Solución gráfica:</strong></em></p>
<p><iframe loading="lazy" width="800" height="600" style="border: 1px solid #e4e4e4; border-radius: 4px;" src="https://www.geogebra.org/graphing/guesnehs?embed" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>La gráfica muestra cómo las restricciones 1 y 2 (Horas de ensamblaje y Kg de pintura) no determinan el conjunto solución. La solución se encuentra en el vértice C(112.5, 0), con una utilidad de $11475000.</p>
<p>Sin embargo, denominar las restricciones que no determinan el área de factibilidad ni el punto óptimo, como redundantes o sobrantes (o excluirlas del modelo), quizá no sea la manera correcta; preferiblemente denominar estas restricciones como inactivas. Supongamos que nos encontramos en un escenario en el cual evaluamos la posibilidad de aumentar la capacidad de la restricción 3 (horas de control de calidad); es fundamental reconocer los límites en los cuales dicho incremento de capacidad activaría las restricciones 1 y 2.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<p>En resumen, los casos especiales en programación lineal pueden darse por una mala formulación de las restricciones, la presencia de soluciones infactibles o infinitas. Es importante considerar siempre todas las restricciones del modelo y utilizar el análisis de sensibilidad para evaluar su efecto en la solución óptima.</p>
<p><em><strong>¡Si te ha gustado este artículo sobre casos especiales en programación lineal, ¡compartelo con tus contactos!</strong></em></p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Recomendamos que lean: <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-grafico-de-la-programacion-lineal-mediante-el-uso-de-python/"><strong>Método gráfico mediante Python</strong></a>
			</div>
		</div>
	
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/casos-especiales-de-programacion-lineal-metodo-grafico/">Casos especiales de programación lineal (Método Gráfico)</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/casos-especiales-de-programacion-lineal-metodo-grafico/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programación de empleados mediante programación entera</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-de-empleados-mediante-programacion-entera/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-de-empleados-mediante-programacion-entera/#respond</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Sat, 27 Nov 2021 18:27:47 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Logística]]></category>
		<category><![CDATA[Asignación]]></category>
		<category><![CDATA[Google OR-Tools]]></category>
		<category><![CDATA[Optimización]]></category>
		<category><![CDATA[Programación de empleados]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Scheduling]]></category>
		<category><![CDATA[Turnos]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=29010</guid>

					<description><![CDATA[<p>Las organizaciones que gestionan operaciones cada vez más robustas, requieren en cierto modo de la asignación de personas y recursos a tareas específicas. Desde hace algún tiempo se ha popularizado un planteamiento en torno al objetivo de la logística, generalmente aceptado como: «El objetivo de la logística consiste en llevar el producto correcto, en la &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-de-empleados-mediante-programacion-entera/">Programación de empleados mediante programación entera</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>Las organizaciones que gestionan operaciones cada vez más robustas, requieren en cierto modo de la asignación de personas y recursos a tareas específicas. Desde hace algún tiempo se ha popularizado un planteamiento en torno al objetivo de la logística, generalmente aceptado como: «<em>El objetivo de la logística consiste en llevar el producto correcto, en la cantidad correcta, en el lugar correcto, en el momento correcto</em>» (acepta variaciones).</p>
<p>Ahora bien, tendencias de optimización abordan nuevos objetivos y plantean nuevos desafíos alrededor de la intralogística: <em>optimización extrema</em>. Es decir, optimización en la asignación de recursos internos, como por ejemplo: <em>el recurso correcto, asignado a la tarea correcta, en el momento correcto</em>.</p>
<p>Cuando aterrizamos el anterior planteamiento en términos prácticos, entendemos que se hace necesario resolver problemas de programación complejos de forma regular, que permitan la gestión de las operaciones de la organización. Un caso puntual consiste en la <strong>programación del recurso humano</strong>, sujeta a un conjunto complejo de restricciones y requisitos: <em>número de empleados, días laborales, turnos, tiempos inactivos, permisos, políticas internas, etc.</em></p>
<p>El planteamiento de nuevos desafíos de optimización, guarda una estrecha relación con la posibilidad que nos brinda la tecnología de abordar estos retos. Si bien, la complejidad de las organizaciones es cada vez mayor, los algoritmos cada vez son más refinados, y los solucionadores cada vez más robustos e integrados.</p>
<p>El objetivo de este artículo consiste en utilizar las técnicas robustas del solucionador basado en restricciones <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/que-es-y-para-que-sirve-google-or-tools/"><strong>OR-Tools de Google</strong></a>, para resolver un problema de programación de empleados sujeto a un conjunto complejo de restricciones.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Cuando cursaban el tercer año, el Director del Lakeside School, les planteó a Bill Gates y Kent Evans, un problema muy complejo que aun nadie lograba resolver.</p>
<p>Lakeside se había fusionado con una escuela femenil local, por lo tanto, el alumnado había crecido considerablemente, y nadie lograba descifrar cómo ajustar los horarios de clase en las nuevas condiciones. Las restricciones de la programación no eran pocas, por ejemplo:</p>
<ul>
<li>Ningún maestro podía impartir cuatro clases seguidas</li>
<li>Debían considerarse pausas para alimentación</li>
<li>La cantidad de alumnos por sesión de clase no podía pasar de 16</li>
<li>Algunas clases como, por ejemplo, las clases de música no podían asignarse en salones conjuntos.</li>
</ul>
<p>La complejidad del problema hizo que Gates buscara la ayuda de Paul Allen, con quien lograría resolver el modelo. Este fue quizá, el algoritmo que les abrió un camino comercial, puesto que otras organizaciones que tenían problemas de programación, comenzarían a acudir a esta pareja de estudiantes.</p>
<p>Bill Gates y Paul Allen fundaron en 1975 la compañía Microsoft, el resto es historia. 
			</div>
		</div>
	
<hr />
<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 compañía Stark Lab ha adquirido un nuevo torno para su área de mecanizado. El volumen de trabajo que tiene el área, demanda que esta nueva máquina sea operada en los 3 turnos del día (mañana, tarde y noche).</p>
<p>La compañía ha contratado a 3 trabajadores para operar la nueva máquina, y planea emplear a un aprendiz (estudiante) como cuarto operario.</p>
<p>El supervisor debe diseñar una programación para los cuatro operarios para un periodo de 7 días (una semana), sujeto a las siguientes condiciones:</p>
<ul>
<li>Cada día se divide en tres turnos de 8 horas.</li>
<li>Todos los días, cada turno se asigna a un solo operario, y ningún operario trabajará más de un turno por día.</li>
<li>El último día de la programación se realizan actividades de mantenimiento y limpieza profunda en planta. Por tal razón, solo se trabaja el turno de la mañana.</li>
<li>El operario aprendiz (estudiante), cuenta con la colaboración de la compañía para realizar sus estudios. Por tal razón, no puede trabajar el tercer día de la semana en el turno de la noche.</li>
<li>Como mínimo deben trabajarse 19 turnos en total en la programación. Esta cantidad de turnos ya considera los turnos destinados a mantenimiento y limpieza del último día de la programación.</li>
<li>En el caso en el que no se pueda realizar una distribución de turnos igualitaria, la distribución de los turnos debe realizarse de manera uniforme. Esto quiere decir que no puede existir una diferencia mayor a un turno entre las asignaciones para cada operario.</li>
</ul>
</blockquote>
<p>Se desea desarrollar una programación de empleados (asignación de empleados, turnos y días), que cumpla con las restricciones del planteamiento.</p>
<h3>¿Qué necesitaremos?</h3>

		<div id="que-necesitaremos" data-title="¿Qué necesitaremos?" class="index-title"></div>
	
<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>ORTools</em></strong>: OR-Tools es un paquete de software portable de código abierto desarrollado por Google, para resolución de problemas de optimización.</li>
</ul>

		</div>
	
</div>
<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>
	
<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 visible full-visible"></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: Instalar Google Or Tools</h3>

		<div id="paso-2-instalar-google-or-tools" data-title="Paso 2: Instalar Google Or Tools" class="index-title"></div>
	
<p>Es necesario instalar la librería de Google Or Tools en nuestro entorno de <em>Colaboratory</em> para poder utilizar nuestro modelo de programación entera.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>!pip install ortools</code></pre>
</div>
<p>Al ejecutar esta instrucción instalaremos el software del solucionador de Google.</p>
<h3>Paso 3: Importar las librerías necesarias</h3>

		<div id="paso-3-importar-las-librerias-necesarias" data-title="Paso 3: Importar las librerías necesarias" class="index-title"></div>
	
<p>Este modelo empleará programación entera, y por lo tanto instalaremos las librerías dispuestas por Google OR Tools para ello. En este caso utilizaremos un solucionador de programación entera llamado CP-SAT.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Importar la librería para utilizar CP-SAT
from ortools.sat.python import cp_model</code></pre>
</div>
<p><span>De esta manera, tenemos todo lo necesario para empezar a desarrollar nuestro código.</span></p>
<h3>Paso 4: Crear los datos de entrada del modelo</h3>

		<div id="paso-4-crear-los-datos-de-entrada-del-modelo" data-title="Paso 4: Crear los datos de entrada del modelo" class="index-title"></div>
	
<p>Los datos de entrada de un problema de programación de empleados suelen ser simples, la complejidad recae en el modelamiento de las restricciones. En este caso, los datos de entrada básicos son: <em>número de empleados, número de turnos por día, número de días del plan de programación</em>.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Datos de entrada del modelo
operarios = 4
turnos = 3
dias = 7
total_operarios = range(operarios)
total_turnos = range(turnos)
total_dias = range(dias)

turnos_no_laborales = 2
turnos_laborales = (turnos * dias) - turnos_no_laborales</code></pre>
</div>
<p>Así mismo, definimos el número de turnos no laborales, recordemos que el planteamiento del problema nos indicó que el último día se trabajaría tan solo un turno (por labores de mantenimiento y limpieza), por lo tanto, dos turnos pueden considerarse como no laborales.</p>
<p>¿Por qué utilizamos una variable llamada <em>operarios </em>y otra llamada <em>total_operarios</em>? Además, ¿Para qué se emplea la función <em>range</em>? Bueno, la variable <em>operarios </em>contendrá el valor entero de la cantidad de operarios del modelo; mientras tanto, la variable <em>total_operarios</em> dado que emplea la función <em>range</em>, contendrá la secuencia de números que nos ayudará a definir a cada operario, lo hace de esta manera: range(4) = 0, 1, 2, 3. Como podemos ver, inicia la secuencia en 0, y finaliza en el entero anterior al parámetro dado, en este caso el parámetro dado fue 4, por lo tanto, el entero anterior será 3.</p>
<h3>Paso 5: Crear el modelo de programación</h3>

		<div id="paso-5-crear-el-modelo-de-programacion" data-title="Paso 5: Crear el modelo de programación" class="index-title"></div>
	
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Crear el modelo
model = cp_model.CpModel()</code></pre>
</div>
<h3>Paso 6: Crear las variables de asignación</h3>

		<div id="paso-6-crear-las-variables-de-asignacion" data-title="Paso 6: Crear las variables de asignación" class="index-title"></div>
	
<p>El problema de programación de empleados es un caso de asignación, y por lo tanto, empleamos variables de decisión de asignación. Veamos:</p>
<p>Necesitamos definir <em>qué operario</em> será asignado a <em>qué turno</em> en <em>qué día </em>en específico. Por lo tanto podemos utilizar variables de asignación binarias, que tomen un valor de 1, si esa asignación específica tiene lugar, y tomen valor de 0, en el caso en el que no.</p>
<p>Algebraicamente sería algo así:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/algebra.png" alt="algebra" width="503" height="93" class="size-full wp-image-29015 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/algebra.png 503w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/algebra-300x55.png 300w" sizes="(max-width: 503px) 100vw, 503px" /></p>
<p>En el caso en el que tuviésemos que definir manualmente cada una de las variables de asignación, requeriríamos un total de 84 variables (7 días * 3 turnos * 4 operarios).</p>
<p>Veamos cómo podemos utilizar los ciclos en <em>Python </em>para simplificar la definición de las variables &#8211; Eso sí, en lugar de <em>X </em>llamaremos a la variable <em>asignacion</em>, y en lugar de <em>a, b </em>y<em> c, </em>utilizaremos la primera letra de cada parámetro.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Creamos las variables de asignación
# asignacion[(o, d, t)]: operario 'o' trabaja en el turno 't' el día 'd'.
asignacion = {}
for o in total_operarios:
    for d in total_dias:
        for t in total_turnos:
            asignacion[(o, d, t)] = model.NewBoolVar('turno_n%id%is%i' % (o, d, t))</code></pre>
</div>
<p>De esta manera, haciendo uso de ciclos, creamos todas las variables de asignación del modelo; así mismo, definimos su naturaleza (<em>NewBoolVar = Variable booleana</em>). De manera que en el caso de que una asignación se efectúe su resultado será <em>«verdadero / True»</em>.</p>
<h3>Paso 7: Crear las restricciones del modelo</h3>

		<div id="paso-7-crear-las-restricciones-del-modelo" data-title="Paso 7: Crear las restricciones del modelo" class="index-title"></div>
	
<p>La complejidad de un problema de programación de recursos se define por la naturaleza de sus restricciones. Si bien las restricciones acotan el conjunto solución, y por ende los tiempos de procesamiento, la dificultad subyace del modelamiento. Veamos cómo abordar cada una de las restricciones que nos plantea el caso de aplicación.</p>
<p><strong>Cada turno se asigna a un solo operario</strong></p>
<p>La sumatoria de todas las asignaciones efectuadas en un día <em>d, </em>en el turno <em>t</em>, deben ser menores o iguales a 1. Eso restringe la posibilidad de que un mismo turno, en un mismo día, sea asignado a dos operarios diferentes.</p>
<p>Por ejemplo:</p>
<p style="text-align: center;">X<sub>000</sub> + X<sub>100</sub> + X<sub>200</sub> + X<sub>300</sub> &lt;= 1</p>
<p>Esta restricción nos diría que la sumatoria de todas las asignaciones del día <em>0</em>, para el turno <em>0</em>, de los operarios <em>0, 1, 2 y 3</em>; debe ser menor o igual a <em>1</em>. Es decir que el turno <em>0</em>, del día <em>0</em> no puede ser asignado a más de un operario.</p>
<p>Veamos cómo <em>Python </em>nos puede simplificar esta formulación de restricciones:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Cada turno es asignado a un operario en el periodo de programación, o no es asignado
for d in total_dias:
    for t in total_turnos:
        model.Add(sum(asignacion[(o, d, t)] for o in total_operarios) &lt;= 1)</code></pre>
</div>
<p>Esta restricción bien podría formularse como que la sumatoria deba ser igual a 1. Sin embargo, recordemos que existen un par de turnos no laborales, y por lo tanto estos no deben ser asignados.</p>
<p>En el caso en el que tuviésemos que definir manualmente cada una de estas restricciones, requeriríamos un total de 21 restricciones (7 días * 3 turnos).</p>
<p><strong>Cada operario trabaja como máximo un turno por día</strong></p>
<p>La sumatoria de todas las asignaciones efectuadas en un día <em>d, </em>para el operario <em>o</em>, deben ser menores o iguales a 1. Eso restringe la posibilidad de que un operario, en un mismo día, sea asignado a dos turnos diferentes.</p>
<p>Por ejemplo:</p>
<p style="text-align: center;">X<sub>000</sub> + X<sub>001</sub> + X<sub>002</sub> &lt;= 1</p>
<p>Esta restricción nos diría que la sumatoria de todas las asignaciones del día <em>0</em>, para el operario <em>0</em>, de los turnos <em>0, 1, y 2</em>; debe ser menor o igual a <em>1</em>. Es decir que el operario <em>0</em>, del día <em>0</em> no puede ser asignado a más de un turno.</p>
<p>Veamos cómo <em>Python </em>nos puede simplificar esta formulación de restricciones:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Cada operario trabaja como máximo un turno por día
for o in total_operarios:
    for d in total_dias:
        model.Add(sum(asignacion[(o, d, t)] for t in total_turnos) &lt;= 1)</code></pre>
</div>
<p>En el caso en el que tuviésemos que definir manualmente cada una de estas restricciones, requeriríamos un total de 28 restricciones (7 días * 4 operarios).</p>
<p><strong>Restricción del operario aprendiz</strong></p>
<p>De acuerdo al caso de aplicación, <em>el operario aprendiz no pude trabajar el tercer día de la semana, en el turno de la noche</em>. Esto nos permite abordar restricciones de requerimientos puntuales sobre el modelo.</p>
<p>Recordemos que el índice, tanto de operarios, turnos y días, comienza en 0. Por lo tanto, para efectos de la formulación de la restricción, el tercer día de la semana será el día 2 (los siete días de la semana son 0, 1, 2, 3, 4, 5 y 6); y el turno de la noche, será el turno 2 (turnos 0, 1 y 2 / mañana, tarde y noche).</p>
<p>Por otro lado, los operarios también son nombrados de acuerdo a sus índices: 0, 1, 2 y 3. Podemos arbitrariamente elegir el índice del operario aprendiz; en nuestro caso diremos que se trata del operario 0.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Restricción del operario (o) 1 para trabajar el día (d) 2, en el turno (t) 2
model.Add(asignacion[(0, 2, 2)] != 1)</code></pre>
</div>
<p>El operador != se utiliza para denotar <em>diferente de</em>, por lo tanto, la restricción indica que la asignación del operario 0, el día 2, en el turno 2, deberá ser diferente de 1; es decir que, al tratarse de una variable booleana, deberá ser <em>Falso = 0.</em></p>
<p><strong>Restricciones de turnos no programados (mantenimiento y limpieza)</strong></p>
<p>De acuerdo al caso de aplicación, el último día de la semana se programan actividades de mantenimiento y limpieza, y que por lo tanto, solo se trabaja en el turno de la mañana. Por esta razón, debemos excluir a los turnos de la tarde y la noche de la programación (turnos <em>1</em> y <em>2</em>) del último día (día 6).</p>
<p>Siguiendo con nuestras denominaciones algebraicas de ejemplo, tendríamos algo así:</p>
<p style="text-align: center;">X<sub>061</sub> + X<sub>161</sub> + X<sub>261</sub> + X<sub>361</sub> == 0</p>
<p style="text-align: center;">X<sub>062</sub> + X<sub>162</sub> + X<sub>262</sub> + X<sub>362</sub> == 0</p>
<p>Veamos cómo <em>Python </em>nos puede simplificar esta formulación de restricciones:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Restricción de turnos no programados
model.Add(sum(asignacion[(o, 6, 1)] for o in total_operarios) == 0)
model.Add(sum(asignacion[(o, 6, 2)] for o in total_operarios) == 0)</code></pre>
</div>
<p><strong>Restricción de turnos mínimos programados</strong></p>
<p>De acuerdo al caso de aplicación, debe programarse una cantidad de 19 turnos laborales. Es decir, la cantidad de turnos diarios (3) * la cantidad de días del programa (7); menos la cantidad de turnos no programados por mantenimiento y limpieza (2).</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Como mínimo deben trabajarse "turnos_laborales"
min_turnos_totales = []
for o in total_operarios:
    for d in total_dias:
        for t in total_turnos:
            min_turnos_totales.append(asignacion[(o, d, t)])
model.Add(sum(min_turnos_totales) &gt;= turnos_laborales)</code></pre>
</div>
<p>Esta restricción involucra a todas las variables de asignación del modelo, y por lo tanto el uso de ciclos es importante para simplificar el desarrollo de la formulación. Básicamente indica que la sumatoria de todas las variables de decisión (asignación) del modelo (que son booleanas, y para este efecto podemos decir que binarias), debe ser mayor o igual al mínimo de turnos laborales exigidos para programación.</p>
<p>La restricción es 1 sola, pero involucra las 84 variables de asignación.</p>
<p><strong>Restricción de uniformidad en la distribución de turnos</strong></p>
<p>El objetivo de estas restricciones es la de distribuir de la manera más uniforme posible los turnos asignados. En términos prácticos, el caso de aplicación indica que, no puede existir una diferencia mayor a un turno entre las asignaciones de los operarios. Es decir, ningún operario podrá tener asignados dos turnos más que otro operario, por ejemplo.</p>
<p>Para lograr esto es necesario realizar una serie de cálculos intermedios sencillos, con el objetivo de identificar: <em>número de turnos asignables, cantidad mínima de turnos por operario, cantidad máxima de turnos por operario, entre otros</em>.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>min_turnos_por_operario = ((turnos * dias) - turnos_no_laborales) // operarios
if ((turnos * dias) - turnos_no_laborales) % operarios == 0:
    max_turnos_por_operario = min_turnos_por_operario
else:
    max_turnos_por_operario = min_turnos_por_operario + 1
for o in total_operarios:
    num_turnos_trabajados = []
    for d in total_dias:
        for t in total_turnos:
            num_turnos_trabajados.append(asignacion[(o, d, t)])
    model.Add(min_turnos_por_operario &lt;= sum(num_turnos_trabajados))
    model.Add(sum(num_turnos_trabajados) &lt;= max_turnos_por_operario)</code></pre>
</div>
<p>Lo primero que hicimos fue calcular la parte entera de la fracción entre el <em>número de turnos asignables</em> y los operarios; lo que nos indica la <em>cantidad mínima de turnos por operario</em>. Veamos con un ejemplo:</p>
<p style="text-align: center;">(turnos * días) &#8211; turnos no laborales // operarios</p>
<p style="text-align: center;">(3 turnos por día * 7 días) &#8211; 2 turnos // 4 operarios</p>
<p style="text-align: center;">(3 * 7) &#8211; 2 // 4</p>
<p style="text-align: center;">19 // 4 = 4 turnos por operario</p>
<p>Esto indica que existe la posibilidad de asignar al menos 4 turnos por cada operario. Lo siguiente que se debe considerar es la cantidad máxima de turnos por operario.</p>
<p>En el caso en el cual la cantidad que resulte de dividir el número de turnos asignables entre el número de operarios sea entera sin decimales, esto indicaría que la distribución de los turnos puede realizarse en partes iguales, y por lo tanto <em>la cantidad máxima de turnos por operario </em>será equivalente a <em>la cantidad mínima de turnos por operario</em>.</p>
<p>En los casos en los que esto no ocurra, <em>la cantidad máxima de turnos por operario</em> será equivalente a <em>la cantidad mínima de turnos por operario </em>más 1. Recordemos que la restricción nos indica que la diferencia entre asignaciones de turnos a operarios no puede ser mayor de un turno.</p>
<p>Por todo lo demás, las restricciones de este paso consisten en establecer que la cantidad de turnos asignados por operario deberá ser mayor que <em>la cantidad mínima de turnos por operario </em>y deberá ser menor que <em>a cantidad máxima de turnos por operario</em><em>.</em></p>
<h3>Paso 8: Crear el solucionador y enumerar las soluciones</h3>

		<div id="paso-8-crear-el-solucionador-y-enumerar-las-soluciones" data-title="Paso 8: Crear el solucionador y enumerar las soluciones" class="index-title"></div>
	
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code># Creal (invocar) el solucionador y resolver
solver = cp_model.CpSolver()
solver.parameters.linearization_level = 0
# Enumerar las posibles soluciones
solver.parameters.enumerate_all_solutions = True</code></pre>
</div>
<h3>Paso 9: Configurar las salidas del modelo</h3>

		<div id="paso-9-configurar-las-salidas-del-modelo" data-title="Paso 9: Configurar las salidas del modelo" class="index-title"></div>
	
<p>Este paso consiste en configurar el formato de salida de las soluciones posibles. De forma arbitraria hemos determinado que se impriman las primeras 2 soluciones (<em>solution_limit</em>), de tal manera que el formato de salida tendrá la siguiente estructura:</p>
<ul>
<li>Solución <em>i</em>
<ul>
<li>Día <em>d</em>
<ul>
<li>Operario <em>o, </em>trabaja / no trabaja, en el turno <em>t.</em></li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>class OperariosParcialesSolucion(cp_model.CpSolverSolutionCallback):
    """Print intermediate solutions."""

    def __init__(self, asignacion, operarios, dias, turnos, limit):
        cp_model.CpSolverSolutionCallback.__init__(self)
        self._asignacion = asignacion
        self._operarios = operarios
        self._dias = dias
        self._turnos = turnos
        self._solution_count = 0
        self._solution_limit = limit

    def on_solution_callback(self):
        self._solution_count += 1
        print('Solución %i' % self._solution_count)
        for d in range(self._dias):
            print('Día %i' % d)
            for o in range(self._operarios):
                is_working = False
                for t in range(self._turnos):
                    if self.Value(self._asignacion[(o, d, t)]):
                        is_working = True
                        print('  Operario %i trabaja en el turno %i' % (o, t))
                if not is_working:
                    print('  Operario {} no trabaja'.format(o))
        if self._solution_count &gt;= self._solution_limit:
            print('Detenga la búsqueda después de  %i soluciones' % self._solution_limit)
            self.StopSearch()

    def solution_count(self):
        return self._solution_count

# Muestra las primeras 2 soluciones.
solution_limit = 2
solution_printer = OperariosParcialesSolucion(asignacion, operarios, dias, turnos,
                                                    solution_limit)</code></pre>
</div>
<h3>Paso 10: Invocar al solucionador y configurar algunas estadísticas</h3>

		<div id="paso-10-invocar-al-solucionador-y-configurar-algunas-estadisticas" data-title="Paso 10: Invocar al solucionador y configurar algunas estadísticas" class="index-title"></div>
	
<p>Por último, nos queda invocar al solucionador, y configurar algunos datos estadísticos para enriquecer las salidas del modelo.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>solver.Solve(model, solution_printer)

# Estadísticas.
print('\nEstadísticas')
print('  - conflictos      : %i' % solver.NumConflicts())
print('  - ramas de búsqueda       : %i' % solver.NumBranches())
print('  - tiempo de solución      : %f s' % solver.WallTime())
print('  - soluciones encontradas: %i' % solution_printer.solution_count())</code></pre>
</div>
<hr />
<p>Al ejecutar el programa completo, tendremos la siguiente salida:</p>
<ul>
<li><strong><em>Solución 1</em></strong>
<ul>
<li><em>Día 0</em>
<ul>
<li><em>Operario 0 no trabaja</em></li>
<li><em>Operario 1 trabaja en el turno 1</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 trabaja en el turno 0</em></li>
</ul>
</li>
<li><em>Día 1</em>
<ul>
<li><em>Operario 0 no trabaja</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 trabaja en el turno 1</em></li>
</ul>
</li>
<li><em>Día 2</em>
<ul>
<li><em>Operario 0 trabaja en el turno 0</em></li>
<li><em>Operario 1 no trabaja</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 trabaja en el turno 1</em></li>
</ul>
</li>
<li><em>Día 3</em>
<ul>
<li><em>Operario 0 trabaja en el turno 1</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 no trabaja</em></li>
</ul>
</li>
<li><em>Día 4</em>
<ul>
<li><em>Operario 0 trabaja en el turno 1</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 no trabaja</em></li>
<li><em>Operario 3 trabaja en el turno 2</em></li>
</ul>
</li>
<li><em>Día 5</em>
<ul>
<li><em>Operario 0 trabaja en el turno 2</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 no trabaja</em></li>
<li><em>Operario 3 trabaja en el turno 1</em></li>
</ul>
</li>
<li><em>Día 6</em>
<ul>
<li><em>Operario 0 trabaja en el turno 0</em></li>
<li><em>Operario 1 no trabaja</em></li>
<li><em>Operario 2 no trabaja</em></li>
<li><em>Operario 3 no trabaja</em></li>
</ul>
</li>
</ul>
</li>
<li><strong><em>Solución 2</em></strong>
<ul>
<li><em>Día 0</em>
<ul>
<li><em>Operario 0 no trabaja</em></li>
<li><em>Operario 1 trabaja en el turno 1</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 trabaja en el turno 0</em></li>
</ul>
</li>
<li><em>Día 1</em>
<ul>
<li><em>Operario 0 no trabaja</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 trabaja en el turno 1</em></li>
</ul>
</li>
<li><em>Día 2</em>
<ul>
<li><em>Operario 0 trabaja en el turno 0</em></li>
<li><em>Operario 1 no trabaja</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 trabaja en el turno 1</em></li>
</ul>
</li>
<li><em>Día 3</em>
<ul>
<li><em>Operario 0 trabaja en el turno 1</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 trabaja en el turno 2</em></li>
<li><em>Operario 3 no trabaja</em></li>
</ul>
</li>
<li><em>Día 4</em>
<ul>
<li><em>Operario 0 trabaja en el turno 1</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 no trabaja</em></li>
<li><em>Operario 3 trabaja en el turno 2</em></li>
</ul>
</li>
<li><em>Día 5</em>
<ul>
<li><em>Operario 0 trabaja en el turno 1</em></li>
<li><em>Operario 1 trabaja en el turno 0</em></li>
<li><em>Operario 2 no trabaja</em></li>
<li><em>Operario 3 trabaja en el turno 2</em></li>
</ul>
</li>
<li><em>Día 6</em>
<ul>
<li><em>Operario 0 trabaja en el turno 0</em></li>
<li><em>Operario 1 no trabaja</em></li>
<li><em>Operario 2 no trabaja</em></li>
<li><em>Operario 3 no trabaja</em></li>
</ul>
</li>
</ul>
</li>
</ul>
<p><em>Detenga la búsqueda después de 2 soluciones</em></p>
<p><em>Estadísticas</em><br />
<em>&#8211; conflictos : 973</em><br />
<em>&#8211; ramas de búsqueda : 1730</em><br />
<em>&#8211; tiempo de búsqueda : 0.044052 s</em><br />
<em>&#8211; soluciones encontradas: 2</em></p>
<hr />
<p>Hemos formulado un modelo con <strong>84 variables de decisión, 55 restricciones y algunos cálculos intermedios</strong>. Podemos observar cómo el modelo ha logrado encontrar soluciones que satisfacen las restricciones planteadas (formuladas). Del mismo modo, podemos observar el tiempo en el cual ha logrado el solucionador hallar la cantidad de soluciones solicitadas (fracciones de segundo).</p>
<p>Es interesante percibir las bondades de este tipo desarrollos, y considerar las posibilidades de aplicación en otros campos diferentes a la programación de empleados; teniendo en cuenta la flexibilidad de la programación basada en restricciones, la potencia de los solucionadores y la capacidad de procesamiento de los equipos en la actualidad.</p>
<p>El código completo de este desarrollo lo puedes encontrar en nuestro cuaderno: <a href="https://colab.research.google.com/drive/18dIH38IZyioGn7eIRaT8bhMatCyEqasJ?usp=sharing" target="_blank" rel="noopener"><em><strong>Programación de empleados</strong></em></a>.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-de-empleados-mediante-programacion-entera/">Programación de empleados mediante programación entera</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/programacion-de-empleados-mediante-programacion-entera/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>¿Cómo calcular una matriz de distancias para modelar un VRP?</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/como-calcular-una-matriz-de-distancias-para-modelar-un-vrp/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/como-calcular-una-matriz-de-distancias-para-modelar-un-vrp/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Tue, 16 Nov 2021 21:44:14 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Logística]]></category>
		<category><![CDATA[Google OR-Tools]]></category>
		<category><![CDATA[Haversine]]></category>
		<category><![CDATA[Matriz de distancias]]></category>
		<category><![CDATA[Optimización]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Routing]]></category>
		<category><![CDATA[Ruteo]]></category>
		<category><![CDATA[VRP]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=28858</guid>

					<description><![CDATA[<p>Tal como lo hemos abordado ampliamente, una de las aplicaciones más importantes del modelamiento de Cadenas de Suministro, es el diseño de red de abastecimiento, y dentro de esta categoría, el diseño de rutas de transporte (enrutamiento de vehículos). Los problemas de enrutamiento de vehículos (routing), se encuentran clasificados como problemas de optimización combinatoria, y &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/como-calcular-una-matriz-de-distancias-para-modelar-un-vrp/">¿Cómo calcular una matriz de distancias para modelar un VRP?</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>Tal como lo hemos abordado ampliamente, u<span>na de las aplicaciones más importantes del modelamiento de Cadenas de Suministro, es el diseño de red de abastecimiento, y dentro de esta categoría, el diseño de rutas de transporte (enrutamiento de vehículos).</span></p>
<p>Los problemas de enrutamiento de vehículos (<em>routing</em>), se encuentran clasificados como problemas de optimización combinatoria, y esto producto de que la cantidad de rutas posibles en un modelo básico, se encuentra determinado por la <span>ecuación (</span><em>n</em><span> – 1)!, donde </span><em>n</em><span>, es igual al número de ubicaciones que componen el problema de enrutamiento.</span></p>
<p>Ahora bien, no solo la resolución de los problemas de enrutamiento es considerada como compleja, también lo es la fase preliminar en la que debemos levantar la información de entrada del modelo (<em>inputs</em>), específicamente, la <strong><em>matriz de distancias</em></strong>.</p>
<p>La forma más básica de un modelo <em>VRP</em>, requiere para su resolución la siguiente información mínima de entrada:</p>

		<div class="plus tie-list-shortcode">
<ul>
<li>Número de vehículos</li>
<li>Un depósito</li>
<li>Matriz de distancias</li>
</ul>

		</div>
	
<p>La matriz de distancias es un tabulado que registra la longitud entre cada uno de los nodos del modelo, incluido el nodo depósito. Su tamaño será <em>n x n </em>(siendo <em>n</em> el número de nodos del modelo). Asumiendo, por ejemplo, que tenemos un problema que se compone de 1 depósito y 19 ubicaciones, el modelo requerirá de una <em>matriz de distancias</em> con 400 datos.</p>

		<div class="box note  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>
<p>Recuerdo que cuando abordamos por primera vez este tema en la <em>Universidad</em>, en mi etapa de estudiante, se nos mencionó enfáticamente la complejidad que subyace en este tipo de modelos: El procesamiento, el levantamiento de datos, la consideración de ubicaciones reales, etc.</p>
<p>Pues bien, han pasado algunos años desde entonces, y todo cambió. El modelamiento de este tipo de problemas, la integración con sistemas de información geográfica, la posibilidad de automatizar procesos de captura de información. <em>¡Todo!</em></p>

			</div>
		</div>
	
<p>En artículos anteriores hemos abordado modelos robustos para la <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/problema-de-enrutamiento-de-vehiculos-vrp-con-google-or-tools/"><strong>resolución de problemas VRP</strong></a> y algunas de sus extensiones (<a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/problema-de-enrutamiento-de-vehiculos-capacitados-cvrp-con-google-or-tools/"><strong>CVRP</strong></a>, por ejemplo). El objetivo de este artículo será la de utilizar funciones espaciales de <em>Python</em>, para obtener una matriz de distancias de acuerdo a ubicaciones reales, con el propósito de resolver un modelo VRP básico.</p>
<hr />
<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 Secretaría de Educación de Santiago de Cali, tiene dentro de sus funciones, distribuir el material pedagógico a las diferentes instituciones de formación de la ciudad. La distribución del material se realiza todos los lunes, y para ello, la Secretaría cuenta con dos vehículos con capacidad suficiente para transportar todo el material. El depósito del material (lugar desde donde salen y deben regresar los vehículos), se encuentra en la Alcaldía de Cali; y las instituciones que deben visitarse son 60. Tal como podemos apreciar en la siguiente tabla:</p></blockquote>
<table width="576">
<tbody>
<tr>
<td width="80" style="text-align: center;"><strong>Nodo</strong></td>
<td width="224" style="text-align: center;"><strong>Lugar</strong></td>
<td width="127" style="text-align: center;"><strong>Latitud</strong></td>
<td width="145" style="text-align: center;"><strong>Longitud</strong></td>
</tr>
<tr>
<td style="text-align: center;">0</td>
<td style="text-align: center;">Secretaría de Educación &#8211; Alcaldía</td>
<td style="text-align: center;">3,454431875</td>
<td style="text-align: center;">-76,53421433</td>
</tr>
<tr>
<td style="text-align: center;">1</td>
<td style="text-align: center;"> Comfandi San Nicolás</td>
<td style="text-align: center;">3,453591118</td>
<td style="text-align: center;">-76,52254886</td>
</tr>
<tr>
<td style="text-align: center;">2</td>
<td style="text-align: center;"> Mayor de Santiago de Cali</td>
<td style="text-align: center;">3,451577758</td>
<td style="text-align: center;">-76,51023216</td>
</tr>
<tr>
<td style="text-align: center;">3</td>
<td style="text-align: center;"> Municipal Comfandi</td>
<td style="text-align: center;">3,448107915</td>
<td style="text-align: center;">-76,51074714</td>
</tr>
<tr>
<td style="text-align: center;">4</td>
<td style="text-align: center;"> Internado San Carlos</td>
<td style="text-align: center;">3,446994135</td>
<td style="text-align: center;">-76,51525325</td>
</tr>
<tr>
<td style="text-align: center;">5</td>
<td style="text-align: center;"> León de Greiff</td>
<td style="text-align: center;">3,447979402</td>
<td style="text-align: center;">-76,49993247</td>
</tr>
<tr>
<td style="text-align: center;">6</td>
<td style="text-align: center;"> Nuestra Señora de la Anunciación</td>
<td style="text-align: center;">3,445152112</td>
<td style="text-align: center;">-76,49641342</td>
</tr>
<tr>
<td style="text-align: center;">7</td>
<td style="text-align: center;"> Fernando de Aragón</td>
<td style="text-align: center;">3,437355603</td>
<td style="text-align: center;">-76,51383704</td>
</tr>
<tr>
<td style="text-align: center;">8</td>
<td style="text-align: center;"> Casa Evangélica</td>
<td style="text-align: center;">3,437955337</td>
<td style="text-align: center;">-76,52299947</td>
</tr>
<tr>
<td style="text-align: center;">9</td>
<td style="text-align: center;"> San Alberto Magno</td>
<td style="text-align: center;">3,433028941</td>
<td style="text-align: center;">-76,52707643</td>
</tr>
<tr>
<td style="text-align: center;">10</td>
<td style="text-align: center;"> Santa María Goretty</td>
<td style="text-align: center;">3,433414486</td>
<td style="text-align: center;">-76,50720662</td>
</tr>
<tr>
<td style="text-align: center;">11</td>
<td style="text-align: center;"> San Alberto Magno</td>
<td style="text-align: center;">3,433157456</td>
<td style="text-align: center;">-76,5267331</td>
</tr>
<tr>
<td style="text-align: center;">12</td>
<td style="text-align: center;"> San Ignacio de Loyola</td>
<td style="text-align: center;">3,431786629</td>
<td style="text-align: center;">-76,51733464</td>
</tr>
<tr>
<td style="text-align: center;">13</td>
<td style="text-align: center;"> Nuestro Futuro</td>
<td style="text-align: center;">3,430629992</td>
<td style="text-align: center;">-76,50360174</td>
</tr>
<tr>
<td style="text-align: center;">14</td>
<td style="text-align: center;"> Sabio Caldas</td>
<td style="text-align: center;">3,429087807</td>
<td style="text-align: center;">-76,51660508</td>
</tr>
<tr>
<td style="text-align: center;">15</td>
<td style="text-align: center;"> CREAD</td>
<td style="text-align: center;">3,425060978</td>
<td style="text-align: center;">-76,51488847</td>
</tr>
<tr>
<td style="text-align: center;">16</td>
<td style="text-align: center;"> Licomtec</td>
<td style="text-align: center;">3,416664559</td>
<td style="text-align: center;">-76,51673383</td>
</tr>
<tr>
<td style="text-align: center;">17</td>
<td style="text-align: center;">  Nuestra Señora De La Providencia</td>
<td style="text-align: center;">3,419534772</td>
<td style="text-align: center;">-76,49591989</td>
</tr>
<tr>
<td style="text-align: center;">18</td>
<td style="text-align: center;"> Real Suizo</td>
<td style="text-align: center;">3,415208029</td>
<td style="text-align: center;">-76,49323768</td>
</tr>
<tr>
<td style="text-align: center;">19</td>
<td style="text-align: center;"> Nuevo Edén</td>
<td style="text-align: center;">3,415722099</td>
<td style="text-align: center;">-76,53383559</td>
</tr>
<tr>
<td style="text-align: center;">20</td>
<td style="text-align: center;"> Católico</td>
<td style="text-align: center;">3,413066071</td>
<td style="text-align: center;">-76,53984374</td>
</tr>
<tr>
<td style="text-align: center;">21</td>
<td style="text-align: center;"> Santa María Stella</td>
<td style="text-align: center;">3,427031556</td>
<td style="text-align: center;">-76,55134505</td>
</tr>
<tr>
<td style="text-align: center;">22</td>
<td style="text-align: center;"> Santa Isabel</td>
<td style="text-align: center;">3,40805355</td>
<td style="text-align: center;">-76,50817223</td>
</tr>
<tr>
<td style="text-align: center;">23</td>
<td style="text-align: center;"> Compartir</td>
<td style="text-align: center;">3,431957663</td>
<td style="text-align: center;">-76,47495575</td>
</tr>
<tr>
<td style="text-align: center;">24</td>
<td style="text-align: center;"> Lancaster</td>
<td style="text-align: center;">3,400770816</td>
<td style="text-align: center;">-76,55177421</td>
</tr>
<tr>
<td style="text-align: center;">25</td>
<td style="text-align: center;"> Parroquial Divino Salvador</td>
<td style="text-align: center;">3,397086588</td>
<td style="text-align: center;">-76,54259033</td>
</tr>
<tr>
<td style="text-align: center;">26</td>
<td style="text-align: center;"> Reyes Católicos</td>
<td style="text-align: center;">3,393316667</td>
<td style="text-align: center;">-76,53735466</td>
</tr>
<tr>
<td style="text-align: center;">27</td>
<td style="text-align: center;"> Liceo Anglo del Valle</td>
<td style="text-align: center;">3,387318719</td>
<td style="text-align: center;">-76,51975937</td>
</tr>
<tr>
<td style="text-align: center;">28</td>
<td style="text-align: center;"> Laurence</td>
<td style="text-align: center;">3,383420238</td>
<td style="text-align: center;">-76,52078934</td>
</tr>
<tr>
<td style="text-align: center;">29</td>
<td style="text-align: center;"> Los Almendros</td>
<td style="text-align: center;">3,381278208</td>
<td style="text-align: center;">-76,52023144</td>
</tr>
<tr>
<td style="text-align: center;">30</td>
<td style="text-align: center;"> Bautista</td>
<td style="text-align: center;">3,37720834</td>
<td style="text-align: center;">-76,52327843</td>
</tr>
<tr>
<td style="text-align: center;">31</td>
<td style="text-align: center;"> Lacordaire</td>
<td style="text-align: center;">3,378150837</td>
<td style="text-align: center;">-76,54460736</td>
</tr>
<tr>
<td style="text-align: center;">32</td>
<td style="text-align: center;"> General José María Córdoba</td>
<td style="text-align: center;">3,393573314</td>
<td style="text-align: center;">-76,54932805</td>
</tr>
<tr>
<td style="text-align: center;">33</td>
<td style="text-align: center;"> El Hogar</td>
<td style="text-align: center;">3,390745864</td>
<td style="text-align: center;">-76,5503151</td>
</tr>
<tr>
<td style="text-align: center;">34</td>
<td style="text-align: center;"> Americano</td>
<td style="text-align: center;">3,379093255</td>
<td style="text-align: center;">-76,54688187</td>
</tr>
<tr>
<td style="text-align: center;">35</td>
<td style="text-align: center;"> Santa Filomena</td>
<td style="text-align: center;">3,401969935</td>
<td style="text-align: center;">-76,51345082</td>
</tr>
<tr>
<td style="text-align: center;">36</td>
<td style="text-align: center;"> Tomás Vasconi</td>
<td style="text-align: center;">3,403040928</td>
<td style="text-align: center;">-76,5173132</td>
</tr>
<tr>
<td style="text-align: center;">37</td>
<td style="text-align: center;"> República del Salvador</td>
<td style="text-align: center;">3,404454636</td>
<td style="text-align: center;">-76,52143308</td>
</tr>
<tr>
<td style="text-align: center;">38</td>
<td style="text-align: center;"> Los Andes</td>
<td style="text-align: center;">3,429601077</td>
<td style="text-align: center;">-76,53761216</td>
</tr>
<tr>
<td style="text-align: center;">39</td>
<td style="text-align: center;">Villacolombia</td>
<td style="text-align: center;">3,445493943</td>
<td style="text-align: center;">-76,50169202</td>
</tr>
<tr>
<td style="text-align: center;">40</td>
<td style="text-align: center;">Las Américas</td>
<td style="text-align: center;">3,449220822</td>
<td style="text-align: center;">-76,50594064</td>
</tr>
<tr>
<td style="text-align: center;">41</td>
<td style="text-align: center;">Santa Fe</td>
<td style="text-align: center;">3,442238267</td>
<td style="text-align: center;">-76,50988885</td>
</tr>
<tr>
<td style="text-align: center;">42</td>
<td style="text-align: center;">Evaristo García</td>
<td style="text-align: center;">3,440781776</td>
<td style="text-align: center;">-76,51752778</td>
</tr>
<tr>
<td style="text-align: center;">43</td>
<td style="text-align: center;">Alfredo Vásquez Cobo</td>
<td style="text-align: center;">3,435598366</td>
<td style="text-align: center;">-76,5164549</td>
</tr>
<tr>
<td style="text-align: center;">44</td>
<td style="text-align: center;">Ciudad de Cali</td>
<td style="text-align: center;">3,431143181</td>
<td style="text-align: center;">-76,51272126</td>
</tr>
<tr>
<td style="text-align: center;">45</td>
<td style="text-align: center;">INEM</td>
<td style="text-align: center;">3,482761991</td>
<td style="text-align: center;">-76,49976083</td>
</tr>
<tr>
<td style="text-align: center;">46</td>
<td style="text-align: center;">Olaya Herrera</td>
<td style="text-align: center;">3,478178519</td>
<td style="text-align: center;">-76,51280709</td>
</tr>
<tr>
<td style="text-align: center;">47</td>
<td style="text-align: center;">Guillermo Valencia</td>
<td style="text-align: center;">3,47449459</td>
<td style="text-align: center;">-76,5136654</td>
</tr>
<tr>
<td style="text-align: center;">48</td>
<td style="text-align: center;">José Ignacio Rengifo</td>
<td style="text-align: center;">3,471624543</td>
<td style="text-align: center;">-76,5136654</td>
</tr>
<tr>
<td style="text-align: center;">49</td>
<td style="text-align: center;">Santo Tomás</td>
<td style="text-align: center;">3,45830227</td>
<td style="text-align: center;">-76,5164549</td>
</tr>
<tr>
<td style="text-align: center;">50</td>
<td style="text-align: center;">La Merced</td>
<td style="text-align: center;">3,46271449</td>
<td style="text-align: center;">-76,5024645</td>
</tr>
<tr>
<td style="text-align: center;">51</td>
<td style="text-align: center;">Pedro Antonio Molina</td>
<td style="text-align: center;">3,482804827</td>
<td style="text-align: center;">-76,48761579</td>
</tr>
<tr>
<td style="text-align: center;">52</td>
<td style="text-align: center;">Santa Librada</td>
<td style="text-align: center;">3,46228612</td>
<td style="text-align: center;">-76,52302095</td>
</tr>
<tr>
<td style="text-align: center;">53</td>
<td style="text-align: center;">República de Israel</td>
<td style="text-align: center;">3,463656904</td>
<td style="text-align: center;">-76,51053258</td>
</tr>
<tr>
<td style="text-align: center;">54</td>
<td style="text-align: center;">San Vicente Paul</td>
<td style="text-align: center;">3,466227117</td>
<td style="text-align: center;">-76,50950261</td>
</tr>
<tr>
<td style="text-align: center;">55</td>
<td style="text-align: center;">Manuel María Mallarino</td>
<td style="text-align: center;">3,456760129</td>
<td style="text-align: center;">-76,48851701</td>
</tr>
<tr>
<td style="text-align: center;">56</td>
<td style="text-align: center;">Sebastián de Belalcazar</td>
<td style="text-align: center;">3,460229941</td>
<td style="text-align: center;">-76,48521253</td>
</tr>
<tr>
<td style="text-align: center;">57</td>
<td style="text-align: center;">Liceo Departamental</td>
<td style="text-align: center;">3,423860462</td>
<td style="text-align: center;">-76,5385563</td>
</tr>
<tr>
<td style="text-align: center;">58</td>
<td style="text-align: center;">Libardo Madrid</td>
<td style="text-align: center;">3,422061154</td>
<td style="text-align: center;">-76,54383489</td>
</tr>
<tr>
<td style="text-align: center;">59</td>
<td style="text-align: center;">Metropolitano Santa Anita</td>
<td style="text-align: center;">3,401691038</td>
<td style="text-align: center;">-76,54218265</td>
</tr>
<tr>
<td style="text-align: center;">60</td>
<td style="text-align: center;">San José</td>
<td style="text-align: center;">3,396935816</td>
<td style="text-align: center;">-76,55031511</td>
</tr>
</tbody>
</table>
<p>Se desea desarrollar un plan de rutas para cada uno de los vehículos que logre minimizar la distancia total recorrida, al tiempo que asegure la visita de todos los colegios.</p>
<h3>¿Qué necesitaremos?</h3>

		<div id="que-necesitaremos" data-title="¿Qué necesitaremos?" class="index-title"></div>
	
<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>SkLearn</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>SKLearn</em>, es una librería que integra un conjunto de métodos de aprendizaje automático y minería de datos. En este caso utilizaremos sus funciones para cálculo de distancias entre pares.</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><strong><em>Math: </em></strong>Es una librería que contiene un conjunto de funciones matemáticas básicas.</li>
</ul>

		</div>
	
</div>
<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>
	
<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 visible full-visible"></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>
	
<div id="paso-2-importar-las-librerias-necesarias" data-title="Paso 2: Importar las librerías necesarias" class="index-title visible full-visible"></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>from sklearn.neighbors import DistanceMetric
from math import radians
import pandas as pd
import numpy as np</code></pre>
</div>
<p><span>De esta manera, tenemos todo lo necesario para empezar a desarrollar nuestro código.</span></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>
	
<div id="paso-3-importar-los-datos-desde-excel" data-title="Paso 3: Importar los datos desde Excel" class="index-title visible full-visible"></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/11/datos_colegio.png" alt="datos_colegio" width="577" height="241" class="size-full wp-image-28867 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/datos_colegio.png 577w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/datos_colegio-300x125.png 300w" sizes="(max-width: 577px) 100vw, 577px" /></p>
<p>Utilizaremos ubicaciones reales, y para eso emplearemos las coordenadas de <em>latitud </em>y <em>longitud</em>.</p>

		<div class="box download  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span><span>Puedes descargar el documento de Excel que utilizamos en este ejemplo: </span><a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/colegios.xlsx" target="_blank" rel="noopener"><strong>Base de datos</strong></a>
			</div>
		</div>
	
<p><span>En </span><em>Colaboratory</em><span>, el siguiente fragmento permitirá cargar un archivo al entorno de ejecución:</span></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>colegios.xlsx.</em></p>
<p>La siguiente línea de código permitirá almacenar los datos contenidos en el documento en un <em>Dataframe</em><span> </span>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('colegios.xlsx')</code></pre>
</div>
<p><span>Podemos en cualquier momento confirmar si la carga de los datos se ha realizado correctamente, para eso imprimiremos las primeras cinco filas del  </span><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><span>Al ejecutar esta instrucción tenemos la siguiente salida (Una vista de las 5 primeras filas del marco de datos):</span></p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/data_head.png" alt="data_head" width="534" height="257" class="size-full wp-image-28869 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/data_head.png 534w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/data_head-300x144.png 300w" sizes="(max-width: 534px) 100vw, 534px" /></p>
<p>Podemos observar que los datos han sido perfectamente cargados, y que ahora se encuentran almacenados en la variable (<em>DataFrame</em>): <em><strong>data</strong></em>.</p>
<h3>Paso 4: Convertir las coordenadas de latitud y longitud en radianes</h3>

		<div id="paso-4-convertir-las-coordenadas-de-latitud-y-longitud-en-radianes" data-title="Paso 4: Convertir las coordenadas de latitud y longitud en radianes" class="index-title"></div>
	
<p>La mayor parte de las funciones de cálculo de distancias de <em>Sklearn</em> (<em>Scipy</em>) toman las entradas como radianes. Por esta razón, debemos convertir las coordenadas en radianes.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>data['Latitud'] = np.radians(data['Latitud'])
data['Longitud'] = np.radians(data['Longitud'])

#Creamos una matriz bidimensional con la latitud y la longitud en radianes
data[['Latitud','Longitud']].to_numpy()</code></pre>
</div>
<p>Al ejecutar estas líneas, las coordenadas quedarán convertidas en radianes.</p>
<h3>Paso 5: Declarar el tipo de métrica de distancias que se utilizará</h3>

		<div id="paso-5-declarar-el-tipo-de-metrica-de-distancias-que-se-utilizara" data-title="Paso 5: Declarar el tipo de métrica de distancias que se utilizará" class="index-title"></div>
	
<p>En este punto quiero detenerme para mencionar que existen decenas de funciones métricas de distancia rápida. Algunas de las más utilizadas son destinadas a espacios vectoriales de valor real, como: <em>distancias euclidianas, distancias de Manhattan, </em>etc. Prácticas cuando se emplean con coordenadas cartesianas.</p>
<p>En nuestro caso, ya que utilizamos ubicaciones reales y contamos con coordenadas de latitud y de longitud, podemos emplear una función de distancia de vectores bidimensionales que considere la curvatura de la tierra; tal es el caso de las <em>Distancias Haversine (Semiverseno)</em>.</p>

		<div class="box note  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>La distancia de Haversine (o gran círculo) es la distancia angular entre dos puntos en la superficie de una esfera. Se supone que la primera coordenada de cada punto es la latitud, la segunda es la longitud, expresada en radianes.</p>
<p>Como la Tierra es casi esférica, la fórmula Haversine proporciona una buena aproximación de la distancia entre dos puntos de la superficie terrestre, con un error de menos del 1% en promedio.
			</div>
		</div>
	
<p>Si quieren conocer la fórmula empleada para el cálculo de cada distancia <em>haversine</em>:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/haversine.png" alt="haversine" width="596" height="54" class="size-full wp-image-28870 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/haversine.png 596w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/haversine-300x27.png 300w" sizes="(max-width: 596px) 100vw, 596px" /></p>
<p>Para efectos de nuestro desarrollo, utilizaremos la librería <em>SKLearn</em> para calcular nuestras distancias. Veamos:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>dist = DistanceMetric.get_metric('haversine')

dist.pairwise(data[['Latitud','Longitud']].to_numpy())*6373</code></pre>
</div>
<p>El fragmento anterior crea un objeto con métricas <em>haversine</em>, y luego utiliza la función <em>pairwise()</em>, para calcular la distancia entre cada uno de los elementos de la matriz (nodos). Cada distancia calculada multiplica el escalar 6373 (radio esférico de la tierra), para calcular las distancias en kilómetros (Para millas multiplicar por 3798).</p>
<h3>Paso 6: Crear un marco de datos (tabulado) de matriz de distancias</h3>

		<div id="paso-6-crear-un-marco-de-datos-tabulado-de-matriz-de-distancias" data-title="Paso 6: Crear un marco de datos (tabulado) de matriz de distancias" class="index-title"></div>
	
<p>Una vez que ejecutemos el paso anterior, tendremos nuestras distancias entre nodos calculadas; lo que haremos en este paso será organizar dichos valores en forma de marco de datos o tabulado, obteniendo nuestra matriz de distancias.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>distance_matrix = pd.DataFrame(dist.pairwise(data[['Latitud','Longitud']].to_numpy())*6373)

distance_matrix.head()</code></pre>
</div>
<p><span>Al ejecutar esta instrucción tenemos la siguiente salida (Una vista de las 5 primeras filas del marco de datos):</span></p>
<figure id="attachment_28871" aria-describedby="caption-attachment-28871" style="width: 601px" class="wp-caption aligncenter"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/matriz_distancias.png" alt="matriz_distancias" width="601" height="274" class="size-full wp-image-28871" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/matriz_distancias.png 601w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/matriz_distancias-300x137.png 300w" sizes="(max-width: 601px) 100vw, 601px" /><figcaption id="caption-attachment-28871" class="wp-caption-text">Vista recortada</figcaption></figure>
<p>&nbsp;</p>
<p>Podemos imprimir la matriz completa:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>print(distance_matrix)</code></pre>
</div>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/matriz_distancias_2.png" alt="matriz_distancias_2" width="624" height="304" class="size-full wp-image-28872 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/matriz_distancias_2.png 624w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/matriz_distancias_2-300x146.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></p>

		<div class="box note  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Puedes utilizar Google Maps para validar la diferencia entre las distancias obtenidas mediante Haversine y las obtenidas mediante Google.
			</div>
		</div>
	
<hr />
<p>Hasta este punto hemos logrado nuestro objetivo principal, que era <strong>obtener una matriz de distancias</strong> de forma automática tomando como base las coordenadas de longitud y latitud de un conjunto de nodos. Específicamente hemos obtenido 3721 valores de distancia en cuestión de segundos (empleando la métrica <em>haversine</em>).</p>
<p>Lógicamente, estos valores de referencia en la práctica presentan algunas desventajas, como, por ejemplo, la dificultad subyacente de atravesar las ciudades por lugares diferentes que las vías dispuestas para ello. Sin embargo, estos valores pueden ser muy útiles como datos de entrada de un modelo VRP para obtener la secuencia del plan de rutas.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Un método más preciso para obtener una matriz de distancias y tiempos consiste en utilizar la API Distance Matrix de Google Maps. Sin embargo, este es un servicio de pago que abordaremos en artículos posteriores
			</div>
		</div>
	
<hr />
<p>Lo siguiente que haremos, para finalizar nuestro caso de aplicación, será utilizar la matriz de distancias obtenida, en un <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/problema-de-enrutamiento-de-vehiculos-vrp-con-google-or-tools/"><strong>modelo VRP básico</strong></a> (Si desea profundizar en el modelo, visite el artículo).</p>
<h3>Paso 7: Instalar Google Or Tools</h3>

		<div id="paso-7-instalar-google-or-tools" data-title="Paso 7: Instalar Google Or Tools" class="index-title"></div>
	
<p>Es necesario instalar la librería de Google Or Tools en nuestro entorno de <em>Colaboratory</em> para poder utilizar nuestro modelo VRP.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>!pip install ortools</code></pre>
</div>
<p>Al ejecutar esta instrucción instalaremos nuestro solucionador del modelo de enrutamiento.</p>
<h3>Paso 8: Incorporar el modelo VRP (Previamente formulado)</h3>

		<div id="paso-8-incorporar-el-modelo-vrp-previamente-formulado" data-title="Paso 8: Incorporar el modelo VRP (Previamente formulado)" class="index-title"></div>
	
<p>Como ya lo mencionamos, contamos con un modelo debidamente formulado para resolver problemas VRP básicos. Lo único que modificaremos serán los datos de entrada: <em>Matriz de distancias (distance_matrix), Número de vehículos (2), Depósito (Nodo 0).</em></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>"""Problema de enrutamiento de vehículos simple (VRP)

Autor: MSc. Ing. Bryan Salazar López 2021

"""

from ortools.constraint_solver import routing_enums_pb2
from ortools.constraint_solver import pywrapcp


def create_data_model():
    """Datos de entrada del modelo"""
    #Llamaremos la matriz de distancia previamente obtenida
    #Emplearemos dos vehículos como lo indica el problema
    #Definiremos el nodo 0 como el depósito (Secretaría)
    data = {}
    data['matriz_distancias'] = distance_matrix
    data['num_vehiculos'] = 2
    data['deposito'] = 0
    return data


def print_solution(data, manager, routing, solution):
    """Imprime la solución sobre la consola"""
    max_route_distance = 0
    for vehicle_id in range(data['num_vehiculos']):
        index = routing.Start(vehicle_id)
        plan_output = 'Ruta para el vehículo {}:\n'.format(vehicle_id)
        route_distance = 0
        while not routing.IsEnd(index):
            plan_output += ' {} -&gt; '.format(manager.IndexToNode(index))
            previous_index = index
            index = solution.Value(routing.NextVar(index))
            route_distance += routing.GetArcCostForVehicle(
                previous_index, index, vehicle_id)
        plan_output += '{}\n'.format(manager.IndexToNode(index))
        plan_output += 'Distancia de la ruta: {}km\n'.format(route_distance)
        print(plan_output)
        max_route_distance += route_distance
        max_route_distance = max(route_distance, max_route_distance)
    print('Distancia total de todas las rutas: {}km'.format(max_route_distance))



def main():
    """Punto de entrada del programa"""
    # Invocar la data de entrada.
    data = create_data_model()

    # Crea el administrador del índice de rutas.
    manager = pywrapcp.RoutingIndexManager(len(data['matriz_distancias']),
                                           data['num_vehiculos'], data['deposito'])

    # Crea el modelo de enrutamiento.
    routing = pywrapcp.RoutingModel(manager)


    # Crea y registra una devolución de llamada de distancia.
    def distance_callback(from_index, to_index):
        """Retorna la distancia entre dos nodos."""
        # Convierte desde la variable de ruta Index hasta la matriz de distancia NodeIndex.
        from_node = manager.IndexToNode(from_index)
        to_node = manager.IndexToNode(to_index)
        return data['matriz_distancias'][from_node][to_node]

    transit_callback_index = routing.RegisterTransitCallback(distance_callback)

    # Define el costo de cada arco.
    routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index)

    # Adhiere la dimensión de distancia.
    dimension_name = 'Distancia'
    routing.AddDimension(
        transit_callback_index,
        0,  # Sin holgura
        3000,  # Distancia máxima de viaje del vehículo
        True,  # Iniciar el acumulador en cero
        dimension_name)
    distance_dimension = routing.GetDimensionOrDie(dimension_name)
    distance_dimension.SetGlobalSpanCostCoefficient(100)

    # Configurar los parámetros de búsqueda.
    search_parameters = pywrapcp.DefaultRoutingSearchParameters()
    search_parameters.first_solution_strategy = (
        routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC)

    # Solucionador del problema.
    solution = routing.SolveWithParameters(search_parameters)

    # Imprimir la solución en la consola.
    if solution:
        print_solution(data, manager, routing, solution)
    else:
        print('No se encuentra solución !')


if __name__ == '__main__':
    main()</code></pre>
</div>
<p>Al ejecutar el modelo tendremos:</p>
<figure id="attachment_28873" aria-describedby="caption-attachment-28873" style="width: 1736px" class="wp-caption aligncenter"><a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/vrp_rutas.png" target="_blank" rel="noopener"><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/vrp_rutas.png" alt="vrp_rutas" width="1736" height="176" class="wp-image-28873 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/vrp_rutas.png 1736w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/vrp_rutas-300x30.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/vrp_rutas-1024x104.png 1024w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/vrp_rutas-768x78.png 768w, https://ingenieriaindustrialonline.com/wp-content/uploads/2021/11/vrp_rutas-1536x156.png 1536w" sizes="(max-width: 1736px) 100vw, 1736px" /></a><figcaption id="caption-attachment-28873" class="wp-caption-text">Clic para ver en una pestaña nueva</figcaption></figure>
<p>&nbsp;</p>
<p>Un plan de rutas para los dos vehículos que parten desde los depósitos (ahí mismo finalizan sus recorridos), y visitan la totalidad de los nodos. La distancia total optimizada es equivalente a 33 km.</p>
<p>Por último, también es posible exportar la <strong>matriz de distancias</strong> que hemos obtenido, para eso utilizaremos el siguiente fragmento:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>distance_matrix.to_csv('distance_matrix.csv')
files.download('distance_matrix.csv')</code></pre>
</div>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>
<p><span>Los contribuciones de la comunidad han revelado que el modelo VRP de Or Tools maneja valores enteros para las distancias en la matriz. Esto significa que, por ejemplo, una distancia de 0.58 km se trataría como un entero, lo que puede causar pérdida de precisión en los resultados. Por esta razón, recomendamos trabajar con la unidad más pequeña de longitud posible, como metros, y convertir las distancias antes de ejecutar el modelo de ruteo. Por ejemplo, 0.58 km se convertiría en 580 metros, evitando pérdida de precisión. Además, es importante tener en cuenta que esto afectaría la distancia máxima del viaje del vehículo, la cual debemos modificar, en consecuencia.</span></p>

			</div>
		</div>
	
<hr />
<p>El código completo de este desarrollo lo puedes encontrar en nuestro cuaderno: <a href="https://colab.research.google.com/drive/1YZIpYWOrTGBeGwRl9iOhWAwNH5WAVpWw?usp=sharing" target="_blank" rel="noopener"><em><strong>Matriz de distancias para modelar un VRP</strong></em></a>.</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/como-calcular-una-matriz-de-distancias-para-modelar-un-vrp/">¿Cómo calcular una matriz de distancias para modelar un VRP?</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/como-calcular-una-matriz-de-distancias-para-modelar-un-vrp/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
