interior-env / tasks.py
Interior Env
Integrated detailed Solar Raycasting and Thermal Comfort Physics frameworks
26329b5
Raw History Blame Contribute Delete
5.1 kB
from models import Furniture
TASKS = {
# ─── EASY β€” 10x10 Bedroom ───────────────────────────────────────────────────
# Door at left-middle. Windows on right wall.
"easy": {
"description": "Bedroom Setup. Place all 8 items following real interior design rules.",
"difficulty": "easy",
"room_size": (10, 10),
"door_position": (0, 5),
"windows": [(9, 2), (9, 3), (9, 4)],
"items": [
Furniture(id="bed", width=2, height=3, rules=["must_touch_wall"]),
Furniture(id="nightstand", width=1, height=1, rules=["adjacent_to:bed"]),
Furniture(id="wardrobe", width=1, height=3, rules=["must_touch_wall", "is_tall"]),
Furniture(id="mirror", width=1, height=1, rules=["must_touch_wall", "adjacent_to:wardrobe"]),
Furniture(id="desk", width=2, height=1, rules=["near_window", "needs_sunlight"]),
Furniture(id="desk_chair", width=1, height=1, rules=["adjacent_to:desk"]),
Furniture(id="floor_lamp", width=1, height=1, rules=["must_touch_wall", "near_window"]),
Furniture(id="plant", width=1, height=1, rules=["near_window"]),
],
"max_steps": 16,
},
# ─── MEDIUM β€” 12x12 Living Room ─────────────────────────────────────────────
# Door at top-center. Windows on right wall.
"medium": {
"description": "Living Room Design. 10 objects, facing constraints and flow rules.",
"difficulty": "medium",
"room_size": (12, 12),
"door_position": (5, 0),
"windows": [(11, 5), (11, 6), (11, 7), (11, 8)],
"items": [
Furniture(id="tv_stand", width=2, height=1, rules=["must_touch_wall", "emits_heat:4"]),
Furniture(id="sofa", width=3, height=1, rules=["must_face:tv_stand", "thermal_comfort:-2:4"]),
Furniture(id="coffee_table", width=2, height=1, rules=["adjacent_to:sofa"]),
Furniture(id="rug", width=3, height=2, rules=["adjacent_to:coffee_table"]),
Furniture(id="armchair", width=1, height=1, rules=["adjacent_to:sofa"]),
Furniture(id="side_table", width=1, height=1, rules=["adjacent_to:armchair"]),
Furniture(id="bookshelf", width=1, height=2, rules=["must_touch_wall", "is_tall"]),
Furniture(id="floor_lamp", width=1, height=1, rules=["adjacent_to:sofa"]),
Furniture(id="plant", width=1, height=1, rules=["near_window", "needs_sunlight"]),
Furniture(id="curtains", width=2, height=1, rules=["must_touch_wall", "near_window"]),
],
"max_steps": 20,
},
# ─── HARD β€” 15x12 Studio Apartment ──────────────────────────────────────────
# Door at left-middle. Windows at top-right and bottom-right.
"hard": {
"description": "Studio Apartment. 15 objects. Every item has a strict architectural rule.",
"difficulty": "hard",
"room_size": (15, 12),
"door_position": (0, 4),
"windows": [(14, 2), (14, 3), (14, 9), (14, 10)],
"items": [
# Entrance area
Furniture(id="coat_hanger", width=1, height=1, rules=["must_touch_wall", "near_door"]),
# Kitchen zone
Furniture(id="kitchen_counter",width=4, height=1, rules=["must_touch_wall"]),
# Sleeping zone
Furniture(id="bed", width=2, height=3, rules=["must_touch_wall", "near_window", "thermal_comfort:-4:0"]),
Furniture(id="nightstand", width=1, height=1, rules=["adjacent_to:bed"]),
Furniture(id="wardrobe", width=1, height=3, rules=["must_touch_wall", "is_tall"]),
# Living zone
Furniture(id="tv_stand", width=2, height=1, rules=["must_touch_wall", "emits_heat:4"]),
Furniture(id="sofa", width=3, height=1, rules=["must_face:tv_stand", "thermal_comfort:-3:4"]),
Furniture(id="coffee_table", width=2, height=1, rules=["adjacent_to:sofa"]),
Furniture(id="armchair", width=1, height=1, rules=["adjacent_to:sofa"]),
Furniture(id="side_table", width=1, height=1, rules=["adjacent_to:armchair"]),
Furniture(id="floor_lamp", width=1, height=1, rules=["adjacent_to:sofa"]),
# Dining zone
Furniture(id="dining_table", width=2, height=2, rules=["all_sides_clear"]),
Furniture(id="dining_chair_l", width=1, height=1, rules=["adjacent_to:dining_table"]),
Furniture(id="dining_chair_r", width=1, height=1, rules=["adjacent_to:dining_table"]),
# Decor
Furniture(id="plant", width=1, height=1, rules=["near_window", "needs_sunlight"]),
],
"max_steps": 30,
},
}