1. 引言
按教育部统一部署,2024年进行艺术类高考改革。音乐类专业省级统考分音乐表演、音乐教育两类,其中音乐表演类考试包括器乐、声乐两个方向,即音乐表演类器乐方向、音乐表演类声乐方向;音乐教育类考试除音乐表演类所包含项目外,还需选择“副项”,其中主项选择声乐的考生,副项须选择器乐,主项选择器乐的考生,副项须选择声乐。各艺术类招生院校的音乐类招生专业基本都划分为了音乐表演、音乐教育两类,并且大多数都提出了具体唱法或器种的专业测试项目要求,部分音乐教育类专业还对主项、副项测试项目提出了双重要求。
新一轮的艺术类高考改革的实施,对现有志愿填报系统提出了新的要求。改革前志愿填报系统对考生专业测试项目的校验规则为“一对多”的关系,即考生报名时只能选择一种唱法或器种,院校专业测试项目要求可提出多种;改革后,由于报考音乐教育类的考生须选择主项和副项,所以使两者之间转变为“多对多”的关系,从而使校验规则变得更加复杂。考生在进行志愿填报时,若对其填报资格不加以限制,很可能造成考生由于缺少相应的副项成绩或不符合院校的专业测试项目要求而形成无效志愿(无效志愿不予投档),从而减少投档录取机会。为此,考生在志愿填报时对其相关资格校验至关重要。
2. 河北基本情况分析
根据我省普通高校招生艺术类改革要求,音乐类考生在进行高考报名时,须从音乐表演类(声乐)或音乐表演类(器乐)中选择其中一类进行报考,二者不可兼报。报考音乐表演类(声乐)的考生,可选择“兼考音乐教育类(声乐主项)”,同时获得音乐教育类(声乐主项)报考资格;报考音乐表演类(器乐)的考生,可选择“兼考音乐教育类(器乐主项)”,同时获得音乐教育类(器乐主项)报考资格。报考音乐表演类(声乐)或音乐表演类(器乐)的考生须在“声乐或器乐艺术统考细项”中分别对应填报一项唱法或器种。兼考音乐教育类的考生,还须分别对应填报一项“声乐或器乐副项”。报考中西打击乐专业的考生还须具体填报两种不同打击乐器,其中至少一种为音高类打击乐器[1]。
我省音乐类专业测试项目较多,唱法有3种,器种有57种,考生在进行高考报名以及院校编制招生计划中专业测试项目要求时,须从中选择一种或多种。在填报志愿时,音乐教育类的考生,可以同时兼报音乐表演、音乐教育类志愿;音乐表演类考生只能填报音乐表演类志愿。高考报名及志愿填报要求如图1所示。
Figure 1. Requirements for college entrance examination registration and voluntary filling
图1. 高考报名及志愿填报要求
Figure 2. Voluntary filling process
图2. 志愿填报流程
我省2021年高考改革落地实施,采用“3 + 1 + 2”模式,同期,对志愿填报系统进行了全面重构升级,对考生的首选、再选科目以及相关填报资格,如地方专项计划、国家专项计划、少数民族等填报资格进行了很好地控制,基本能够确保考生所保存成功的志愿都符合当前院校招生专业的要求(身体条件要求除外),志愿填报整体流程如图2所示。此次全国艺术类高考改革,需对“资格校验”进行完善。
2024年共有929个艺术类音乐统考(含声乐统考、器乐统考)院校专业在我省列有招生计划,其中音乐教育类专业335个,占全部专业数的36.1%;提出专业测试项目要求的397个,占全部专业数的42.7%;有67个院校专业同时对主项、副项提出了要求,占有专业测试项目要求院校专业数的16.9%。由此可见,提出专业测试项目要求的院校专业数量及类型都比较多,本着对考生负责的原则,本文有针对性地提出了“音乐类高考志愿填报资格校验算法”,对相关院校专业填报资格进行控制,以提高音乐类考生志愿填报准确性,最大程度保障考生利益,同时为后期的投档、录取工作奠定基础。
3. 音乐类高考志愿填报资格校验算法
3.1. 算法设计
“音乐类高考志愿填报资格校验算法”主要借鉴二元逻辑回归分类分析方法。二元逻辑回归方法通过建立一个线性拟合模型,并将其转换为一个概率值,然后根据此概率值进行分类。回归指研究一组随机变量(Y1, Y2, …, Yi)和另一组(X1, X2, …, Xk)变量之间关系的统计分析方法。通常前者是因变量,后者是自变量[2]。二元表示该算法最终结果只能是两种True或False。目前,可用于二元分类的机器学习算法和工具很多,其中主要包括基于感知器(perceptron)、支持向量机(SVM)、最大熵(ME)等模型的分类器。各种分类器之间没有绝对的优劣之分,其性能的好坏往往取决于待处理的具体问题以及待分类数据的特点[3]。与二元逻辑回归方法不同的是,“音乐类高考志愿填报资格校验算法”概率值只有两个,即“100%”和“0”。
Figure 3. Relationship model ER diagram
图3. 关系模型ER图
对音乐类考生的填报资格校验,主要涉及两个实体:一是考生报名信息,其属性主要包括性别、选考科目、是否兼报教育类、报考专业项目(器种或唱法)等;二是院校专业要求,其属性主要包括性别要求、选科科目要求、是否教育类、专业测试项目要求等。在具体计划编制过程中,院校专业所提出的多种专业测试项目要求为“或”关系的,使用“+”号相连,如:钢琴 + 古筝 + 小提琴;教育类专业同时对主项、副项提出要求,为“且”关系的,使用“*”号相连,其中“*”前表示主项,后表示副项,如(钢琴 + 小提琴) * (民族唱法 + 美声唱法)。二者各属性之间关系,通过志愿填报系统来进行关联,其关系模式ER图如图3所示。使用x表示考生报考主项,y表示副项,由于专业测试项目选择为中西打击乐的考生,还需要选择两种具体打击乐器(使用x1、x2或y1、y2表示),则考生报考专业项目可表示为集合S [x (x1, x2), y (y1, y2)],其中y (y1, y2)可为空,为空时表示考生未兼报教育类副项,属于音乐表演类考生。除专业测试项目选择为中西打击乐的考生外,(x1, x2)、(y1, y2)均为空。使用p1,p2,…pm表示院校专业对主项的专业测试项目要求,使用r1,r2,…rn表示院校专业对副项的专业测试项目要求,则招生院校对专业测试项目要求可表示为集合Q [(p1, p2, … pm) * (r1, r2, … rn)],其中(r1, r2, … rn)可为空,为空时表示该专业为音乐表演类专业或仅对主项或副项提出专业测试项目要求的教育类专业。集合S [x (x1, x2), y (y1, y2)]、Q [(p1, p2, … pm) * (r1, r2, … rn)]为两组随机变量,二者之间的包含关系可通过函数∫ (S, Q)表示,该函数最终返回布尔型结果。
对于音乐类考生填报资格校验算法具体设计如下。
Figure 4. Qualification verification algorithm design process
图4. 资格校验算法设计流程
考生在志愿填报时,分为两种情况:一是填报表演类院校专业志愿。该类型志愿表演类和教育类考生均可填报,判断相对简单,仅需判断考生报考专业项目x (中西打击乐的还须判断x1、x2)是否包含在院校专业测试项目要求集合Q中即可,若包含则说明考生报名所选的器种或唱法符合该院校专业所提出的专业测试项目要求,∫ (S, Q)返回True,则考生可以正常填报,否则∫ (S, Q)返回False,考生不能填报该志愿;二是填报教育类院校专业志愿。对该类型志愿判断相对复杂,首先要对考生属性进行判断,考生报考专业项目集合S [x (x1, x2), y (y1, y2)]中,若y (y1, y2)均为空,表示考生属于音乐表演类,不符合院校专业要求,∫ (S, Q)返回False,则考生不能填报该志愿;若y (y1, y2)不为空,则需要根据院校专业具体测试项目要求,需分两类进行判断:第一类是所填报的院校专业仅对主项或副项提出一项要求的,需要判断考生报考专业项目集合S [x (x1, x2), y (y1, y2)]中是否有其中一项包含在院校专业测试项目要求集合Q [(p1, p2, … pm) * (r1, r2, … rn)]中,若是,则函数∫ (S, Q)返回True,考生可填报该志愿,否则不能填报;第二类是所填报的院校专业对主项和副项均提出要求,需要判断考生报考专业项目集合S [x (x1, x2), y (y1, y2)]中主项x (x1, x2)是否有一项包含在集合Q [(p1, p2, … pm)]中,并且副项y (y1, y2)中有一项包含在集合Q [(r1, r2, … rn)]中,若两条件都满足,则函数∫ (S, Q)返回True,考生可填报该志愿;若有一个或全部都不满足则不能填报该志愿。具体设计流程如图4所示。
3.2. 算法实现
我省高考志愿填报考生基数大,2024年有60多万名考生共填报各批次志愿5000多万条。根据我省招生政策,普通类“院校 + 专业”平行志愿可填报96条,艺术体育类可填报70条。考生填报志愿条数较多,必然会使填报页面停留时间加长、操作次数加大,从而引起数据库连接频繁、服务器资源长期占用。准确、安全、高效、灵活是考生志愿填报系统设计与实现的目标[4]。“音乐类高考志愿填报资格校验算法”作为志愿填报系统逻辑校验重要组成部分之一,虽然仅用于音乐类考生填报声乐、器乐类院校专业志愿时对相关资格进行校验,但一旦处理不好,将会对整个志愿填报系统造成影响。因此,在代码实现过程中,必须考虑高并发问题,合理分配数据库以及缓存资源。针对高并发、页面操作复杂等特点,系统基于Java Spring Boot框架结合Layui技术进行实现,其中Layui是一款采用自身模块规范编写的前端UI框架,Spring Boot是Java的一种开源应用框架,它简化了Spring的初始搭建和开发过程,方便了项目的快速开发[5]。算法实现主要部分代码如下:
if (zyjh.sf_jyl ==’N’) {
skkmyqList_jh = Arrays.asList(zyjh.getSkkmyq().split("+"));
if ( skkmyqList_jh.contains(zyKsxx.getZycsxm())== false )
{ Return ("不符合该专业的专业测试项目要求"); }}
if (zsjh.sf_jyl==’Y’) {
if (ksh.zycsxm fx is null) {Return (“不具备音乐教育类专业报考资格”);}
skkmyqList jh = Arrays.asList (zyjh.getSkkmyq (). split (“*”));
If (skkmyqList jh. size() > 1){
for ( skkmyq : skkmyqList jh) {
①对主项校验
If (i=1){
skkmyqList_zx = Arrays.asList(skkmyq.split("+"));
if (skkmyqList_zx.contains(Ksxx.getZycsxm())== false)
{ Return ("不符合该专业的专业测试项目要求"); }
②对副项校验
Else {
if (skkmyqList_fx.contains(Ksxx.getZycsxm())== false)
{Return (“不符合该专业的专业测试项目要求”); } }
skkmyqList_jh = Arrays.asList(zyjh.getSkkmyq().split("+"));
zycsxmList_ks.add(zyKsxx.getZycsxm_zx(),zyKsxx.getZycsxm_fx());
for (zycsxm : zycsxmList_ks) {
if ( skkmyqList_jh.contains(zycsxm) == false )
{ Return ("不具备音乐教育类专业报考资格"); } }
3.3. 算法执行效率测试
考生填报高考志愿须在规定时间内完成,时效性强。所以志愿填报系统的核心业务逻辑与数据多为高度集中的模式,往往对大量用户的并发访问非常敏感,要能够支持一定数量用户对系统的持续、并发的访问[6]。为了能够评估该算法性能,预测系统负载压力承受力,我们采用Apache JMeter5.0压力测试工具模拟真实环境对音乐类考生填报志愿进行了测试。相比其他测试软件(如Loadrunner [7]),Apache JMeter具有轻量、开源,并且响应时间短、处理能力高等优势[8]。测试在单台web服务器(16G内存,Intel (R) Xeon (R) CPU E7420 @ 2.13GHz (4处理器) CPU,Windows Server 2012 R2 Standard操作系统)上进行,模拟考生真实志愿填报流程:输入用户名密码进行登录、进入相应批次、选择科类(声乐或器乐)、填报70个“院校 + 专业”志愿、保存、退出。测试线程数为800,运行10轮测试结果聚合报告如表1所示。
Table 1. Apache JMeter stress test aggregation report
表1. Apache JMeter压力测试聚合报告
Label |
Samples |
Average |
Median |
90% Line |
99% Line |
Max |
Error % |
吞吐量 |
收KB/sec |
登录页 |
8000 |
994 |
357 |
2686 |
5457 |
8760 |
0.00% |
9.672 |
79.13 |
登录提交 |
8000 |
5883 |
5766 |
10,061 |
16,410 |
22,157 |
0.00% |
9.468 |
40.76 |
开放批次 |
8000 |
722 |
233 |
2105 |
4266 |
7570 |
0.00% |
9.853 |
38.22 |
填报页 |
8000 |
5421 |
4976 |
9674 |
23,990 |
40,344 |
0.00% |
9.882 |
206.85 |
志愿填报 |
8000 |
478 |
185 |
1566 |
3835 |
7454 |
0.00% |
9.313 |
83.04 |
查询 |
400,000 |
501 |
171 |
1657 |
4345 |
9647 |
0.00% |
485.801 |
119.96 |
保存 |
8000 |
7982 |
7933 |
11,297 |
155,97 |
18,359 |
0.21% |
9.772 |
2.11 |
注销 |
8000 |
3930 |
3476 |
7813 |
13,135 |
17,829 |
0.00% |
9.792 |
81.27 |
TOTAL |
456,000 |
885 |
191 |
2406 |
9256 |
40,344 |
0.00% |
550.89 |
642.7 |
Figure 5. Graph Results
图5. 图形结果
此次测试系统可在200秒内启动,测试时长为13分48秒。通过图表可知,在当前负载条件下,平均响应时间为885毫秒、最大响应时间为40.344秒、99%的响应时长不超过13.135秒,吞吐量为550.89/sec,仅在保存时出现0.21%错误率,其他操作错误率全部为0。当线程加大到900时,通过Graph Results (图形结果)可见Deviation (偏离值)较大,表示可能存在一些异常的高响应时间样本,如图5所示。经多轮测试、分析,单台web服务器线程为800时,吞吐量和流量上效果比较理想,该负载能够满足正常志愿填报需求。
4. 算法应用及检验
2024年河北省艺术类高考改革落地实施,该算法在志愿填报系统中进行了应用,对填报本科提前批A段、B段以及专科提前批中的声乐、器乐类志愿的考生资格进行了校验。2024年有341所院校,共1399个专业在河北省列有声乐、器乐类招生计划,其中397个专业提出了专业测试项目要求。志愿填报结束后,我们对声乐、器乐类志愿填报结果数据进行整理,约6500多名考生填报了34.3万多条院校专业志愿,将其与考生报名信息、招生计划信息以考生号、院校代号、专业代号为关键字相关联后进行统计分析,关联后数据样式如表2所示。核查主要分三个步骤进行:
一是核查教育类专业是否有非教育类考生填报。即查询招生计划中教育类 = ‘Y’的,是否存在报名信息中兼报教育 = ‘N’的记录;
二是核查招生计划中对主项或副项提出专业测试项目要求的(各项目之间全部为或的关系),查询考生报名信息是否满足。即查询是否存在考生报名信中的主项或副项(其中报名信息中为中西打击乐(表中代码为254)的,需要关联细项1和细项2)均未包含在招生计划的术科科目要求中的记录;
三是核查招生计划中对主项和副项均提出科目要求的(主项和副项间为且的关系),查询考生报名信息是否满足。即查询是否存在考生报名信息中主项未包含在计划的术科科目要求中,或副项未包含在其中的记录。
上述情况可以使用Oracle数据库的内置函数instr (),通过编写Sql语句进行比对分析。经核查,以上情况查询结果均为空,并且在后期投档录取过程中,均未发现考生填报志愿中存在不符合招生计划要求的信息。由此可证明“音乐类高考志愿填报资格校验算法”对考生填报音乐类院校专业志愿进行了成功限制。
Table 2. Information on registration, application form, and enrollment plans
表2. 考生报名、志愿、计划信息
考生ID |
考生报名信息 |
志愿填报信息 |
招生计划信息 |
兼报 教育 |
主项 |
副项 |
细项1 |
细项2 |
序号 |
科类 |
院校代号 |
专业代号 |
教育类 |
术科科目要求(唱法或器种代码) |
cddc5 |
Y |
220 |
101 |
|
|
1 |
2 |
2508 |
56 |
Y |
|
cddc5 |
Y |
220 |
101 |
|
|
2 |
2 |
1902 |
87 |
Y |
220 |
cddc5 |
Y |
220 |
101 |
|
|
3 |
2 |
1767 |
27 |
N |
201 + 202 + 203 + 204 + 207 + 208 + 210 + 212 + 213 + 214 + 215 + 220 + 221 + 230 + 234 + 235 + 236 + 237 + 239 + 240 + 241 + 242 + 243 + 218 + 2461 |
cddc5 |
Y |
220 |
101 |
|
|
4 |
2 |
2255 |
62 |
N |
201 + 202 + 220 + 221 + 230 + 234 + 235 + 236 + 238 + 239 + 2461 + 2462 |
ae2d5 |
Y |
101 |
254 |
225 |
2461 |
1 |
1 |
0308 |
10 |
Y |
|
ae2d5 |
Y |
101 |
254 |
225 |
2461 |
2 |
1 |
0711 |
52 |
N |
101 + 102 |
ae2d5 |
Y |
101 |
254 |
225 |
2461 |
3 |
1 |
0711 |
53 |
Y |
101 + 102 |
2ser50 |
Y |
101 |
220 |
|
|
1 |
1 |
1876 |
27 |
Y |
(101 + 102) * (220) |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
5. 结论与展望
高考是一项社会关注度高、敏感性强的考试选才制度,志愿填报作为其中的重要环节,是普通高校招生的基础性工作。志愿填报的准确性,对高考录取具有决定性作用,同时也关系到高考改革的成效。“音乐类高考志愿填报资格校验算法”成功实现了针对考生及院校专业双方之间多种唱法、器种组合的“多对多”逻辑校验关系,使考生填报音乐类高考志愿的准确性得到了保证,从根本上杜绝了由于志愿填报不准确而造成的无法投档录取情况发生,最大程度地保障了考生利益。该算法在志愿填报系统中的应用,为此次全国艺术类招生制度改革在河北成功落地实施提供了有力保障,为接下来的投档、录取工作奠定了良好的数据基础,同时为我省普通高校招生信息化管理工作进一步提升提供了技术储备,对其他省市完善志愿填报系统具有一定的借鉴作用。
由于在实际计划编制过程中,没有遇到院校专业同时提出两种具体中西打击乐器项目要求的情况,故在此算法设计及实现过程中未对此情况进行考虑。为了使该算法逻辑更加完善、应用更加广泛,接下来将针对此种情况做进一步研究。
基金项目
河北省教育科学“十四五”规划2023年度立项课题(课题编号:2305015)。