.. Auto-generated by scripts/generate_problem_catalog_docs.py. Do not edit by hand. 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 :doc:`../grammar` for the grammar family index. Quick Facts ----------- .. list-table:: :header-rows: 1 :widths: 20 80 * - 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 ------------- .. list-table:: :header-rows: 1 :widths: 25 75 * - Field - Value * - State Type - PlanarTrussState * - Initial Transition Count - 9 * - Initial Rule Names - ``add_joint``, ``add_joint_pair``, ``add_member`` Manifest Parameters ------------------- .. list-table:: :header-rows: 1 :widths: 25 75 * - 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 -------------------------- .. list-table:: :header-rows: 1 :widths: 70 30 * - 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)``