当前位置: 首页 > news >正文

基于TRIZ创新方法论的九屏法分析系统

1. 文件头与库导入

# -*- coding: utf-8 -*-
import streamlit as st
import pandas as pd
import numpy as np
import plotly.graph_objects as go
from datetime import datetime
from sklearn.ensemble import RandomForestRegressor
  • ​作用​​:设置文件编码为UTF-8,导入依赖库:
    • streamlit:构建Web应用界面
    • pandas/numpy:数据处理
    • plotly:3D可视化
    • RandomForestRegressor:机器学习模型用于进化预测

2. NineScreenCell类

class NineScreenCell:
    def __init__(self, time_dimension: str, system_level: str):
        # 验证时空维度(符合GB/T 31769-2015)
        self.time = time_dimension  # 时间维度:过去/现在/未来
        self.level = system_level   # 系统层级:子系统/系统/超系统
        
        # TRIZ要素定义
        self.technical_elements = []    # 技术要素集合
        self.resources = {"物质": [], "能量": [], ...}  # 五类资源分类
        
        # 进化参数
        self._tech_maturity = 0.5       # 技术成熟度 [0,1]
        self.evolution_stages = []      # 进化阶段记录
        self.contradictions = []       # 工程矛盾ID列表
        
        # 动态更新风险指标
        self.update_risk_score()
  • ​核心功能​​:
    • 表示九屏法中单个单元格的完整状态
    • 通过update_risk_score()计算风险指数(技术成熟度、矛盾数量、资源完备性加权)
    • 使用属性装饰器确保技术成熟度在[0,1]范围内

3. TRIZNineScreenMatrix类

class TRIZNineScreenMatrix:
    def __init__(self, system_name: str):
        # 构建3x3矩阵(时间维度 x 系统层级)
        self.matrix = [[NineScreenCell(t, l) for l in levels] for t in times]
        
    def _load_standard_conflict_matrix(self):
        # 加载简化的TRIZ矛盾矩阵(39x39标准)
        return pd.DataFrame(...)
    
    def predict_evolution(self):
        # 使用随机森林预测未来进化阶段
        model = RandomForestRegressor()
        model.fit(X, y)  # 基于历史数据训练
        # 预测未来阶段的演进路径
  • ​关键点​​:
    • 构建完整的3x3九屏矩阵
    • 内置TRIZ标准矛盾矩阵(简化版)
    • 机器学习预测未来技术演进阶段

4. 三维可视化引擎

def plot_nine_screen_3d(matrix):
    fig = go.Figure(data=go.Surface(...))
    # 添加风险曲面和进化阶段标注
    annotations = [...]  # 显示每个单元格的进化阶段
    fig.update_layout(...)
  • ​可视化逻辑​​:
    • X轴:时间维度(过去/现在/未来)
    • Y轴:系统层级(子系统/系统/超系统)
    • Z轴:风险指数(颜色映射表示高低风险)
    • 标注显示技术演进的关键阶段

5. Streamlit主界面

def main():
    st.set_page_config(...)  # 初始化页面配置
    
    # 状态管理:保持系统实例
    if "triz_system" not in st.session_state:
        st.session_state.triz_system = TRIZNineScreenMatrix(...)
    
    # 侧边栏控制面板
    with st.sidebar:
        # 系统参数配置
        tech_maturity = st.slider(...)  # 技术成熟度调节
        resource_management = st.multiselect(...)  # 资源管理
        st.button("更新模型")  # 触发重新预测
        
    # 主显示区域
    with tab1:  # 3D可视化
        st.plotly_chart(fig)
    with tab2:  # 矛盾矩阵分析
        st.dataframe(...)  # 显示标准矛盾矩阵
        # 动态推荐创新原理
  • ​交互设计​​:
    • 侧边栏控制当前选中单元格的参数
    • 双标签页分别展示空间分析和矛盾解决工具
    • 实时反馈参数变化对风险模型的影响

6. 运行入口

if __name__ == "__main__":
    main()
  • 启动Streamlit应用

7. 完整代码

# -*- coding: utf-8 -*-
import streamlit as st
import pandas as pd
import numpy as np
import plotly.graph_objects as go
from datetime import datetime
from sklearn.ensemble import RandomForestRegressor


# --------------------------
# TRIZ九屏核心模型(符合GB/T 31769-2015)
# --------------------------
class NineScreenCell:
    """严格符合九屏法理论的标准单元格"""

    def __init__(self, time_dimension: str, system_level: str):
        # 时空维度验证
        valid_time = ["过去", "现在", "未来"]
        valid_level = ["子系统", "系统", "超系统"]
        if time_dimension not in valid_time or system_level not in valid_level:
            raise ValueError("时空维度定义不符合九屏法标准")

        self.time = time_dimension  # 时间维度
        self.level = system_level  # 系统层级

        # 核心要素(符合TRIZ标准)
        self.technical_elements = []  # 技术要素集合
        self.resources = {
            "物质": [],
            "能量": [],
            "信息": [],
            "时空": [],
            "功能": []
        }  # 五类资源分类

        # 进化参数
        self._tech_maturity = 0.5  # 技术成熟度 [0,1]
        self.evolution_stages = []  # 进化阶段记录
        self.contradictions = []  # 工程矛盾ID列表

        # 动态指标
        self.update_risk_score()

    def update_risk_score(self):
        """基于TRIZ的风险评估模型"""
        resource_score = sum(len(v) for v in self.resources.values()) / 15
        contradiction_score = len(self.contradictions) * 0.1
        self.risk = np.clip(
            (1 - self._tech_maturity) * 0.6 +
            contradiction_score * 0.3 +
            (1 - resource_score) * 0.1,
            0, 1
        )

    @property
    def tech_maturity(self):
        return self._tech_maturity

    @tech_maturity.setter
    def tech_maturity(self, value):
        self._tech_maturity = np.clip(value, 0, 1)
        self.update_risk_score()


class TRIZNineScreenMatrix:
    """标准九屏矩阵引擎"""

    def __init__(self, system_name: str):
        self.system_name = system_name
        self.time_dimensions = ["过去", "现在", "未来"]
        self.system_levels = ["子系统", "系统", "超系统"]

        # 构建3x3矩阵
        self.matrix = [
            [NineScreenCell(t, l) for l in self.system_levels]
            for t in self.time_dimensions
        ]

        # 加载标准矛盾矩阵
        self.conflict_matrix = self._load_standard_conflict_matrix()

    def _load_standard_conflict_matrix(self):
        """加载TRIZ标准39x39矛盾矩阵"""
        # 简化的矛盾矩阵示例(实际需加载完整数据)
        return pd.DataFrame(
            np.array([
                [15, 10, 29, 35, 2],
                [1, 40, 35, 28, 14],
                [35, 34, 28, 10, 29],
                [29, 28, 10, 34, 15],
                [34, 15, 40, 18, 37]
            ]),  # 示例数据
            index=[1, 5, 13, 24, 33],  # 改善参数
            columns=[1, 5, 13, 24, 33]  # 恶化参数
        )

    def predict_evolution(self):
        """基于时间序列的进化路径预测"""
        # 准备训练数据
        X, y = [], []
        for t_idx in range(len(self.time_dimensions) - 1):
            for l_idx in range(len(self.system_levels)):
                cell = self.matrix[t_idx][l_idx]
                X.append([
                    t_idx,
                    l_idx,
                    cell.tech_maturity,
                    len(cell.contradictions)
                ])
                y.append(len(cell.evolution_stages))

        # 使用随机森林进行预测
        model = RandomForestRegressor(n_estimators=100)
        model.fit(X, y)

        # 预测未来进化阶段
        future_idx = self.time_dimensions.index("未来")
        for l_idx in range(len(self.system_levels)):
            current_cell = self.matrix[1][l_idx]  # 现在时态
            prediction = model.predict([[
                future_idx,
                l_idx,
                current_cell.tech_maturity,
                len(current_cell.contradictions)
            ]])
            stages = [f"阶段{int(i + 1)}" for i in range(int(prediction[0]))]
            self.matrix[future_idx][l_idx].evolution_stages = stages


# --------------------------
# 三维可视化引擎
# --------------------------
def plot_nine_screen_3d(matrix):
    """标准九屏三维可视化"""
    time_labels = matrix.time_dimensions
    level_labels = matrix.system_levels

    # 构建风险曲面数据
    risk_data = [
        [cell.risk for cell in row]
        for row in matrix.matrix
    ]

    fig = go.Figure(data=go.Surface(
        z=risk_data,
        x=time_labels,
        y=level_labels,
        colorscale='RdBu_r',
        opacity=0.9,
        contours={
            "z": {"show": True, "usecolormap": True}
        }
    ))

    # 添加进化标注
    annotations = []
    for t_idx, time in enumerate(time_labels):
        for l_idx, level in enumerate(level_labels):
            cell = matrix.matrix[t_idx][l_idx]
            if cell.evolution_stages:
                text = f"<b>{cell.system_name}</b><br>" + "<br>".join(cell.evolution_stages[:3])
                annotations.append({
                    "x": time,
                    "y": level,
                    "z": cell.risk + 0.1,
                    "text": text,
                    "showarrow": False,
                    "font": {"size": 10}
                })

    fig.update_layout(
        scene=dict(
            xaxis_title='时间维度',
            yaxis_title='系统层级',
            zaxis_title='风险指数',
            camera={"eye": {"x": 1.8, "y": -1.5, "z": 0.8}},
            annotations=annotations
        ),
        margin={"l": 0, "r": 0, "b": 0, "t": 30},
        height=700
    )
    return fig


# --------------------------
# 主应用界面
# --------------------------
def main():
    st.set_page_config(
        page_title="TRIZ九屏分析系统",
        layout="wide",
        page_icon="🌐"
    )

    # 初始化系统
    if "triz_system" not in st.session_state:
        st.session_state.triz_system = TRIZNineScreenMatrix("智能电控系统")
        st.session_state.triz_system.predict_evolution()

    # 侧边栏控制面板
    with st.sidebar:
        st.header("⚙️ 控制中心")
        system_name = st.text_input("系统名称", value=st.session_state.triz_system.system_name)

        # 时空维度选择
        col1, col2 = st.columns(2)
        with col1:
            selected_time = st.selectbox(
                "时间维度",
                st.session_state.triz_system.time_dimensions,
                index=1
            )
        with col2:
            selected_level = st.selectbox(
                "系统层级",
                st.session_state.triz_system.system_levels,
                index=1
            )

        # 获取当前单元格
        t_idx = st.session_state.triz_system.time_dimensions.index(selected_time)
        l_idx = st.session_state.triz_system.system_levels.index(selected_level)
        current_cell = st.session_state.triz_system.matrix[t_idx][l_idx]

        # 技术参数控制
        with st.expander("🔧 技术参数", expanded=True):
            current_cell.tech_maturity = st.slider(
                "技术成熟度", 0.0, 1.0,
                value=current_cell.tech_maturity,
                key=f"maturity_{t_idx}_{l_idx}"
            )

        # 资源管理
        with st.expander("📦 资源分析"):
            for res_type in current_cell.resources:
                current_cell.resources[res_type] = st.multiselect(
                    f"{res_type}资源",
                    options=["R1", "R2", "R3", "R4"],
                    default=current_cell.resources[res_type],
                    key=f"res_{res_type}_{t_idx}_{l_idx}"
                )

        # 模型控制
        if st.button("🔄 更新预测模型"):
            st.session_state.triz_system.predict_evolution()
            st.rerun()

    # 主显示区域
    tab1, tab2 = st.tabs(["三维九屏分析", "矛盾矩阵"])

    with tab1:
        st.header(f"{system_name}九屏分析视图")
        fig = plot_nine_screen_3d(st.session_state.triz_system)
        st.plotly_chart(fig, use_container_width=True)

    with tab2:
        st.header("标准TRIZ矛盾矩阵")
        st.dataframe(
            st.session_state.triz_system.conflict_matrix.style
            .background_gradient(cmap='Blues')
            .format(precision=0),
            height=600
        )

        # 矛盾分析工具
        with st.expander("矛盾解析工具"):
            col1, col2 = st.columns(2)
            with col1:
                improve_param = st.selectbox(
                    "改善参数",
                    st.session_state.triz_system.conflict_matrix.index
                )
            with col2:
                worsen_param = st.selectbox(
                    "恶化参数",
                    st.session_state.triz_system.conflict_matrix.columns
                )

            principle = st.session_state.triz_system.conflict_matrix.loc[improve_param, worsen_param]
            st.success(f"推荐创新原理: 原理{principle}")


if __name__ == "__main__":
    main()

相关文章:

  • [Linux系统编程]多线程—互斥
  • Android Material Design 3 主题配色终极指南:XML 与 Compose 全解析
  • C#调用Lua方法1+C#调用Lua方法2,3
  • 【深度学习:理论篇】--Pytorch基础入门
  • MCP+Deepseck王炸组合 | 附实战操作及其MCPserver | 可替代Manus,实现AGI
  • Vue3+Vite+TypeScript+Element Plus开发-08.登录设计
  • Linux 性能调优之CPU调优认知
  • TS知识补充第一篇 ✅
  • Uniapp 集成极光推送(JPush)完整指南
  • 医药流通行业批发公司IT运维转型:Prometheus+Grafana监控Spring Boot 3应用实践
  • RK 3562 转换模型
  • Python 序列构成的数组(序列的增量赋值)
  • Redis持久化 | RDB AOF | 常见问题
  • 计算机控制系统:arduino控制无源滤波器播放音乐
  • 机器学习 | 强化学习基本原理 | MDP | TD | PG | TRPO
  • 【Linux】进程基础入门指南(上)
  • 一体式胎心仪方案特点介绍----【其利天下技术】
  • Versatile-OCR-Program:可以从复杂的教育材料(如试卷)中提取结构化数据的开源多模态OCR工具
  • 进程的唤醒原语与挂起原语
  • 简单-快速-高效——模块化解析controlnet网络结构
  • 如何用易语言做网站辅助/友情手机站
  • 网站后端技术语言/关键词seo
  • 网站建设费用 计入什么科目/沈阳网站关键词优化多少钱
  • 手机访问网站建设中/关键词优化的五个步骤
  • 郑州医疗网站建设/营销战略包括哪些方面
  • 淘宝网网站设计分析/模板建站的网站