Dado que su cliente es usted mismo, tendrá que decidir la respuesta a todas las preguntas que Mark Byers hizo. Sin embargo, te daré algunas sugerencias y espero que te den un comienzo.
Supongamos que su fábrica necesita algunas piezas diferentes y las ensambla en un solo producto terminado. Un diagrama de flujo del proceso de montaje podría tener este aspecto:
Factory Flowchart http://img62.imageshack.us/img62/863/factoryflowchart.jpg
Por primera diamante, donde widgets de A y B se ensamblan, asuma que tarda una media de 30 segundos para completar este paso. Asumiremos que el tiempo real que requieren los dos widgets para ensamblar se distribuye en normally, con una media de 30 sy una varianza de 5 s. Para el segundo diamante, suponga que también toma un promedio de 30 segundos, pero la mayoría de las veces no toma tanto tiempo, y otras tarda mucho más. Esto se aproxima bien a un exponential distribution, con 30 s como parámetro de velocidad, a menudo representado en ecuaciones por una lambda.
para el primer proceso, calcular el tiempo de montar widgets de A y B como:
timeA = randn(mean, sqrt(variance)); // Assuming C# has a function for a normally
// distributed random number with mean and
// sigma as inputs
Para el segundo proceso, calcular el momento de añadir widget de C a la asamblea como:
timeB = rand()/lambda; // Assuming C# has a function for a uniformly distributed
// random number
Ahora su tiempo total de ensamblaje para cada iGadget será timeA + timeB + waitingTime
. En cada punto de ensamblaje, almacene una cola de widgets esperando a ensamblarse. Si el segundo punto de ensamblaje es un cuello de botella, la cola se llenará. Puede aplicar un tamaño máximo para su cola y mantener las cosas más adelante cuando se alcanza ese tamaño máximo. Si un artículo está en una cola, todos los iGadgets anteriores aumentan el tiempo de montaje en la línea de ensamblaje. Dejaré que usted decida cómo codificarlo, y puede ejecutar muchas pruebas para ver cuál será el tiempo total de ensamblaje, en promedio. ¿Cómo se ve la distribución resultante?
formas de "especias esto":
- requerir de 3 widgets de B por cada un widget. Juega con el inventario. Reponer inventario a intervalos aleatorios.
- Agregue un control de garantía de calidad (la distribución exponencial es buena para usar aquí) y rechace algunos de los iGadgets terminados. Sugiero usar una baja tasa de rechazo.
- Trate de usar distribuciones de probabilidad diferentes a las que he sugerido. Vea cómo afectan su simulación. Siempre trate de descubrir cómo los parámetros de entrada a las distribuciones de probabilidad se correlacionarían con los valores del mundo real.
Puedes hacer mucho con esta simulación simple. El siguiente paso sería generalizar su código para que pueda tener una cantidad arbitraria de widgets y pasos de ensamblaje. Esto no es tan fácil. Existe un campo completo de matemática aplicada llamado operations research que está dedicado a este tipo de simulación y análisis.
+1 pregunta interesante. Parece que lo que quieres es un modelado matemático para que puedas optimizar ciertas variables (costo, capacidad, etc.). No estoy seguro de que realmente quieras una "simulación". – dss539
Yo trabajo es una fábrica y en ocasiones aumentamos el rendimiento. Este aumento tiene varios impactos negativos en otros presupuestos departamentales, como el aumento de los costos eléctricos, el aumento de los costos de mantenimiento y la disminución de la vida útil de los equipos. Pensé que sería divertido intentar y simular los cambios en el rendimiento y sus costos. No soy un programador profesional pero incursiono un poco y pensé que sería un proyecto divertido. – fishhead
Tu comentario refuerza mi opinión de que quieres un modelo matemático. Estoy de acuerdo, esto suena como un proyecto divertido. Se volverá aún más divertido cuando comiences a optimizar ciertos parámetros. ;) Puede modelar muchas de estas variables simplemente usando una hoja de cálculo ... por supuesto, escribir un programa para hacerlo podría ser más divertido. – dss539