Peter Neubauer

Portfolio

Strength Estimation in the Game of Go (2024)

Screenshot of howdeepisyourgo.org

This is the title of my Master's Thesis. It involved building a neural network model to judge the playing strength of a Go player from their game records. Refer to my Thesis page for details.

I published the website How deep is your Go? to accompany the thesis. On this website, the user may try out the model on one or multiple game records uploaded by them.

Code is available on my GitHub.

Artificial Intelligence · Deep Learning · Python · PyTorch · C++

Application of Graph Neural Networks to the No-Wait Flowshop Problem (2023)

The pipeline of the NWFSP optimizer

I developed this project and wrote a project paper as part of the curriculum for my Master's degree. It applies a neural network model to the no-wait flow shop problem, a variant of a popular NP-hard scheduling problem.

The figure shows the general approach. The problem instance is reduced to the traveling salesman problem, rolled out with guidance from the neural network, then turned into a schedule.

The project algorithm outperforms the reference 2.5-opt heuristic with the same asymptotic run time.

Code is available as part of a greater toolbox on GitHub.

Julia · Flux.jl

Exact and Heuristic Recognition of Monotone Lobster Graphs on a Grid (2022)

Illustration of a lobster graph generated by udcrgen

I wrote my Bachelor's thesis on a class of graph called lobster, in relation to the unit disk contact problem. Although the problem is NP-hard in general, whether a lobster admits a unit disk contact representation on a triangular grid can be decided in time linear in the size of the input. My contribution is the implementation of a dynamic programming algorithm from the literature to decide the problem, as well as the implementation of and comparison to a faster heuristic.

Code is available on my GitHub.

C++ · Graph Drawing Algorithms · Dynamic Programming

Flight Plan Manager (2016-2021)

Flight Plan Manager by Sabre

I worked on Flight Plan Manager during my employment at Sabre Austria. The product was later sold to CAE as part of a flight operations portfolio.

Flight Plan Manager allows airlines to automate flight planning. One of its significant features is the route optimizer, which finds cost-optimal routes and saves fuel. The product offers extensive customization and interfaces with other systems, including live weather feeds, airspace updates, pilot briefings and many more. My team's assignments often involved integrating new data sources and new industry standards into the product.

Agile development · Microservices · C++ · Java · Microsoft SQL Server · git

Various University Projects

My curriculum covered not just theoretical computer science, but also practical assignments, many of them involving programming.

For example, in the Smart Contracts course (2022), I wrote Ethrix, a “non-Russian quad-block falling and matching game running on the Ethereum platform.” It includes a website user interface and features NFTs, which can be attached to the game blocks to give them smiley faces.

In Heuristic Optimization Techniques (2020), I wrote an ant colony cptimization algorithm for the cost-balanced traveling salesman problem. Code is available on my GitHub.

In Multimedia (2018), my teammate and I wrote a mobile game. As per the assignment, it features multiple screens/activities, animations, sound effects and music, and a persistent high score record.

Java · C++ · web3

Brix-à-brax (2016-2019)

Brix-à-brax Screenshot

This match-3 game was originally started as a practice project for me to familiarize myself with the newer (“modern”) C++ standards.

It is a multiplayer competitive puzzle game with mechanics similar to Panel de Pon, Tetris Attack and Pokémon Puzzle League. The core game mechanics, including networked multiplayer, are implemented. Many more polishing steps would be required to turn it into a smooth and usable software, such as tuning of the game mechanics, replacing placeholder assets, and a centralized way for players to find each other.

Code is available on my GitHub.

C++

Towerhack (2011-2013)

Towerhack Screenshot

Towerhack is an unfinished nethack-style game written in C.

Its basic premise is that it extends roguelike mechanics to networked multiplayer. The players experience independent paths through the dungeon. These paths are balanced to ensure equal chances. When the player's paths cross, they may cooperate to defeat a challenge, or they may compete for the best loot.

In its current state, the code contains a dungeon generator which builds a tile-based dungeon in multiple phases. In contrast to classical roguelikes, the base of the dungeon is a directed graph that implements the balanced player paths. This graph is then converted into the tile-based layout.

Additionally, a flood-fill algorithm for lighting limits the player to a local field of view.

Network communication is implemented, although there is no player interaction.

C

Game Jam Projects (2010, 2011)

Llama in your Face Screenshot

When the first game jam events started in Vienna, I took part in three of them. We produced the entries: Get Through It, Super Extinction, and Llama in your Face.

Llama in your Face was later developed further by my teammates, resulting in a published Flash web game.

C++ · ActionScript