<?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>Solver archivos &#187; Ingenieria Industrial Online</title>
	<atom:link href="https://ingenieriaindustrialonline.com/tag/solver/feed/" rel="self" type="application/rss+xml" />
	<link>https://ingenieriaindustrialonline.com/tag/solver/</link>
	<description>ingenieriaindustriaonline.com</description>
	<lastBuildDate>Wed, 13 Oct 2021 16:44:00 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/cropped-faVicon-32x32.png</url>
	<title>Solver archivos &#187; Ingenieria Industrial Online</title>
	<link>https://ingenieriaindustrialonline.com/tag/solver/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ejercicios de programación lineal (cuarta parte)</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-4/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-4/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Mon, 30 Nov 2020 22:27:17 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Ejercicios resueltos]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<category><![CDATA[Solver]]></category>
		<guid isPermaLink="false">https://ingenieriaindustrialonline.com/?p=24251</guid>

					<description><![CDATA[<p>A continuación, presentamos la solución a una serie de ejercicios de programación lineal. Encontrarán diversas variaciones del problema básico, aplicadas en diversos contextos. Los invitamos también a repasar los conceptos relacionados con: Problema No. 16 Una empresa elabora 2 productos A y B, que proporcionan $800 y $1100. Los dos deben pasar por 3 procesos. &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-4/">Ejercicios de programación lineal (cuarta parte)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="cc-m-6082803313" class="j-module n j-header ">
<p>A continuación, presentamos la solución a una serie de ejercicios de programación lineal. Encontrarán diversas variaciones del problema básico, aplicadas en diversos contextos. Los invitamos también a repasar los conceptos relacionados con:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/"><strong>Programación lineal </strong></a></li>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-entera-con-google-or-tools/"><strong>Programación lineal entera </strong></a></li>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-mixta-con-google-or-tools/"><strong>Programación mixta</strong></a></li>
</ul>

		</div>
	
<h2 id="cc-m-header-6082803313" class="">Problema No. 16</h2>
</div>
<div id="cc-m-6082803413" class="j-module n j-text ">
<blockquote class="aligncenter quote-simple "><p>Una empresa elabora 2 productos A y B, que proporcionan $800 y $1100. Los dos deben pasar por 3 procesos. El articulo A tarda 10 min en proceso de corte, 15 min en costura y 12 min en detallado. El B tarda 12 min, 18 min y 10 min respectivamente. Se dispone de tiempo de corte al día de 59 h, 70 h de costura y 65 h de detallado. Se debe cumplir también una orden especial de un cliente de 30 y 35 unidades diarias, respectivamente. ¿Cuántos productos de cada tipo debe producir al día?</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-24254" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-16-Programacion-lineal.png" alt="Problema 16 Programación lineal" width="574" height="138" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-16-Programacion-lineal.png 574w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-16-Programacion-lineal-300x72.png 300w" sizes="(max-width: 574px) 100vw, 574px" /></p>
<p><em>Como Asistente del Departamento de Producción, usted necesita determinar un plan de producción diario óptimo.</em></p>
<div id="cc-m-6082803813" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>A = Cantidad de unidades de producto «A» a fabricar diariamente</p>
<p>B = Cantidad de unidades de producto «B» a fabricar diariamente</p>
<p><strong>Restricciones</strong></p>
<p>10A + 12B &lt;=3540 (Disponibilidad de minutos de Corte)</p>
<p>15A + 18B &lt;= 4200 (Disponibilidad de minutos de Costura)</p>
<p>12A + 10B &lt;= 3900 (Disponibilidad de minutos de Detallado)</p>
<p>A &gt;= 30 (Demanda mínima «Orden especial»)</p>
<p>B &gt;= 35 (Demanda mínima «Orden especial»)</p>
<p>A; B = Enteros</p>
<p><strong>Función objetivo</strong></p>
<p>Zmax = 800A + 1100B</p>
<p><strong>Solución del modelo mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-24255" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-16.png" alt="Solución problema 16" width="529" height="362" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-16.png 529w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-16-300x205.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-16-220x150.png 220w" sizes="(max-width: 529px) 100vw, 529px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<div id="cc-m-6082804213" class="j-module n j-header ">
<h2 id="cc-m-header-6082804213" class="">Problema No. 17 (<em>Valor de</em>)</h2>
</div>
<div id="cc-m-6082804313" class="j-module n j-text ">
<blockquote class="aligncenter quote-simple "><p>Un laboratorio de productos veterinarios distribuye un producto en tres formas de cajas distintas A, B y C. Las cajas del tipo A tienen un peso de 250 gramos y un precio de 600 pesos, las de tipo B pesan 500 gramos y su precio es 1080 pesos mientras que las C pesan 1 kilo y cuestan 1980 pesos. A una veterinaria le suministran un lote de 5 cajas con un peso de 2,5 kilos por un importe de 5.340 pesos.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-24257" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-17-Programacion-lineal.png" alt="Problema 17 Programación lineal" width="405" height="137" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-17-Programacion-lineal.png 405w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-17-Programacion-lineal-300x101.png 300w" sizes="(max-width: 405px) 100vw, 405px" /></p>
<p><em>¿Cuántas cajas de cada tipo se enviaron a la veterinaria?</em></p>
<div id="cc-m-6083122313" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
</div>
<div id="cc-m-6082804413" class="j-module n j-text ">
<p>A = Cantidad de cajas tipo A que se enviaron a la veterinaria en el lote</p>
<p>B = Cantidad de cajas tipo B que se enviaron a la veterinaria en el lote</p>
<p>B = Cantidad de cajas tipo C que se enviaron a la veterinaria en el lote</p>
<p><strong>Restricciones</strong></p>
<p>A + B + C = 5</p>
<p>250A + 500B + 1000C = 2500</p>
<p>600A + 1080B + 1980C = 5340</p>
<p>A;B;C = Enteros</p>
<p><strong>Función objetivo (Valor de)</strong></p>
<p>La función objetivo de este problema no consiste en minimizar ni maximizar una ecuación, sino establecer una igualdad, ya sea en función de la restricción de peso o importe.</p>
<p>5340 = 600A + 1080B + 1980C</p>
</div>
<div id="cc-m-6082804513" class="j-module n j-text ">
<p><strong>Solución mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-24258" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-17.png" alt="Solución problema 17" width="591" height="343" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-17.png 591w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-17-300x174.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<div id="cc-m-6082804813" class="j-module n j-header ">
<h2 id="cc-m-header-6082804813" class="">Problema No. 18 (Inventarios)</h2>
</div>
<div id="cc-m-6082804913" class="j-module n j-text "></div>
<div id="cc-m-6083151613" class="j-module n j-imageSubtitle ">
<blockquote class="aligncenter quote-simple "><p>Una librería requiere establecer la demanda de una novela para los próximos 4 meses. Actualmente, dispone de 110 unidades en inventario. La proyección de la demanda es la siguiente:</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-24263" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-18-Programacion-lineal.png" alt="Problema 18 Programación lineal" width="457" height="133" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-18-Programacion-lineal.png 457w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-18-Programacion-lineal-300x87.png 300w" sizes="(max-width: 457px) 100vw, 457px" /></p>
<div id="cc-m-6082804913" class="j-module n j-text "></div>
<div id="cc-m-6083151613" class="j-module n j-imageSubtitle ">
<blockquote class="aligncenter quote-simple "><p>La librería tiene la capacidad de adquirir hasta 300 libros cada mes, a un costo de $4.000 por libro.</p>
<p>Los libros producidos adquiridos en un mes pueden ser vendidos en ese período o quedar almacenados para otro mes. Cada unidad almacenada tiene un costo adicional de $ 300 por mes.</p>
<p>Se debe determinar el modelo final que permita satisfacer la demanda y a un costo mínimo.</p></blockquote>
<p>&nbsp;</p>
</div>
<div id="cc-m-6082805013" class="j-module n j-text ">
<p><strong>Definición de las variables</strong></p>
<p>X1 = Cantidad de libros a comprar en el mes 1.</p>
<p>X2 = Cantidad de libros a comprar en el mes 2.</p>
<p>X3 = Cantidad de libros a comprar en el mes 3.</p>
<p>X4 = Cantidad de libros a comprar en el mes 4.</p>
<p>Ii = Inventario inicial.</p>
<p>I1 = Inventario al final del mes 1.</p>
<p>I2 = Inventario al final del mes 2.</p>
<p>I3 = Inventario al final del mes 3.</p>
<p>&nbsp;</p>
<p><strong>Restricciones</strong></p>
<p>Ii = 110 (Inventario inicial)</p>
<p><em>Restricciones para satisfacer la demanda proyectada</em></p>
<p>X1 + Ii &gt;= 130 (Compras mes 1 + Inventario inicial &gt;= demanda mes 1)</p>
<p>X2 + I1 &gt;= 290 (Compras mes 2 + Inventario final mes 1 &gt;= demanda mes 2)</p>
<p>X3 + I2 &gt;= 190 (Compras mes 3 + Inventario final mes 2 &gt;= demanda mes 3)</p>
<p>X4 + I3 = 150 (Compras mes 4 + Inventario final mes 3 = demanda mes 4)</p>
<p>Todas las variables = Enteros</p>
<p>&nbsp;</p>
<p><em>Restricciones de balance (Definición de variables de inventarios)</em></p>
<p>I1 = Ii + X1 &#8211; 130 (Inventario final del mes 1 = Inventario inicial + Compras mes 1 &#8211; Demanda mes 1)</p>
<p>I2 = I1 + X2 &#8211; 290 (Inventario final del mes 2 = Inventario final 1 + Compras mes 2 &#8211; Demanda mes 2)</p>
<p>I3 = I2 + X3 &#8211; 190 (Inventario final del mes 3 = Inventario final 2 + Compras mes 3 &#8211; Demanda mes 3)</p>
</div>
<p>&nbsp;</p>
<p><em>Restricciones de capacidad de compra</em></p>
<p>X1 &lt;= 300</p>
<p>X2 &lt;= 300</p>
<p>X3 &lt;= 300</p>
<p>X4 &lt;= 300</p>
<p>&nbsp;</p>
</div>
<p><em>Enteros</em></p>
<p>X1;X2;X3;X4 = Enteros</p>
<p>&nbsp;</p>
<div id="cc-m-6083151613" class="j-module n j-imageSubtitle ">
<div id="cc-m-6082805013" class="j-module n j-text ">
<p><strong>Función Objetivo</strong></p>
<p>Zmin = 4000(X1 + X2 + X3 + X4) + 300(I1 + I2 + I3)</p>
</div>
<div id="cc-m-6082805113" class="j-module n j-text ">
<p><strong>Solución obtenida mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-24266" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-18.png" alt="Solución problema 18" width="572" height="565" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-18.png 572w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-18-300x296.png 300w" sizes="(max-width: 572px) 100vw, 572px" /></p>
<p><em>*La respuesta de este ejercicio parece evidente, la formulación tomaría relevancia en la medida en que varíen los precios de adquisición de libros de un mes a otro.</em></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<div id="cc-m-6082803313" class="j-module n j-header ">
<h2 id="cc-m-header-6082803313" class="">Problema No. 19</h2>
</div>
<div id="cc-m-6082803413" class="j-module n j-text ">
<blockquote class="aligncenter quote-simple "><p>Una empresa posee 3 fábricas instaladas a la orilla de un río; cada una de las fábricas arroja 2 tipos de contaminante al río. Si la basura es procesada en cada fábrica, es posible reducir el contaminante vertido al río. Cuesta 20 dólares procesar una tonelada de basura de la fábrica 1, reduciendo en 0,35 toneladas el contaminante 1 y en 0,25 toneladas el contaminante 2. Cuesta 12 dólares procesar una tonelada de basura de la fábrica 2, reduciendo en 0,2 toneladas el contaminante 1 y en 0,25 toneladas el contaminante 2. Cuesta 10 dólares procesar una tonelada de basura de la fábrica 3, reduciendo en 0,1 toneladas el contaminante 1 y en 0,45 toneladas el contaminante 2.</p>
<p>Por otro lado, la ley obliga a la empresa a reducir la contaminación total vertida al río en al menos 35 toneladas del contaminante 1 y en al menos 40 toneladas del contaminante 2. Cada fábrica tiene la posibilidad de procesar a lo más 70 toneladas de basura.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-24305" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-19-Programacion-lineal.png" alt="Problema 19 Programación lineal" width="470" height="148" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-19-Programacion-lineal.png 470w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Problema-19-Programacion-lineal-300x94.png 300w" sizes="(max-width: 470px) 100vw, 470px" /></p>
<p><em>Formule y resuelva un modelo de programación Lineal para ayudar a la empresa a minimizar el costo de</em><br />
<em>reducir la contaminación. Defina sus variables de decisión, explique todas las restricciones y supuestos del</em><br />
<em>modelo.</em></p>
<div id="cc-m-6082803813" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>A = Cantidad de toneladas procesadas en la fábrica 1</p>
<p>B = Cantidad de toneladas procesadas en la fábrica 2</p>
<p>C = Cantidad de toneladas procesadas en la fábrica 3</p>
<p><strong>Restricciones</strong></p>
<p>0.35A + 0.20B + 0.10C &gt;= 35 (Reducción mínima contaminante 1)</p>
<p>0.25A + 0.25B + 0.45C &gt;= 40 (Reducción mínima contaminante 2)</p>
<p>12A + 10B &lt;= 3900 (Disponibilidad de minutos de Detallado)</p>
<p>A &lt;= 70 (Capacidad de procesamiento de la fábrica 1)</p>
<p>B &lt;= 70 (Capacidad de procesamiento de la fábrica 2)</p>
<p>C &lt;= 70 (Capacidad de procesamiento de la fábrica 3)</p>
<p><strong>Función objetivo</strong></p>
<p>Zmix = 20A + 12B + 10C</p>
<p><strong>Solución del modelo mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-24307" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-19.png" alt="Solución problema 19" width="570" height="366" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-19.png 570w, https://ingenieriaindustrialonline.com/wp-content/uploads/2020/11/Solucion-problema-19-300x193.png 300w" sizes="(max-width: 570px) 100vw, 570px" /></p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Repasa los conceptos de este tema en: <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/"><strong>Programación lineal</strong></a>
			</div>
		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-4/">Ejercicios de programación lineal (cuarta parte)</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/ejercicios-de-programacion-lineal-4/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Planeación agregada mediante programación lineal</title>
		<link>https://ingenieriaindustrialonline.com/produccion/planeacion-agregada-mediante-programacion-lineal/</link>
					<comments>https://ingenieriaindustrialonline.com/produccion/planeacion-agregada-mediante-programacion-lineal/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Sun, 16 Jun 2019 17:27:40 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Producción]]></category>
		<category><![CDATA[Google OR-Tools]]></category>
		<category><![CDATA[Microsoft Excel]]></category>
		<category><![CDATA[Planeación agregada]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Solver]]></category>
		<guid isPermaLink="false">http://contentlab.co/ingenieria/?p=1319</guid>

					<description><![CDATA[<p>Recordemos que la planeación agregada es un proceso utilizado para determinar una estrategia de forma anticipada que permita satisfacer los requerimientos (demanda) del sistema, al mismo tiempo que busca optimizar los recursos del mismo; cuyo desarrollo se lleva a cabo en el corto y mediano plazo. Variables y consideraciones A la hora de elaborar un plan agregado se &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/produccion/planeacion-agregada-mediante-programacion-lineal/">Planeación agregada mediante programación lineal</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Recordemos que la <a title="Planeación Agregada" href="https://ingenieriaindustrialonline.com/produccion/planeacion-agregada/" target="_blank" rel="noopener"><strong>planeación agregada</strong></a> es un proceso utilizado para determinar una estrategia de forma anticipada que permita satisfacer los requerimientos (demanda) del sistema, al mismo tiempo que busca optimizar los recursos del mismo; cuyo desarrollo se lleva a cabo en el corto y mediano plazo.</p>
<h2>Variables y consideraciones</h2>
<p>A la hora de elaborar un plan agregado se debe tener en cuenta que existen una serie de consideraciones que rigen la estrategia, ya sea por el horizonte de tiempo, por el criterio de las decisiones o por las restricciones que delimitan el sistema.</p>
<p><em>A continuación detallaremos estas consideraciones:</em></p>
<h3><em>Horizonte de tiempo</em></h3>
<p>Básicamente, la planeación agregada considera un horizonte de tiempo de corto y medio plazo, es decir que suele manejar un periodo entre 6 y 18 meses de planificación.</p>
<h3><em>Criterios de decisión</em></h3>
<p>El principal objetivo de la <strong>planeación agregada</strong> es aumentar la productividad, de manera que debe acercar a la organización a su meta económica. En este orden de ideas, la búsqueda de la <strong>maximización del beneficio</strong> se alinea con los objetivos del plan agregado, entendiéndose como la diferencia entre los ingresos y los gastos operativos, por ende es válido considerar la <strong>minimización de los <a href="https://ingenieriaindustrialonline.com/produccion/costos-de-produccion/" target="_blank" rel="noopener">costos totales </a></strong>(mientras no se afecten los ingresos) como <strong>criterio de decisión de la planeación agregada.</strong></p>
<p>Teniendo en cuenta lo anterior, es necesario evaluar con espíritu crítico y perspectiva sistémica, todas las relaciones entre los recursos disponibles para llevar a cabo el plan y sus implicaciones en los costos totales. De manera que pueden identificarse los costos asociados a los siguientes factores:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Mano de obra: Costo de tiempo normal.</li>
<li>Contratación: Costos asociados a la búsqueda de mano de obra, a la contratación misma y a las actividades de inducción.</li>
<li>Despidos: Costos legales (compensaciones e indemnizaciones) de despedir empleados.</li>
<li>Horas extras.</li>
<li>Subcontratación (Outsourcing).</li>
<li>Inventario: Costos de mantenimiento de inventario, incluso costos de oportunidad por lucro cesante.</li>
<li>Ruptura de inventario (faltantes).</li>
<li>Costos de financiación del plan.</li>
</ul>

		</div>
	
<h3><em>Restricciones</em></h3>
<p>Todos los sistemas objetos de planeación agregada se encuentran sujetos a restricciones y de diversos tipos, tales como:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Restricciones de demanda: P.ej: Requerimientos por periodo.</li>
<li>Restricciones laborales: P.ej: Máximo número de horas extras posibles.</li>
<li>Restricciones de espacio: P.ej: Máxima capacidad de almacenamiento.</li>
<li>Restricciones de la cadena de valor: P.ej: Capacidad máxima del proveedor.</li>
<li>Restricciones de eficiencia: P.ej: Curva de aprendiza en empleados nuevos.</li>
</ul>

		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Modelos de programación lineal en planeación agregada</h2>
<p>Existen diversos métodos empleados en la creación de un plan agregado, entre los que se destacan la <strong><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/" target="_blank" rel="noopener noreferrer">programación lineal</a></strong>, reglas de decisión por búsqueda, programación por objetivos, programación dinámica, o métodos heurísticos (ensayo y error).</p>
<p>La programación lineal por sus características innatas de modelación libre, se constituye como una herramienta poderosa de resolución de planes agregados, de manera que puede considerar tantas restricciones como la realidad del sistema lo presenten, al mismo tiempo que se enfoca en soluciones óptimas, a diferencia de los <a title="Planeación Agregada" href="https://ingenieriaindustrialonline.com/produccion/planeacion-agregada/" target="_blank" rel="noopener"><strong>métodos heurísticos de comparación de alternativas</strong></a>.</p>

		<div class="box info  alignleft">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>A lo largo del tiempo se han desarrollado modelos de programación lineal aplicados a la planeación agregada, tales como el método de transporte de Bowman, el método de Hanssman-Hess, que permite concluir que pueden desarrollarse tantos modelos como existan casos de estudio, y variarán de acuerdo a las restricciones que consideren, haciendo modelos más o menos robustos.
			</div>
		</div>
	
<p>A continuación, se detallará un modelo de programación lineal mixta propuesto por el autor, que considerará la mayor parte de los criterios de decisión contemplados en los métodos heurísticos de comparación de alternativas, en búsqueda de una solución óptima.</p>
<h3>Modelo de programación lineal mixta aplicado a Planeación Agregada</h3>
<p>En el modelo propuesto las decisiones se toman de acuerdo con una fuerza de trabajo flexible considerando tiempo extraordinario de trabajo y una tasa de producción que contempla un factor de eficiencia reducida para operarios nuevos en el periodo de contratación, simulando el impacto de la curva de aprendizaje.</p>
<p>Los costos que afectan la función objetivo se expresan en «costos por unidades agregadas» y «costos por operario», e incluye los componentes de:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li><em>Costos de nómina normal.</em></li>
<li><em>Costos de nómina en tiempo extraordinario.</em></li>
<li><em>Costos de contratación de personal.</em></li>
<li><em>Costos de despido de personal.</em></li>
<li><em>Costos de subcontratación y maquila.</em></li>
<li><em>Costos totales de inventario.</em></li>
</ul>

		</div>
	
<p>Además, los costos asociados al tiempo normal y extraordinario relacionados con los operarios nuevos también contemplan el factor de eficiencia reducida por periodo.</p>
<h2><em>Datos de entrada requeridos</em></h2>
<p><em>El modelo que hemos preparado requiere de los siguientes datos de entrada:</em></p>
<p><em><strong>m </strong></em>= Número de periodos del plan</p>
<p><em><strong>días </strong></em>= Número de días de cada periodo del plan</p>
<p><em><strong>requerimientos </strong></em>= Los requerimientos estimados de cada periodo del plan (unidades)</p>
<p><em><strong>Jornada laboral </strong></em>= Jornada laboral en términos de horas / día</p>
<p><em><strong>Tiempo unitario </strong></em>= Tiempo empleado en producir una unidad (horas / trabajador / unidad)</p>
<p><em><strong>Eficiencia </strong></em>= En este modelo consideramos esta variable como factor de eficiencia de los operarios nuevos (curva de aprendizaje) &#8211; Solo la consideramos durante el primer periodo de producción del operario</p>
<p><em><strong>Horas extras máx. </strong></em><em>= </em>Cantidad máxima de horas extras que puede emplear un operario por periodo</p>
<p><em><strong>Unidades subcontratadas máx. </strong>= </em>Cantidad máxima de unidades que se pueden subcontratar por periodo</p>
<p><em><strong>Inventario Inicial </strong>= </em>Inventario Inicial dado en unidades</p>
<p><em><strong>Costo normal </strong></em><em>= </em>Costo de tiempo normal ($ / hora)</p>
<p><em><strong>Costo extra </strong></em><em>= </em>Costo de tiempo extra ($ / hora)</p>
<p><em><strong>Costo de inventario </strong></em>= Costo de tener unidades en inventario ($ / unidad / periodo)</p>
<p><em><strong>Costo de subcontratar </strong></em><em>= </em>Costo de tercerizar la fabricación de unidades ($ / unidad)</p>
<p><em><strong>Costo de contratar </strong></em>= Costo de contratar un operario ($ / operario)</p>
<p><em><strong>Costo de despedir </strong></em>= Costo de despedir un operario ($ / operario)</p>
<p><strong><em>Operarios </em></strong>= Número inicial de operarios</p>
<hr />
<p>La siguiente formulación ha sido evaluada y validada en diversos programas solucionadores, como Solver, QM, WinQSB y Google Or-Tools.</p>
<h2><em>Variables de decisión</em></h2>
<p>&nbsp;</p>
<p><strong>x<sub>i</sub></strong> = Cantidad de unidades a producir en tiempo normal por operarios antiguos en el periodo <em>i</em></p>
<p><strong>xn<sub>i</sub></strong> = Cantidad de unidades a producir en tiempo normal por operarios nuevos en el periodo <em>i</em></p>
<p><strong>xz<sub>i</sub></strong> = Cantidad de unidades a producir en tiempo extra por operarios antiguos en el periodo <em>i</em></p>
<p><strong>xnz<sub>i</sub></strong> = Cantidad de unidades a producir en tiempo extra por operarios nuevos en el periodo <em>i</em></p>
<p><strong>c<sub>i</sub></strong> = Número de operarios a contratar en el periodo <em>i</em></p>
<p><strong>d<sub>i</sub></strong> = Número de operarios a despedir en el periodo <em>i</em></p>
<p><strong>oi<sub>i</sub></strong> = Número de operarios totales al inicio del periodo <em>i</em></p>
<p><strong>of<sub>i</sub></strong> = Número de operarios totales al final del periodo <em>i</em></p>
<p><strong>sub<sub>i</sub></strong> = Número de unidades a subcontratar en el periodo <em>i</em></p>
<p><strong><sub><span style="font-size: 16px;">inv</span>i</sub></strong> = Número de unidades en inventario al final del periodo <em>i</em></p>
<h3><em>Variables de cálculos intermedios</em></h3>
<p><strong>P<sub>i</sub></strong> = Cantidad de unidades que puede producir en tiempo normal un operario antiguo en el periodo <em>i</em></p>
<p><strong>Pn<sub>i</sub></strong> = Cantidad de unidades que puede producir en tiempo normal un operario nuevo en el periodo <em>i</em></p>
<p><strong>H<sub>i</sub></strong> = Cantidad máxima de unidades que puede producir en tiempo extra un operario antiguo en el periodo <em>i</em></p>
<p><strong>Hc<sub>i</sub></strong> = Cantidad máxima de unidades que puede producir en tiempo extra un operario nuevo en el periodo <em>i</em></p>
<p>&nbsp;</p>
<h3><em>Formulación de cálculos intermedios</em></h3>
<p><strong>P<sub>i</sub></strong> = (jornada laboral / tiempo unitario) * días del periodo <em>i</em></p>
<p><strong>Pn<sub>i</sub></strong> = P<sub>i</sub> * Eficiencia</p>
<p><strong>H<sub>i</sub></strong> = Horas extras máx. del periodo <em>i </em>/ tiempo unitario</p>
<p><strong>Hc<sub>i</sub></strong> = H<sub>i</sub> * Eficiencia</p>
<h3><em>Variables y entradas financieras</em></h3>
<p>&nbsp;</p>
<p><strong>Costo unitario normal</strong> = Costo normal * Tiempo unitario</p>
<p><strong>Costo unitario normal (operarios nuevos)</strong> = Costo normal * (Tiempo unitario / Eficiencia)</p>
<p><strong>Costo unitario extra</strong> = Costo extra * Tiempo unitario</p>
<p><strong>Costo unitario extra (operarios nuevos)</strong> = Costo extra * (Tiempo unitario / Eficiencia)</p>
<p>&nbsp;</p>
<h3><em>Restricciones de tiempo normal (Operarios antiguos)</em></h3>
<p style="text-align: center;">( P<sub>i</sub> * oi<sub>i</sub> ) &#8211; x<sub>i</sub> &gt;= 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de tiempo normal (Operarios nuevos)</em></h3>
<p style="text-align: center;">( Pn<sub>i</sub> * c<sub>i</sub> ) &#8211; xn<sub>i</sub> &gt;= 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de balance de operarios</em></h3>
<p><em>Esta restricción define que los operarios al final de un periodo i = operarios inicial periodo i + 1</em></p>
<p>Para todos los <em>i &gt;= 1:</em></p>
<p style="text-align: center;">oi<sub>i</sub> &#8211; of<sub>i-1</sub> = 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de balance para la contratación de operarios</em></h3>
<p>Para todos los <em>i &gt;= 1:</em></p>
<p style="text-align: center;">of<sub>i</sub> &#8211; oi<sub>i</sub> &#8211; c<sub>i</sub> + d<sub>i</sub> = 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de cantidad inicial de operarios</em></h3>
<p><em>Esta restricción nos indica que la cantidad inicial de operarios, es decir <strong>oi</strong> en periodo <strong>0</strong></em>, es equivalente al dato de entrada <em><strong>operarios </strong></em>(El cual nos indica la cantidad inicial de operarios del problema). Esta restricción parece demasiado lógica, sin embargo es vital considerarla de acuerdo a los solucionadores que utilicemos.</p>
<p style="text-align: center;">oi<sub>0</sub> &#8211; operarios = 0</p>
<h3><em>Restricciones de balance de operarios en el periodo 0 (periodo inicial)</em></h3>
<p style="text-align: center;">of<sub>0</sub> &#8211; oi<sub>0</sub> &#8211; c<sub>0</sub> + d<sub>0</sub> = 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de límites de horas extras (operarios antiguos)</em></h3>
<p style="text-align: center;">xz<sub>i</sub> &#8211; ( H<sub>i</sub>  * oi<sub>i</sub> ) &lt;= 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de límites de horas extras (operarios nuevos)</em></h3>
<p style="text-align: center;">xnz<sub>i</sub> &#8211; ( Hc<sub>i</sub>  * c<sub>i</sub> ) &lt;= 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de límites de unidades a subcontratar</em></h3>
<p style="text-align: center;"><sub><span style="font-size: 16px;">sub</span>i</sub> &#8211; unidades subcontratadas máx. en el periodo <em>i</em> &lt;= 0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de balance de inventarios (periodo 1 en adelante)</em></h3>
<p>Para todos los <em>i &gt;= 1:</em></p>
<div style="text-align: center;">inv<sub>i &#8211; 1</sub> + x<sub>i</sub>  + xn<sub>i</sub> + xz<sub>i</sub>  + xnz<sub>i</sub> + sub<sub>i</sub>  &#8211; requerimientos del periodo <em>i &#8211; </em>inv<sub>i</sub><em>  = </em>0</div>
<p>&nbsp;</p>
<h3><em>Restricciones de balance de inventarios (periodo 0)</em></h3>
<div style="text-align: center;">inventario inicial + x<sub>0</sub>  + xn<sub>0</sub> + xz<sub>0</sub>  + xnz<sub>0</sub> + sub<sub>0</sub>  &#8211; requerimientos del periodo <em>0 &#8211; </em>inv<sub>0</sub><em>  = </em>0</div>
<p>&nbsp;</p>
<h3>Restricciones de satisfacción de requerimientos (periodo 1 en adelante)</h3>
<p>Para todos los <em>i &gt;= 1</em></p>
<p style="text-align: center;">x<sub>i</sub>  + xn<sub>i</sub> + xz<sub>i</sub>  + xnz<sub>i</sub> + sub<sub>i</sub>  +<em> </em>inv<sub>i &#8211; 1</sub><em> &#8211; </em>requerimientos del periodo<em> i &gt;= </em>0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de satisfacción de requerimientos (periodo 0)</em></h3>
<p style="text-align: center;">x<sub>0</sub>  + xn<sub>0</sub> + xz<sub>0</sub>  + xnz<sub>0</sub> + sub<sub>0</sub>  +<em> </em>inventario inicial<em> &#8211; </em>requerimientos del periodo<em> 0 &gt;= </em>0</p>
<p>&nbsp;</p>
<h3><em>Restricciones de no negatividad</em></h3>
<p>Todas las variables pertenecen a los números reales enteros y sus valores deberán ser mayores o iguales a cero.</p>
<h3><em>Función objetivo</em></h3>
<p style="text-align: center;">Zmin = (costo unitario normal * x<sub>i</sub> ) + (costo unitario normal de operarios nuevos * xn<sub>i</sub> ) + (costo unitario extra * xz<sub>i</sub> ) + (costo unitario extra operarios nuevos * xnz<sub>i</sub> ) + (costo de subcontratar * sub<sub>i</sub> ) + (costo de contratar * c<sub>i</sub> ) + (costo de despedir * d<sub>i</sub> ) + (costo de inventarios * inv<sub>i</sub> )</p>
<p><em><strong><span class="tie-highlight tie-highlight-green">La aplicación del anterior modelo arrojará la solución óptima por medio del algoritmo «branch and bound».</span></strong></em></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Caso de estudio: Aplicación de programación lineal en planeación agregada</h2>
<blockquote class="aligncenter quote-simple "><p>Una compañía desea determinar su plan agregado de producción para los próximos 6 meses. Una vez utilizado el modelo de pronóstico más adecuado se establece el siguiente tabulado de requerimientos (no se cuenta con inventario inicial, y no se requiere de inventarios de seguridad).</p></blockquote>
<div id="cc-m-5869678913" class="j-module n j-imageSubtitle ">
<figure class="cc-imagewrapper cc-m-image-align-3"><img decoding="async" class="aligncenter size-full wp-image-2545" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-187.png" alt="" width="294" height="149" /></figure>
<p><em>Información relacionada con el negocio:</em></p>
<p>Jornada laboral: 8 horas / trabajador / día</p>
<p>Costo de contratar: $ 350 / trabajador</p>
<p>Costo de despedir: $ 420 / trabajador</p>
<p>Costo de tiempo normal (mano de obra): $ 6 / hora</p>
<p>Costo de tiempo extra (mano de obra): $8 / hora</p>
<p>Costo de mantenimiento de inventarios: $ 3 /unidad/ mes</p>
<p>Costo de subcontratar: $ 50 / unidad</p>
<p>Tiempo de procesamiento: 5 horas / trabajador / unidad</p>
<p>Jornada laboral: 8 horas / día</p>
<p>Número inicial de trabajadores: 20</p>
<p><strong>Eficiencia de un trabajador nuevo el primer periodo:</strong> 90%</p>
<p><strong>Cantidad máxima de horas extras por operario por mes: </strong>8 horas/trabajador/mes</p>
<p>Capacidad máxima de suministro de unidades de subcontratación: 200 unidades/mes</p>
<p><strong>Unidades: </strong>Toneladas.</p>
<hr />
<p>Ya en la introducción del modelo hemos descrito la definición de las variables, la formulación de los cálculos intermedios, así mismo la formulación de las restricciones. Estas pueden utilizarse básicamente en cualquier solucionador.</p>
<p>En este caso vamos a utilizar un solucionador de programación basada en restricciones: <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/que-es-y-para-que-sirve-google-or-tools/" target="_blank" rel="noopener"><em><strong>Google OR-Tools</strong></em></a>. Para eso, vamos a programar nuestro modelo utilizando Python. No se preocupe si no cuenta con este programa, la idea es introducirnos de a poco en estas nuevas soluciones, por lo tanto utilizaremos un entorno virtual que podrás ejecutar sin la necesidad de realizar ninguna instalación.</p>
<p>Vamos a asumir que utilizarán el entorno virtual de <em>Colaboratory</em>, así que vayamos allá: <a href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"><em><strong>Abrir cuaderno nuevo</strong></em></a>.</p>
<h3><em>Paso 1: Instalar las librerías de Google Or Tools</em></h3>
<p>Este paso debe realizarse solo si vamos a utilizar el cuaderno de <em>Colaboratory</em>:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>!pip install ortools</code></pre>
</div>
<h3><em>Paso 2: Importar las librerías necesarias y declarar el solucionador</em></h3>
<p>En este caso, solo importaremos la librería correspondiente al módulo de programación lineal de Google Or-Tools. Además, utilizaremos el solucionador<span> SCIP </span><em>(Solving Constraint Integer Programs), un solucionador de código abierto disponible que permite resolver problemas lineales mixtos (Google OR-Tools posee múltiples solucionadores):</em></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>from ortools.linear_solver import pywraplp

solver = pywraplp.Solver.CreateSolver('SCIP')</code></pre>
</div>
<h3><em>Paso 3: Datos de entrada</em></h3>
<p>De acuerdo a los datos que nos plantea el problema, registramos las entradas del modelo:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#DATOS DE ENTRADA

periodos = [0, 1, 2, 3, 4, 5] #Periodos del plan, empezando desde el periodo 0
demanda = [2500, 1500, 3000, 1000, 2500, 2200] #Requerimintos de cada periodo
dias = [22, 19, 21, 21, 22, 20] #Días laborales de cada periodo
jornada_laboral = 8 #horas / trabajador / día
tiempo_unitario = 5 #horas / unidad
Eficiencia = 0.9 #Eficiencia de un trabajador nuevo periodo 1
horas_extras_max = [8, 8, 8, 8, 8, 8] #Cantidad máxima de horas extras por periodo
unidades_sub_max = [200, 200, 200, 200, 200, 200] #Cantidad máxima de unidades que se pueden subcontratar en el periodo i
inv_inicial = 0 #Unidades
costo_normal = 6 #Unidades monetarias / hora
costo_extra = 8 #Unidades monetarias / hora
costo_inventario = 3 #Unidades monetarias / periodo
costo_sub = 50 #Unidades monetarias / unidad
costo_contratar = 350 #Unidades monetarias / trabajador
costo_despedir = 420 #Unidades monetarias / trabajador
operarios = 20 #Número inicial de trabajadores</code></pre>
</div>
<h3><em>Paso 4: Definir y formular los cálculos intermedios</em></h3>
<p>De acuerdo a la formulación que ya mostramos de nuestro modelo, se definirán aquellos cálculos intermedios necesarios. Recordemos la formulación que teníamos definida:</p>
<p><strong>P<sub>i</sub></strong> = (jornada laboral / tiempo unitario) * días del periodo <em>i</em></p>
<p><strong>Pn<sub>i</sub></strong> = P<sub>i</sub> * Eficiencia</p>
<p><strong>H<sub>i</sub></strong> = Horas extras máx. del periodo <em>i </em>/ tiempo unitario</p>
<p><strong>Hc<sub>i</sub></strong> = H<sub>i</sub> * Eficiencia</p>
<p>Si realizamos los cálculos de forma manual, podemos completar una tabla como la siguiente:</p>
<figure class="cc-imagewrapper cc-m-image-align-3"><img decoding="async" class="aligncenter size-full wp-image-2547" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-189.png" alt="" width="485" height="147" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-189.png 485w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-189-300x91.png 300w" sizes="(max-width: 485px) 100vw, 485px" /></figure>
<p>Veamos por ejemplo, el periodo 0 (periodo inicial).</p>
<p><strong>P<sub>0</sub></strong> (mes 1) = (8 / 5) * 22</p>
<p><strong>P<sub>0</sub></strong> (mes 1) = 35,20</p>
<p>Ahora veamos cómo podemos programar este cálculo en nuestro modelo (mediante un ciclo):</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>P= [] #Cantidad de unidades que puede producir un operario en el periodo i
for i in range(len(periodos)):
    P.append((jornada_laboral / tiempo_unitario) * dias[i])</code></pre>
</div>
<p>De esta forma efectuamos el cálculo para cada período. Veamos lo que pasaría imprimimos la variable P:</p>
</div>
<div class="j-module n j-imageSubtitle "><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/P.png" alt="" width="649" height="165" class="size-full wp-image-28335 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/P.png 649w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/P-300x76.png 300w" sizes="(max-width: 649px) 100vw, 649px" />Podemos corroborar cómo obtenemos los mismos resultados que se encuentran consignados en el tabulado. Ahora completaremos los cálculos intermedios restantes:</div>
<div>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>Pn= []#Cantidad de unidades que puede producir un operario nuevo en el periodo i
for i in range(len(periodos)):
    Pn.append(P[i] * Eficiencia)
    
H= []#Cantidad máxima de unidades que puede producir un operario en el periodo i con horas extras
for i in range(len(periodos)):
    H.append(horas_extras_max[i] / tiempo_unitario)
    
Hc= []#Cantidad máxima de unidades que puede producir un operario en el periodo i con horas extras
for i in range(len(periodos)):
    Hc.append(H[i] * Eficiencia)</code></pre>
</div>
</div>
<h3 class="j-module n j-imageSubtitle "><em>Paso 5: Definir las variables de decisión</em></h3>
<p>En este paso definiremos cada variable de decisión del modelo, definiremos también su naturaleza y su rango de valores: <em>entera, mayor o iguala cero (desde 0 hasta infinito).</em></p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Variables de decisión

x= {} #Unidades a producir en el periodo i
for i in range(len(periodos)):
    x[i] = solver.IntVar(0, solver.infinity(), '')
    
xn= {} #Unidades a producir por operarios nuevos en el periodo i
for i in range(len(periodos)):
    xn[i] = solver.IntVar(0, solver.infinity(), '')
    
xz= {} #Unidades a producir en tiempo extra en el periodo i
for i in range(len(periodos)):
    xz[i] = solver.IntVar(0, solver.infinity(), '')
    
xnz= {} #Unidades a producir en tiempo extra por operarios nuevos en el periodo i
for i in range(len(periodos)):
    xnz[i] = solver.IntVar(0, solver.infinity(), '')
    
c= {} #Operarios a contratar en el período i
for i in range(len(periodos)):
    c[i] = solver.IntVar(0, solver.infinity(), '')

d= {} #Operarios a despedir en el período i
for i in range(len(periodos)):
    d[i] = solver.IntVar(0, solver.infinity(), '')
    
sub= {} #Unidades a subcontratar en el periodo i
for i in range(len(periodos)):
    sub[i] = solver.IntVar(0, solver.infinity(), '') 
    
inv= {} #Unidades en inventario al final del periodo i
for i in range(len(periodos)):
    inv[i] = solver.IntVar(0, solver.infinity(), '') 
    
oi= {} #Número de operarios totales al inicio del periodo i
for i in range(len(periodos)):
    oi[i] = solver.IntVar(0, solver.infinity(), '') 
    
of= {} #Número de operarios totales al final del periodo i
for i in range(len(periodos)):
    of[i] = solver.IntVar(0, solver.infinity(), '') </code></pre>
</div>
<p>En el código anterior, y ya que cada variable debe definirse para cada periodo del plan agregado, utilizamos ciclos para su definición. Este ciclo tiene un rango determinado por el número de periodos, de esta manera, ya que tenemos 6 periodos, por ejemplo, en la definición de la variable <strong>Xi</strong>, tendremos las siguientes variables definidas: <strong>x<sub>0</sub></strong>, <strong>x<sub>1</sub></strong>, <strong>x<sub>2</sub></strong>, <strong>x<sub>3</sub></strong>, <strong>x<sub>4</sub></strong>, <strong>x<sub>5</sub></strong> . Así mismo sucede con las variables restantes.</p>
<p>Desde luego, existe la posibilidad de definir cada una de las variables de forma individual, sin embargo el proceso sería algo tedioso, y sería algo así:</p>
<p><em>x[0] = solver.IntVar(0, solver.infinity(), »)</em></p>
<p><em>x[1] = solver.IntVar(0, solver.infinity(), »)</em></p>
<p><em>x[2] = solver.IntVar(0, solver.infinity(), »)</em></p>
<p><em>x[3] = solver.IntVar(0, solver.infinity(), »)</em></p>
<p><em>x[4] = solver.IntVar(0, solver.infinity(), »)</em></p>
<p><em>x[5] = solver.IntVar(0, solver.infinity(), »)</em></p>
<p>Por esta razón utilizamos ciclos para tal efecto.</p>
<h3><em>Paso 6: Formulación de variables de costo</em></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Formulación de variables financieras (Costos)
costo_unitario_normal = costo_normal * tiempo_unitario
costo_unitario_normal_nuevo = costo_normal * (tiempo_unitario / Eficiencia) 
costo_unitario_extra = costo_extra * tiempo_unitario
costo_unitario_extra_nuevo = costo_extra * (tiempo_unitario / Eficiencia) </code></pre>
</div>
<h3><em>Paso 7: Restricciones del modelo</em></h3>
<p>Utilizando la misma metodología de ciclos para recorrer los periodos del plan, formulamos nuestras restricciones. Estas restricciones son exactamente las mismas que formulamos de manera algebraica en el planteamiento general de nuestro modelo.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#RESTRICCIONES DEL MODELO

# Restricciones de tiempo normal (Producción normal)
for i in range(len(periodos)):
    solver.Add(((P[i] * oi[i]) - x[i]) &gt;= 0)

# Restricciones de tiempo normal (Producción normaml - operarios nuevos)
for i in range(len(periodos)):
    solver.Add(((Pn[i] * c[i]) - xn[i]) &gt;= 0)
    
# Restricciones de balance (operarios al final de un periodo i = operarios inicial periodo i + 1)
for i in range(1, len(periodos)):
    solver.Add(oi[i] - of[i-1] == 0)
    
# Restricciones de balance para la contratación de operarios (periodo i en adelante)
for i in range(1, len(periodos)):
    solver.Add(of[i] - oi[i] - c[i] + d[i] == 0)
    
# Restricción de cantidad inicial de operarios
solver.Add(oi[0] - operarios == 0)
    
# Restricciones de balance de operarios periodo 0
solver.Add(of[0] - oi[0] - c[0] + d[0] == 0)
    
# Restricciones límite de horas extras operarios antiguos
for i in range(len(periodos)):
    solver.Add(xz[i] -(H[i] * oi[i]) &lt;= 0)
    
# Restricciones límite de horas extras operarios nuevos
for i in range(len(periodos)):
    solver.Add(xnz[i] -(Hc[i] * c[i]) &lt;= 0)
    
# Restricciones límite de unidades a subcontratar
for i in range(len(periodos)):
    solver.Add(sub[i] - unidades_sub_max[i] &lt;= 0) 

# Restricciones límite de balance de inventarios periodo 1 en adelante 
for i in range(1, len(periodos)): 
    solver.Add(inv[i-1] + x[i] + xn[i] + xz[i] + xnz[i] + sub[i] - demanda[i] - inv[i] == 0) 

# Restricciones límite de balance de inventarios periodo 0 
solver.Add(inv_inicial + x[0] + xn[0] + xz[0] + xnz[0] + sub[0] - demanda[0] - inv[0] == 0) 

# Restricciones de satisfacción de demanda periodo 1 en adelante 
for i in range(1, len(periodos)): 
    solver.Add(x[i] + xn[i] + xz[i] + xnz[i] + sub[i] + inv[i-1] - demanda[i] &gt;= 0)
    
# Restricciones límite de balance de inventarios periodo 0
solver.Add(x[0] + xn[0] + xz[0] + xnz[0] + sub[0] + inv_inicial - demanda[i] &gt;= 0)</code></pre>
</div>
<h3><em>Paso 8: Definir la función objetivo</em></h3>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#FUNCIÓN OBJETIVO MINIMIZAR
objective_terms = []
for i in range(len(periodos)):
    objective_terms.append((costo_unitario_normal * x[i]) + (costo_unitario_normal_nuevo * xn[i]) + (costo_unitario_extra * xz[i]) + (costo_unitario_extra_nuevo * xnz[i]) + (costo_sub * sub[i]) + (costo_contratar * c[i]) + (costo_despedir * d[i]) + (costo_inventario * inv[i]))
solver.Minimize(solver.Sum(objective_terms))  </code></pre>
</div>
<h3><em>Paso 9: Invocar al solucionador</em></h3>
<p>A continuación daremos la orden al programa de resolver el modelo.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>#Invocar al solucionador
status = solver.Solve()</code></pre>
</div>
<h3><em>Paso 10: Configurar las salidas del modelo</em></h3>
<p>Este paso lo verán quizá confuso; y la verdad no lo es tanto. Toda vez que el modelo está resuelto, podemos configurar la salida que queramos en cualquier momento; eso sí, hemos desarrollado unas líneas de código que pueden resultar extensas, con el fin de organizar los datos de salida. Por ejemplo, hemos definido encabezados para los datos, y otras cuestiones de forma.</p>
<p>Si usted desea, por ejemplo, tan solo conocer el valor total del plan agregado, puede introducir las siguientes líneas:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>print('\nValor total del plan (FO) =', solver.Objective().Value())</code></pre>
</div>
<p>Al ejecutar esta línea tendremos el siguiente resultado:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/valor-total.png" alt="valor total" width="591" height="106" class="size-full wp-image-28337 aligncenter" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/valor-total.png 591w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/valor-total-300x54.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></p>
<p>Las siguientes líneas nos proporcionarán la información relevante de forma organizada:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code>if status == pywraplp.Solver.OPTIMAL:
    print('\nSOLUCIÓN: ')        
    print('\nPLAN DE PRODUCCIÓN \n')
    print('|{:^20}|{:^20}|{:^20}|{:^20}|{:^20}|{:^20}|'.format(
      'Período',
      'Producción (TN)',
      'TN (Op. Nuevos)',
      'Producción (HE)',
      'HE (Op. Nuevos)',
      'Uni. Subcon'))
    
    for i in range(len(periodos)):
        print('|{:^20}|{:^20}|{:^20}|{:^20}|{:^20}|{:^20}|'.format(
          i,
          x[i].solution_value(),
          xn[i].solution_value(),
          xz[i].solution_value(),
          xnz[i].solution_value(),
          sub[i].solution_value()))
    print('\nProduccción (TN): Cantidad de unidades a producir en tiempo normal')
    print('TN (Op. Nuevos): Cantidad de unidades a producir en tiempo normal con operarios nuevos')
    print('Producción (HE): Cantidad de unidades a producir en tiempo extra')
    print('HE (Op. Nuevos): Cantidad de unidades a producir en tiempo extra con operarios nuevos')
    print('Uni. Subcon: Cantidad de unidades a subcontratar')
    print('\nCOSTOS \n')
    print('|{:^20}|{:^20}|'.format(
          'Período',
          'Costo'))  
    costo = []
    for i in range(len(periodos)):
        costo.append((costo_unitario_normal * x[i].solution_value()) + (costo_unitario_normal_nuevo * xn[i].solution_value()) + (costo_unitario_extra * xz[i].solution_value()) + (costo_unitario_extra_nuevo * xnz[i].solution_value()) + (costo_sub * sub[i].solution_value()) + (costo_contratar * c[i].solution_value()) + (costo_despedir * d[i].solution_value()) + (costo_inventario * inv[i].solution_value()))
        print('|{:^20}|{:^20.2f}|'.format(
          i,
          costo[i]))
    print('\nValor total del plan (FO) =', solver.Objective().Value())
    print('Costo unitario del tiempo normal = {0} unidades monetarias / h'.format(costo_unitario_normal))
    print('Costo unitario del tiempo normal (Operarios nuevos)= {0:.2f} unidades monetarias / h'.format(costo_unitario_normal_nuevo))
    print('Costo unitario del tiempo extra= {0} unidades monetarias / h'.format(costo_unitario_extra))
    print('Costo unitario del tiempo extra (Operarios nuevos)= {0:.2f} unidades monetarias / h'.format(costo_unitario_extra_nuevo))
    print('\nINVENTARIOS \n')
    print('|{:^20}|{:^20}|'.format(
          'Período', 
          'Inv. final'))  
    for i in range(len(periodos)):    
        print('|{:^20}|{:^20}|'.format(
          i,
          inv[i].solution_value()))
    print('\nFUERZA LABORAL (OPERARIOS)\n')
    print('|{:^20}|{:^20}|{:^20}|{:^20}|{:^20}|'.format(
          'Período', 
          'Cantidad inicial',
          'Contrataciones',
          'Despidos',
          'Cantidad final'))  
    for i in range(len(periodos)):    
        print('|{:^20}|{:^20}|{:^20}|{:^20}|{:^20}|'.format(
          i,
          oi[i].solution_value(),
          c[i].solution_value(),
          d[i].solution_value(),
          of[i].solution_value()))
   
    vector_i=[]
    vector_x=[]
    vector_xn=[]
    vector_xz=[]
    vector_xnz=[]
    vector_sub=[]    
    
    for i in range (len(periodos)):
        vector_i.append(i)
        vector_x.append(x[i].solution_value())
        vector_xn.append(xn[i].solution_value())
        vector_xz.append(xz[i].solution_value())
        vector_xnz.append(xnz[i].solution_value())
        vector_sub.append(sub[i].solution_value())    
    
    datos = {}
    
    datos['Periodo'] = vector_i
    datos['Producción (TN)'] = vector_x
    datos['TN (Op. Nuevos)'] = vector_xn
    datos['Producción (HE)'] = vector_xz
    datos['HE (Op. Nuevos)'] = vector_xnz
    datos['Uni. Subcon'] = vector_sub
      
else:
  if status == solver.FEASIBLE:
    print('Se encontró una solución potencialmente subóptima.')
  else:
    print('El problema no tiene solución óptima.')</code></pre>
</div>
<p>Al ejecutar el modelo tendremos:</p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/planeacion-agregada-solucion-python.png" alt="planeacion agregada solucion python" width="825" height="718" class="alignnone size-full wp-image-28338" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/planeacion-agregada-solucion-python.png 825w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/planeacion-agregada-solucion-python-300x261.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/planeacion-agregada-solucion-python-768x668.png 768w" sizes="(max-width: 825px) 100vw, 825px" /></p>
<p>Puedes acceder y ejecutar el modelo desde <em><strong><a href="https://colab.research.google.com/drive/1Gvk-1B_0KBvGrwKdMX-LJNMbGFiiLnXG?usp=sharing" target="_blank" rel="noopener">Planeación Agregada mediante Programación Lineal</a></strong>.</em></p>
<p>El tiempo empleado por el solucionador es inferior a 1 segundo de procesamiento. Dada la potencia del solucionador Google Or Tools y la capacidad de procesamiento del entorno virtual.</p>
<p>El valor objetivo hallado es: <strong>408074,33</strong></p>
<hr />
<p>Parte de la utilidad de este desarrollo es la posibilidad de integrarse con diversas fuentes de información. Puede, por ejemplo, tomar datos desde diversos archivos en entornos locales o externos. De igual forma puede exportar la información obtenida.</p>
<h2>Utilizando este modelo y su formulación en Solver de Microsoft Excel</h2>
<p>El mismo modelo que hemos desarrollado en <em>Python </em>ha sido formulado en Microsoft Excel para su resolución mediante <em>Solver</em>. De acuerdo a los parámetros genéricos de <em>Solver</em>, sin modificar límites de búsqueda, hemos obtenido una solución equivalente a: <strong>410498</strong>, empleando aproximadamente 50 segundos para llegar a ella.</p>
<p>Podemos observar entonces que la solución obtenida mediante Google Or-Tools satisface mucho más el criterio de optimización, así mismo alcanza la solución en un tiempo mucho menor.</p>
<p><em>¿A qué puede deberse esa diferencia entre las soluciones obtenidas mediante ambos solucionadores? </em>Principalmente a la tolerancia predeterminada de los solucionadores de <em>Solver </em>para las restricciones de variables enteras. Es posible incluso, en el cuadro de opciones de <em>Solver </em>configurar esta tolerancia como 0 para obtener mejores resultados. Lo hemos hecho y hemos alcanzado <strong>419601</strong>. Sin embargo, el tiempo de búsqueda puede tardar minutos.</p>

		<div class="box download  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Te dejamos el documento en Microsoft Excel para su descarga: <a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Planeacion_agregada.xlsx" target="_blank" rel="noopener"><strong>Planeación Agregada mediante Programación Lineal &#8211; Excel (Solver)</strong></a>
			</div>
		</div>
	
<figure class="cc-imagewrapper cc-m-image-align-3"></figure>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/produccion/planeacion-agregada-mediante-programacion-lineal/">Planeación agregada mediante programación lineal</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ingenieriaindustrialonline.com/produccion/planeacion-agregada-mediante-programacion-lineal/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Programación lineal en Solver</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-solver/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-solver/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Sat, 08 Jun 2019 00:29:39 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Investigación de Operaciones]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<category><![CDATA[Solver]]></category>
		<guid isPermaLink="false">http://contentlab.co/ingenieria/?p=1136</guid>

					<description><![CDATA[<p>Solver es una herramienta que forma parte de una serie de comandos, a veces denominados de «análisis Y si». Con Solver, puede buscarse el valor óptimo para una fórmula de celda, denominada celda objetivo, en una hoja de cálculo. Solver funciona en un grupo de celdas que estén relacionadas, directa o indirectamente, con la fórmula de la celda &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-solver/">Programación lineal en Solver</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>Solver es una herramienta</strong> que forma parte de una serie de comandos, a veces denominados de <em><strong>«análisis Y si»</strong></em>. Con Solver, puede buscarse el valor óptimo para una fórmula de celda, denominada celda objetivo, en una hoja de cálculo.</p>
<p><em>Solver</em> funciona en un grupo de celdas que estén relacionadas, directa o indirectamente, con la fórmula de la celda objetivo. Solver ajusta los valores en las celdas cambiantes que se especifiquen, denominadas celdas ajustables, para generar el resultado especificado en la fórmula de la celda objetivo.</p>
<p>Pueden aplicarse restricciones para restringir los valores que puede utilizar <em>Solver</em> en el modelo y las restricciones pueden hacer referencia a otras celdas a las que afecte la fórmula de la celda objetivo, lo cual lo constituyen en una herramienta adecuada para solucionar problemas de <strong><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/">programación lineal</a></strong>, y programación lineal entera.</p>
<p>&nbsp;</p>
<h2>Algoritmos y métodos utilizados por Solver</h2>
<p>La herramienta <em><strong>Microsoft Excel Solver</strong></em> utiliza el código de optimización no lineal (GRG2) desarrollado por la Universidad Leon Lasdon de Austin (Texas) y la Universidad Allan Waren (Cleveland).</p>
<p>Los problemas lineales y enteros utilizan el <em><strong><a title="Método Simplex" href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-simplex/">Método Simplex</a></strong></em> con límites en las variables y el método de ramificación y límite (método de branch and bound), implantado por John Watson y Dan Fylstra de Frontline Systems, Inc. El método de <em>branch and bound</em> corresponde al mismo método utilizado por <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-winqsb/">WinQSB</a> para la solución de problemas de programación lineal entera y/o que utilicen variables binarias.</p>
<p>&nbsp;</p>
<h2>¿Cómo habilitar el complemento Solver de Excel?</h2>
<h3>Microsoft Office 2010</h3>
<p>El primer paso consiste en dirigirse a la pestaña <span class="tie-highlight tie-highlight-green"><em><strong>Archivo</strong></em></span>, dirigirse a la opción <span class="tie-highlight tie-highlight-green"><em><strong>Ayuda</strong></em></span> y seleccionar la opción <span class="tie-highlight tie-highlight-green"><em><strong>Opciones</strong></em></span>:</p>
<p><img decoding="async" class="aligncenter wp-image-2842" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título2-1.png" alt="" width="469" height="437" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título2-1.png 584w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título2-1-300x279.png 300w" sizes="(max-width: 469px) 100vw, 469px" /></p>
<p>Luego, se abrirá una ventana emergente de <span class="tie-highlight tie-highlight-green"><em><strong>Opciones de Excel</strong></em></span>, en ella vamos a la opción <span class="tie-highlight tie-highlight-green"><em><strong>Complementos</strong></em></span> (ubicada en la barra lateral izquierda). Ya en complementos, nos dirigimos a la opción <span class="tie-highlight tie-highlight-green"><em><strong>Administrar: Complementos de Excel</strong></em></span> y damos clic en botón <span class="tie-highlight tie-highlight-green"><em><strong>Ir</strong></em></span>:</p>
<p><img decoding="async" class="aligncenter wp-image-2843" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-433.png" alt="" width="729" height="528" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-433.png 791w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-433-300x217.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-433-768x556.png 768w" sizes="(max-width: 729px) 100vw, 729px" /></p>
<p>Luego se abrirá una pequeña ventana emergente, en ella se podrán observar varios complementos junto con una casilla de verificación cada uno. Activamos la casilla de verificación de Solver y damos clic en <span class="tie-highlight tie-highlight-green"><em><strong>Aceptar</strong></em></span>:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2845" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-434.png" alt="" width="323" height="348" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-434.png 323w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-434-278x300.png 278w" sizes="(max-width: 323px) 100vw, 323px" /></p>
<p>Una vez se ha habilitado el complemento, Solver se ubicará en la pestaña de <span class="tie-highlight tie-highlight-green"><em><strong>Datos</strong></em></span>.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>Solución de un problema de programación lineal mediante Solver</h2>
<p>Al igual que para cualquier otro método de resolución, el primer paso para resolver un problema de programación lineal (PL) consiste en el modelamiento matemático, y es en esta fase en la que el profesional de Ingeniería Industrial debe desarrollar su mayor habilidad y destreza. Los pasos para resolver un problema de PL se encuentran en el módulo de <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/">programación lineal</a>. Sin embargo, dada la interfaz de Excel, el modelamiento se hace más simple, siempre y cuando nos caractericemos por organizar muy bien la información.</p>
<h3>El problema</h3>
<blockquote class="aligncenter quote-simple "><p>Un herrero con 80 Kg. de acero y 120 Kg. de aluminio quiere hacer bicicletas de paseo y de montaña que quiere vender, respectivamente a 20.000 y 15.000 pesos cada una para sacar el máximo beneficio. Para la de paseo empleará 1 Kg. De acero y 3 Kg. de aluminio, y para la de montaña 2 Kg. de ambos metales. ¿Cuántas bicicletas de paseo y de montaña deberá fabricar para maximizar las utilidades?</p></blockquote>
<h3>El modelo matemático</h3>
<p><img decoding="async" class="aligncenter size-full wp-image-2846" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-435.png" alt="" width="659" height="137" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-435.png 659w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-435-300x62.png 300w" sizes="(max-width: 659px) 100vw, 659px" /></p>
<p><strong>Declaración de variables</strong></p>
<p>x = Cantidad de bicicletas de paseo a producir</p>
<p>y = Cantidad de bicicletas de montaña a producir</p>
<p><strong>Restricciones de capacidad</strong></p>
<p><span style="color: #660000;">Aluminio:</span></p>
<p>x + 2y &lt;= 80</p>
<p><span style="color: #660000;">Acero:</span></p>
<p>3x + 2y &lt;= 120</p>
<p><strong>Función Objetivo</strong></p>
<p>Zmax = 20000x + 15000y</p>
<p>&nbsp;</p>
<h3>Ingresando los datos a Excel</h3>
<p>Tal cómo se mencionó, la importancia de una correcta organización de la información es vital, proponemos la siguiente plantilla para ingresar los datos de nuestro problema:</p>
<p><img decoding="async" class="aligncenter wp-image-2847" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-436.png" alt="" width="679" height="282" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-436.png 899w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-436-300x124.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-436-768x319.png 768w" sizes="(max-width: 679px) 100vw, 679px" /></p>
<p>El siguiente paso corresponde a registrar la información en la plantilla, de acuerdo a los datos que tenemos en el problema:</p>
<p><img decoding="async" class="aligncenter wp-image-2848" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-437.png" alt="" width="673" height="281" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-437.png 893w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-437-300x125.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-437-768x321.png 768w" sizes="(max-width: 673px) 100vw, 673px" /></p>
<p>El siguiente paso consiste en formular la plantilla, para ello debemos considerar <em><strong>¿qué pasaría si cambiaran las variables de decisión?</strong></em> Pues, en caso tal de que las variables sufrieran cambios se alteraría la contribución total, y el inventario de recursos. Por ello, debemos formular en consecuencia:</p>
<p><img decoding="async" class="aligncenter wp-image-2849" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-438.png" alt="" width="670" height="269" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-438.png 915w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-438-300x120.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-438-768x308.png 768w" sizes="(max-width: 670px) 100vw, 670px" /></p>
<p>Ahora que ya tenemos nuestra plantilla formulada, el siguiente paso consiste en utilizar Solver para resolver el modelo, para ello, vamos a la pestaña Datos (En cualquier versión de Office), y seleccionamos el complemento Solver:</p>
<p><img decoding="async" class="aligncenter wp-image-2850" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-439.png" alt="" width="661" height="334" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-439.png 1003w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-439-300x152.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-439-768x388.png 768w" sizes="(max-width: 661px) 100vw, 661px" /></p>
<p>Una vez iniciemos Solver se abrirá una ventana emergente llamada <span class="tie-highlight tie-highlight-green"><em><strong>Parámetros de Solver</strong></em></span>, en ella como primera medida seleccionaremos nuestra celda objetivo (Contribución Total) y seleccionaremos el criterio Maximizar:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2851" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-440.png" alt="" width="458" height="286" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-440.png 458w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-440-300x187.png 300w" sizes="(max-width: 458px) 100vw, 458px" /></p>
<p>El siguiente paso, es indicarle a Solver que debe alcanzar el máximo valor para la celda objetivo mediante la variación de las siguientes celdas (Cambiando las celdas), es decir, le indicaremos cuales son las variables de decisión:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2852" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-441.png" alt="" width="460" height="288" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-441.png 460w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-441-300x188.png 300w" sizes="(max-width: 460px) 100vw, 460px" /></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2853" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-442.png" alt="" width="515" height="127" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-442.png 515w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-442-300x74.png 300w" sizes="(max-width: 515px) 100vw, 515px" /></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2854" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-443.png" alt="" width="463" height="290" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-443.png 463w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-443-300x188.png 300w" sizes="(max-width: 463px) 100vw, 463px" /></p>
<p>El siguiente paso consiste en asignarle las restricciones a las que el modelo está sujeto, las cuales son restricciones de disponibilidad de recursos:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2855" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-444.png" alt="" width="463" height="290" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-444.png 463w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-444-300x188.png 300w" sizes="(max-width: 463px) 100vw, 463px" /></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2856" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-445.png" alt="" width="389" height="225" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-445.png 389w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-445-300x174.png 300w" sizes="(max-width: 389px) 100vw, 389px" /></p>
<p>Lo que nos muestra la imagen anterior es la forma de indicarle la restricción a Solver, para que el inventario usado sea menor o igual al inventario disponible. De igual forma debe hacerse para el recurso de Aluminio.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2857" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-446.png" alt="" width="391" height="225" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-446.png 391w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-446-300x173.png 300w" sizes="(max-width: 391px) 100vw, 391px" /></p>
<p>La siguiente restricción es la de <em><strong>no negatividad</strong></em>, es decir, que las variables de decisión no puedan tomar valores menores que cero.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2858" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-447.png" alt="" width="417" height="201" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-447.png 417w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-447-300x145.png 300w" sizes="(max-width: 417px) 100vw, 417px" /></p>
<p>Si quisiéramos resolver el modelo tal cual como está pudiésemos hacerlo, y obtendríamos quizá una respuesta que distaría de su aplicación práctica, dado que es probable que la respuesta nos de variables continuas, y en la práctica vender 0,6 bicicletas es un poco complicado. Por tal razón, agregaremos una restricción que hace que el ejercicio se resuelva mediante programación lineal entera, indicando que las variables de decisión deban ser enteras:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2859" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-448.png" alt="" width="417" height="197" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-448.png 417w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-448-300x142.png 300w" sizes="(max-width: 417px) 100vw, 417px" /></p>
<p>Hecho esto, damos clic en <em><strong>Aceptar</strong></em> y en <em><strong>Resolver</strong></em>&#8230; Podemos observar como las variables de decisión, las restricciones (inventario usado) y la contribución total (celda objetivo) han tomado valores, estos son los valores óptimos según el modelo formulado. Ahora nos aparecerá un cuadro de diálogo que nos preguntará si deseamos utilizar la solución de Solver y unos informes que debemos seleccionar para obtener una tabla resumen de la respuesta y un análisis de sensibilidad que se insertarán como hojas al archivo de Excel:</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2860" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-449.png" alt="" width="670" height="453" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-449.png 670w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-449-300x203.png 300w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-449-220x150.png 220w" sizes="(max-width: 670px) 100vw, 670px" /></p>
<p>El informe de sensibilidad arrojado por Solver es mucho más básico que el que nos puede proporcionar WinQSB, sin embargo destacamos la información referente al <em><strong>«Multiplicador de Lagrange»</strong></em> que corresponde al «Shadow Price de WinQSB» conocido como el precio sombra, es decir, el cambio marginal de la función objetivo cuando el valor del lado derecho de la restricción aumenta en una unidad, en este caso, por cada kg de Acero adicional que dispongamos, la función objetivo aumentaría en $ 1250.</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2861" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-450.png" alt="" width="513" height="432" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-450.png 513w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-450-300x253.png 300w" sizes="(max-width: 513px) 100vw, 513px" /></p>
<p>Este mismo ejercicio fue resuelto con <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/problema-del-transporte-en-winqsb/">WinQSB</a> y <a title="Programación Lineal en Tora" href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-tora/">TORA</a> arrojando iguales resultados, el archivo de Excel utilizado para esta demostración se adjuntará a continuación para su descarga:</p>
<a href="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Programación-lineal-con-SOLVER.xlsx" target="_blank" class="shortc-button medium blue">Programación lineal con SOLVER</a>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>¿Cómo resolver ejercicios de programación lineal en Solver &#8211; Video?</h2>
<p><iframe loading="lazy" title="Cómo resolver ejercicios de programación lineal con Solver" width="560" height="315" src="https://www.youtube.com/embed/TgH4tpaaHgU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>&nbsp;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-solver/">Programación lineal en Solver</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-lineal-en-solver/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Ejercicios de programación lineal (tercera parte)</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-3/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-3/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Fri, 07 Jun 2019 19:09:29 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Ejercicios resueltos]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<category><![CDATA[Solver]]></category>
		<guid isPermaLink="false">http://contentlab.co/ingenieria/?p=1124</guid>

					<description><![CDATA[<p>A continuación, presentamos la solución a una serie de ejercicios de programación lineal. Encontrarán diversas variaciones del problema básico, aplicadas en diversos contextos. Los invitamos también a repasar los conceptos relacionados con: Problema No. 11 RADIOLOCO fabrica dos tipos de radios. El único recurso escaso que se necesita para producir los radios es la mano &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-3/">Ejercicios de programación lineal (tercera parte)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="cc-m-6082803313" class="j-module n j-header ">
<p>A continuación, presentamos la solución a una serie de ejercicios de programación lineal. Encontrarán diversas variaciones del problema básico, aplicadas en diversos contextos. Los invitamos también a repasar los conceptos relacionados con:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/"><strong>Programación lineal</strong></a></li>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-entera-con-google-or-tools/"><strong>Programación lineal entera</strong></a></li>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-mixta-con-google-or-tools/"><strong>Programación mixta</strong></a></li>
</ul>

		</div>
	
<h2 id="cc-m-header-6082803313" class="">Problema No. 11</h2>
</div>
<div id="cc-m-6082803413" class="j-module n j-text ">
<blockquote class="aligncenter quote-simple "><p>RADIOLOCO fabrica dos tipos de radios. El único recurso escaso que se necesita para producir los radios es la mano de obra. Actualmente la empresa tiene dos trabajadores. El trabajador A esta dispuesto a trabajar hasta 40 horas a la semana y se le paga $10.000 la hora. El trabajador B esta dispuesto a trabajar hasta 50 horas a la semana y se le paga $12.000 la hora. En la siguiente tabla se presentan los precios, así como los recursos necesarios para construir cada tipo de radio.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-2019" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-20.png" alt="" width="546" height="142" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-20.png 546w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-20-300x78.png 300w" sizes="(max-width: 546px) 100vw, 546px" /></p>
<p><em>Como Asistente del Departamento de Investigación de Operaciones de RADIOLOCO, usted necesita determinar un plan de producción óptimo para esta semana.</em></p>
<div id="cc-m-6082803813" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>Xa = Cantidad de radios tipo 1 a producir por el operario A.</p>
<p>Xb = Cantidad de radios tipo 1 a producir por el operario B.</p>
<p>Ya = Cantidad de radios tipo 2 a producir por el operario A.</p>
<p>Yb = Cantidad de radios tipo 2 a producir por el operario B.</p>
<p><strong>Restricciones</strong></p>
<p>Xa + 2Ya &lt;=40 (Disponibilidad de horas operario A)</p>
<p>2Xb + Yb &lt;= 50 (Disponibilidad de horas operario B)</p>
<p>Xa; Xb; Ya; Yb = Enteros</p>
<p><strong>Función objetivo</strong></p>
<p>Zmax = 50000(Xa + Xb) + 44000(Ya + Yb) &#8211; 10000(Xa + Xb) &#8211; 8000(Ya + Yb) &#8211; 10000(Xa + Ya) &#8211; 12000(Xb + Yb)</p>
<p><strong>Solución del modelo mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2021" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-21.png" alt="" width="580" height="261" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-21.png 580w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-21-300x135.png 300w" sizes="(max-width: 580px) 100vw, 580px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<div id="cc-m-6082804213" class="j-module n j-header ">
<h2 id="cc-m-header-6082804213" class="">Problema No. 12</h2>
</div>
<div id="cc-m-6082804313" class="j-module n j-text ">
<blockquote class="aligncenter quote-simple "><p>Un granjero posee 200 cerdos que consumen 90 lb. de comida especial todos los días. El alimento se prepara como una mezcla de maíz y harina de soya con las siguientes composiciones:</p></blockquote>
<p>&nbsp;</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2022" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-22.png" alt="" width="457" height="106" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-22.png 457w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-22-300x70.png 300w" sizes="(max-width: 457px) 100vw, 457px" /></p>
<div id="cc-m-6083122313" class="j-module n j-text ">
<p><em>Los requisitos diarios de alimento de los cerdos son:</em></p>

		<div class="checklist tie-list-shortcode">
<ul>
<li><em>Cuando menos 1% de calcio</em></li>
<li><em>Por lo menos 30% de proteína</em></li>
<li><em>Máximo 5% de fibra</em></li>
</ul>

		</div>
	
<p><em>Determine la mezcla de alimentos que debe usar el granjero para mejorar la producción de cerdos.</em></p>
</div>
<div id="cc-m-6082804413" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>X = Cantidad de libras de maíz a utilizar.</p>
<p>Y = Cantidad de libras de harina de soya a utilizar.</p>
<p><strong>Restricciones</strong></p>
<p>X + Y &lt;= 90</p>
<p>0.01X + 0.02Y &gt;= 0.01(X + Y)</p>
<p>0.09X + 0.60Y &gt;= 0.3(X + Y)</p>
<p>0.02X + 0.06Y &lt;= 0.05(X + Y)</p>
<p>X;Y = Enteros</p>
<p><strong>Función objetivo</strong></p>
<p>Zmax = 3000X + 6000Y</p>
</div>
<div id="cc-m-6082804513" class="j-module n j-text ">
<p><strong>Solución mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2023" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-23.png" alt="" width="556" height="261" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-23.png 556w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-23-300x141.png 300w" sizes="(max-width: 556px) 100vw, 556px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<div id="cc-m-6082804813" class="j-module n j-header ">
<h2 id="cc-m-header-6082804813" class="">Problema No. 13 (Outsourcing)</h2>
</div>
<div id="cc-m-6082804913" class="j-module n j-text "></div>
<div id="cc-m-6083151613" class="j-module n j-imageSubtitle ">
<blockquote class="aligncenter quote-simple "><p>Steel Company produce tres tamaños de tubos: A, B, C que son vendidos, respectivamente en $10, $12 y 9$ por pie. Para fabricar cada pie del tubo A se requieren 0.5 minutos de tiempo de procesamiento sobre un tipo particular de maquina de modelado. Cada pie del tubo B requiere 0.45 minutos y cada pie del tubo C requiere 0.6 minutos. Después de la producción, cada pie de tubo, sin importar el tipo requiere 1 onza de material de soldar. El costo total se estima en $3, $4 y $4 por pie de los tubos respectivamente. Para la siguiente semana, la compañía ha recibido pedidos excepcionalmente grandes que totalizan 2000 pies del tubo A, 4000 pies del tubo B y 5000 pies del tubo C. como solo se dispone de 40 horas de tiempo de maquina esta semana y solo se tienen en inventario 5500 onzas de material de soldar, el departamento de producción no podrá satisfacer esta demanda que requiere un total de 97 horas de tiempo de maquina y 11000 onzas de material de soldar. No se espera que continúe esta demanda tan alta. Por lo tanto, en lugar de expandir la capacidad de las instalaciones de producción, la gerencia esta considerando la compra de algunos de estos tubos a proveedores de Japón a un costo de entrega de $6 por pie del tubo A, $6 por pie del tubo B y $7 por pie del tubo C. Como gerente del departamento de producción se le ha pedido hacer recomendaciones respecto a la cantidad de producción de cada tipo de tubo y la cantidad de compra a Japón para satisfacer la demanda y maximizar las ganancias de la compañía. La siguiente tabla presenta la información correspondiente.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-2024" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-24.png" alt="" width="607" height="149" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-24.png 607w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-24-300x74.png 300w" sizes="(max-width: 607px) 100vw, 607px" /></p>
<div id="cc-m-6082805013" class="j-module n j-text ">
<p><strong>Definición de las variables</strong></p>
<p>Ax = Cantidad de pies de tubo A a producir.</p>
<p>Bx = Cantidad de pies de tubo B a producir.</p>
<p>Cx = Cantidad de pies de tubo C a producir.</p>
<p>Ay = Cantidad de pies de tubo A a comprar.</p>
<p>By = Cantidad de pies de tubo B a comprar.</p>
<p>Cy = Cantidad de pies de tubo C a comprar.</p>
<p><strong>Restricciones</strong></p>
<p>0.5Ax + 0.45Bx + 0.6Cx &lt;= 2400 (Tiempo en máquina en minutos)</p>
<p>Ax + Bx + Cx &lt;= 5500</p>
<p>Ax + Ay = 2000</p>
<p>Bx + By = 4000</p>
<p>Cx + Cy = 5000</p>
<p>Todas las variables = Enteros</p>
<p><strong>Función Objetivo</strong></p>
<p>Zmax = 10(Ax + Ay) + 12(Bx + By) + 9(Cx + Cy) &#8211; 3Ax &#8211; 4Bx &#8211; 4Cx &#8211; 6Ay &#8211; 6By &#8211; 7Cy</p>
</div>
<div id="cc-m-6082805113" class="j-module n j-text ">
<p><strong>Solución obtenida mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2025" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-25.png" alt="" width="550" height="362" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-25.png 550w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-25-300x197.png 300w" sizes="(max-width: 550px) 100vw, 550px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2 id="cc-m-header-6082805713" class="">Problema No. 14</h2>
<blockquote class="aligncenter quote-simple "><p>Un barco tiene tres bodegas: Proa, popa y centro; los límites de capacidad para esas tres bodegas son:</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-2026" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-26.png" alt="" width="536" height="235" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-26.png 536w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-26-300x132.png 300w" sizes="(max-width: 536px) 100vw, 536px" /></p>
<blockquote class="aligncenter quote-simple "><p>Buscando conservar el equilibrio en el barco, el peso de cada bodega debe ser proporcional a su capacidad en toneladas. ¿Cómo se debe repartir la carga buscando maximizar las ganancias totales?</p></blockquote>
<div id="cc-m-6082806113" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>Ax= Cantidad de toneladas de carga A a almacenar en proa.</p>
<p>Ay= Cantidad de toneladas de carga A a almacenar en popa.</p>
<p>Az= Cantidad de toneladas de carga A a almacenar en centro.</p>
<p>Bx= Cantidad de toneladas de carga B a almacenar en proa.</p>
<p>By= Cantidad de toneladas de carga B a almacenar en popa.</p>
<p>Bz= Cantidad de toneladas de carga B a almacenar en centro.</p>
<p>Cx= Cantidad de toneladas de carga C a almacenar en proa.</p>
<p>Cy= Cantidad de toneladas de carga C a almacenar en popa.</p>
<p>Cz= Cantidad de toneladas de carga C a almacenar en centro.</p>
<p><strong>Restricciones</strong></p>
<p>Ax + Bx + Cx &lt;= 2000</p>
<p>Ay + By + Cy &lt;= 1500</p>
<p>Az + Bz + Cz &lt;= 3000</p>
<p>Ax + Ay + Az &lt;= 6000</p>
<p>Bx + By + Bz &lt;= 4000</p>
<p>Cx + Cy + Cz &lt;= 2000</p>
<p>60Ax + 50Bx + 25Cx &lt;= 100000</p>
<p>60Ay + 50By + 25Cy &lt;= 300000</p>
<p>60Az + 50Bz + 25Cz &lt;= 135000</p>
<p><strong>Restricciones de equilibrio del barco</strong></p>
<p>(Ax + Bx + Cx) &#8211; ((2000(Ay + By + Cy))/1500) = 0 Relación de peso proa &#8211; popa</p>
<p>(Ax + Bx + Cx) &#8211; ((2000(Az + Bz + Cz)/3000) = 0 Relación de peso proa &#8211; centro</p>
<p><strong>Función Objetivo</strong></p>
<p>Zmax = 6(Ax + Ay + Az) + 8(Bx + By + Bz) + 5(Cx + Cy + Cz)</p>
</div>
<div id="cc-m-6082806213" class="j-module n j-text ">
<p><strong>Solución obtenida mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2027" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-27.png" alt="" width="570" height="545" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-27.png 570w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-27-300x287.png 300w" sizes="(max-width: 570px) 100vw, 570px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2 id="cc-m-header-6082806513" class="">Problema No. 15</h2>
<blockquote class="aligncenter quote-simple "><p>Un fabricante debe cumplir un contrato a cuatro meses durante los cuales varían los costos de producción. El costo de almacenamiento de unidades producidas en un mes determinado y no vendidas en ese mes es de 10 pesos por unidad y por mes. Se dispone de la siguiente información.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-2028" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-28.png" alt="" width="494" height="132" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-28.png 494w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-28-300x80.png 300w" sizes="(max-width: 494px) 100vw, 494px" /></p>
<div id="cc-m-6082806813" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>X1 = Cantidad de unidades producidas en el mes 1.</p>
<p>X2 = Cantidad de unidades producidas en el mes 2.</p>
<p>X3 = Cantidad de unidades producidas en el mes 3.</p>
<p>X4 = Cantidad de unidades producidas en el mes 4.</p>
<p>I1 = Inventario de unidades al final del mes 1.</p>
<p>I2 = Inventario de unidades al final del mes 2.</p>
<p>I3 = Inventario de unidades al final del mes 3.</p>
<p>I4 = Inventario de unidades al final del mes 4.</p>
<p><strong>Restricciones</strong></p>
<p>X1 &gt;= 20</p>
<p>X1 &lt;= 40</p>
<p>X1 &#8211; 20 = I1</p>
<p>X2 + I1 &gt;= 30</p>
<p>X2 &lt;= 50</p>
<p>X2 + I1 &#8211; 30 = I2</p>
<p>X3 + I2 &gt;= 50</p>
<p>X3 &lt;= 30</p>
<p>X3 + I2 &#8211; 50 = I3</p>
<p>X4 + I3 &gt;= 40</p>
<p>X4 &lt;= 50</p>
<p>X4 + I3 &#8211; 40 = I4</p>
<p><strong>Función Objetivo</strong></p>
<p>Zmin = 140X1 + 160X2 + 150X3 + 170X4 + 10I1 + 10I2 + 10I3 + 10I4</p>
</div>
<div id="cc-m-6082807013" class="j-module n j-text ">
<p><strong>Solución obtenida mediante Solver</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2029" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-29.png" alt="" width="605" height="377" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-29.png 605w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-29-300x187.png 300w" sizes="(max-width: 605px) 100vw, 605px" /></p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Repasa los conceptos de este tema en: <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/"><strong>Programación lineal</strong></a>.
			</div>
		</div>
	

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<a href="https://ingenieriaindustrialonline.com/herramientas-para-el-ingeniero-industrial/investigacion-de-operaciones/ejercicios-de-programacion-lineal-4/" target="_blank" class="shortc-button medium blue">Ejercicios parte 4</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-3/">Ejercicios de programación lineal (tercera parte)</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/ejercicios-de-programacion-lineal-3/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Ejercicios de programación lineal (segunda parte)</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-2/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-2/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Thu, 06 Jun 2019 21:27:01 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Ejercicios]]></category>
		<category><![CDATA[Ejercicios resueltos]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<category><![CDATA[Solver]]></category>
		<guid isPermaLink="false">http://contentlab.co/ingenieria/?p=1120</guid>

					<description><![CDATA[<p>A continuación, presentamos la solución a una serie de ejercicios de programación lineal. Encontrarán diversas variaciones del problema básico, aplicadas en diversos contextos. Los invitamos también a repasar los conceptos relacionados con: Problema No. 6 Un empresario pretende fabricar dos tipos de congeladores denominados A y B. Cada uno de ellos debe pasar por tres &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-2/">Ejercicios de programación lineal (segunda parte)</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A continuación, presentamos la solución a una serie de ejercicios de programación lineal. Encontrarán diversas variaciones del problema básico, aplicadas en diversos contextos. Los invitamos también a repasar los conceptos relacionados con:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/"><strong>Programación lineal</strong></a></li>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-entera-con-google-or-tools/"><strong>Programación lineal entera</strong></a></li>
<li><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-mixta-con-google-or-tools/"><strong>Programación mixta</strong></a></li>
</ul>

		</div>
	
<h2 id="cc-m-header-6080360113" class="">Problema No. 6</h2>
<blockquote class="aligncenter quote-simple "><p>Un empresario pretende fabricar dos tipos de congeladores denominados A y B. Cada uno de ellos debe pasar por tres operaciones antes de su comercialización: Ensamblaje, pintura y control de calidad. Los congeladores requieren, respectivamente, 2,5 y 3 horas de ensamblaje, 3 y 6 Kg. de esmalte para su pintura y 14 y 10 horas de control de calidad. Los costos totales de fabricación por unidad son, respectivamente, 30 y 28, y los precios de venta 52 y 48, todos ellos en miles de pesos.</p></blockquote>
<blockquote class="aligncenter quote-simple "><p>El empresario dispone semanalmente de máximo, 4500 horas para ensamblaje, de máximo 8400 Kg. de esmalte y 20000 horas máximo, para control de calidad. Los estudios de mercado muestran que la demanda semanal de congeladores no supera las 1700 unidades y que, en particular, la de tipo A es de, al menos 600 unidades.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-2873" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-459.png" alt="" width="475" height="170" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-459.png 475w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-459-300x107.png 300w" sizes="(max-width: 475px) 100vw, 475px" /></p>
<div id="cc-m-6080360513" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>A = Cantidad de congeladores tipo A a producir.</p>
<p>B = Cantidad de congeladores tipo B a producir.</p>
<p><strong>Restricciones</strong></p>
<p>2,5A + 3,0B &lt;= 4500 (Horas de ensamblaje)</p>
<p>3A + 6B &lt;= 8400 (Kg de pintura)</p>
<p>14A + 10B &lt;= 20000 (Horas de control de calidad)</p>
<p>A + B &lt;= 1700 (Restricciones de mercado)</p>
<p>A &gt;= 600 (Política de ventas de congeladores tipo A)</p>
<p>A; B &gt;= 0 (No negatividad)</p>
<p>A;B = Enteros</p>
<p><strong>Función objetivo</strong></p>
<p>Zmax = 22A + 20B</p>
<p><strong>Solución del modelo mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2874" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-460.png" alt="" width="573" height="283" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-460.png 573w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-460-300x148.png 300w" sizes="(max-width: 573px) 100vw, 573px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2 id="cc-m-header-6080360913" class="">Problema No. 7 (Combinaciones)</h2>
<blockquote class="aligncenter quote-simple "><p>Una empresa de confecciones puede producir 1000 pantalones o 3000 blusas (o una combinación de ambos) diariamente. El departamento de acabado puede trabajar sobre 1500 pantalones o sobre 2000 blusas (o una combinación de ambos) cada día; el departamento de mercadeo requiere que se produzcan diariamente al menos 400 pantalones. Si el beneficio de un pantalón es de $ 4000 y el de una blusa es de $ 3000. ¿Cuántas unidades se deben producir de cada uno para maximizar las utilidades?</p></blockquote>
<div id="cc-m-6080361213" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>X = Cantidad de pantalones a producir diariamente.</p>
<p>Y = Cantidad de blusas a producir diariamente.</p>
<p><strong>Restricciones</strong></p>
<p>(X/1000) + (Y/3000) &lt;= 1</p>
<p>(X/1500) + (Y/2000) &lt;= 1</p>
<p>X &gt;= 400</p>
<p>X;Y = Enteros</p>
<p><strong>Función objetivo</strong></p>
<p>Zmax = 4000X + 3000Y</p>
</div>
<div id="cc-m-6080361313" class="j-module n j-text ">
<p><strong>Solución mediante SOLVER</strong></p>
</div>
<p><img decoding="async" class="aligncenter size-full wp-image-2876" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-461.png" alt="" width="601" height="249" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-461.png 601w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-461-300x124.png 300w" sizes="(max-width: 601px) 100vw, 601px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2 id="cc-m-header-6080361613" class="">Problema No. 8</h2>
<blockquote class="aligncenter quote-simple "><p>El granjero Leary cultiva trigo y maíz en su granja con un terrero cultivable de 45 acres. El puede vender a lo más 140 bultos de trigo y 120 bultos de maíz. Cada acre que él planta con trigo produce 5 bultos, mientras que cada acre plantado con maíz produce 4 bultos. El trigo se vende a 30 dólares el bulto, mientras que el maíz a 50 dólares el bulto. Para cosechar un acre de trigo requiere 6 horas de labor; cosechar un acre de maíz requiere 10 horas. Se pueden contratar hasta 350 horas de labor a 10 dólares la hora. Para maximizar las ganancias, el granjero formuló y resolvió un modelo lineal</p></blockquote>
<p><strong>Definición de las variables</strong></p>
<p>X = Cantidad de bultos de trigo a producir.</p>
<p>Y = Cantidad de bultos de maíz a producir.</p>
<p><strong>Restricciones</strong></p>
<p>(X/5) + (Y/4) &lt;= 45</p>
<p>X &lt;= 140</p>
<p>Y &lt;= 120</p>
<p>(6(X/5)) + (10(Y/4)) &lt;= 350</p>
<p>X;Y = Enteros</p>
<p><strong>Función Objetivo</strong></p>
<p>Zmax = 30X + 50Y &#8211; (6X/5)10 &#8211; (10Y/4)10</p>
<p><strong>Solución obtenida mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2877" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-462.png" alt="" width="528" height="263" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-462.png 528w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-462-300x149.png 300w" sizes="(max-width: 528px) 100vw, 528px" /></p>
<p>Este problema puede resolverse tanto si se definen las variables de decisión en función de los acres cultivados o los bultos cosechados. En ambos casos la función objetivo debe dar el mismo resultado.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2 id="cc-m-header-6080362513" class="">Problema No. 9 (Restricciones redundantes)</h2>
<blockquote class="aligncenter quote-simple "><p>SUCAFÉ, produce y distribuye dos tipos de café a los supermercados de la ciudad: normal y procesado. Para éste mes Sucafé tiene 180 toneladas de grano de café en inventario y tiene programadas hasta 50 horas de tiempo de procesamiento para el tostado. Cada tonelada de café normal necesita una tonelada de grano, dos horas de tostado y produce una ganancia de $8.000. Cada tonelada de café procesado necesita también una tonelada de grano pero necesita cuatro horas de tostado y produce una ganancia de $9.000. Plantee un modelo e programación lineal que le permita a Sucafé planear su producción para este mes.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-2878" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-463.png" alt="" width="523" height="81" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-463.png 523w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-463-300x46.png 300w" sizes="(max-width: 523px) 100vw, 523px" /></p>
<div id="cc-m-6080362813" class="j-module n j-text ">
<p><strong>Definición de variables</strong></p>
<p>X = Cantidad de toneladas de café normal a producir.</p>
<p>Y = Cantidad de toneladas de café procesado a producir.</p>
<p><strong>Restricciones</strong></p>
<p>X + Y &lt;= 180</p>
<p>2X + 4Y &lt;= 50</p>
<p><strong>Función Objetivo</strong></p>
<p>Zmax = 8000X + 9000Y</p>
</div>
<div id="cc-m-6080362913" class="j-module n j-text ">
<p><strong>Solución obtenida mediante SOLVER</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2879" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-464.png" alt="" width="481" height="222" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-464.png 481w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-464-300x138.png 300w" sizes="(max-width: 481px) 100vw, 481px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2 id="cc-m-header-6080363213" class="">Problema No. 10</h2>
<blockquote class="aligncenter quote-simple "><p>Como gerente de una asociación de empresas para el reciclaje en la región, ha sido asignado para tomar la decisión de a quien debe venderse unos desperdicios de metal que fueron recolectados. Dos empresas: Metales Ltda. y Hierros Unidos, están interesados en la compra de los desperdicios. La primera empresa, que paga la tonelada de metal a: $500 no esta interesada en comprar mas de 500 toneladas, en cambio la segunda, que esta dispuesta a pagar $400 por tonelada de metal, ofrece comprar un límite máximo de 600 toneladas. Sin embargo la financiación local ha limitado las compras formulando la siguiente condición: La cantidad de desperdicio vendida a la empresa Metales Ltda. NO puede superar el doble de la cantidad vendida a Hierros Unidos.</p></blockquote>
<blockquote class="aligncenter quote-simple "><p>Conociendo que la asociación de empresas dispone de 1.000 toneladas de desperdicios metálicos, formule un modelo de programación lineal que permita alcanzar la mejor decisión para el gerente.</p></blockquote>
<p><img decoding="async" class="aligncenter size-full wp-image-2880" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-465.png" alt="" width="421" height="81" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-465.png 421w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-465-300x58.png 300w" sizes="(max-width: 421px) 100vw, 421px" /></p>
<p><strong>Definición de variables</strong></p>
<p>X = Cantidad de toneladas de desperdicios a vender a Metales Ltda.</p>
<p>Y = Cantidad de toneladas de desperdicios a vender a Hierros Unidos.</p>
<p><strong>Restricciones</strong></p>
<p>X + Y &lt;= 1000</p>
<p>X &lt;= 500</p>
<p>Y &lt;= 600</p>
<p>X &lt;= 2Y</p>
<p>X;Y &gt;= 0</p>
<p><strong>Función Objetivo</strong></p>
<p>Zmax = 500X + 400Y</p>
<p><strong>Solución obtenida mediante Solver</strong></p>
<p><img decoding="async" class="aligncenter size-full wp-image-2881" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-466.png" alt="" width="537" height="249" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-466.png 537w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/Sin-título-466-300x139.png 300w" sizes="(max-width: 537px) 100vw, 537px" /></p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>Repasa los conceptos de este tema en: <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/"><strong>Programación lineal.</strong></a>
			</div>
		</div>
	
<p><center><a href="https://ingenieriaindustrialonline.com/herramientas-para-el-ingeniero-industrial/investigacion-de-operaciones/ejercicios-de-programacion-lineal-3/" target="_blank" class="shortc-button medium blue">Ejercicios parte 3</a></center></div>
</div>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/ejercicios-de-programacion-lineal-2/">Ejercicios de programación lineal (segunda parte)</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/ejercicios-de-programacion-lineal-2/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Programación lineal</title>
		<link>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/</link>
					<comments>https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/#comments</comments>
		
		<dc:creator><![CDATA[Bryan Salazar López]]></dc:creator>
		<pubDate>Thu, 06 Jun 2019 20:41:12 +0000</pubDate>
				<category><![CDATA[Investigación de operaciones]]></category>
		<category><![CDATA[Investigación de Operaciones]]></category>
		<category><![CDATA[Modelamiento]]></category>
		<category><![CDATA[Programación lineal]]></category>
		<category><![CDATA[Solver]]></category>
		<guid isPermaLink="false">http://contentlab.co/ingenieria/?p=1104</guid>

					<description><![CDATA[<p>La Programación Lineal (Optimización lineal), es el nombre que se le da al cálculo de la mejor solución, a un problema modelado como un conjunto de relaciones lineales. Estos problemas surgen en muchas disciplinas de la ciencia y la ingeniería. Es comúnmente utilizada en el ejercicio de la ingeniería, para abordar problemas de productividad, de acuerdo &#8230;</p>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/">Programación lineal</a> se publicó primero en <a href="https://ingenieriaindustrialonline.com">Ingenieria Industrial Online</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La <em><strong>Programación Lineal</strong></em> (Optimización lineal), es el nombre que se le da al cálculo de la mejor solución, a un problema modelado como un conjunto de relaciones lineales. Estos problemas surgen en muchas disciplinas de la ciencia y la ingeniería.</p>
<p>Es comúnmente utilizada en el ejercicio de la ingeniería, para abordar problemas de productividad, de acuerdo a la satisfacción de determinadas restricciones &#8211; por ejemplo: recursos, principalmente los limitados y costosos -, de acuerdo a un criterio de optimización: maximizar un beneficio o minimizar un costo.</p>
<p>El objetivo primordial de la <em><strong>Programación Lineal</strong></em> es optimizar, es decir, maximizar o minimizar funciones lineales, en varias variables lineales, con restricciones lineales (sistemas de inecuaciones lineales), optimizando una función objetivo también lineal.</p>

		<div class="box info  ">
			<div class="box-inner-block">
				<span class="fa tie-shortcode-boxicon"></span>La palabra «programación» es un nombre poco apropiado, similar a  «computadora»; alguna vez significó «una persona que calcula». Aquí, «programación» se refiere a la disposición de un plan, en lugar de programar en un lenguaje de computadora.
			</div>
		</div>
	
<p>Los resultados y el proceso de optimización se convierten en una base cuantitativa del proceso de toma de decisiones frente a las situaciones planteadas. Decisiones en las que sería importante tener en cuenta diversos criterios adicionales, como:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Los hechos</li>
<li>La experiencia</li>
<li>La intuición</li>
<li>La autoridad</li>
</ul>

		</div>
	
<p>Es preciso considerar que <span>la solución de un modelo matemático establece una base para la toma de decisiones; sin embargo, puede considerarse como esencial el </span><a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/analisis-de-sensibilidad-grafica-mediante-el-uso-de-python-caso-1/" target="_blank" rel="noopener"><strong>análisis de los resultados obtenidos</strong></a><span>.</span></p>
<h2>
		<div id="como-resolver-un-problema-mediante-programacion-lineal" data-title="¿Cómo resolver un problema mediante programación lineal?" class="index-title"></div>
	¿Cómo resolver un problema mediante programación lineal?</h2>
<p>El primer paso para la resolución de un problema de programación lineal consiste en la identificación de los elementos básicos de un modelo matemático, estos son:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>Función Objetivo</li>
<li>Variables</li>
<li>Restricciones</li>
</ul>

		</div>
	
<p>El siguiente paso consiste en la determinación de los mismos, para lo cual proponemos seguir la siguiente metodología:</p>
<p><img decoding="async" class="aligncenter wp-image-1105 size-full" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-3.png" alt="Programación lineal" width="626" height="101" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-3.png 626w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-3-300x48.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></p>
<h3>
		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	</h3>
<h3>
		<div id="la-funcion-objetivo" data-title="La función objetivo" class="index-title"></div>
	La función objetivo</h3>
<p><strong>La función objetivo tiene una estrecha relación con la pregunta general que se desea responder</strong>. Si en un modelo resultasen distintas preguntas, la función objetivo se relacionaría con la pregunta del nivel superior, es decir, la pregunta fundamental. Así por ejemplo, si en una situación se desean minimizar los <a title="Costos de Producción" href="https://ingenieriaindustrialonline.com/produccion/costos-de-produccion/" target="_blank" rel="noopener"><em><strong>costos</strong></em></a>, es muy probable que la pregunta de mayor nivel sea la que se relacione con aumentar la utilidad en lugar de un interrogante que busque hallar la manera de disminuir los costos.</p>
<p><img decoding="async" class="aligncenter wp-image-1106 size-full" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-4.png" alt="Función objetivo" width="632" height="280" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-4.png 632w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-4-300x133.png 300w" sizes="(max-width: 632px) 100vw, 632px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h3>
		<div id="las-variables-de-decision" data-title="Las variables de decisión" class="index-title"></div>
	Las variables de decisión</h3>
<p>Similar a la relación que existe entre objetivos específicos y objetivo general, se comportan las variables de decisión respecto a la función objetivo, puesto que estas se identifican partiendo de una serie de preguntas derivadas de la pregunta fundamental. Las variables de decisión, son en teoría, factores controlables del sistema que se está modelando, y como tal, estas pueden tomar diversos valores posibles, de los cuales se precisa conocer su valor óptimo, que contribuya con la consecución del objetivo de la función general del problema.</p>
<p><img decoding="async" class="size-full wp-image-1107 aligncenter" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-5.png" alt="Variables de decisión" width="579" height="362" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-5.png 579w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-5-300x188.png 300w" sizes="(max-width: 579px) 100vw, 579px" /></p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h3>
		<div id="las-restricciones" data-title="Las restricciones" class="index-title"></div>
	Las restricciones</h3>
<p>Cuando hablamos de las restricciones en un problema de <strong>programación lineal</strong>, nos referimos a todo aquello que limita la libertad de los valores que pueden tomar las variables de decisión.</p>
<p>La mejor manera de hallarlas consiste en pensar en un caso hipotético en el que decidiéramos darle un valor infinito a nuestras variables de decisión, por ejemplo, ¿qué pasaría si en un problema que precisa maximizar sus utilidades en un sistema de producción de calzado decidiéramos producir una cantidad infinita de zapatos? Seguramente ahora nos surgirían múltiples interrogantes, como por ejemplo:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li>¿Con cuánta materia prima cuento para producirlos?</li>
<li>¿Con cuánta mano de obra cuento para fabricarlos?</li>
<li>¿Pueden las instalaciones de mi empresa albergar tal cantidad de producto?</li>
<li>¿Podría mi fuerza de mercadeo vender todos los zapatos?</li>
<li>¿Puedo financiar tal empresa?</li>
</ul>

		</div>
	
<p>Pues bueno, entonces habríamos descubierto que nuestro sistema presenta una serie de limitantes, tanto físicas, como de contexto, de tal manera que los valores que en un momento dado podrían tomar nuestras variables de decisión se encuentran condicionados por una serie de restricciones.</p>

		<div class="clearfix"></div>
		<hr style="margin-top:20px; margin-bottom:20px;" class="divider divider-solid">
	
<h2>
		<div id="ejemplo-de-resolucion-de-un-problema-de-programacion-lineal" data-title="Ejemplo de resolución de un problema de programación lineal" class="index-title"></div>
	Ejemplo de resolución de un problema de programación lineal</h2>
<blockquote class="aligncenter quote-simple "><p>La fábrica de Hilados y Tejidos «SALAZAR» requiere fabricar dos tejidos de calidad diferente T y T’; se dispone de 500 Kg de hilo a, 300 Kg de hilo b y 108 Kg de hilo c. Para obtener un metro de T diariamente se necesitan 125 gr de a, 150 gr de b y 72 gr de c; para producir un metro de T’ por día se necesitan 200 gr de a, 100 gr de b y 27 gr de c. El T se vende a $4000 el metro y el T’ se vende a $5000 el metro. Si se debe obtener el máximo beneficio, ¿cuántos metros de T y T’ se deben fabricar?</p></blockquote>
<span class="tie-highlight tie-highlight-blue"><strong><em>El problema se recomienda leer en más de una ocasión para facilitar el reconocimiento de las variables, además es muy recomendable la elaboración de tablas o matrices que faciliten una mayor comprensión del mismo.</em></strong></span>
<h3>Paso 1: Formular el problema</h3>
<p><strong><em><span class="tie-highlight tie-highlight-blue">Para realizar este paso partimos de la pregunta central del problema.</span></em></strong></p>
<p style="text-align: center;"><strong>¿Cuántos metros de T y T’ se deben fabricar?</strong></p>
<p>Y la formulación es:</p>
<p>“Determinar la cantidad de metros diarios de tejido tipo T y T’ a fabricar teniendo en cuenta el óptimo beneficio respecto a la utilidad”.</p>
<h3>Paso 2: Determinar las variables de decisión</h3>
<p><em><strong><span class="tie-highlight tie-highlight-blue">Basándonos en la formulación del problema nuestras variables de decisión son:</span></strong></em></p>
<p>XT: Cantidad de metros diarios de tejido tipo T a fabricar</p>
<p>XT’: Cantidad de metros diarios de tejido tipo T’ a fabricar</p>
<div id="cc-m-2963512213" class="j-module n j-header ">
<h3 id="cc-m-header-2963512213" class="">PASO 3: Determinar las restricciones del problema</h3>
</div>
<div id="cc-m-2963512313" class="j-module n j-text ">
<p><em><strong><span class="tie-highlight tie-highlight-blue">En este paso determinamos las funciones que limitan el problema, estas están dadas por capacidad, disponibilidad, proporción, no negatividad entre otras.</span></strong></em></p>
<p>De disponibilidad de materia prima:</p>
<p>0,125XT + 0,200XT’ &lt;= 500        Hilo “a”</p>
<p>0,150XT + 0,100XT’ &lt;= 300        Hilo “b”</p>
<p>0,072XT + 0,027XT’ &lt;= 108        Hilo “c”</p>
<p>De no negatividad</p>
<p>XT,XT’ &gt;= 0</p>
</div>
<h3 id="cc-m-header-2963512213" class="">PASO 4: Determinar la Función Objetivo</h3>
<p><em><strong><span class="tie-highlight tie-highlight-blue">En este paso es de vital importancia establecer el contexto operativo del problema para de esta forma determinar si es de Maximización o Minimización. En este caso abordamos el contexto de beneficio por ende lo ideal es Maximizar.</span></strong></em></p>
<p>Función Objetivo</p>
<p>ZMAX = 4000XT + 5000XT’</p>
<h3 id="cc-m-2963512913" class="j-module n j-header ">PASO 5: Resolver el modelo utilizando software o métodos manuales</h3>
<p>La solución de un modelo de programación lineal puede abordarse de diversas formas: <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-simplex/" target="_blank" rel="noopener"><em><strong>métodos manuales (Simplex)</strong></em></a>, <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/metodo-grafico/" target="_blank" rel="noopener"><em><strong>métodos gráficos</strong></em></a> y solucionadores (software).</p>
<p>La consideración del método manual Simplex, y el método gráfico tiene un fundamento pedagógico. La perspectiva de lo que representa un modelo de programación lineal, se amplía considerablemente mediante estos métodos.</p>
<p>Ahora bien, en la práctica, los métodos utilizados por excelencia son los solucionadores (software). Programas de computación que utilizan algoritmos que permiten resolver modelos robustos con suma facilidad. Dentro de los solucionadores más tradicionales encontramos:</p>

		<div class="checklist tie-list-shortcode">
<ul>
<li><strong><a title="Programación Lineal en WinQSB" href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-winqsb/" target="_blank" rel="noopener">WinQSB</a>, </strong></li>
<li><strong><a title="Programación Lineal en Tora" href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-tora/" target="_blank" rel="noopener">TORA</a>, </strong></li>
<li><strong><a title="Programación Lineal en Lingo" href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-lingo/" target="_blank" rel="noopener">Lingo</a>, </strong></li>
<li><strong><a title="Programación Lineal en Solver" href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-solver/" target="_blank" rel="noopener">Solver de Excel</a></strong></li>
</ul>

		</div>
	
<p>Son programas gratuitos, a menudo restringidos en cuanto al número de variables y restricciones, y por estos días, muchos de ellos descontinuados.</p>
<p>En la actualidad, los solucionadores de programación basada en restricciones, ofrecen la mejor de las prestaciones. Son robustos, se encuentran integrados y algunos de ellos son gratuitos, como es el caso de <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal-en-google-or-tools/" target="_blank" rel="noopener"><strong>Google OR-Tools</strong></a>.</p>
<p>Para efectos prácticos, e<span style="text-align: justify;">l anterior ejercicio fue resuelto mediante Solver &#8211; Excel, y su resultado fue:</span></p>
<p><img decoding="async" src="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-6.webp" alt="Solver PL" width="574" height="345" class="aligncenter wp-image-26528 size-full" srcset="https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-6.webp 574w, https://ingenieriaindustrialonline.com/wp-content/uploads/2019/06/MC-6-300x180.webp 300w" sizes="(max-width: 574px) 100vw, 574px" /></p>
<div id="cc-m-2963513113" class="j-module n j-text ">
<p>Hemos preparado una serie de ejercicios de programación lineal y programación lineal entera, en los cuales podrá observar su modelamiento y resolución en Solver.</p>
<div class="cc-m-hgrid-column last">
<div id="cc-matrix-1294457813">
<div id="cc-m-2963520513" class="j-module n j-text "><center><a href="https://ingenieriaindustrialonline.com/herramientas-para-el-ingeniero-industrial/investigaci%C3%B3n-de-operaciones/ejercicios-de-programacion-lineal/" target="_blank" class="shortc-button medium blue">Ejercicios resueltos</a></center></div>
</div>
</div>
</div>
<p>La entrada <a href="https://ingenieriaindustrialonline.com/investigacion-de-operaciones/programacion-lineal/">Programación lineal</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-lineal/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
