Artificial intelligence

Artificial intelligence is a field of computer science that studies, models and attempts to simulate natural behaviors of live, intelligent beings. The major artificial intelligence techniques include evolutionary computing, artificial neural networks, fuzzy logic systems, expert systems and artificial life.

During my academic research, I wrote numerous applications for different areas of artificial intelligence. All of them were related to my studies, my own research or scientific projects I was involved in. Some of them are listed below. Documentation for some projects is available in Polish only.

For my latest research on artificial intelligence (especially on evolutionary algorithms), please check my scientific papers section.

Archive of my old projects

Swarm intelligence in global optimization problems (2009)

Particle Swarm Optimization is a simple yet efficient method for solving global numerical optimization problems. I have tested it on a set of well-known, multimodal functions (Rosenbrock’s valley, Ackley’s path, Rastrigin’s function and others). I have written this application in Visual Basic .NET and Visual Studio 2008. Graphical user interface has been created using Windows Presentation Foundation and .NET framework 3.5. [#VB,#dotnet]

Application and source code repository: https://github.com/rnowotniak/ParticleSwarmOptimization-vb

Game of Life, cellular automata (2005)

Cellular automata are connected with Artificial Intelligence in a very loose way. However, they are an inspiring example that systems driven with very simple rules can behave and evolve in very complex and surprising ways. In 2005, I created a computer program that allows to study a broad class of cellular automata. In my study, I have presented the popular Conway’s Game of Life and several phenomena emerging from this most known cellular automaton.

Read more… (in Polish )

Evolutionary and genetic algorithms (2007)

During my master’s course I have studied a wide range of evolutionary computing methods and I have implemented most of them. I have performed numerical experiments with Simple Genetic Algorithms for one-dimensional optimization, Evolutionary Strategies for optimization of a a brachistochrone curve (the curve of the fastest descent), Hierarchical Fair Competition (distributed genetic algorithm modification) and Genetic Programming for numerical integration.

You can find much more recent implementations (circa 2013)of selected algorithms in qopt project in my github repository.

Steering behaviors (2007)

Steering behaviours of autonomous agents allow to mimic natural behaviour of herds, flocks and schools in a dynamic environment. My program in Python presents visualisation of such phenomena. Implemented set of behaviors is: seek, flee, arrival, wander, path following, obstacles avoidance as well as collective and compound behaviors.

Source code: steering.py

Hopfield neural networks (2007)

A Hopfield network is a kind of recurrent artificial neural network capable to serve as an autoassociative memory. I have created a proof of concept implementation of such network, performing an autocorrection of typing errors in URL addresses.

Source code in Python: hopfield.py

Linguistic summaries (2007)

Large amounts of data is difficult to handle for human mind and because of that fact linguistic analysis with fuzzy qualifications is the only possibility in many complex situations. My program allows to connect to any database (via ODBC driver) and to generate a linguistic summary of data. It has been written in .NET framework 2.0 and ADO.NET.

Expert systems (2007)

During my artificial intelligence course labs, I have created an Expert System with First-Order Logic inference engine. Capabilities of the system have been tested in the field of IT security problems. A knowledge base file format for description of facts and inference rules has been proposed and Yacc-based parser has been written. The project participated in Student Best Project competition finals at Częstochowa University of Technology. It has been implemented in Python.

Spam recognition with probabilistic classifiers (2008)

Bayesian analysis is one of the most effective, probabilistic and content-based approach to spam recognition nowadays. I have implemented three different classifiers and compared their effectiveness in spam recognition: a naive Bayes classifier, a log likelihood classifier and a Hidden Markov Model.