Autor Tema: Consulta de resolución de ecuación

0 Usuarios y 1 Visitante están viendo este tema.

22 Agosto, 2019, 10:00
Leído 694 veces

solete

  • Nuevo Usuario
  • Mensajes: 3
  • Karma: +0/-0
  • Sexo: Masculino
Hola a todos,

Estoy analizando una aplicación que realiza cálculos de mezclas de un producto, el objetivo que estoy buscando son métodos de solución a este problema, ya que el método actual tarda mucho tiempo y no resuelve todos los casos. Al final os planteo las dudas o inquietudes que tengo.

El problema es el siguiente.

Tenemos un mismo productos almacenado en diferentes almacenes, cada almacén tiene un contenido de azufre diferente (por ejemplo 0.140%).

Se busca la mezcla que se ha realizar de los diferentes almacenes para conseguir una cantidad determinada de producto final con un contenido de azufre dado.

Ejemplo:

Queremos calcular la cantidad a mezcla de los diferentes almacenes disponibles para obtener 1500 kg de producto con un azufre 0,225. 

Almacén 1: Cantidad 5000 kg Azufre 0,04 %
Almacén 2: Cantidad 2000 kg Azufre 0,15 %
Almacén 3: Cantidad 3000 kg Azufre 0,300 %
Almacén 4: Cantidad 6000 kg Azufre 0,400 %

El método actual de solución es el siguiente:

1.- Empezamos generamos todas las posibles combinaciones sin repetición de los almacenes disponibles.

Para este ejemplo seleccionamos una de las combinaciones que es Almacén 1, 2, 3 y 4. 

2.- Comprobamos cada combinación siguiendo el siguiente método o ecuación:

2.1.- Separamos los almacenes de la combinación en calidad menor o mayor del azufre medio por los que tendríamos:
-Almacén 1 y 2 son de azufre menor.
-Almacén 3 y 4 son de azufre mayor.

2.2.- Dividimos la cantidad total de producto a calcular entre el número de componentes y se la asignamos inicialmente a cada componente.

por lo que tenemos \[ \displaystyle\frac{1500}{4}=375 \] y la combinación quedaría así:

Almacén 1: Cantidad a mezclar 375 azufre 0,04 menor
Almacén 2: Cantidad a mezclar 375 azufre 0,15 menor
Almacén 3: Cantidad a mezclar 375 azufre 0,300 mayor
Almacén 4: Cantidad a mezclar 375 azufre 0,400 mayor
 
2.3- Usando la siguiente formula para ponderar calculamos el resultado de azufre total de la mezcla:

\[ Z_T = \displaystyle\frac{(C_A1 * Z_A1) + (C_A2 * Z_A2) + (C_A3 * Z_A3) + (C_A4 * Z_A4)}{C_T} \]

\[ Z_T \] es el azufre total resultante.
\[ C_T \] cantidad de producto a obtener.
\[ Z_A1 \] azufre almacén 1.
\[ Z_A2 \] azufre almacén 2.
\[ Z_A3 \] azufre almacén 3.
\[ Z_A4 \] azufre almacén 4.
\[ C_A1 \] cantidad de mezcla del almacén 1.
\[ C_A2 \] cantidad de mezcla del almacén 2.
\[ C_A3 \] cantidad de mezcla del almacén 3.
\[ C_A4 \] cantidad de mezcla del almacén 4. 

2.4- Calculamos la diferencia del azufre total con el azufre objetivo:
-Si la diferencia es cero. SOLUCIÓN ENCONTRADA!!!  :aplauso:
-Si la diferencia positiva, es decir falta azufre. Sumaremos un "Incremento" a la cantidad de los componentes de azufre mayor y restaremos el "Incremento" de los de los componentes de azufre menor.
-Si la diferencia negativa, es decir sobra azufre. Sumaremos un "Incremento" a la cantidad de los componentes de azufre menor y restaremos el "Incremento" de los de los componentes de azufre mayor.

El objetivo de este paso es ir aproximándose al resultado iterando hasta alcanzar el azufre objetivo o que el "Incremento" llegue a cero o combinación no valida.

"Incremento": Se calcula en cada iteración dividiéndose entre 2. La primera vez se corresponde con la cantidad asignada al principio (paso 2.2) dividida entre 2.

Las cantidades de producto son con decimales.

Inquietudes o dudas:

-El método de solución aplicado corresponde con alguno conocido, ¿Cual seria? (para profundizar en el tema y mejorarlo).
-¿Hay alguna forma de evaluar la formula de ponderación sin tener que calcular cantidades para los componentes e ir aproximándose al resultado?.
Si existe otro método alternativo, ¿como se denomina?

Disculpar si me he extendido mucho y muchas gracias por vuestro tiempo y ayuda.


   











   

22 Agosto, 2019, 12:53
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 2.336
  • Karma: +0/-0
  • Sexo: Masculino
Estoy analizando una aplicación que realiza cálculos de mezclas de un producto, el objetivo que estoy buscando son métodos de solución a este problema, ya que el método actual tarda mucho tiempo y no resuelve todos los casos.

....
El problema es el siguiente.

Tenemos un mismo productos almacenado en diferentes almacenes, cada almacén tiene un contenido de azufre diferente (por ejemplo 0.140%).

Se busca la mezcla que se ha realizar de los diferentes almacenes para conseguir una cantidad determinada de producto final con un contenido de azufre dado.

Ejemplo:

Queremos calcular la cantidad a mezcla de los diferentes almacenes disponibles para obtener 1500 kg de producto con un azufre 0,225. 

Almacén 1: Cantidad 5000 kg Azufre 0,04 %
Almacén 2: Cantidad 2000 kg Azufre 0,15 %
Almacén 3: Cantidad 3000 kg Azufre 0,300 %
Almacén 4: Cantidad 6000 kg Azufre 0,400 %

Esta clase de problemas pertenecen a la "Programación Lineal". Si bien estudiando los métodos conocidos podés aplicarlos al problema,  en tu caso es mas negocio usar directamente el software existente o hacerte una hoja Excel y resolver mediante Solver (con 4 variables es casi instantáneo) .   


Pero hagas lo que hagas, si no agregas una función objetivo (mas restricciones) el número de soluciones en general será infinito.
Acá la función objetivo puede ser un valor asociado al costo del kilo de material y su costo logístico, por ejemplo:
Almacén 1: 1 x kilo
Almacén 2: 1.2 x kilo
Almacén 3: 0.8 x kilo
Almacén 4: 0.7 x kilo

y la función objetivo:  \[ Costo_{total} = Alm_1*1 + Alm_2*1.2 + Alm_3*0.8 + Alm_4*0.7 \]  debe ser mínima.

Las restricciones son que las cantidades deben ser positivas y menores de lo que hay en almacén.



Calculo que la hoja Excel con Solver de esto ocupa menos espacio que lo que llevo escrito :)


22 Agosto, 2019, 15:45
Respuesta #2

solete

  • Nuevo Usuario
  • Mensajes: 3
  • Karma: +0/-0
  • Sexo: Masculino
Estoy analizando una aplicación que realiza cálculos de mezclas de un producto, el objetivo que estoy buscando son métodos de solución a este problema, ya que el método actual tarda mucho tiempo y no resuelve todos los casos.

....
El problema es el siguiente.

Tenemos un mismo productos almacenado en diferentes almacenes, cada almacén tiene un contenido de azufre diferente (por ejemplo 0.140%).

Se busca la mezcla que se ha realizar de los diferentes almacenes para conseguir una cantidad determinada de producto final con un contenido de azufre dado.

Ejemplo:

Queremos calcular la cantidad a mezcla de los diferentes almacenes disponibles para obtener 1500 kg de producto con un azufre 0,225. 

Almacén 1: Cantidad 5000 kg Azufre 0,04 %
Almacén 2: Cantidad 2000 kg Azufre 0,15 %
Almacén 3: Cantidad 3000 kg Azufre 0,300 %
Almacén 4: Cantidad 6000 kg Azufre 0,400 %

Esta clase de problemas pertenecen a la "Programación Lineal". Si bien estudiando los métodos conocidos podés aplicarlos al problema,  en tu caso es mas negocio usar directamente el software existente o hacerte una hoja Excel y resolver mediante Solver (con 4 variables es casi instantáneo) .   


Pero hagas lo que hagas, si no agregas una función objetivo (mas restricciones) el número de soluciones en general será infinito.
Acá la función objetivo puede ser un valor asociado al costo del kilo de material y su costo logístico, por ejemplo:
Almacén 1: 1 x kilo
Almacén 2: 1.2 x kilo
Almacén 3: 0.8 x kilo
Almacén 4: 0.7 x kilo

y la función objetivo:  \[ Costo_{total} = Alm_1*1 + Alm_2*1.2 + Alm_3*0.8 + Alm_4*0.7 \]  debe ser mínima.

Las restricciones son que las cantidades deben ser positivas y menores de lo que hay en almacén.



Calculo que la hoja Excel con Solver de esto ocupa menos espacio que lo que llevo escrito :)



Primero muchas gracias por tu aporte.

En cuanto al método de calculo que e explicado en la realidad es mucho mas complejo y con muchas restricciones aun así se llegan a calcular alrededor de 4 millones de combinaciones y de momento solo conseguimos analizar unas 400000 (10%) por razones de tiempo de calculo, en las cuales encontramos soluciones correctas, pero me surge la duda de si hay combinaciones mejores sin encontrar todas las posibles.   

Como el objetivo de la consulta es la función de ponderación indicada y los posibles métodos alternativos para rersolverlo he simplificado las explicaciones.

\[ Z_T = \displaystyle\frac{(C_A1 * Z_A1) + (C_A2 * Z_A2) + (C_A3 * Z_A3) + (C_A4 * Z_A4)}{C_T} \]

En cuanto a programación lineal lo estuve pensando pero no me cuadraba porque solo tengo 1 ecuación y deberían ser al menos tantas ecuaciones como incógnitas (menos 1).

¿Hay algún método dentro de la programación lineal para generar mas ecuaciones que permita aplicar una solución vía programación? o
¿Cada restricción debe generar una ecuación y así formar el sistema de ecuaciones necesarias para aplicar programación lineal?

Por otra parte en este caso no es una opción el usar otros programa como excel y solver, ya que el objetivo es precisamente ese, eliminar el uso de excel y otras del mismo estilo e integrarlo todo en una sola aplicación o sistema que controla todos los aspectos del negocio. De todas formas analizaré el calculo de excel+solver por si nos aporta mas información o idea de otro método de resolución.

Soy informático y muchas veces echo de menos tener a un matemático a mano para que me aclare o indique si los problemas a resolver ya existen y como se deben plantear.

Gracias de nuevo y un saludo,








22 Agosto, 2019, 17:00
Respuesta #3

Abdulai

  • Moderador Global
  • Mensajes: 2.336
  • Karma: +0/-0
  • Sexo: Masculino
...
En cuanto al método de calculo que e explicado en la realidad es mucho mas complejo y con muchas restricciones aun así se llegan a calcular alrededor de 4 millones de combinaciones y de momento solo conseguimos analizar unas 400000 (10%) por razones de tiempo de calculo, en las cuales encontramos soluciones correctas, pero me surge la duda de si hay combinaciones mejores sin encontrar todas las posibles.   

Como el objetivo de la consulta es la función de ponderación indicada y los posibles métodos alternativos para rersolverlo he simplificado las explicaciones.

\[ Z_T = \displaystyle\frac{(C_A1 * Z_A1) + (C_A2 * Z_A2) + (C_A3 * Z_A3) + (C_A4 * Z_A4)}{C_T} \]

Te repito: Eso, así como lo estás planteando tiene infinitas soluciones.   
Además, la solución/es se calcula analíticamente. No hace falta fuerza bruta.



En tu ejemplo necesitás que la mezcla total sean 1500kg con 0.225% de azufre, OK?

Bien, eso se puede hacer de varias formas:
- Combinando solamente material del Almacen_1 con Almacen_3 (una sola solución)
- Combinando solamente material del Almacen_1 con Almacen_4 (una sola solución)
- Combinando solamente material del Almacen_2 con Almacen_3 (una sola solución)
- Combinando solamente material del Almacen_2 con Almacen_4 (una sola solución)
- Combinando material del Almacen_1 con Almacen_2 con Almacen_3 (infinitas soluciones)
- Combinando material del Almacen_1 con Almacen_2 con Almacen_4 (infinitas soluciones)
- y siguen las combinaciones infinitas...

También forzar ciertas cantidades, como ser:
- Usar 300kg del Almacen_1, 200kg del Almacen_3 y calcular analíticamente cuanto necesito de Almacen_2 (538kg) y Almacen_4 (462)
  (ojo que si me deliro con las arbitrariedades puede no tener solucion.


Citar
En cuanto a programación lineal lo estuve pensando pero no me cuadraba porque solo tengo 1 ecuación y deberían ser al menos tantas ecuaciones como incógnitas (menos 1).

No tenés 1 ecuación, tenés 2.

\[  C_T = C_{A1}+C_{A2}+C_{A3}+C_{A4} = 1500 \]

\[  Z_T = \dfrac{Z_1C_{A1}+Z_2C_{A2}+Z_3C_{A3}+Z_4C_{A4}}{C_T} = 0.225 \]


Pero para que sea un problema de optimización te falta una función a minimizar, generalmente un costo. 

Si no hay nada que minimizar... pues si no se establecen mas condiciones cualquiera de las infinitas soluciones dará igual.


Citar
¿Hay algún método dentro de la programación lineal para generar mas ecuaciones que permita aplicar una solución vía programación? o
¿Cada restricción debe generar una ecuación y así formar el sistema de ecuaciones necesarias para aplicar programación lineal?

El método se llama "Conocer el Problema", no podés agregar ecuaciones arbitrariamente.
Las restricciones pueden ser otra ecuación que deba cumplirse o el rango de las variables (no pueden ser negativas ni mayores de lo que que se tiene)

Si cada material tiene un precio distinto de acuerdo a su concentración de azufre, ahí tendrías una función costo a minimizar. 


Citar
Por otra parte en este caso no es una opción el usar otros programa como excel y solver, ya que el objetivo es precisamente ese, eliminar el uso de excel y otras del mismo estilo e integrarlo todo en una sola aplicación o sistema que controla todos los aspectos del negocio. De todas formas analizaré el calculo de excel+solver por si nos aporta mas información o idea de otro método de resolución.

Si solamente tenés dos condiciones: Cantidad total y concentración total y el resto me dá igual,  pues elegís dos almacenes y si hay soluciones fuera de rango elegís otro par. 
Si fallan todos se modifica la estrategia.  Pero no hay peor cosa que describir algo y después te salgan con "No es ese el caso"


Saludos.

22 Agosto, 2019, 17:37
Respuesta #4

solete

  • Nuevo Usuario
  • Mensajes: 3
  • Karma: +0/-0
  • Sexo: Masculino
Hola Abdulai.

Muchas gracias y no te puedes imaginar lo que aprecio la información y el análisis que haces de los expuesto.

Disculpa si falto algo de concreción en el planteamiento, pero todo lo que as escrito me hace reflexionar y es de mucha utilidad.

Como bien dices "El método se llama "Conocer el Problema"" y ese era uno de los propósitos de preguntar en este foro de gente apasionada (profesionales) por las matemáticas.

Ahora me queda ver si puedo aplicar las ideas y/o métodos indicados por ti.

Un saludo,
 

08 Septiembre, 2019, 23:10
Respuesta #5

Tachikomaia

  • Pleno
  • Mensajes: 203
  • Karma: +0/-0
  • Sexo: Masculino
No sé resolverlo de momento.

Spoiler
No entendí el problema porque... A y/o B:
A- Soy bastante ignorante.
B- Está bastante mal planteado.

Mi consejo es que simplifiques. Por ejemplo 2 almacenes en vez de 4, y poner un ejemplo en que sepas la solución porque no recuerdo haber visto.

Citar
Queremos calcular la cantidad a mezcla de los diferentes almacenes disponibles para obtener 1500 kg de producto con un azufre 0,225. 

Almacén 1: Cantidad 5000 kg Azufre 0,04 %
Almacén 2: Cantidad 2000 kg Azufre 0,15 %
Almacén 3: Cantidad 3000 kg Azufre 0,300 %
Almacén 4: Cantidad 6000 kg Azufre 0,400
¿Esto tiene sentido?

Quieres mezclar diferentes cantidades de azufre tomadas de diferentes lugares. Por qué no tomas la cantidad necesaria de 1 sitio si es posible, no se sabe. Bueno.

Quieres obtener 1500 kg ¿de azufre? Pero luego dices "con un azufre 0,225" ¿ese número tiene que ver con química, es un tipo de azufre o qué?

Luego pareces mostrar qué porcentaje de azufre sacas de cada almacén ¿intentando que se agoten al mismo tiempo? No, porque sino del que dice 5000 sacarías más que del que dice 3000. ¿Acaso estás dando una solución imperfecta?

¿Pero qué es lo que haces? ¿0,04*5000+2000*0,15+3000*0,300+6000*0,400 = 1500? En Excel me da 3800.

O sea... creo que ya entiendo... quieres a un producto ponerle 225% de azufre, o sea, si el producto fuese 100kg quisiera ponerle 225kg de azufre.

No sé mucho de química pero me parece raro, además dices 0,225. Pero pasas de 1500 kg a 3800 kg parece. No le veo mucho la lógica...


Ahora releyendo interpreto que tienes un producto que en cada almacén tiene distintas cantidades de azufre. ¿O sea que nunca has puesto una solución?

Voy a simplificar e iré complicando de a poco.

1ero digamos que tenemos 2 almacenes:
A- 5000 kg de producto, del cual 50% es azufre.
B- 8000 kg... 20%

Necesito 2000 kg... con 30%

Si mezclara ponele 1000 kg de cada uno, obtendría (50+20)/2=35%
Necesito
(50X+20Y)/2 = 30
y
X+Y = 100
¿no?

o:
50X+20Y = 60
y
X+Y = 100

Ahora entiendo por qué el forero de arriba habla de soluciones infinitas y "pide" alguna otra condición.

Bueno, esto es... multiplicar por -1 a la ecuación de arriba y por 20 a la de abajo, o sea, siempre multiplicar por la cantidad más baja del porcentaje de azufre.
-50X-20Y = -60
20X+20Y = 2000

Mezclarlas:
-50X-20Y+20X+20Y = -60+2000
-30X = 1940
Este resultado para mí no tiene sentido, lo intentaré de otro modo.

Si
(50+20)/2=35%
y quisiera
(50+20*2)/2=45%
lo que debería hacer, claro está, es poner el doble de producto de 20%.
No, en realidad no sé si tendría que hacer /2 o /3.
[cerrar]