武汉大学研究生科技文化节系列活动之.doc
武汉大学第八届研究生科技文化节系列活动之第七届“弘禹杯”工程程序设计大赛试题一. 喷泉控制问题露天广场上,装饰喷泉把水喷向高空,多条下落弧线构成优美的花环,喷泉的落点随风摆动。该控制问题的实际目标,是要为行人在观赏景色和被水淋湿之间提供可以接受的平衡:在喷射流速一定的情况下(即流量不变),风刮得越猛,喷泉在顺风时扩散角变陡,而逆风时扩散角变缓,以保证较少的水花落在水池范围以外又使之尽量接近水池边缘,示意图如图1所示。假定喷泉在静风时的扩散角为(大于45º),水流在空中受风的影响顺风向的偏移量为=(vt),其中v为风速,t为水流在空中的滞留时间,、为系数,初次测试时可取为0.01和2。喷泉水流的扩散角受到一个与风速计(用于测量风的速度和方向)相连的机械装置控制。随着风力条件的变化,请运用风速计给出的数据来控制喷泉在各个方位的扩散角,使水花落点保持在水池内部且尽量接近边缘。图1 喷泉扩散角控制二、买票排队问题在一场激烈的足球比赛开始之前,售票工作正在紧张进行。每张球票为50元。现有2n个人排队购票,其中n个人手持50元的钞票,另外n个人手持100的钞票。假定开始售票时售票处没有零钱,问这2n个人有多少种排队方式,不至使售票处出现找不开钱的局面。三、编制水库洪水预报时一个处理专家经验的人机交互工具1、问题描述:根据一个流域的降雨信息,启动水文预报计算模块,可以预报出河道某个监控断面的流量过程Q(t)。由于流域里面一些小的水利工程的存在,降雨产流后的汇流过程会受到很大的影响,直接影响到流量过程的精度。这时需要结合专家的经验和智慧,对流量过程Q(t)进行人工修正。1、 对人机交互工具的要求在原来的预报Q(t)基础上,很方便地拖拉鼠标,进行人工修正。同时,计算出其特征参数(洪峰、洪量)。所见所视。四、倒计时屏制作一些重要日期或重要时刻往往会启用倒计时,如奥运会开幕式,高考日期,武汉大学120周年校庆等。本题目为开发重要事件倒计时软件,要求:(1) 用户可设置目标事件及其日期和时间(年、月、日、时、分、秒),程序可动态显示当前时间到该事件所距时间(天、时、分和秒)。(2) 支持无数条日期事件设置。(3) 每条事件均可定时提醒,包括屏幕提醒或声音提醒。五、 函数拟合例如对函数,拟合求系数、,拟合点为:X04.08.012.016.67Y00.923.317.012.88可选择不同的拟合标准,比较系数的差异。若有一系列数据点,请用算法实现的一般拟合方法,自行准备数据并测试。六、颗粒碰撞问题颗粒的碰撞是颗粒离散元数值模拟中需要考虑的一个重要问题。如图所示的一维边界上存在5个颗粒,边界的起点坐标为x=0cm,终点坐标为x=27cm,颗粒的形心坐标分别为x1=3cm,x2=7cm,x3=11cm,x4=17cm,x5=23cm。初始时刻,每个颗粒的初速度均为v=1cm/s,但是方向不确定,即颗粒的运动方向可能朝着边界的起点方向,也可能朝着终点方向。假定颗粒为完全刚性,颗粒的尺寸可以忽略。当两个颗粒发生碰撞时,能量不损失。如果颗粒朝边界起点方向运动并经过x=0cm处,或者朝边界终点方向运动并经过x=27cm处,均认为颗粒溢出了边界。试结合题目给定的已知条件设计合适的算法,利用程序计算所有颗粒溢出边界的最短时间和最长时间。图2 颗粒碰撞问题示意图七、学生学习成绩管理系统根据如下示例成绩表,建立学生学习成绩数据库,并开发一个界面应用程序,实现:(1)对数据库内容的显示、添加和删除;(2)对成绩的统计、分析。如个人的总成绩、各科目的平均成绩等。示例成绩表:学号姓名专业英语数理统计Visual C+系统工程2013001张一909590842013002李二858085782013003王三757093852013004刘四909490962013005朱五759088952013006马六88757973八、三维有限元网格细分图3 三维实体单元细分在有限元分析中,常通过加密网格数量来提高分析精度。如图3所示,一个由8个结点组成的三维实体单元在x方向细分为4份,y方向细分为3份,z方向细分为5份,总共被细分为60个更小的实体单元。假定有包含多个单元的有限元网格,在指定每个单元在各方向的细分份数后,用程序生成细分后的网格文件。网格文件的格式为:结点总数,依次循环(结点编号,x、y、z的坐标值)单元总数,依次循环(单元编号,组成单元的8个结点的结点号,3个方向的细分份数)测试用例自拟,可选用10个单元细分为10万单元的数据文件,要求单元之间的共用结点编号一致,即单元是互相联接而非独立的。以代码结构清晰,运算快速者为优。九、水电站机组负荷优化分配水电站节水是水库优化调度的目的之一,在发同样出力的情况下,如何安排水电站各机组的出力,使得总用水量最小是水电站实时经济运行的重要内容。快速给出不同水头不同出力下的水电站最小用水量及各机组的出力和用水量情况对水电站经济运行具有辅助决策的作用。某水电站安装有同样型号的机组3台,各机组的出力-水头-流量关系相同,如下表所示。请以耗水量最小为目标,确定在给定水电站水头(范围为100140m之间的任意值)和水电站出力(0600MW之间的任意值)情况下的各机组的出力及所耗流量。机组的出力-水头-流量关系表流量(m3/s)出 力(MW)水头(m)080100120140160180200140090108126141152.8164176135090.5109127142155.5167.5180.5130091110.5128.5144.2158171.2185125092112130.2147161175189.5120093.5113.5132.4150164.5179195115096116125152.2168.2184201110099119139157.3173.2190.5208.51050102.5123143162179197.52161000107127.5148168186206226十、编制水电站日发电计划时一个处理机组开停机频度的限制的程序资料:1、 水电站日发电计划水电站日发电计划是关于一天内水电站M台机组承担的负荷情况: (1)式中:E表示水电站日发电量;M 表示水电站机组台数; 为计算期的总时数; 为计算时段长,一般为15分钟; 为 i 机组t 时段的出力。2、“机组开停机频度的限制” “机组开停机频度的限制”是指某台机组如果处于开机状态,则必须保持连续开机n 个时段以上,才可以考虑该机组是否关闭;如果机组如果处于关闭状态,则必须保持连续关机 n 个时段以上,才可以考虑该机组是否重新开启。3、问题:在水电站调度自动发电控制系统(Automatic generation control ,简称AGC)中,若不考虑机组启停问题,将可能导致机组频繁启停。这样既不利于安全生产和设备维护,也不利于经济运行,更不利于水电站AGC推广使用。因此,对水电站厂内机组负荷分配需要设置机组开停机频度的限制。因为涉及到厂内AGC,要使软件的执行更有效,最重要的是如何在时段循环计算过程中制定简单有效的规则,并且将规则贯彻落实到机组的负荷分配过程中去。4、简单的规则考虑下时段负荷变化对机组启停的影响,需要解决两个问题:一是增减的开或停机台数是否可行;二是如何安排机组启停顺序。设某电站有M台可用机组,(或)为第k台机组从0t1时段连续保持开(或停)机状态的时段数,Ton(或Toff)为机组最小开(或停)机历时。显然,增加(减少)机组投入台数NUM的条件是:减少投入台数条件:增加投入台数条件: (2)如果以上条件满足,则需要根据某种策略来对水电站的可投入机组进行投入优先排序,在厂内机组分配时就可以按照该排序进行机组间负荷分配。研究发现,在已经开启的机组的范围内,机组连续开机时段数越小,机组继续开机的优先权越高;在已经关闭的机组的范围内,机组连续关闭的时段数越大,机组开机的优先权越高。5、算例以隔河岩为例,设最小开(或停)机历时为4个时段,机组投入运行开(或停)优先权值计算示例如下:表1:机组投入运行开(或停)优先权值计算表机组编号 No1234开停机状态onoffonoff连续时段数10451无新增机组投入时开机排序231不得启动有新增机组投入时开机排序312停机排序3241发电计划的仿真:96个点的开机台数,由(04)随机数产生。(机组有是开机状态,但不承担负荷情况)十一、离散元块体的随机节理切割问题1. 问题描述在岩土工程数值模拟过程中,块体离散元方法作为一种有效的模拟手段已经受到广大岩土工作者的高度重视与广泛应用。与连续介质计算方法不同,块体离散元方法在模型中引入大量切割节理,被节理切割的块体可以发生脱落和相对的滑移。基于这种接触模型,块体离散元方法能够较好地体现岩体的非连续力学特性。对于如下图所示的块体ABCD,当被大量节理切割以后,块体ABCD会被分成许多小块体。当节理的数量和产状发生变化时,块体ABCD被切割后形成小块体的数量也会随之发生变化。假定块体ABCD被P条节理切割,每条节理均满足直线方程Y=Xtani+Ni, (XXA,XB),XA和XB分别为点A和点B的横坐标值。假定不存在三条及以上的节理相交于同一点的情况,试结合题目中给定的已知条件,写出合适的算法,并利用程序计算得到块体ABCD被P条节理切割以后形成的小块体的数量。图4 块体的随机节理切割示意图2. 数据资料本题中,块体ABCD各控制点坐标分别为:A(0,0),B(10,0),C(10,10)及D(0,10)。节理数量P=20,节理的产状由给定的直线方程来控制,其中i在(0,/2)区间服从随机分布,Ni在(0,10)区间服从随机分布,均可由参赛选手自行生成。3. 思路提示(1) 思路一:每增加一条节理,如果和原来的节理相交生成m个交点,那么该节理将被新增加的m个交点分成(m+1)段,每一段都会将原来的一个小块体再次分成两块,因此,将新增加(m+1)个新块体。如果总共有P条节理,Q个交点,那么块体ABCD被切割生成的小块体数量为(N+M+1)。因此本题的关键在于计算得到P条节理两两相交的交点数量。(2) 思路二:首先看两种简单的情形:图5节理切割示意图左图为有一个交点的情况,两条节理a和b与左边界的交点从上到下按顺序为(a,b),右边界上的交点顺序为(b,a),顺序被反过来了,因为它们在两个边界之间有一个交点。如果没有交点,它们与边界的交点顺序则不会有变化。进一步分析可知,边界内部的交点数量就等于左边界上交点顺序相对于右边界交点顺序的逆序总数(注意:没有三条及以上节理相交于同一点)。在右图中,左边界顺序为(a,b,c),右边界为(c,b,a)。假设a=1,b=2,c=3,那么c,b,a=3,2,1,其逆序数为3。因此本题转化为求一个N元数组的逆序数问题。