系统cpu占用超高故障分析一例

本文记录了一次因SQL执行计划导致的系统资源占用过高问题。通过分析发现,由于统计信息不准确,导致数据库选择了效率较低的执行计划。通过对相关表进行统计信息更新,成功解决了问题。

下班的时候突然接到电话,通知一台主机资源占用超过,同时手机短信也不停的报session数,赶快连上服务器查看具体原因:

1、  通过top可以发现系统CPU资源占用100%

查当前进程数,发现比平时多了100

Select * from v$license;

SESSIONS_MAX SESSIONS_WARNING SESSIONS_CURRENT SESSIONS_HIGHWATER  USERS_MAX

------------ ---------------- ---------------- ------------------ ----------

           0                0              234                246          0

session等待事件,大部分session都在做latch free等待

SQL> select sid,event,P1TEXT,state from v$session_wait;

 

   SID EVENT                          P1TEXT                         STATE

------ ------------------------------ ------------------------------ -------------------

    32 latch free                     address                        WAITED KNOWN TIME

    38 latch free                     address                        WAITED KNOWN TIME

    41 latch free                     address                        WAITING

    57 latch free                     address                        WAITING

    89 latch free                     address                        WAITED KNOWN TIME

    93 latch free                     address                        WAITED KNOWN TIME

   111 latch free                     address                        WAITED KNOWN TIME

   118 latch free                     address                        WAITING

   137 latch free                     address                        WAITED KNOWN TIME

   201 latch free                     address                        WAITING

   200 latch free                     address                        WAITED KNOWN TIME

   194 latch free                     address                        WAITED KNOWN TIME

   186 latch free                     address                        WAITED KNOWN TIME

   182 latch free                     address                        WAITED KNOWN TIME

   177 latch free                     address                        WAITING

   163 latch free                     address                        WAITING

   147 latch free                     address                        WAITED KNOWN TIME

   146 latch free                     address                        WAITED KNOWN TIME

   238 latch free                     address                        WAITED KNOWN TIME

   236 latch free                     address                        WAITED KNOWN TIME

   233 latch free                     address                        WAITED KNOWN TIME

   225 latch free                     address                        WAITED KNOWN TIME

   221 latch free                     address                        WAITED KNOWN TIME

   211 latch free                     address                        WAITING

   209 latch free                     address                        WAITED KNOWN TIME

   207 latch free                     address                        WAITED KNOWN TIME

   204 latch free                     address                        WAITING

   261 latch free                     address                        WAITED KNOWN TIME

   257 latch free                     address                        WAITED KNOWN TIME

   255 latch free                     address                        WAITED KNOWN TIME

   253 latch free                     address                        WAITED KNOWN TIME

   251 latch free                     address                        WAITED KNOWN TIME

   241 latch free                     address                        WAITING

   239 latch free                     address                        WAITED KNOWN TIME

   119 latch free                     address                        WAITED KNOWN TIME

   113 latch free                     address                        WAITED KNOWN TIME

    97 latch free                     address                        WAITING

    92 latch free                     address                        WAITED KNOWN TIME

    88 latch free                     address                        WAITED KNOWN TIME

    87 latch free                     address                        WAITED KNOWN TIME

    68 latch free                     address                        WAITED KNOWN TIME

  

2、  查询占用cpu的进程情况,大量进程占用都很高,如3720.

SQL> SELECT /*+ ordered */ p.spid, s.sid, s.serial#, s.username, s.program,s.status,TO_CHAR(s.logon_time, 'mm-dd-yyyy hh24:mi') logon_time, s.last_call_et, st.value, s.sql_hash_value, s.sql_address, sq.child_number ,sq.sql_text  

  2  FROM v$statname sn, v$sesstat st, v$process p, v$session s, v$sql sq     

  3  WHERE s.paddr=p.addr        

  4  AND s.sql_hash_value = sq.hash_value and s.sql_Address = sq.address

  5  AND s.sid = st.sid

  6  AND st.STATISTIC# = sn.statistic#        

  7  AND sn.NAME = 'CPU used by this session'

  8  AND p.spid = &osPID -- parameter to restrict for a specific PID

  9  -- AND s.status = 'ACTIVE'

 10  ORDER BY st.value desc;

Enter value for ospid: 3720

 

SPID            SID SERIAL# USERNAME   PROGRAM                          STATUS   LOGON_TIME       LAST_CALL_ET      VALUE SQL_HASH_VALUE SQL_ADDRESS      CHILD_NUMBER

------------ ------ ------- ---------- -------------------------------- -------- ---------------- ------------ ---------- -------------- ---------------- ------------

SQL_TEXT

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

3720             97   17856 CCATSUPT   JDBC Thin Client                 ACTIVE   02-21-2011 15:28         3413      16088     1113672989 C000000354738950            0

SELECT /*+ INDEX (C, I_SVR_PUB_DA_MAINQUEUE_HIS_FRT) */ COUNT(1)  FROM Svr_pub_da_MainQueue_his c,pub_Specialty k  WHERE c.Business in ( 'D46C2BC08404D1211DFA6F7BA8DCB9DB', '293C7B04CD7B0FFD56B255CC2585E16F')   AND c.specialty = k.specialtyid AND c.FirstReceptTime BETWEEN TO_DATE('2011-01-21 00:00:00', 'yyyy-MM-dd HH24:MI:SS') AND TO_DATE('2011-02-22 00:00:00', 'yyyy-MM-dd HH24:MI:SS')  AND ( k.TreeCode LIKE '0109%')  AND EXISTS (SELECT 1 FROM org_unit ou                             WHERE c.sourcedept = ou.unitid                               AND ou.TreeCode LIKE '0001000301970003%')

3、查看该sql执行计划,存在开销极大的nested loop,检查各个表的数据量后,怀疑是统计信息出问题,走了不该走的索引。

 

-------------------------------------------------------------------------------------------------------------------------

| Id   | Operation                            | Name                           |  Rows | Bytes |  Cost | Pstart | Pstop |

-------------------------------------------------------------------------------------------------------------------------

|    0 | SELECT STATEMENT                     |                                |       |       | 34498 |        |       |

|    1 |  SORT AGGREGATE                      |                                |     1 |   203 |       |        |       |

| *  2 |   TABLE ACCESS BY GLOBAL INDEX ROWID | SVR_PUB_DA_MAINQUEUE_HIS       |     1 |   101 | 34493 |  ROW L | ROW L |

|    3 |    NESTED LOOPS                      |                                |     1 |   203 | 34498 |        |       |

|    4 |     MERGE JOIN CARTESIAN             |                                |     1 |   102 |     5 |        |       |

|    5 |      TABLE ACCESS BY INDEX ROWID     | PUB_SPECIALTY                  |     1 |    46 |     3 |        |       |

| *  6 |       INDEX RANGE SCAN               | I_PUB_SPECIALTY_TR             |     1 |       |     2 |        |       |

|    7 |      BUFFER SORT                     |                                |     1 |    56 |     2 |        |       |

|    8 |       SORT UNIQUE                    |                                |       |       |       |        |       |

|    9 |        TABLE ACCESS BY INDEX ROWID   | ORG_UNIT                       |     1 |    56 |     2 |        |       |

| * 10 |         INDEX RANGE SCAN             | ORG_UNIT_I01                   |     1 |       |     1 |        |       |

| * 11 |     INDEX RANGE SCAN                 | I_SVR_PUB_DA_MAINQUEUE_HIS_FRT | 40241 |       |   119 |        |       |

-------------------------------------------------------------------------------------------------------------------------

4、更新统计信息

analyze table PUB_SPECIALTY compute statistics for table for all indexed columns for all indexes;

analyze table org_unit compute statistics for table for all indexed columns for all indexes;

5、此时再次运行sql,查看执行计划,发现已经已无nested loop

 

Execution Plan

----------------------------------------------------------

   0      SELECT STATEMENT ptimizer=CHOOSE (Cost=39980 Card=1 Bytes=2

          00)

 

   1    0   SORT (AGGREGATE)

   2    1     HASH JOIN (Cost=39980 Card=1811 Bytes=362200)

   3    2       TABLE ACCESS (FULL) OF 'PUB_SPECIALTY' (Cost=4 Card=17

          0 Bytes=7480)

 

   4    2       HASH JOIN (Cost=39975 Card=2059 Bytes=321204)

   5    4         SORT (UNIQUE)

   6    5           TABLE ACCESS (FULL) OF 'ORG_UNIT' (Cost=10 Card=21

           Bytes=1155)

 

   7    4         TABLE ACCESS (BY GLOBAL INDEX ROWID) OF 'SVR_PUB_DA_

          MAINQUEUE_HIS' (Cost=39951 Card=16097 Bytes=1625797)

 

   8    7           INDEX (RANGE SCAN) OF 'I_SVR_PUB_DA_MAINQUEUE_HIS_

          FRT' (NON-UNIQUE) (Cost=158 Card=40241)

6、查询等待事件,latch freesession仍然存在,由于走错了执行计划,所以决定杀掉这些session,杀掉session后系统恢复正常

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11088128/viewspace-687675/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11088128/viewspace-687675/

2024年中国研究生数学建模竞赛A题 风电场有功功率优化分配 一、问题背景 我国风电快速发展,大型风机、大规模场站逐步投入运行。额定容量高的大型风机机械部件柔性更强,导致其疲劳损伤累积速度快,增加风机维护成本,降低风力发电效率;极端情况甚至会加剧风机倒塌、叶片断裂等安全风险。因此,亟需通过优化手段,降低风机运行过程中的累积疲劳损伤,以减小其因疲劳导致可用寿命缩短的风险。风机低疲劳运行能够明显降低机械系统故障率,为风电场运营商带来极大的经济和社会效益:一方面,减少故障导致不正常停机所造成的发电量损失;另一方面,减少机械部件维护频次以节约运维人员和物料成本,且降低安全生产事故风险。 风电场运行过程中,电网调度指令下发到场站控制端。场站自动发电控制系统(Automatic Generation Control,AGC)将以每秒钟一次的采样率响应调度指令。AGC根据电网调度指令计算场内每台风力发电机所需发电量,并将计算结果发送给各个风机(此过程即为有功功率分配过程,各个风机所分配的功率为其功率参考值),各风机依据功率参考值调整自身机械参数,实现发电量对功率参考值的跟踪(本题默认跟踪过程可以精确实现)。传统计算分配方案采用平均分配方法,即每台风机需发出功率=,为场内所有风机数量。每台风机的功率指令同时受限于由风速决定的当前可发出最大功率值。然而,平均分配方法未考虑任何关于风机运行状态和风机累积疲劳损伤之间的联系,导致部分风机长期处于疲劳的高负荷状态,进而影响其机械部件的运行安全。 二、基本概念 疲劳损伤(fatigue damage)指机械元件在循环应力作用下发生持续形变导致的内部结构损伤。关于疲劳损伤有几个基本概念。 1.疲劳寿命:材料或结构在特定的应力水平下,能够承受的最大循环载荷次数(与周期无关)。一旦超过此最大循环次数,则材料会出现疲劳失效(各个零件单独计算),例如断裂等现象。换言之,若一个材料受到幅值为、呈现周期性波动的应力(如连续用同样的力度拉扯橡皮筋至同样的长度),则最大循环次数指在当前的应力下,材料能承受的最大循环次数(把橡皮筋拉断所需要的拉扯次数)。 2. S-N 曲线:也称为 Wohler 曲线,是用来描述各个应力幅值(S)与最大循环载荷次数()之间关系的曲线,一般针对特定材料通过循环施加/卸载相应应力的物理实验获得;风机相关元件的S-N曲线图见附件B。 3. 应力循环:应力变化从一个波谷到另一个波谷的过程称为一个应力循环,两个波谷之间的峰值与前一个波谷的差为该次循环的应力幅值。 4. Palmgren-Miner 线性累积损伤理论:元件的疲劳损伤可以是累积的,且在任何不同应力水平下的疲劳损伤都可以通过累积的循环次数来表示。当累积损伤值达到一定临界值时,材料即发生疲劳失效。实际应用中,需量化元件的累积疲劳损伤值,有多种计算方法:雨流计数法0[2][3]、能量法[4][5][6]、神经网络法[7]。常用方法为S-N曲线法和能量法。以S-N曲线法为例介绍基本计算过程。S-N曲线法利用材料的 S-N 曲线进行疲劳寿命预测。假设在某一应力幅值下,材料的能够承受应力的循环次数极限为次(通过S-N曲线法获取)。实际已经经历了次应力循环(根据定义人工计数),则其累积疲劳损伤值可以表示为: 总损伤累积值为各个应力水平()下的累积损伤值之和. 根据 Palmgren-Miner 线性累积损伤理论,当总损伤累积值达到1时,材料即发生疲劳失效。需要注意的是,在风电研究和工程应用中,普遍将机械元件载荷(受力条件)视作应力。 三、需解决的问题 问题一:风机主轴及塔架疲劳损伤程度量化指标计算低复杂度模型 实际应用中,载荷(指主轴扭矩和塔架推力)数据随机性很强,且周期特征不标准,波峰波谷不易辨识(如图1所示);此外,载荷循环(主轴扭矩和塔架推力的应力循环)的周期时长远远超过了实时计算的时间间隔(1s),因此,定义中介绍的方法无法有效计算不同载荷的循环次数。目前常用雨流计数法统计不同幅值载荷相应的循环次数,但该方法无法在线实时求解。针对这一问题,请建立数学模型,实现对风机的两种不同元件(主轴和塔架)任意时段累积疲劳损伤程度量化指标的实时计算;本题提供100个时长为100s的塔架推力与主轴扭矩数据,及其基于雨流计数法计算所得到的累积疲劳损伤值和等效疲劳载荷(见附件1);要求方法合理有效,不得使用机器学习方法;要求在测试环境中基于CPU计算,计算时间小于1.00s,算法求解时间要尽可能地短,并且所得计算结果能正确反映元件累积疲劳损伤程度;需展示所计算结果与数据中提供的雨流计数法所得结果的相似程度(能反映累积疲劳损伤程度增长情况即可,不必与参考结果相等),需将包括100s时长内所有100台风机的全部200件元件的每秒疲劳损伤值(可以不考虑在此之前的疲劳损伤值,即初始时刻可以从0开始)列入附件5表格中;同时,需展示从0-100s内风机主要元件累积疲劳损伤程度的增长过程(选择5-10个有代表性的样本,用图片形式展示增长过程并说明所提出的建模方法100台风机的所有数据样本均有效)。 图1部分载荷数据概况(根据附件一部分数据绘制,仅供辅助理解) 问题二:利用风速及功率估算塔架推力和主轴扭矩 风速与风机的发电功率之间具有正相关性,一个直观的理解是,当风所携带的风能被风机完全消化转化为电能后,风机所承受的推力(风推动风轮平面产生的推力)和扭矩(风轮实际转速与当前风速下应达到的转速不匹配带来的扭矩)是最小的;当风速相对风机的发电功率过高时,多余的风能就会有一部分作用于风机上,形成主轴扭矩和塔架推力,增加风机的累积疲劳损伤程度(本题所考虑的5MW风机对应的额定风速为11.2m/s)。因此,请建立数学模型,根据风机所处位置的风速条件和功率参考值,估算当前风机所承受的应力/扭矩;模型可结合受力分析、能量守恒、或其他任意合理思路进行建立(数据量较少,不建议使用机器学习方法)。本题给出数据包括:各风机轮毂处等效风速、有功功率参考值;输出数据为风机轴系扭矩、风机塔顶推力。要求能够利用本题所提供的数据(附件2)估算各个风机任意时刻的应力/扭矩值,并与数据中给出的参考值进行对比;需将100台风机在全部时刻的应力/扭矩计算结果列入附件6的表格中,并需要统计全部时刻估算值与参照值之差的平方和以展示计算结果与实际数据的对比结果。 问题三:有功调度优化问题构建与实时求解(个人感觉是做一个线性规划) 可以列一个不等式 有功功率的优化分配需每秒钟进行一次计算,优化计算时间短。大规模风电场含数百台风机(此题以风机总数量=100的场站为例),优化问题维度高,因此需在建模阶段兼顾模型复杂度和精度。实际工程中,场站内多台风机一般为相同型号,即各风机之间模型参数是一致的,区别仅在于风速条件(轮毂处风速)和功率参考值不同。请根据下述优化目标和约束条件,建立优化模型求解最优有功功率分配策略。 为降低风电场运维成本,需尽可能降低场站所有风机总体疲劳损伤程度(参赛者自行定义所有风机的总体疲劳损伤程度,但需分别将主轴和塔架的两种元件的疲劳损伤定义为两个目标。例如目标定为每种元件的疲劳损伤平均值最小、或疲劳损伤最严重的元件的疲劳值最小等;要求目标函数定义合理且具有可解释性)。单台风机的疲劳损伤包括主轴的疲劳损伤与塔架疲劳损伤两部分。此外,要保证所有风机有功参考值之和等于电网调度指令;且保证各风机有功参考值不大于风机有功功率额定值(5MW)。为保证实际场站中原有风机功率跟踪主控制器参数适用,也需保证各风机有功优化分配值与平均分配方法结果()差值不超过1MW。每台风机需发出功率=,为场内所有风机数量 本题收集了包含100台风机的风电场在一段时间内的电网有功调度指令的时序数据及实测风速数据,见附件2。要求给出本题的目标函数,以及各目标权重值(如果有),并对目标函数和权重的设计思路进行说明;同时要求每秒进行一次功率分配,需提供含有计时器的动图,展示计算结果的实时性;此外,还需展示约束条件是否满足,及优化后与优化前(平均分配功率)的结果对比,对比方式包括但不限于:优化前后各个风机的累积疲劳损伤程度、所有风机的累积疲劳损伤总和;优化前后风机间参考功率方差值。参赛者亦可采用其他指标展示优化结果,上述指标仅供参考。 问题四:考虑通信延迟和测量噪声的有功功率优化与求解 实际风电场中,AGC系统所需的信号通过多种传感器采集并经由高速光纤环网传递至集控。一方面,现场传感器测量数据存在随机噪声,导致采集数据受到随机干扰,实际工程中噪声一般为原始数据的正负10%以内(测量值与真实值的相对误差在10%以内)。另一方面,通信过程在协议层和物理层均可能受到传输拥塞影响,存在随机传输延迟问题,导致部分时间段数据无法及时采集,此时优化调度过程仅可基于上一个正常通信时刻的采集数据进行优化,实际工程中一般最大延迟为10s以内。上述数据测量噪声和传输延迟导致理想条件下的优化问题难以满足实际需求。因此,可进一步考虑随机测量噪声和通信延迟对于模型精度和优化问题最优性的影响,完善问题三中的优化方案。附件4为额外的十台风机的300s测量数据(仅提供添加噪声以及延迟后的数据,不包含原数据),数据类型同附件3,作为测试集检验鲁棒模型。要求展示并比对优化效果(具体要求同问题3),并展示所建模型对噪声和延迟的抑制能力(展示方法包括但不限于有无该模型情况下,优化结果的前后对比等)。 注:本题提供的数据均为风能过剩的情形,即风速超过风机的额定风速。 注:若参赛选手熟悉相关专业,亦可参考附件A、B中给出的风电行业以仿真分析为目的的非线性模型及相应开源工具。该建模方法和开源工具常用于仿真风电场动态特性,常用作对所提出的优化调度策略进行验证的平台。其计算时间、模型复杂度等都无法满足优化需求。选手若参考附件内容,不得直接使用附件所述模型解答问题,而需明确指出对附件方法的改进和提升之处。 参考文献 [1]M. Musallam and C. M. Johnson, “An Efficient Implementation of the Rainflow Counting Algorithm for Life Consumption Estimation,” IEEE Trans. Rel., vol. 61, no. 4, pp. 978–986, Dec. 2012. [2]董乐义, 罗俊. 雨流计数法及其在程序中的具体实现[J].计算机技术与应用,2004,24(3):38-40. [3]王宏伟.雨流计数法及其在疲劳寿命估算中的应用[J].矿山机械,2006,34(3):95-97. [4]J. Barradas-Berglind, R. Wisniewski, and B. Jayawardhana, “Model Predictive Control with Fatigue-Damage Minimization Through the Dissipativity Property of Hysteresis Operators,” European Journal of Control, vol. 54, pp. 140–151, Jul. 2020. [5]姚磊江,童小燕,吕胜利.基于能量耗散的疲劳损伤模型[J].机械强度,2004,(05):522-525. [6]顾章义,张治成,李辉.基于能量法的超高韧性纤维混凝土疲劳损伤特性[J].吉林大学学报(工学版),2022,52(07):1598-1606. [7]Q. Yao, B. Ma, T. Zhao, Y. Hu, and F. Fang, “Optimized Active Power Dispatching of Wind Farms Considering Data-Driven Fatigue Load Suppression,” IEEE Trans. Sustain. Energy, vol. 14, no. 1, pp. 371–380, Jan. 2023.
最新发布
07-19
针对2024年中国研究生数学建模竞赛A题《风电场有功功率优化分配》中的问题一,我们从**风机主轴及塔架疲劳损伤程度量化指标计算低复杂度模型**入手,提出一种适用于实时计算的简化方法。 --- ### 一、问题分析 在风电场运行中,风机主轴和塔架承受周期性载荷,这些载荷会导致材料的疲劳损伤。传统的**雨流计数法**虽然能精确计算疲劳损伤,但其计算复杂度高,无法满足每秒一次的实时响应要求。 本题要求建立一个**低复杂度模型**,能够在**1秒内完成100台风机、每台风机2个元件、100秒数据的疲劳损伤计算**,并输出每秒的疲劳损伤值。 --- ### 二、建模思路 #### 1. 简化疲劳损伤计算模型 根据Palmgren-Miner线性累积损伤理论,总疲劳损伤为: $$ D = \sum_{i=1}^{n} \frac{n_i}{N_i} $$ 其中: - $ n_i $:某一应力幅值下的循环次数; - $ N_i $:该应力幅值下材料的疲劳寿命(S-N曲线提供)。 由于实时计算要求高,我们采用**能量法**或**简化应力幅值积分法**来近似疲劳损伤。 #### 2. 提出低复杂度模型:基于应力幅值积分法 我们假设疲劳损伤与应力幅值的平方成正比(符合能量法的思想),并设定一个比例系数 $ k $,则单位时间的疲劳损伤为: $$ \Delta D = k \cdot (\Delta F)^2 $$ 其中: - $ \Delta F $:载荷变化幅值; - $ k $:经验系数,根据附件1中的雨流计数结果进行标定。 #### 3. 实时计算流程 - 输入:每秒的主轴扭矩和塔架推力数据; - 计算每秒载荷变化幅值 $ \Delta F $; - 累加 $ \Delta D $ 得到当前时刻的累积疲劳损伤; - 输出每秒的疲劳损伤值,并填入附件5表格; - 选取5-10台风机,绘制其0-100s的疲劳损伤增长曲线。 --- ### 三、实现步骤 1. **数据预处理**: - 读取附件1中100台风机、每台风机主轴和塔架、100秒的载荷数据; - 同时读取对应的雨流计数法计算结果作为参考。 2. **参数标定**: - 对比简化模型与雨流计数法结果,调整 $ k $ 值,使两者趋势一致。 3. **逐秒计算**: - 每秒计算 $ \Delta F $; - 累积 $ \Delta D $; - 保存每秒的疲劳损伤值。 4. **结果输出**: - 填写附件5表格; - 绘制5-10台风机的疲劳损伤增长曲线; - 与雨流计数法结果对比,验证模型有效性。 --- ### 四、模型验证 - **相似性分析**:将简化模型结果与雨流计数法结果进行相关性分析(如皮尔逊相关系数); - **趋势一致性**:确保模型输出的疲劳损伤增长趋势与参考结果一致; - **计算效率**:记录模型计算时间,确保在CPU环境下1秒内完成。 --- ### 五、代码示例(Python) ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt # 读取数据 data = pd.read_csv('附件1.csv') # 假设数据格式为:风机编号,元件类型,时间点,载荷值,雨流损伤 # 初始化参数 k = 0.001 # 根据参考数据标定 # 按风机和元件分组 groups = data.groupby(['风机编号', '元件类型']) results = [] for (turbine_id, component), group in groups: group = group.sort_values('时间点') load_values = group['载荷值'].values time_points = group['时间点'].values damage = 0 damage_list = [] for i in range(1, len(load_values)): delta_f = abs(load_values[i] - load_values[i-1]) delta_d = k * delta_f**2 damage += delta_d damage_list.append({ '风机编号': turbine_id, '元件类型': component, '时间点': time_points[i], '疲劳损伤值': damage }) results.extend(damage_list) # 输出结果 output = pd.DataFrame(results) output.to_csv('附件5_简化模型结果.csv', index=False) # 可视化示例 sample = output[(output['风机编号'] == 1) & (output['元件类型'] == '主轴')] plt.plot(sample['时间点'], sample['疲劳损伤值'], label='简化模型') # 对比雨流计数法 ref = data[(data['风机编号'] == 1) & (data['元件类型'] == '主轴')] plt.plot(ref['时间点'][1:], ref['雨流损伤'][1:], label='雨流计数法') plt.xlabel('时间 (s)') plt.ylabel('累积疲劳损伤') plt.legend() plt.title('风机1主轴疲劳损伤增长对比') plt.show() ``` --- ### 六、总结 本模型采用基于应力变化幅值的简化积分法,避免了复杂的雨流计数过程,满足实时计算要求,同时与雨流计数法结果具有良好的趋势一致性。适用于风电场AGC系统中每秒一次的疲劳损伤评估需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值