Mikael Zayenz Lagerkvist
Welcome to my personal website. I am a researcher specializing in constraint programming, combinatorial optimization, and game tree search. My work explores efficient algorithms for solving complex decision problems, particularly in the context of board games and AI systems.
Feel free to explore my research page for a comprehensive list of my publications, or check out my blog for more informal discussions and insights into my work.
Recent Updates
- Blog Post14 min read
Planning with open variable lists in Gecode
A robot needs to fetch a packet from the shelf and put it down on the workbench. Easy enough: drive over to the shelf, pick up the packet, drive back, and put it down. Four actions. Unless the battery is low. Then the robot has to visit the charger first, and the questions become where in the plan that visit should go, and how long the robot should stay there.

- Blog Post12 min read
Introducing Zirql, an embeddable query language
When implementing Zincite, I wanted a query language similar to the one I had built for Zirium. As with Zirium, I took inspiration from tools such as awk and jq, whose operations suit the data they work on: text records and fields for awk, JSON values for jq.
- Blog Post12 min read
How I write MiniZinc
I like writing MiniZinc models. I think it is a nice language, and I have been using it for as long as it has existed. It lets me describe an optimisation problem directly, in a form that I can still read as the model grows. How I write a model includes how I organise its data, choose types, and express the rules, as well as how I lay out the source.
- Blog Post6 min read
zpres: presentations from text
For ModRef 2026, I needed to give three presentations. This was apparently not enough of a deadline on its own, so I also decided to write a presentation system. zpres 0.1.0 is the result.

- Blog Post9 min read
Processing MLIR with Zirium
A small question about an MLIR file can require a surprising amount of machinery to answer. What uses this value? Which operations contribute to a particular return value? Did a compiler pass change the dataflow, or merely rename a few values? Text tools are convenient, but following those relationships requires more than matching operation names.
- Blog Post8 min read
zdev 1.0: yet another agentic loop, this one is mine
When I use coding agents for work larger than a single patch, the coding harness usually handles each activity well. It can explore the repository, compare designs, implement a task, and review the result. The awkward part is keeping the work coherent between sessions. There are many systems for running agentic loops. I have built one too.
- Blog Post20 min read
From constraint models to playable puzzle games
I wanted to play some puzzles produced by my constraint-programming experiments. That small wish grew into nine games.

Projects
I am one of the developers of Gecode, an open source C++ toolkit for constraint programming. I also make browser puzzle games, with daily challenges and progress tracking. For work with coding agents, I built zdev to keep plans and tasks in the repository.
See all projectsSkills & Expertise
Research Areas
- Constraint Programming
- Combinatorial Optimization
- Game Tree Search
- Board Game AI
- Machine Learning Applications
Technical Skills
- Algorithm Design & Analysis
- Optimization and scheduling
- Python, C++, Java, TypeScript
- Large Language Models and Neural Network Architectures
- Software Engineering
Contact
Feel free to reach out to me at fromweb@zayenz.se