Modeling Complex Systems
Overview
Explanation in science is reduced to relationships: one thing is explained by being related to something else. A good theory is not one that gives an ultimate cause of events, but merely one that relates many different events through a few simple ideas and equations.
Kenneth W. Ford
Greetings!
This website is designed for people who want to solve difficult problems that arise in complex systems, and are looking for a means to do so. Be assured you are in the right place. We hope to show you how solving these problems is best accomplished by building a dynamic model of the system of interest, showing how these problems arise in that system, and only then proposing solutions based on that understanding. The effects of your proposals can then be thoroughly evaluated using your dynamic model.
This approach is based on our belief that these problems can best be solved if we have a firm understanding of how they arise. For complex systems this means dealing with any number of interrelationships that define the system. The interrelationships in complex systems form one or more feedback loops, which make for behavior and solutions that are often counterintuitive. Your model will reveal the cause of this type of behavior, and allow you to propose solutions that solve the problems, not merely treat the symptoms. We have been taught throughout our formal schooling, and life, to think of cause and effect as a simple relation. That may be true for very simple systems, but it is definitely not the case where relations are embedded in a network of relations, as is the case for complex systems.
This site will be organized around the development of our modeling methodology. The goal is to have a multilayer model that captures the activities at different levels of scale within the human biosystem. The fundamental starting point will be at the level of the cell. So we will consider the cell as an object that describes both state, and the processes that change that state. The state of a cell is defined to be the values of all the variables that relate to a description of a cell. Most of these variables are managed, so a cell will also comprise all the processes that manage those variables.
Many objects are contained within and on a cell's membrane that help define its state. We will acknowledge their existence, and the communication that takes place among them, but at the cellular level we won't model what's going on inside those components. We will, however, track how their interaction with each other may change the value of a variable, which changes the cell's state. Knowing the state of a cell at any time gives us information about what impact that cell may be having on its surroundings and ultimatley the organism itself.
Modeling has often been augmented by commercial tools that purport to make the process simpler and faster (but not less expensive). That may be true for simple systems with no unusual characteristics not envisioned by the tool builders, but of course, no tool exists that meets this specification. It turns out, however, to be relatively straightforward to build dynamic models from scratch, and with much less frustration than trying to work around the limitations of a modeling tool.
Using the Multiple Perspective Modeling Methodology (MPM) that we are developing and describing here, you will be able to model systems that can be multiscale, continuous, discrete, deterministic, stochastic, or possess any combination of these attributes. We will be using the Java programming language, and the Object Oriented Programming paradigm for building our models.
At one point we had strongly considered constructing models using Python, but found that the Java API was more suited to our purposes, and a lot more stable than that offered by a host of Python developers. Not the least of our concerns was execution speed, and Java turns out to be much faster in this regard.
With AI playing such a key role in problem solving efforts now, one might wonder why we take the trouble to describe a methodology that does not use machine learning to solve these problems. The answer is that the MPM methodlogy does not depend on large data sets to generate useful information. In fact, it is often impossible tire the needed data sets because of the inherent constraints posed by the system under consideration. We are also convinced that the current generation of AI, beng so hevily dependent on existing data sets, will never be able to analyze a real-life system and abstract it in the way we propose here. Basically LLMs or generatve AI is not a thinking process, but is best thought of as a talking database.
Be that as it may, we will most likely find machine learning and dynamic system modeling to be quite complementary tools. AI will be particularly helpful in finding the parameters often needed to fully describe a system. Think of the effort that goes into acquiring proportionality constants that often appear in equations that represent a relation between system variables. The Standard Model of particle physics requires 25 of these. One of the oldest examples appears in Isaac Newton's expression for the gravitational force between two objects: the well known Gravitational constant.
What we are offering in the methodology described here is a means to produce and test code, quickly, reliably, and at low cost. We are not describing how to produce commercial ready code. Think of our development environment much like a chemist (not a computational chemist) thinks of their lab bench — with pieces of tubing and flasks and Bunsen burners strung together in order to test the feasibility of a process. That's all you really need to do: test the feasibility of the solutions you are proposing to solve a problem. You are not going to write bulletproof code for the masses. It's a whole different coding paradigm when done our way: much faster and much more reliable because you can actually see what's going on, make changes to the code quickly, recompile and run immediately.
This is not to say that we encourage or accept writing spaghetti code. We are adamant about requiring excellent coding practices of ourselves. Using our methodology, however, you won't be able to hand your code off to interested parties in its current form. You can always give it to a CS professional to make it commercially viable if you so desire. Our task, as described in current and future desdcriptions on this website, is to help you solve a difficult problem. We place our focus on system description and coding in order to reveal the reasons for the unique behavior of a complex system.
More than a methodology is being offered here. The important field of health and medicine will be addressed as we attempt to describe the human biosystem in such a way as to help solve currently intractable health related problems. For example, disorders which are classified as autoimmune or idiopathic by the medical profession.
You need not be an expert in any field to use this website for its intended pupose. We will carefully explain every procedure that we present in our problem solving discussions. You will find this approach very helpful when learning a new subject, especilly when we are presenting a new topic in the field of computer science. Rather than expecting you to learn everthing there is to know about the Java computer language, we will show you what can safely be ignored.
On the other hand, a good deal of knowledge is required to solve the problems you will enconter in model constuction and health/medicine. To assist you in coding in the Java programming language, and understanding the human biosystem in which these problems arise, we have included a human-readable resource database on this site. We refer to this database by its more descriptive term: Ontology. Updating the entries in the Ontology is an ongoing process; we welcome any suggestions you may have to add or modify it..
The Ontology consists mostly of references to textbooks, videos, and websites associated with a given subject and its related topics. References to journal articles are not stored in the Ontology. Note that there are enough resources cited in the Ontolgy to help form the curricula of many diferent major fields of study at both the undergraduate and graduate levels. We recommend that you use the Ontology to select and organize the available information into a curriculum of study that you require for your own purposes, and for self study.
This site is not financed by anyone except its writers. The writers receive no direct compensation for its publication. In addition there is no advertising associated with this site so you can read and absorb the contents in peace. Also, we assure you that to the best of our knowledge, there is no malware lurking about in our web pages, model code, or downloadable documents. Since you will be writing your own code from scratch, based on what you read here, you will have full control of its contents.
Putting stuff out on a website takes time. Time we would rather spend enhancing our models and modeling paradigm rather than producing nicely framed web pages. Therefore, a lot of communication on this site will take place via pdf files. Files that we have generated elsewhere using construction tools that are easier to use than having to work in an HTML/CSS/JavaScript environment.
Which brings us to the question of ownership. Everything available on this site and in its associated Forum is freely available to our readers for personal or commercial use. This does not mean, however, that anyone can take material verbatim from this site and monetize it as a publication, or submit it as a journal paper under a different authorship. We reserve these rights for ourselves or the authors of a particular collection. Therefore, any use of the printed material found here that qualifies as copyright infringement is strictly prohibited. The code, however, can be used freely in any models that you may build. Authorship citation in your code comments would be appreciated.