OO Unit2 总结

蒋槟阳-22373437 学生 2024-04-20 12:33:14

代码结构分析

第一次

本次作业中主要由以下几个类构成

img


其中 Elevator 为电梯的线程,Strategy 为用于决策电梯行为的类,InputThread 为用于输入的类
UML 图如下

img

第二次

本次作业中,我对代码进行了重构,形成了新的架构
作业中有以下类

img


其中 Direct 为表示 Elevator 行为的一个枚举,Elevator 为单个电梯的对象,ElevatorThread 为控制电梯对向的线程,Strategy 为用于决策电梯行为的类,InputThread 为用于输入的类,WaitingRequest 为表示单个电梯的等待队列的类,WholeWaitingRequest 为分配请求的类
UML 图如下

img

第三次

本次作业大体延续第二次作业的架构,但为了解决双轿厢问题做了一定的调整
作业中有如下类

img


其中 Direct 为表示 Elevator 行为的一个枚举,Elevator 为单个电梯的对象,ElevatorThread 为控制电梯对向的线程,Strategy 为用于决策电梯行为的类,InputThread 为用于输入的类,WaitingRequest 为表示单个电梯的等待队列的类,Arranger 为分配请求的类,Occupied 为解决双轿厢电梯在同一层的类,Shaft 为用于管理双轿厢电梯中两个电梯的类,RequestBuffer 为请求的缓存类
UML图如下

img


线程协作图入戏

img

总体上 Elevator 类 ,ElevatorThread 类,Strategy 类,InputThread 类,WatingRequest 类,Arranger/WholeWaitingRequest 类,RequestBuffer 是比较稳定的,这一部分这是电梯的基础,所有的电梯活动均基于他们而行。其他类用于处理不同的电梯类型的相关问题,比如 Occupied 和 Shaft 是用于解决双轿厢电梯的问题而设计的类。
在整个 Unit 的中,由于我没有很好的考虑扩展性的问题,所以对架构进行调成,对代码重构,但在第二次作业后就确定的架构其核心代码可以较稳定的延续。

同步与锁

在本 Unit 中,我使用的均为 synchronized 锁,通过不让多个线程访问同一对象的方法来解决多线程之间同步的问题。其中一个运用为使用同步锁完成 Occupied 类,使得
可以完成一个线程完全的 Occupied 类,此时通过使用 Occupied 类可以保证双轿厢电梯不会相撞。
此外电梯是同时被电梯线程和输入线程控制的,需要使用同步锁以保证电梯信息的正确性。

Bug 与 Debug 方法

在本地 Unit 中遇到的 bug 大多数都是关于同步锁的 bug,由于没有较好的设计锁的使用导致死锁的 bug。
对于死锁的问题,又分为可以复现的情况和不能复现的情况。
对于可以复现的情况,我采取将程序中间打印信息的方法来观察是哪一个部分死锁了,找到了死锁的位置之后再对原因分析并改良。
对于难以复现的情况,这种情况我并没有找到一个很好的方法来解决问题,只能通过对所有锁的结构和位置进行分析,考虑为什么会出现死锁的问题。
整体来说死锁的问题没有很好的 debug 手段,只能尽量在设计的时候考虑仔细,以求完成代码之时就没有问题或较少问题。

心得体会

本次 Unit 中主要的问题是多线程的问题,为保证多线程的线程安全会使用锁的结构,但此时又会产生死锁的问题,所以为思维和设计的缜密提出了很高的要求,也让我了解到了多线程程序设计的困难之处。层次化多线程设计中的一种思路,通过层次化的设计,可以方便思考多线程中容易出现的各种问题,让我学习到了如何去设计一个多线程的程序。整个 Unit 使我从零基础到对多线程设计有了一定的了解和认知,虽仍不能很好写出优秀的多线程程序,但是也有了了解,能够逐步完成多线程程序设计

...全文
32 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文围绕“联合储能的配电网优化调度及新能源消纳能力评估”展开研究,基于Matlab平台实现了完整的仿真代码,系统探讨了储能系统在提升配电网调度灵活性与促进新能源消纳方面的关键作用。研究构建了考虑源-荷-储协调运行的优化调度模型,综合引入风电、光伏等间歇性新能源出力特性,结合分时电价、负荷响应机制与储能充放电策略,采用智能优化算法(如差分进化、粒子群等)求解多目标优化问题,旨在降低系统运行成本、提高能源利用效率并增强电网稳定性。同时,通过典型场景(如IEEE 33节点配电网)进行仿真验证,定量评估不同储能配置方案下新能源的消纳能力与系统调度性能,为高比例可再生能源接入背景下的配电网规划与运行提供技术支持与决策依据。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、储能、智能电网等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展含分布式能源的配电网优化调度建模与仿真;②评估储能系统对提升新能源消纳能力的作用;③复现高水平期刊论文中的优化算法与仿真流程;④支撑科研项目、学术论文撰写或毕业课题开发。; 阅读建议:建议结合文中提供的Matlab代码与典型算例,逐步调试运行,深入理解目标函数设计、约束条件构建及优化算法实现细节,并可在此基础上拓展多时间尺度调度、不确定性建模或鲁棒优化等进阶研究方向。

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧