✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。
🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
今年 D 题看起来像一道“区间重叠判断题”,真正做到后面会发现,它的难点并不在问题一。频率资源只有100个离散频段,用频计划也只有150项,检测冲突本身很容易。真正拉开论文质量差距的是后面三问:一个计划会周期性占用同一段频谱,因此一次调整会改变整串时频占用;A、B、C三类装备又具有不同优先级,同时要求少撤销、少调整、少移动;问题三还要求证明“最多还能安排多少”,而不是随便塞进去几个新的C类计划。 所以,这道题不适合写成“问题一判断矩形相交,问题二遗传算法,问题三模拟退火,问题四再改遗传算法”。按照偏国一层级的研究完整度,更合理的路线是把150项计划统一表示成时频占用集合,问题一由此建立冲突图;问题二在原计划周围生成有限个调整候选,再做带优先级的组合优化;问题三固定问题二结果,在剩余时频空间中解决周期任务最大装填;问题四只是在问题二的候选动作中增加“调整C类间隔”这一自由度。四问实际上共享同一个底层模型。 题面明确规定:100个频段离散资源,每项计划占用连续频段;一个计划由频段区间、首次使用时间区间、相邻两次使用的间隔时长和使用次数共同决定。两个计划必须在时间和频率两个方向同时发生重叠才构成冲突。冲突消解中,每项计划只能调整一个参数或者撤销,一般不改变使用次数和间隔;A类优先级最高,B类次之,C类最低,并要求频率平移不超过10Δf、时间平移不超过5Δt。 整题最推荐的主线可以压缩成: 周期计划展开 → 精确冲突检测 → 冲突图 → 候选调整方案生成 → 优先级约束下的冲突消解 → 剩余资源最大装填 → 增加周期参数自由度重新优化。 一、赛题整体分析:先把“一个计划到底占了哪些时频资源”弄清楚附件1共有150项用频计划,实际核验后A类20项、B类40项、C类90项,没有缺失编号和重复装备。三类计划还有很明显的结构差异: 类别 数量 频段宽度 单次持续时间 间隔时长 使用次数A类 20 10Δf 5Δt 60Δt 3B类 40 15Δf 3Δt 40Δt 4C类 90 3Δf 2Δt 8Δt 12这个表已经解释了很多现象。A类和B类单次占用频谱比较宽,但使用次数较少;C类一次只占3个频段,却每隔很短时间重复使用12次,因此在时间轴上非常密集。后续冲突很多集中在C类附近,并不是偶然现象。 这里有一个必须读对的细节。 假设首次时间区间为 [35,40)[35,40),持续5Δt,间隔时长为60Δt。题目给出的第二次使用并不是从95开始,而是从100开始,也就是第一次结束以后再空闲60Δt。因此相邻两次起点之间的距离等于“单次持续时间+间隔时长”。题面用A001作了明确说明。 很多程序如果直接写成“下一次起点=上一次起点+间隔”,问题一开始就会全部算错。 还要坚持半开区间规则。例如频段[10,20)[10,20)和[20,25)[20,25)没有重叠,时间[30,35)[30,35)与[35,40)[35,40)也没有重叠。只有两个区间内部存在正长度公共部分,才算真正重合。 从数学结构看,每一个计划都可以理解成二维“时频平面”上的一串矩形。频率位置不变,矩形沿时间方向周期出现。两个装备是否冲突,就是判断两串矩形是否存在 至少一对同时相交。 传统无线频率指配本身就与图着色、组合优化有密切关系。Hale较早系统讨论了频率分配的图论结构,见 Proceedings of the IEEE,1980,68卷,第1497—1514页;Aardal等则系统总结了频率指配中的图模型、整数规划与搜索方法,见 Annals of Operations Research,2007,153卷,第79—129页。(乌克兰国家图书馆) 本题和经典频率分配相比又多了时间维,所以最自然的数据结构是: 时频占用集合+冲突图。 问题一生成这张图,问题二到问题四全部继续使用。 二、问题一:冲突检测不需要复杂算法,关键是必须做到“精确且可复核”问题一要求找出附件1全部冲突计划对并写入result1.xlsx。 150项计划规模并不大,所以这里没有必要为了算法复杂度使用神经网络 、聚类或者高级扫描线。最可靠的基线反而是直接枚举所有计划对。 具体过程是: 对每个计划先生成全部实际使用时间区间。例如C类单次持续2Δt、间隔8Δt,因此相邻起点间隔10Δt,一项C类计划会生成12个时间区间。然后对任意两个装备进行两层判断:先看频率区间是否重叠;如果频率完全不重叠,这一对直接排除。频率存在重叠时,再检查两组周期时间区间是否至少有一组重叠。只要出现一次,同时满足频率和时间重叠,就把这两个装备记为一组冲突。 注意同一对装备即使在三个不同时间段发生三次冲突,result1中仍只应记录一个冲突装备对,因为模板要求的是计划之间的冲突关系,而不是每一个冲突事件。模板也明确要求每行填写一对用频装备。 按照这一口径直接展开附件1,我核验得到 297对冲突计划。分类结果如下: 冲突类型 冲突对数量A—A 0A—B 21A—C 66B—B 10B—C 181C—C 19合计 297其中有C类参与的冲突达到266对,约占全部冲突的89.6%;B—C冲突单独就有181对,占六成以上。这与附件结构完全吻合:C类虽然占用频带窄,但使用频率高,12次周期任务会在时间维度上反复穿过A、B类计划。 这里可以顺势建立冲突图。150个装备作为150个节点,如果两个计划发生冲突,就在两个节点之间连一条边。297对冲突就是297条边。 实际数据中绝大多数装备都进入同一个大连通分量,说明后面不能把所有冲突简单拆成许多完全独立的小问题。不过图整体仍然比较稀疏,因此基于候选调整的精确组合优化是可行的。 问题一建议再做一次独立验证:把整个时域、频域离散成0—1占用矩阵,每项计划在自己使用的时频格上标1,然后对任意两个计划做逻辑“与”。只要公共格存在,就应和区间算法判定为冲突。两个实现得到完全相同的冲突对,问题一可信度就很高。 这比写“算法准确率100%”更严谨,因为这里不存在需要训练的分类器,本质是确定性的逻辑判断。 三、问题二:真正适合的是“候选方案枚举+词典序组合优化”问题二要求消除问题一的全部冲突,同时规定:一个计划只能调整一个参数或撤销;通常不修改次数和间隔;频率最多平移10Δf,首次使用时间最多平移5Δt;A优先级最高,B次之,C最低,还应尽量少撤销、少调整、少移动。 这里最容易出现一种看似合理、实际很脆弱的方法:发现一对冲突,就移动其中优先级低的一项;如果又与第三项冲突,再继续移动。 局部贪心可以作为基线,但不能直接作为主模型。因为一次移动可能消除原来的三条冲突边,同时产生五条新边。297条边相互关联,仅按当前冲突逐个修复,很容易前面刚处理完,后面又破坏前面的结果。 更好的处理:先把每个装备所有允许的方案一次性生成对每个装备预先生成一组候选配置。 以一个普通计划为例,可以有: 原计划不动; 频段向左或向右平移1—10个频段; 首次时间区间提前或推迟1—5个时间单位; 撤销。 频率平移以后,频段宽度保持不变,而且必须仍然完全位于0—100频段范围内。时间平移只改变首次使用时刻,后面所有重复使用时刻整体同步平移,持续时长、间隔和次数都不发生变化。 最关键的是: 不能同时平移频段和时间。 因为题面已经规定一个用频计划只能调整其中一个参数。 这样,每个装备只有几十个有限候选方案。150个装备的调整问题就从“在连续空间里到处搜索”变成“每个装备从有限候选方案中选一个”。 随后提前计算: 某装备的候选方案a,与另一装备的候选方案b是否冲突。 如果冲突,则这两个候选不能同时选择。 最后规定每个装备必须恰好选择一个状态: 保留、某个频率平移、某个时间平移,或者撤销。 整个问题就转化成非常标准的0—1组合优化/约束满足问题。可以使用混合整数规划,也可以使用CP-SAT。它比直接用遗传算法有一个很大优势:每一个约束都能明确写出来,而且在规模允许时可以获得最优性界限。 目标函数不要简单写成“一堆权重相加”如果写: 撤销一次罚100; 调整一次罚10; A类乘3; B类乘2; 平移再乘0.1…… 那么100、10、3、2从哪里来,很难解释。 更适合本题的是词典序优化。 也就是先优化最重要目标,在这个最优值固定以后,再优化第二重要目标。 按照“高优先级计划尽量保持”的要求,一种较稳妥的国一思路可以是: 第一层尽量避免A类撤销和调整;第二层尽量避免B类撤销和调整;第三层在此基础上最小化全部撤销数量;第四层最小化需要调整的计划数量;第五层才最小化总平移幅度。 其中撤销始终比调整更严重。 这种方法的含义非常清楚:不会为了少动几个C类计划,反而把关键A类计划撤掉。 题面对于“尽量少撤销”和“高优先级尽量保持”并没有给出严格谁先谁后的数学顺序,所以论文最好主动说明自己的优先规则。如果担心这一解释存在争议,可以额外建立一个“总撤销数绝对优先”的对照方案。若两种规则最终结果相近,就进一步说明结论对目标排序并不敏感。 基线方法也值得保留可以先建立一个优先级贪心算法: 按照A、B、C优先级依次锁定计划; 对有冲突的低优先级计划,从所有允许平移方案中优先选择移动幅度最小、产生新冲突最少的方案; 所有平移都无法解决时才撤销。 这个方案通常很快,可以为整数规划提供一个较好的初始解。 主模型则使用候选配置+词典序优化继续改进。 这样的论文比“我们直接采用某某智能算法”更完整,因为既有容易理解的基线,又有能够处理全局相互作用的主模型。 问题二最终需要输出每一个发生改变的装备编号及其新频段、新时间或者撤销状态,同时统计A、B、C三类分别保留多少、调整多少、撤销多少。题面与result2模板对此已经作了明确规定。 最终方案产生以后,必须重新运行问题一的完整冲突检测程序。如果仍有一条冲突边存在,问题二方案就是不可行的。这一步应作为硬验证,而不能只相信求解器显示“optimal”。 四、问题三:最容易忽略的问题是——如果不限定时间资源,这一问其实没有最大值问题三要求在问题二得到的无冲突计划上,不再限制频率和时间平移幅度,同时“不增加时频资源”,问最多还能安排多少C类装备。 这一问有一个很重要的题意细节。 频率资源明确只有100个频段,但题面没有额外写出一个显式的总时间上限。 如果认为时间轴可以无限往后延长,那么答案会直接变成无穷大:只需要把新的C类计划不断安排到越来越晚的时间即可。 所以“在不增加时频资源的前提下”必须包含一个固定的时间资源窗口。 根据附件1全部计划展开后,原计划最早从0开始,最晚一项周期使用在643Δt结束。因此,一个比较严谨而且可复现的解释是: 把原始申报计划实际覆盖的统一时域[0,643Δt)定义为现有时间资源,不允许问题三通过向643以后延长时间获得新的资源。 这一假设必须主动写进论文。它不是随意补条件,而是为了使“最多安排多少”在数学上成为有界问题,而且直接来源于附件原有资源使用范围。 这是我认为问题三非常容易拉开论文质量的地方。 新增C类任务到底是什么形状附件1的90项C类计划结构完全一致: 占3个连续频段; 一次持续2Δt; 相邻两次空闲8Δt; 共使用12次。 result3又只要求填写新增装备的频段区间和首次时间区间,没有要求重新填写间隔和次数,因此新增C类计划最自然地沿用这一标准结构。 一项新的C类计划从第一次开始到最后一次结束,一共跨越112Δt: 每次开始时间之间相隔10Δt,12次使用对应11个10Δt间隔,再加最后一次2Δt。 因此在[0,643)时域内,新计划首次开始时间最多为531。 频率方面,宽度固定为3,所以频率起点可以从0到97。 于是理论上所有新C类候选位置可以直接枚举: 98种频率起点 × 532种首次开始时刻=52136种候选计划。 这个规模对于整数优化完全可以处理。 先过滤,再做最大装填固定问题二的最终无冲突方案以后,将整个100×643的时频区域看成离散资源矩阵。 对52136个候选C计划逐一检查。如果一个候选与现有任何计划冲突,直接删除。剩余候选都是“单独加入时可行”的计划。 但不能把它们全部加入,因为新增C之间也可能彼此冲突。 因此下一步建立候选计划之间的冲突关系,从中选出尽可能多的彼此不冲突计划。这就是一个最大集合打包/最大独立集型问题。 可以给每个候选C计划设置一个0—1变量: 选中为1; 不选为0。 对每一个时频资源单元,所有覆盖该单元的新增计划最多只能选择一个。同时它们也不能占据已有计划使用的单元。 目标只需要: 最大化新增计划数量。 这一问已经没有A、B、C优先级冲突,因为原来的计划全部固定,优化对象只有新增C类。 它与二维装填问题具有相似的组合结构。二维装填模型的典型综述可参考Lodi、Martello和Monaci,European Journal of Operational Research,2002,141卷,第241—252页。(Frontiers) 但本题比普通矩形装填多了一层周期结构,一项C类实际上是12个保持同频位置的时间矩形,因此直接按普通矩形面积除法只能得到粗略上界。 “最多”两个字必须给出最优性证据如果用遗传算法得到新增42个计划,只能说明: 至少可以新增42个。 不能说明: 最多只能新增42个。 所以问题三最好采用能够报告最优界的整数规划或CP-SAT。 程序找到K个新增计划以后,还需要一个上界U。如果求解器证明最优间隙为0,即U=K,就能够严格说K就是最大值。 如果比赛时间内无法求到绝对最优,也要诚实写成: “得到K个可行新增计划,同时最优上界为U,因此真实最大值位于[K,U]之间。” 这种写法反而比把启发式结果直接称作“最大值”更专业。 还可以利用空闲时频单元总面积建立一个简单理论上界。一项C类计划实际占用3×2×12=72个时频格,因此“剩余可用格数÷72”一定是一个宽松上界。再结合频率连续性和周期约束,可以继续缩紧上界。 问题三最后只需输出: 最大新增数量,以及每一个新增C类装备的频段区间和首次时间区间。 然后把新增计划加入问题二方案,重新调用问题一检测器,必须仍然得到零冲突。 五、问题四:调整“间隔时长”为什么可能比平移5个时间单位有效得多问题四重新回到问题一的原始冲突计划,并增加一个新的自由度:允许部分C类装备调整使用间隔,与原间隔的差异不超过10Δt。 C类原间隔为8Δt。因此若间隔时长按非负整数处理,可考虑0—18Δt范围内的候选值。 这里仍然必须遵守“一个计划只能调整一个参数”。也就是说,如果C025选择改变间隔,就不能同时再平移它的频段和首次时间。 为什么间隔调整非常有价值? 假设原C类间隔是8,单次持续2,所以相邻两次开始时间相差10。 如果把间隔由8改成9,相邻起点变成11。 第一次使用完全不变; 第二次只移动1Δt; 第三次已经移动2Δt; …… 第十二次会累计移动11Δt。 所以看起来只是把一个参数从8改成9,却会逐步改变后面整串周期任务的位置。一次调整有可能同时消除多条不同时间的冲突。 但它也存在风险:原来的冲突消失以后,后面被移动的周期任务可能撞上新的A、B计划。 因此问题四尤其不能使用“看到冲突就试着改一下间隔”的局部规则。 最自然的做法是直接扩展问题二的候选配置集合。 A、B类仍然拥有: 原样保留; 频率平移; 首次时间平移; 撤销。 C类则额外增加: 保持频段和首次时间不变,只改变间隔时长。 对每一个新的间隔候选重新展开12次实际使用区间,再计算它与其他候选方案的冲突关系。 后面完全沿用问题二的词典序优化。 这一设计最大的优点是: 问题二和问题四可以在完全相同的评价标准下公平比较。 而且从数学上还能得到一个简单结论:问题四是在问题二原有全部可行调整方案上增加了新的“间隔调整”候选,并没有删除问题二任何方案。所以在使用完全相同的优化目标时,问题四的最优结果理论上不可能比问题二更差,最多相同,通常会有所改善。 最终不能只给表1里的保留、调整、撤销数量。还建议额外统计: 多少C类最终采用间隔调整; 新的间隔主要集中在哪些值; 相比问题二减少了多少撤销; 相比问题二减少了多少A、B类调整; 整体调整幅度是否下降。 这样才能回答“为什么允许调整间隔有意义”。 result4模板也已经单独设置“调整后间隔时长”列,说明这一变量就是问题四新增的核心决策。 六、国一层级方案怎么验证这道题真正需要验证的不是模型拟合精度,而是组合方案有没有违反任何规则,以及所谓最优到底有多可信。 问题一做“双实现交叉验证”:区间相交算法与100×643时频占用矩阵检测结果完全一致。 问题二和问题四每得到一套方案后,全部重新展开成实际时频区间,并调用问题一检测器。最终冲突对必须为0。同时逐项检查:频率是否还在0—100内;问题二频率位移是否≤10、时间位移是否≤5;一个装备有没有同时改两个参数;A、B有没有错误改变间隔;问题四C类间隔改变是否≤10。 问题三的验证重点不同。除了零冲突,还必须检查最大性。推荐报告整数模型得到的可行下界和最优上界。如果两者一致,就说明“最多新增多少”已经被严格证明。 还有一项很值得做的稳定性比较:用贪心算法和主优化模型分别完成问题二。如果主模型能够在相同零冲突条件下减少撤销、减少高优先级调整或降低移动幅度,就直接证明全局优化的必要性。 七、真正适合写进论文的创新点这道题不需要硬凑复杂算法,下面四个点已经比较扎实。 **其一,周期时频计划统一展开与冲突图建模。**把“频段+首次时间+间隔+次数”统一转换为有限时频占用集合,使四问共享完全相同的冲突判定基础。 **其二,基于候选配置的词典序消解。**传统加权目标需要人为规定撤销、调整、优先级之间的权重。本文直接按照业务重要程度逐层固定前一目标最优值,再优化后一目标,避免人为权重改变最终决策。 **其三,问题三显式构造固定时频资源边界。**题面不写清时间上界时,“无限平移”会导致新增装备数量无界。本文依据原计划完整占用范围建立[0,643Δt)资源窗口,使“最多新增”成为严格有界问题。 **其四,问题四将间隔调整作为高杠杆周期重构变量。**调整一次间隔会累积改变后续所有使用时刻,因此不是普通的局部时间平移。通过候选配置方式完整重新检测其全周期冲突,可以利用这种自由度,同时避免产生新的隐蔽冲突。 如果结果允许,第三、四点很适合放在摘要和创新部分。 八、这道题最容易失分的地方常见错误 为什么错 推荐处理下一次使用时间直接加“间隔时长” 忽略单次持续时间 起点增量=持续时间+间隔把相邻半开区间也判为重叠 边界接触不构成资源同时占用 使用严格区间相交条件同一对计划冲突多次就输出多行 result1要的是冲突计划对 每对装备只记一次问题二逐个冲突贪心修补 可能消旧冲突又产生新冲突 候选方案统一优化一个计划同时平移频率和时间 直接违反题意 候选动作互斥A、B、C直接设置3、2、1小权重 无法解释优先级强度 采用词典序优化问题三允许时间无限向后排 新增C数量会无界 固定原有时频资源窗口用“剩余面积÷72”当最终最大数 周期结构和连续频带会限制可行性 只把它作为理论上界遗传算法找到K个就声称K是最大值 没有最优性证明 给出整数模型上界/最优间隙问题四改了间隔后不重新检查12次使用 很可能产生新冲突 全周期重新展开检测只给结果文件,没有解释资源结构 论文变成程序作业 分析冲突类型和优化机制尤其是问题三的“时间上界”,很可能是这道题最值得主动讨论的题意细节之一。 九、论文结果应该如何组织整篇论文不需要放大量时频矩阵。结果部分围绕四个问题分别回答核心判断即可。 问题一给出总冲突对297,以及A—B、A—C、B—B、B—C、C—C分类统计,再分析为什么C类是主要冲突来源。完整297条冲突写入result1。 问题二给A、B、C三类“保留—调整—撤销”统计,并重点解释哪些低优先级计划承担了主要冲突消解。正文还应报告频率调整数量、时间调整数量以及平均、最大移动幅度。完整装备修改方案写入result2。 问题三正文最重要的是“最多新增多少C类计划”以及最优性证据。可以报告候选计划总数、过滤后可行候选数量、最终新增数量和整数优化上界。完整频段和时间安排写入result3。 问题四与问题二放在同一张对比表中最好: 指标 问题2 问题4A类调整数 运行结果 运行结果B类调整数 运行结果 运行结果C类调整数 运行结果 运行结果总撤销数 运行结果 运行结果频率平移数 运行结果 运行结果时间平移数 运行结果 运行结果间隔调整数 不允许 运行结果最终冲突数 0 0这样一眼就能看出新增间隔调整自由度到底改善了什么。 没有实际运行问题二至四优化程序之前,不建议提前编这些具体数字。 十、整道D题推荐模型路线问题 核心困难 国一层级推荐方法 输出问题1 周期使用导致时间重叠关系复杂 周期区间展开+精确区间相交+冲突图 全部冲突对及分类统计问题2 优先级、撤销、调整、幅度同时存在 候选配置枚举+词典序MILP/CP-SAT 无冲突调整方案及A/B/C统计问题3 在固定资源内证明“最多还能放多少” 剩余时频网格+候选C生成+最大集合打包 最大新增数及完整计划问题4 改一个间隔会移动整个周期序列 扩展候选配置+间隔重构+同一词典序优化 新消解方案及与问题2对比验证 保证零冲突和最优可信 双重冲突检测+约束审计+最优上下界 可行性与最优性证据
🍅更多免费数学建模和仿真教程关注领取
🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:
#各类智能优化算法改进及应用
#生产调度 #经济调度 #装配线调度 #充电优化 #车间调度 #发车优化 #水库调度 #三维装箱 #物流选址 #货位优化 #公交排班优化 #充电桩布局优化 #车间布局优化 #集装箱船配载优化 #水泵组合优化 #解医疗资源分配优化 #设施布局优化 #可视域基站和无人机选址优化 #背包问题 #风电场布局 #时隙分配优化 #最佳分布式发电单元分配 #多阶段管道维修 #工厂-中心-需求点三级选址问题 #应急生活物质配送中心选址 #基站选址 #道路灯柱布置 #枢纽节点部署 #输电线路台风监测装置 #集装箱调度 #机组优化 #投资优化组合 #云服务器组合优化 #天线线性阵列分布优化 #CVRP问题 #VRPPD问题 #多中心VRP问题 #多层网络的VRP问题 #多中心多车型的VRP问题 # 动态VRP问题 #双层车辆路径规划(2E-VRP) #充电车辆路径规划(EVRP) #油电混合车辆路径规划 #混合流水车间问题 #订单拆分调度问题 #公交车的调度排班优化问题 #航班摆渡车辆调度问题 #选址路径规划问题 #港口调度 #港口岸桥调度 #停机位分配 #机场航班调度 #泄漏源定位 #冷链 #时间窗 #多车场等 #选址优化 #港口岸桥调度优化 #交通阻抗 #重分配 #停机位分配 #机场航班调度 #通信上传下载分配优化
#机器学习和深度学习时序 #回归 #分类 #聚类和降维
#bp时序 #回归预测和分类
#ENS声神经网络时序 #回归预测和分类
#SVM#CNN-SVM#LSSVM#RVM支持向量机系列时序
#CNN#TCN#GCN卷积神经网络系列时序
#ELM#KELM#RELM#DELM极限学习机系列时序
#GRU#Bi-GRU#CNN-GRU#CNN-BiGRU门控神经网络时序
#ELMAN递归神经网络时序
#LSTM#BiLSTM#CNN-LSTM#CNN-BiLSTM/长短记忆神经网络系列时序
#RBF径向基神经网络时序