¿Es posible crear un simulador de sistema general? De ser así, ¿cómo?

No intentaré responder esta pregunta completamente aquí. Sin embargo, proporcionaré algo de reflexión y un enlace a más información. Mencionaré aquí algunas características que son comunes a todos los sistemas e insinuaré brevemente cómo podrían aprovecharse para crear un simulador general del sistema. El artículo vinculado profundiza en los detalles de cómo construir el simulador.

Si uno utiliza características de alto nivel de los sistemas, esto significa que el simulador resultante solo puede simular sistemas que pueden ser descritos por tales características de alto nivel. Por ejemplo, uno podría usar el tamaño del tanque de combustible dentro de una simulación de tráfico, pero esto no puede aplicarse a las partículas. O uno podría usar masa y ubicación para simular partículas, pero esto no puede aplicarse a sistemas de símbolos como un lenguaje. Y así.

Por lo tanto, debemos preguntarnos sobre qué características del sistema de bajo nivel sobrevienen todas las características del sistema de alto nivel. Es decir, hay características de bajo nivel que se pueden usar para definir todas las características de alto nivel. De hecho los hay.

Para encontrarlos, debemos salir del contexto de características fenomenales que se basan en las apariencias de los sistemas. En cambio, debemos entrar en el ámbito de la información y los procesos de información. Solo a este nivel hay características comunes a todos los sistemas.

Algunas características comunes:

  • Todos los sistemas tienen estado, tanto interno como observable.
  • Todos los sistemas interactúan y, por lo tanto, cambian de estado.
  • Todas las interacciones están mediadas por la comunicación.
  • Toda comunicación consiste en el flujo de información.
  • La computación general es la transformación coherente de la información.
  • Las interacciones de sistemas integran subsistemas en súper sistemas, por lo que un súper sistema puede considerarse una red de subsistemas interactuantes. Esto se aplica a todos los niveles de la jerarquía de complejidad. Mediante la aplicación sucesiva de esta reducción, cada sistema puede concebirse como una holarquía (red de redes) de interacciones del sistema.
  • Una red de interacción es equivalente a un gráfico de flujos de información.
  • Un gráfico se puede representar como una matriz.
  • Un estado del sistema (clásico o cuántico) puede representarse como un vector.
  • Cuando una matriz se multiplica con un vector, la información dentro del vector fluye a través de la red definida por la matriz y luego se integra en un nuevo vector que representa un nuevo estado del sistema, por lo que podemos formar la ecuación iterativa V = MV .
  • Esto nos lleva al ámbito del álgebra en el que hay muchas manipulaciones matemáticas que son posibles.
  • Usando tales métodos uno puede modelar y simular sistemas clásicos y cuánticos.
  • Las ecuaciones de la mecánica cuántica encarnan estos principios a pesar de que no se utilizaron para derivar las ecuaciones de QM.

Para obtener más información sobre cómo aplicar estos conceptos para crear un simulador de sistema general, consulte el libro electrónico Ciencia del sistema de realidad virtual. Este libro describe una propuesta plausible que merece un análisis más detallado. Este documento proporciona algunas aclaraciones preliminares que ayudan a comprender el enfoque El proceso de información objetiva y la hipótesis de experiencias subjetivas virtuales.

El libro “Ciencia del sistema de realidad virtual” incluye discusiones que no son directamente relevantes para esta pregunta, sin embargo, la mayor parte del libro consiste en un desarrollo matemático sistemático de un simulador de sistema general. Comienza con un prototipo inicial muy simple, luego, en etapas sucesivas, se identifican las limitaciones y el modelo se extiende para superar estas limitaciones. Esto da como resultado una versión final que puede simular sistemas arbitrarios clásicos o cuánticos.

El libro también deriva los fundamentos de la mecánica cuántica utilizando los principios de la simulación general del sistema. También hay prototipos de software, sin embargo, se requiere mucho más trabajo en estos. Además, se necesitaría una computadora cuántica para ejecutar este simulador de manera eficiente: la explosión de permutación es exponencialmente demasiado grande para que una computadora clásica pueda manejarla. Este método puede señalar el camino hacia una metodología de programación de propósito general para computadoras cuánticas.

Este enfoque implementa la abstracción solicitada en la pregunta porque los detalles de cómo simular un sistema están estandarizados en un algoritmo común. Entonces uno solo necesita describir el rango de estados posibles que un sistema puede ocupar y las condiciones bajo las cuales cambia de estado. El algoritmo de simulación simula el sistema independientemente del tipo de sistema que se describe. Esta descripción se puede definir en cualquier nivel de detalle.

Las otras discusiones en el libro se relacionan indirectamente con esta pregunta a través de otros temas como: ¿Es el universo una simulación? ¿Qué es la conciencia? , ¿Qué es la sensibilidad? , el difícil problema de la conciencia, ¿qué es la materia? y ¿Cómo es ser un proceso computacional cuántico?

El módulo MatLab Simulink puede proporcionar exactamente esto. Es un marco de simulación de propósito general que funciona en todos los dominios y no requiere programación:
http://www.mathworks.com/product

El desafío con cualquier marco de simulación es que cuanto más general es, más difícil de usar, más lento se ejecuta y más comienza a parecerse a la programación.

Como otros han señalado, en un nivel esta pregunta es sobre las máquinas de Universal Turing. Entonces esa respuesta es probablemente insatisfactoria.

¿Puedes hacer algo un poco más estrecho que no sea un UTM? Como estás hablando de “modelado” y “simulación”, supongo que te refieres al modelado de la realidad física, no al modelado de sistemas informáticos, ya que eso está cubierto por la teoría UTM (cualquier sistema informático puede ser modelado / emulado exactamente por un UTM, por lo que eso no es particularmente interesante; es cuando el modelo es necesariamente una representación empobrecida de la realidad referida que el modelado y la simulación se vuelven interesantes).

Desafortunadamente, creo que la respuesta a esta pregunta es básicamente “No”.

El diablo está en los detalles, y desafortunadamente cada tipo de lenguaje de modelado requiere un manejo especializado en el nivel de “algoritmo de simulación” en el que está pensando. Por ejemplo, ajustar un simulador ode45 para cosas descritas con ODE requiere cierta habilidad local especializada, al igual que ajustar la expresividad de las estructuras de datos de propósito general de su algoritmo para representar objetos en los formalismos de modelado abierto que representan universos de objetos. Sí, podría crear un algoritmo de simulación “general” que lo haga todo, pero no habrá una verdadera ventaja de “suma mayor que las partes”, porque toda la complejidad está disminuida en los detalles. Obtendrá muy poco apalancamiento al hacerlo todo junto. De hecho, diría que agrupar las capacidades juntas creará un algoritmo peor en general que un algoritmo más enfocado que solo intenta ser el motor de simulación especializado para un paradigma de modelado único.

Otra forma de decir esto es que hay un acoplamiento más fuerte de lo que piensas entre el formalismo de modelado y un simulador que puede ejecutar modelos descritos en ese formalismo. El motor debe coincidir con el automóvil, y un motor que puede usarse en cualquier cosa, desde un Kia a un Porsche, probablemente no sea un motor muy bueno.

Dicho esto, es útil revisar las herramientas más generales que ESTÁN disponibles, ya que arroja luz sobre por qué no han aparecido herramientas más generales.

El formalismo de modelado más básico es solo matemática simbólica y lógica. Matramática de Wolfram gobierna aquí. Esto es básicamente un intento de reemplazar a los matemáticos humanos con una IA en la medida de lo posible. El algoritmo de simulación para algo así como la demostración de teoremas (sí, los teoremas son una especie de modelado y las pruebas son una especie de simulación) tiene que ajustarse finamente para manejar las cadenas de símbolos de manera eficiente.

El siguiente lenguaje más básico son las ecuaciones diferenciales ordinarias. Herramientas como Simulink dentro de Matlab reducen el modelado basado en ODE a una interfaz basada en GUI. Todavía tiene que hacer alguna selección artística y ajuste del integrador (si usa ode45 u ode23 depende del dominio … usaría diferentes integradores de precisión para suspensiones de automóviles versus la órbita de Júpiter, y esto es una cuestión de juicio sobre las propiedades de sensibilidad de las ecuaciones específicas, aunque estos juicios se están automatizando cada vez más)

Si generaliza un poco y agrega ecuaciones de diferencia, máquinas de estados finitos, redes de Petri, procesos de decisión de Markov, etc., aún puede usar los lenguajes de descripción de flujo de estado / diagrama de estado y apegarse a herramientas como Matlab. Pruebe el texto de Lafortune en sistemas de eventos discretos.

System Dynamics es primo de estos, y hay herramientas como iThink que se especializan en eso. Afirma una extrema generalidad, pero eso tiene el costo de una precisión tan baja (que los practicantes hacen a un lado con “direccionalmente qué pasa si”) que apenas lo considero modelado / simulación.

Una vez que te alejas de las EDO, obtienes lo que técnicamente conocemos los modeladores como un “desastre”. Hay un par de direcciones donde las cosas se complican.

Primero, si pasa de ODE a PDE, termina en un tipo de desastre. Las EDO se comportan bien, a menudo tienen soluciones de forma cerrada y, cuando no lo hacen, pueden simularse numéricamente en muchos casos útiles de manera estable.

Las PDE generalmente requieren un manejo personalizado extremadamente cuidadoso, e incluso entonces, generalmente, obtendrá un desastre. Un ejemplo clásico son las ecuaciones de Navier-Stokes de mecánica de fluidos. Hay disciplinas enteras dedicadas básicamente a modelar y simular estas ecuaciones. Si escribe una EDO arbitraria de aspecto inocente, es probable que pueda simularla. Si escribe un PDE arbitrario de aspecto inocente, lo más probable es que bloquee sus mejores habilidades para modelarlo.

Otra dirección de desorden es la dirección discreta. Una vez que va más allá de las máquinas de estado simples y las redes de Petri que describen universos relativamente fijos, y pasa a trabajar con sistemas abiertos, esencialmente está haciendo un tipo especializado de programación multiproceso orientada a objetos donde el manejo de la no secuencialidad en el tiempo se convierte en el mayor dolor de cabeza. Una vez más, no hay marcos verdaderamente generales (los “Procesos secuenciales de comunicación” de CSP Hoare le darán una idea de las complejidades).

En general, las personas que se ocupan de estas cosas se llaman a sí mismos “modeladores basados ​​en agentes”. Con o sin darse cuenta, las personas que realizan juegos o programación de realidad virtual se adhieren a una clase estrecha manejable dentro de este dominio. La diferencia entre el modelado basado en agentes y la programación OO es un tema de debate. Una línea popular es “los objetos lo hacen gratis, los agentes lo hacen por dinero”. Los programadores regulares son escépticos de que haya una distinción útil en absoluto.

Ha habido intentos como el lenguaje de programación Swarm (realmente una biblioteca para el Objetivo C, creo … no lo he usado … Elegí apegarme a Matlab incluso para mi trabajo de ABM) para apoyar este tipo de modelado.

Si no ha realizado ninguno de estos tipos de modelado (he hecho al menos modelos iniciales en todos estos dominios, y modelos bastante avanzados en algunos), es fácil dejarse tentar por una falsa sensación de generalidad potencial. Hay personas que se entusiasman mucho con las visiones de una “teoría general de sistemas” (GST). Admito que solía ser uno de ellos, e incluso lo apuñalé hace muchos años.

Desde entonces, he decidido que este es básicamente un problema imposible por una variedad de razones técnicas y filosóficas que van más allá de lo que he mencionado aquí (esto tiene que ver con la teoría de completitud NP, los teoremas de no-almuerzo libre en la optimización, etc.) También he concluido que cualquiera que adopte esa etiqueta por algo que ha producido es básicamente un charlatán.

Pero no dejes que te impida buscar un verdadero GST. Quién sabe, todos los modeladores golpeados por la batalla como yo podrían estar equivocados, y podrías encontrar uno, construir Skynet encima y conquistar el mundo. E incluso si falla, inclinarse en este molino de viento en particular es una experiencia muy educativa. Aprendí mucho al intentarlo.