Understanding different modelling techniques. Choose one, and practice it using python.
Simulation and feedback loops assignment was the one that I found most interesting personally. I read way more than I needed to on the following techniques:
- Agent-based modelling
- Volumetric modelling
- Probabilistic modelling
- Bayesian Belief Nets
- System dynamics
- Genetic Algorithms
- Graph theory/network modelling
- Game theory/strategic interaction modelling
I was very much drawn to Agent-based modelling(ABM from now on) and Bayeian Belief Nets. Especially the agent-based modelling seemed like the one technique that can simulate heterogenous entities and their complex interactions. This means ABM can be applied to social, political, financial and economic problems. This is the sort of modelling that I am most interested in. It is also the most difficult modelling technique to apply as well mainly because human agents in the model, will often behave in unexpected and unquantifiable ways.
Some of the job descriptions that this fortnight’s learning can be applied to:
With a focus on deep learning for graphics, you will explore, adapt and refine our rendering solutions, as well as find unique and high impact improvements that increase performance whilst reducing power and area usage
Be part of an advanced research & development engineering team and be part of an outstanding skilled team working with groundbreaking rendering techniques and algorithms and developing the technologies of tomorrow.
- Research and develop world leading deep learning rendering solutions for AI (Artificial Intelligence) graphics solutions and for the next generations of graphics
- Implement modelling and simulation of deep learning-based rendering algorithms
- Perform performance analysis and rendering optimization to get the most out of our GPU (Graphics Processing Unit)
- Identify and plan new research topics of value to the company
- Propose and develop patentable ideas to enhance graphics systems to be more efficient, powerful and feature rich
- Excellent knowledge of machine learning (mainly CNN and RNN), computational photography, and applied to computer vision or computer graphics domain products
- Evidence of successful research track records (e.g., publications, patents, products)
- Hands-on experience in deep learning implementation, optimization, and debugging
- In-depth knowledge of advanced rendering algorithms (GI, path-tracing), 3D APIs (DX12/Vulkan/OpenGL) and ray-tracing APIs
- Optimization skill for low-level GPU compute (CUDA, Compute Shader)
- Superb 3D math, algebra, probability, statistics and problem-solving skills
- A good understanding of modern GPU architectures
- Excellent problem solving and enough English for efficient communication
1. Technical requirements analysis and execution assurance
In order for the Phantom Works International to provide its main product of analysis to support Boeing business, it is vital that all activities have a technical requirements analysis conducted and then ensured execution of the projects to deliver success.
Under the direction of the Senior Manager this role will be called upon to ensure projects are planned with accurate estimations and within achievable technical constraints and then oversee the successful execution. This position may be asked to provide the architecture role to an experiment conducted by the Boeing team to ensure “fit for purpose” use of technology is driven by the Technical expert and not the Operations Analysts or business unit member (albeit requirements to be sourced from these parties).
2. Develop software to grow Analysis & Experimentation capabilities
Based on direction from the Facility Director, the Software Engineer is expected to participate in the development of software in accordance with the Analysis & Experimentation Centre Software Development Process. In this role the following activities could be expected to be undertaken:
- Software development planning.
- Software requirements analysis.
- Software design.
- Coding and unit testing.
- Integration testing.
Other supporting activities which may be required to be undertaken are:
- The production of documentation, technical notes and training materials.
- Software Configuration Management activities.
- Software quality activities (e.g. peer reviews, walkthroughs, maintaining a Software Development File).
- Product support, including customer liaison to expedite problem resolution.
- Liaison with 3rd parties (vendors, subcontractors, customers).
- Presentations and walkthroughs.
- Software process improvement.
- Release management.
The software under development will generally be related to one of the following areas:
- Constructive simulation.
- Data analysis and visualization.
- Information retrieval/storage applications (with relational database backend).
A strong commitment to best-practice software development is required, particularly in the areas of:
- Configuration management.
- Unit and integration testing.
- User and developer documentation.
- Object-oriented design.
3. Integrate COTS and Boeing Proprietary Tools
The Phantom Works International uses a number of 3rd party tools to support various analytical processes. It is expected that more of these tools will be acquired over time. The integration of these tools into the Analysis & Experimentation Centre environment is key to ensuring the overall effectiveness and efficiency of the facility.
The Software Engineer could be expected to participate in some of the following activities:
- Software installation.
- Software and network configuration.
- Problem diagnosis.
- Vendor liaison to ensure timely rectification of problems.
- Strong Object Oriented Design and C++ development experience (2 to 6 years experience desired, although outstanding graduates will be considered).
- Strong Synthetic Environment experience (2 to 6 years experience desired, although outstanding graduates will be considered).
- A solid understanding of web application development processes, from the layout/user interface to relational database structures.
- Excellent Communications skills both in English and Korean.
- Be innovative and lateral in thought, a solutions thinker.
- Unified Modelling Language (UML).
- Ability to work well in a small, highly motivated and competitive team environment.
- Ability to obtain a Defence security clearance.
- Modelling and Simulation (in particular military related including protocols such as DIS/HLA).
- Realtime software development.
- Design Patterns Experience.
- Project Management Experience.
- Analysis Software.
- Visualisation Software.
- Geographic Information Systems.
- CPU/GPU performance optimization.
- Real-Time 3D engine experience: Unreal, Unity.
- Virtual Reality or Augmented Reality HMD interface.
- Embedded Hardware interfaces: Jetson.
- Cross-platform GUI toolkit Qt.
- Simulation middleware: particularly with the MaK Technologies products VR-Link, Logger, RTI and Gateway.
- Computer Generated Forces – VR Forces, CAE ITEMS and STRIVE, EADSIM.
- Communications network simulation, particularly with the QualNet package.
- Discrete event simulation, particularly with the Extend package.
- 3D Graphics API: OpenGL, DirectX.
- 3D Content Format: VRML, X3D, OpenFlight, MultiGen.
- 3D Content Generation: Blender, 3D Studio Max.
- 3D Scene Graphs: OpenSceneGraph, Performer, Vega (Classic).
- GPU Computing API: OpenCV, OpenCL, CUDA.
- Relational Database Management Systems.
Education/experience typically acquired through advanced education (e.g. Bachelor degree in Computer Science/ Software Engineering) and typically 6 or more years’ related work experience or an equivalent combination of education and experience (e.g. Master degree in Computer Science/ Software Engineering +4 years’ related work experience, 10 years’ related work experience, etc.)
Agent based model can explain the process of buying a house.
Agent based modelling (part 1): What is agent based modelling?
Agent based modelling existed since the 1940s, but started to become popular in the 1990s.
Why is this useful?
- Mathematical modelling is a useful abstraction
- Many systems (e.g. social or economical) are not always amenable to abstractions
- ABM allows modelling at the lowest level.
Blockchain and ICO
- ABM has been a very popular tool in compuatational economics
- Blockcahin popularised artificial economies – ABM
The beauty of Agent based modelling is that we don’t have to think too hard about how to set an abstract model
So many start ups create an artificial economy, a tokenised economy.
ABM can be a very useful tool to model these kind of economies without having to overthink about how to create a mathematical abstraction around them.
The guy who created NetLogo.
What are complex systems?- Systems with a large number of interacting parts, evolving over time
- Decentralised decisions vs. centralised control
- Emergent global patterns from local interactions and decisions
Examples: ecosystems, economies, immune systems, molecular systems, minds, stock market, democratic government.
- Structure(Rules) at Micro- level leads to pattern at Macro level
- Order without Design
- No leader or orchestrator of pattern
- Probabilistic, decentralised control – interactions of distributed “agents”
- Organisation of ant colony
- Housing patterns in a city
- Variations of a population in an ecosystem
- Voting patterns
- Pressure of a gas
- Traffic jam
- The price of a commodity
Emergence is hard
- If you know the micro, difficult to predict the macro
- If you know the maro, difficult to find the micro structure that generates it
Technology can help
- With the aid of new computer-based modeling languages, we can simulate complex patterns and understand more about how they arise in nature and society.
- Old way: Simplified (but advanced mathematical) descriptions of complexity to make analysis possible – calculate answers
- New way: Computers can simulate (thousands of) individual system elements (“agents”) allowing new, accessible ways to study complex phenomena – simulate to understand.
By giving them rules of interactions and let those interactions and let those interactions unfold.
What is Agent-based modeling?
An agent is an autonomous individual element endowed with properties and actions, in a computer simulation.
Agent-Based Modeling (ABM) starts with the idea that the world can be modeled by using a multiplicity of distributed agents, each following simple rules of behaviour.
What is ABM?
The methodology of ABM encodes the behaviour of individual agents in simple rules and then observes and analyses the results of these agents’ interactions
Used throughout the natural sciences, social sciences, engineering and professions.
Forest fire spreading with ABM
The notion of threshold or critical point, or sometimes popularly known as the tipping point where just a little bit of extra density dramatically and qualitatively different notion of fire.
As an example with the forest, just a little bit of the difference in the x-axis causes a lot of difference in the y-axis.
Wolves and sheep interacting in the ecosystem.
So you give each individual rules, and through the totality of the individuals, we get the population outcome.
How individual interactions lead to population outcomes.
Reds and greens, if the neighbours are more than 70% not like them, they were not happy to be there.
It is a very controversial theme to use. Later, I am rewriting this in Python with the reference to Mesa (Python ABM framework)
There are complex equations that these things are modeled. The data analyst or the researcher needs to take this into consideration, how much of the modelling abstracting what aspect of the reality. How do you communicate this in a transparent manner.
Webinar: Introduction to agent-based modelling for social scientists
While the flexibility of ABM enables broad application, the complexity of real-world models demands intensive computing resources and computational time; however, a metamodel may be constructed to gain insight at less computational expense.
NL4Py is a Python wrapper that enables agent-based modelling simulation.
Artificial intelligence research focuses on the creation of synthetic representations of individual human beings or major functions of individual human beings (Ginsberg 1993). Naturally, many artificial intelligence techniques can be used within agent-based models. Details on appropriate techniques are presented throughout the book. However, agent-based modeling is different from artificial intelligence research. While artificial intelligence research emphasizes the development of artifacts that in some sense appear to be human, agent-based modeling emphasizes the development of models that reproduce critical features of complex systems using component-level rules.
In uni tutorials, we worked with Netlogo to test out simulation and modelling. On the Internet, I discovered a python alternative of Netlogo and decided to try it out as follows. It was good practice for getting more comfortable with object-oriented programming as well.
The Schelling segregation model is an agent-based model that shows how a minor preference for a similar race as a neighbour can result in much higher degree of segregation than intuitively expected. This program has three python files: server.py, model.py and run.py..
The goal of running an agent-based model in python is to generate data for analysis. This ‘datacollector’ class handles collection and storage of the data