.. Auto-generated by scripts/generate_problem_catalog_docs.py. Do not edit by hand. Truss Analysis Program grammar problem ====================================== A bounded planar truss grammar ported from the MATLAB Truss Analysis Program, including direct-stiffness evaluation, factor-of-safety checks, and mass computation. See :doc:`../grammar` for the grammar family index. Quick Facts ----------- .. list-table:: :header-rows: 1 :widths: 20 80 * - Field - Value * - Problem ID - ``truss_analysis_program_design`` * - Problem Family - grammar * - Implementation - ``design_research_problems.problems.grammar._truss_ap:TrussAPGrammarProblem`` * - Capabilities - ``discrete-actions``, ``external-adapter``, ``serializable-state``, ``statement-markdown`` * - Study Suitability - none * - Tags - ``grammar``, ``truss``, ``structural``, ``mechanics``, ``discrete`` Taxonomy -------- Formulation discrete_grammar Convexity not_applicable Design Variable Type discrete Is Dynamic no Orientation engineering_practical Feasibility Ratio Hint 0.1 Objective Mode multi Constraint Nature hard Bounds Summary fixed required joints plus finite editable-joint candidates, discrete member sizes, and directional load/support toggles Tags ``grammar``, ``truss``, ``structural``, ``mechanics``, ``discrete`` Statement --------- Design a planar truss over fixed support and load anchor joints using discrete editing actions inspired by the original MATLAB Truss Analysis Program: add/move/delete editable joints, add/delete members, resize members, toggle supports, and set directional loads. The evaluator reproduces the study mechanics with a direct-stiffness solve, member-level force and factor-of-safety calculations, and a section-based mass model. It reports ``mass_kg``, ``min_fos``, ``is_stable``, and ``is_acceptable``. Problem Shape ------------- .. list-table:: :header-rows: 1 :widths: 25 75 * - Field - Value * - State Type - TrussAPState * - Initial Transition Count - 83 * - Initial Rule Names - ``add_joint``, ``add_member``, ``clear_load``, ``set_load``, ``set_support_enabled`` Manifest Parameters ------------------- .. list-table:: :header-rows: 1 :widths: 25 75 * - Key - Value * - candidate_points - [[-3.446939, 1.847708], [-3.410204, 2.148353], [-2.1, 1.309054], [-0.802041, 2.023084], [-0.410204, 1.835182], [0.777551, 1.384215], [2.271429, 2.173406], [2.834694, 1.860235], [3.140816, 1.48443], [4.328571, 2.348782]] * - default_member_size_index - 5 * - enable_bad_zone - no * - load_magnitude_options_n - [50000.0, 200000.0, 250000.0] * - max_editable_joints - 16 Initial Transition Summary -------------------------- .. list-table:: :header-rows: 1 :widths: 70 30 * - Rule Name - Transition Count * - add_joint - 10 * - add_member - 10 * - clear_load - 2 * - set_load - 58 * - set_support_enabled - 3 Library Interface ----------------- - ``initial_state()`` - ``enumerate_transitions(state)`` - ``enumerate_next_states(state)`` - ``evaluate(state)``