Planar roof truss grammar (three-point symmetric variant)

A simplified roof-truss grammar aligned to the three-point symmetric formulation reported by Shea and Cagan.

See Grammar Problem Catalog for the grammar family index.

Quick Facts

Field

Value

Problem ID

planar_roof_truss_three_point_symmetric

Problem Family

grammar

Implementation

design_research_problems.problems.grammar._planar_truss:PlanarTrussSpanProblem

Capabilities

discrete-actions, external-adapter, optional-evaluator, serializable-state, statement-markdown

Study Suitability

none

Tags

grammar, truss, roof, discrete, topology, symmetric

Taxonomy

Formulation

discrete_grammar

Convexity

not_applicable

Design Variable Type

discrete

Is Dynamic

no

Orientation

engineering_practical

Feasibility Ratio Hint

0.25

Objective Mode

single

Constraint Nature

hard

Bounds Summary

symmetric planar roof-truss topology over a fixed span

Tags

grammar, truss, roof, discrete, topology, symmetric

Statement

This catalog entry approximates the first planar roof-truss formulation reported in the structural essay study by Shea and Cagan: a symmetric roof truss with three roof load points. In the original study, the two outer load points could translate along the roofline. This simplified grammar fixes them at quarter-span locations while preserving the same symmetric three-point loading topology.

The state begins with pinned and roller supports plus three loaded roof joints. Designers add interior joints and members, and mirrored edits are enforced so the topology remains symmetric about mid-span.

Problem Shape

Field

Value

State Type

PlanarTrussState

Initial Transition Count

9

Initial Rule Names

add_joint, add_joint_pair, add_member

Manifest Parameters

Key

Value

candidate_point_fractions

[[0.2, 0.2], [0.35, 0.32], [0.5, 0.22]]

enforce_symmetry

yes

load_magnitude

1000

max_height

2.5

roof_load_x_fractions

[0.25, 0.5, 0.75]

span

10

Initial Transition Summary

Rule Name

Transition Count

add_joint

1

add_joint_pair

2

add_member

6

Library Interface

  • initial_state()

  • enumerate_transitions(state)

  • enumerate_next_states(state)

  • evaluate(state)