6 votos

Apagar los hornos! Un problema de optimización

El problema es más abstracto, pero se puede ilustrar muy bien la utilización de hornos. Un horno puede producir calor, pero es más eficiente cuando se produce $c$ calor. El inefficency aumenta cuadráticamente a medida que uno se aleja de la temperatura ideal.

Para un concreto ejemplo imaginemos que tenemos las siguientes tres hornos

$ \hspace{1cm} A = 10, B = 15, C = 20 $

La pérdida de eficiencia podría entonces ser modelado por

$\hspace{1cm} E(x,y,z) = g(10, x) + g(15, y) + g(20, z) $

Donde $g$ es dado como

$ \hspace{1cm} g(a, x) = \left\{ \begin{array}{ccc} 100(a-x)^2/a & \text{if} & x > 0 \\ 0 & \text{if} & x = 0 \end{array} \right. $

El problema está en que la tasa de los hornos deben ejecutar para generar el calor $T$. En otras palabras minimizar $E(x,y,z)$$x + y + z = T$.

¿Hay alguna forma eficaz de lograr esto? Para el 3, me puede iterar sobre ellos, pero para 10 esto es más difícil...

1voto

Justpassingby Puntos 5332

La ineficiencia es una función cuadrática de las variables, y la restricción es una hyperplane. Por un apropiado (bastante fácil) transformación lineal de la ineficiencia es la distancia Euclidiana de su vector de variables de origen y, a continuación, que son la minimización de la distancia desde el origen a un punto de variable en una hyperplane: el mínimo se alcanza en la proyección ortogonal del origen en el hyperplane.

1voto

Erwin Kalvelagen Puntos 478

Yo era capaz de resolver esto con el mundial de MINLP solucionadores de Barón y Couenne.

enter image description here

El $y$ variables son variables binarias que indican si el horno está encendido o apagado. He añadido una implicación $y_i=0 \Rightarrow x_i=0$. De la otra manera no es necesario (si $x_i=0$ el objetivo de asegurarse de $y_i=0$ que es mejor).

La opción $optcr=0$ establece una tolerancia para que el mundial de soluciones óptimas se encuentran, en lugar de sólo buenas soluciones.

Los resultados de $T=23$ aspecto:

----     29 PARAMETER T                    =       23.000  heat

----     29 PARAMETER a  ideal temperature

A 10.000,    B 15.000,    C 20.000


----     29 VARIABLE y.L  use oven

A 1.000,    B 1.000


----     29 VARIABLE x.L  temperature oven

A  9.200,    B 13.800


----     29 VARIABLE loss.L  efficieny loss

A 6.400,    B 9.600


----     29 VARIABLE E.L                   =       16.000  total efficiency loss

Horno C está desactivado aquí. Usted puede probar el Barón y Couenne a ti mismo en NEOS. O si usted publica algunas de mayor tamaño del conjunto de datos me alegra que probarlo.

Actualización

Yo no estaba completamente feliz con mi modelo. De hecho, se puede formular como un modelo cuadrático, haciendo que el modelo menos no lineal. De hecho, se puede afirmar como un convexo MIQP (Entero Mixto de Programación Cuadrática) del modelo. Esto permitirá que muchos más de los solvers para ser capaz de manejar este problema. Es un poco más complejo, sin embargo:

enter image description here

La idea es agregar una variable de holgura $s$ que se deja flotar libremente cuando el horno está apagado ($y_i=0$). En ese caso, el optimizador de elegir una pérdida de cero automáticamente. Si el horno está encendido ($y_i=1$) exigimos que la holgura es cero. En caso de que la correcta es la pérdida calculada.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X