🖼️ Genetic Art

Reproduce a picture using nothing but a handful of translucent triangles. Each triangle has ten numbers — three corners, a colour, and an opacity — so thirty triangles is a 300-dimensional search. The optimiser never sees the target as a picture; it only gets one number back: how close the pixels are. Watch a pile of random glass shards resolve into a recognisable scene.

🧠 Human Raphson

You can't place 300 numbers by hand — so just splatter: throw a fresh batch of random triangles and see how far blind luck gets you. (Spoiler: the optimiser does much better.)

Subject

Algorithm

Similarity
Paintings tried0
Best so far
Dimensions

Leaderboard (this session)

Each row is the most faithful painting a given optimiser produced — similarity is 100 × (1 − pixel-RMS-error / 255). Blind random splatter plateaus quickly; a real optimiser keeps climbing — though which one climbs highest here is not the one you'd guess.

AlgorithmSimilarityPaintingsTriangles
— no runs yet —

What's happening

The picture on the left is the target. On the right, the optimiser is painting with translucent triangles, stacked back-to-front like panes of coloured glass. A candidate painting is just a list of numbers — ten per triangle — and its score is the pixel difference from the target, measured on a small 48×48 grid. Lower error is better, so the optimiser is minimising; we report it as a "similarity" percentage.

This is a genuinely high-dimensional, multimodal problem: thirty triangles is three hundred knobs, and countless different arrangements score about the same. The ranking is full of surprises. On a quick benchmark (30 triangles, 4,000 paintings) the most faithful result came not from a fashionable evolutionary method but from Powell, a 1960s direction-set method — the triangle genes are loosely separable, so its one-coordinate-at-a-time line searches pay off, and it's among the fastest too. Differential Evolution and the other population methods cluster just behind. Meanwhile Nelder-Mead — also a classical method — collapses, because a single simplex flailing in 300 dimensions is hopeless. You cannot read the winner off the algorithm's name.

One method is missing from the menu on purpose: CMA-ES, superb in low dimensions, maintains and factorises an n × n covariance matrix — 300×300 here — every generation, which took it over two minutes for a single run in testing versus a fraction of a second for the others. It would simply freeze the page. That cost is the whole point: the right optimiser depends on the problem's dimension, shape, and budget — exactly the choice HumpDay is built to make for you.

It will never be photographic — that's the charm. With a few dozen triangles you get a low-poly impression, the same idea behind the famous "Mona Lisa in 50 polygons" experiment. More triangles and more budget sharpen it, at the cost of a bigger search.

🌱 Save the Planet

If your hyper-parameter searches are heating the Earth, drop this in Cursor or Claude:

Read https://raw.githubusercontent.com/microprediction/humpday/main/SKILL.md
and create a project skill from it.
View SKILL.md →