Assignment: Human-Guided Hill Climbing for Gallery Layouts


Due: Class time April 1

Format: Group proposal + in-class presentation

Groups: Work in your assigned teams (3 groups total)


Overview

So far, our gallery layout system generates many candidate arrangements and selects the highest-scoring ones. However, this approach has two major limitations:

  • The scoring function relies on hard-coded “magic numbers” that are not clearly tied to real design priorities.
  • The top layouts tend to be very similar, offering limited exploration or improvement.

In this assignment, you will begin designing a human-guided hill climbing system, where a curator (user) helps guide the improvement of layouts over multiple iterations.

This is a shift from:

  • “Generate many → pick best”

to:

  • “Start with one → iteratively improve with guidance”

Your Task

Each group will propose a design for how this system should work.

You are not implementing code yet. You are designing the model, interaction, and evaluation strategy.


Part 1 — Scoring Priorities (YAML Design)

The current scoring function is unclear and rigid. We want to move toward a transparent, configurable scoring model.

Your job:

Define what belongs in a scoring configuration file (YAML).

Questions to address:

  • What are the key attributes of a good gallery layout?
    • Examples (but do not limit yourself):
      • spacing
      • balance
      • thematic grouping
      • color harmony
      • period/style consistency
      • visual rhythm
      • focal point / center emphasis
      • height alignment
  • How should these be represented in YAML?
    • weights?
    • thresholds?
    • rules?
  • Which attributes should be:
    • strict constraints (must be satisfied)
    • vs soft preferences (can be optimized)

Deliverable:

  • A proposed YAML structure
  • A short explanation of each attribute and why it matters

Part 2 — Curator Input (Human-in-the-Loop Design)

We now introduce a curator who evaluates layouts and guides improvement.

Your job:

Design how the user (curator) interacts with the system after each layout is shown.

Consider:

  • What kinds of feedback should the curator give?
    • Checkboxes? (e.g., “good balance”, “poor spacing”)
    • Sliders? (e.g., rate balance from 1–10)
    • Direct edits? (e.g., “move this painting left”)
  • Should feedback be:
    • per attribute?
    • overall score?
    • comparative (better/worse than previous)?
  • How do we keep this simple enough to use repeatedly?

Deliverable:

  • A mock interaction design (sketch, bullet list, or simple diagram)
  • A description of how curator input maps to scoring changes

Part 3 — Hill Climbing Strategy

We now move to the algorithmic side.

Your job:

Define how the system uses curator input to improve layouts over time.

Questions to address:

  • What counts as a “neighbor” layout?
    • swap two paintings?
    • shift positions?
    • resize spacing?
    • regroup by theme?
  • How does the system decide what change to try next?
    • based on lowest-scoring attribute?
    • based on curator feedback?
  • How many changes per iteration?
    • one small change?
    • multiple candidate variations?

Deliverable:

  • A clear description of your iteration loop
    • (layout → evaluate → modify → repeat)

Part 4 — Beyond Hill Climbing (Creative Extensions)

Think ahead.

What else should this system support?

Examples to consider:

  • Avoiding local maxima (future simulated annealing ideas)
  • Maintaining diversity across layouts
  • Saving and comparing multiple “paths” of improvement
  • Allowing the curator to “lock” certain artworks in place
  • Tracking improvement history over time

Deliverable:

  • At least 2–3 additional ideas your group would explore next

Presentation (In-Class)

Each group will present:

  • Their scoring model
  • Their curator interaction design
  • Their hill climbing strategy
  • Their extensions

Time:

  • ~8–10 minutes per group

Goal:

We will use your ideas to design a shared experimental platform, which you will later implement and test.


What I’m Looking For

Strong proposals will:

  • Replace vague scoring with clear, interpretable priorities
  • Design simple but meaningful user input
  • Show a clear understanding of iterative improvement
  • Balance algorithmic thinking + human judgment
  • Be concrete enough that we can build from them

Important Note

You are not trying to find the “right answer.”

You are designing:

  • a system
  • a workflow
  • a way of thinking about optimization with human guidance

We will refine and combine your ideas into the next stage of the project.

Scroll to Top