当前位置: 首页 > article >正文

第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--多策略混合算法

前言全球校园人工智能算法精英大赛”是江苏省人工智能学会举办的面向全球具有正式学籍的全日制高等院校及以上在校学生举办的算法竞赛。其中的算法巅峰赛属于产业命题赛道这是第3赛季这次优化题的主题是 “碳中和”。回顾第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题–碳中和对该文提到的 多策略模型提供具体的代码及解读。思路解析本算法保留经典贪心调度主框架并对核心逻辑进行策略抽象与解耦整体架构仅包含两类可插拔策略sort_strategy任务排序策略choice_strategy服务器挑选策略算法主流程依据指定的 sort_strategy 对任务列表进行全局排序按序遍历每一个任务遍历所有服务器筛选出分配后仍满足约束的候选服务器列表若候选列表非空则通过 choice_strategy 从中选定目标服务器将当前任务分配至选定的服务器执行。任务排序策略sort_strategy按收益值降序排序按收益 / 功耗比值降序排序按收益 / 热度比值降序排序按收益 /(功耗 热度) 比值降序排序按热度值升序排序服务器挑选策略choice_strategyFFFirst-Fit选择第一个满足约束的服务器BFBest-Fit按资源利用率来排序挑选服务器RFRandom-Fit从候选集中随机选择一台服务器带概率放弃的BF(Best-Fit)为最优挑选引入随机概率放弃多策略混合搜索机制将N 种任务排序策略与M 种服务器挑选策略进行全组合遍历形成 N×M 组调度方案。每组方案独立执行调度并计算得分最终选取总收益最高的方案作为最优解。设计特点全程以任务task主导分配结构清晰、易于实现与扩展策略完全解耦新增排序 / 挑选规则无需修改主框架组合搜索自动挖掘最优策略搭配大幅提升调度收益。代码多策略组合(代码由 Deepseek 生成)#includebits/stdc.husingnamespacestd;structTask{doublegain,power,heat;};structServer{doublepower_limit,heat_limit;};// 你原题的热约束完全不动classHeatChecker{private:constvectorServerservers;doublek;intm;public:HeatChecker(constvectorServerservers,doublek):servers(servers),k(k),m(servers.size()){}boolcanPlace(constvectordoublepowers,constvectordoubleheats,intpos,constTasktask)const{if(task.powerpowers[pos]servers[pos].power_limit1e-9)returnfalse;doubleself_heatheats[pos]task.heat;doublelh(pos0)?heats[pos-1]*k:0.0;doublerh(posm-1)?heats[pos1]*k:0.0;if(self_heatlhrhservers[pos].heat_limit1e-9)returnfalse;if(pos0){doubleleft_selfheats[pos-1];doubleleft_influenceleft_self(heats[pos]task.heat)*k;if(pos-10)left_influenceheats[pos-2]*k;if(left_influenceservers[pos-1].heat_limit1e-9)returnfalse;}if(posm-1){doubleright_selfheats[pos1];doubleright_influenceright_self(heats[pos]task.heat)*k;if(pos1m-1)right_influenceheats[pos2]*k;if(right_influenceservers[pos1].heat_limit1e-9)returnfalse;}returntrue;}};// 策略模式排序策略 classSortStrategy{public:virtualvectorintsortTasks(constvectorTasktasks)const0;virtual~SortStrategy()default;};classSortByGainDesc:publicSortStrategy{public:vectorintsortTasks(constvectorTasktasks)constoverride{vectorintorder(tasks.size());iota(order.begin(),order.end(),0);sort(order.begin(),order.end(),[](inta,intb){returntasks[a].gaintasks[b].gain;});returnorder;}};classSortByGainPowerRatio:publicSortStrategy{public:vectorintsortTasks(constvectorTasktasks)constoverride{vectorintorder(tasks.size());iota(order.begin(),order.end(),0);sort(order.begin(),order.end(),[](inta,intb){returntasks[a].gain/tasks[a].powertasks[b].gain/tasks[b].power;});returnorder;}};classSortByGainHeatRatio:publicSortStrategy{public:vectorintsortTasks(constvectorTasktasks)constoverride{vectorintorder(tasks.size());iota(order.begin(),order.end(),0);sort(order.begin(),order.end(),[](inta,intb){returntasks[a].gain/tasks[a].heattasks[b].gain/tasks[b].heat;});returnorder;}};classSortByGainTotalRatio:publicSortStrategy{public:vectorintsortTasks(constvectorTasktasks)constoverride{vectorintorder(tasks.size());iota(order.begin(),order.end(),0);sort(order.begin(),order.end(),[](inta,intb){doubleratasks[a].gain/(tasks[a].powertasks[a].heat);doublerbtasks[b].gain/(tasks[b].powertasks[b].heat);returnrarb;});returnorder;}};classSortByHeatAsc:publicSortStrategy{public:vectorintsortTasks(constvectorTasktasks)constoverride{vectorintorder(tasks.size());iota(order.begin(),order.end(),0);sort(order.begin(),order.end(),[](inta,intb){returntasks[a].heattasks[b].heat;});returnorder;}};// 策略模式挑选策略 classChoiceStrategy{public:virtualintselect(constvectorintcandidates,constvectordoublecur_p,constvectordoublecur_h,constvectorServerservers,doublek,constTasktask)const0;virtual~ChoiceStrategy()default;};// FF 首次适应classFirstFit:publicChoiceStrategy{public:intselect(constvectorintcandidates,constvectordouble,constvectordouble,constvectorServer,double,constTask)constoverride{returncandidates.empty()?-1:candidates[0];}};// 【你专属的最优适应】完全用你的公式 classBestFit:publicChoiceStrategy{public:intselect(constvectorintcandidates,constvectordoublepowers,constvectordoubleheats,constvectorServerservers,doublek,constTasktask)constoverride{if(candidates.empty())return-1;intbest_pos-1;doublemin_score1e18;for(intpos:candidates){doublepower_ratio(powers[pos]task.power)/servers[pos].power_limit;doubleheat_ratio(heats[pos]task.heat)/servers[pos].heat_limit;doubleheat_spreadheats[pos]task.heat;if(pos0)heat_spreadheats[pos-1]*k;if(pos(int)servers.size()-1)heat_spreadheats[pos1]*k;doubleheat_ratio_with_spreadheat_spread/servers[pos].heat_limit;doublescoremax(power_ratio,heat_ratio_with_spread);doubleremainingmin(servers[pos].power_limit-powers[pos]-task.power,servers[pos].heat_limit-heats[pos]-task.heat);score-remaining/(servers[pos].power_limitservers[pos].heat_limit)*0.1;// 分数越小越好if(scoremin_score){min_scorescore;best_pospos;}}returnbest_pos;}};// 调度器 pairdouble,vectorintschedule(constvectorTasktasks,constvectorServerservers,doublek,constSortStrategysort_strategy,constChoiceStrategychoice_strategy){intntasks.size();intmservers.size();vectorintordersort_strategy.sortTasks(tasks);HeatCheckerchecker(servers,k);vectorintans(n,-1);vectordoublecur_p(m,0),cur_h(m,0);doubletotal_gain0;for(intid:order){constTaskttasks[id];vectorintcandidates;for(intj0;jm;j){if(checker.canPlace(cur_p,cur_h,j,t)){candidates.push_back(j);}}intschoice_strategy.select(candidates,cur_p,cur_h,servers,k,t);if(s!-1){ans[id]s;cur_p[s]t.power;cur_h[s]t.heat;total_gaint.gain;}}return{total_gain,ans};}// 主函数策略组合遍历 最优选择 intmain(){ios::sync_with_stdio(false);cin.tie(0);intn,m;doublek;cinnmk;vectorTasktasks(n);for(inti0;in;i){cintasks[i].gaintasks[i].powertasks[i].heat;}vectorServerservers(m);for(inti0;im;i){cinservers[i].power_limitservers[i].heat_limit;}vectorunique_ptrSortStrategysorts;sorts.emplace_back(newSortByGainDesc());sorts.emplace_back(newSortByGainPowerRatio());sorts.emplace_back(newSortByGainHeatRatio());sorts.emplace_back(newSortByGainTotalRatio());sorts.emplace_back(newSortByHeatAsc());vectorunique_ptrChoiceStrategychoices;choices.emplace_back(newFirstFit());choices.emplace_back(newBestFit());doublebest_gain-1;vectorintbest_ans(n,-1);for(autos:sorts){for(autoc:choices){auto[gain,ans]schedule(tasks,servers,k,*s,*c);if(gainbest_gain){best_gaingain;best_ansans;}}}for(inti0;in;i){coutbest_ans[i]1 \n[in-1];}return0;}效果评估在基准测试集中这个分值接近赛时第一的分数我猜测他可能用了类似解法。这个算法中贡献最大的是按 收益/热度 比值 降序排序采用 最优挑选策略选择服务器写在最后

相关文章:

第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--多策略混合算法

前言 全球校园人工智能算法精英大赛”是江苏省人工智能学会举办的面向全球具有正式学籍的全日制高等院校及以上在校学生举办的算法竞赛。其中的算法巅峰赛属于产业命题赛道,这是第3赛季,这次优化题的主题是 “碳中和”。 回顾 第七届全球校园人工智能算…...

鸿蒙_ArkUI组件同时支持双击和单击事件

我们常用的点击事件是onClick,想要实现双击需要用TapGesture手势实现,那么如果一个组件同时需要支持单击和双击,则需要使用GestureGroup,我们新建一个页面来测试一下:Entry Component struct TestDoubleClick {State m…...

动态规划——01背包问题、完全背包(python、一维DP)

01-背包问题:从最大容量开始,从后往前遍历背包容量每种物品只能选择一次。物品种类为n,背包容量为k。从最大容量开始,从后往前遍历背包容量,小于当前物品容量的背包大小不遍历,即遍历到w[i]即可。&#xff…...

3.一文看懂反向传播:从单个神经元到 PyTorch 自动求导

反向求导,多层次对应一个神经,单个神经元场景 学习这一篇的前提是,已经学会了梯度算法和线性结构算法,不明白的可以去看我之前的文章。 前面看不懂的,直接跳转到 “ 反向传播的流程 ” 底层的数学算法 z 是中间变量 u …...

【国家卫健委《医疗卫生机构数据安全管理指南》强制落地倒计时】:PHP脱敏工具未升级?3类高危场景已触发监管预警!

第一章:国家卫健委《医疗卫生机构数据安全管理指南》强制落地背景与合规红线近年来,医疗健康数据泄露事件频发,患者隐私保护压力陡增。2023年12月,国家卫生健康委员会正式印发《医疗卫生机构数据安全管理指南》(国卫办…...

string的特性及使用

string这个词很容易让我们联想到str,也就是字符串,实际上string和字符串的关联性还是很强的。 很多字符串的题目都是string类的形式出现的,日常工作中为了方便使用都是用的string类, 标准string类 使用string类时,必须…...

(文档)第121讲:Oracle兼容工具—orafce使用技巧

目标 • orafce概述 • orafce安装 • orafce应用案例 orafce概述 orafce(Oracle Functions for PostgreSQL)是一个开源项目,旨在为 PostgreSQL 数据库提供一些 Oracle 数据库中缺失或行为不同的函数。该项目通过在 PostgreSQL 中实现这些函数,帮助…...

QGIS之四十三python处理数据

1、调出Python控制台 2、新建python脚本 右边的窗口可以拉过来 3、让AI根据你的需求写python脚本 比如要进行文本转shp,让AI写python脚本,拷贝脚本进来,保存文件 4、执行脚本...

工业以太网无线网桥 SG-WX-Bridge v2.0|免布线、一对多、即插即用,工业现场无线通信神器

工厂布线麻烦、距离远、施工成本高?设备移动频繁、有线网扯来扯去易损坏?三格电子SG-WX-Bridge v2.0 工业以太网无线网桥,专为工业现场打造,把有线网变无线,1 台 AP 最多带 8 台 STA,Profinet/EtherNet/IP/…...

机器学习经验总结整理

1.一个标准的机器学习项目流程(一定要记住顺序)很多新手觉得乱,是因为没按流程想问题。做任何项目,脑子里要有这根“流水线”:定义问题 → 是分类还是回归还是聚类?业务目标是什么?获取数据 → …...

千问3.5-27B模型微调实战:提升OpenClaw任务成功率

千问3.5-27B模型微调实战:提升OpenClaw任务成功率 1. 为什么需要微调千问3.5-27B? 当我第一次将OpenClaw接入千问3.5-27B时,发现它在简单任务上表现不错,但遇到复杂操作链时经常"卡壳"。比如让它整理一周的会议录音文…...

【国家级数字农业项目技术白皮书节选】:PHP轻量化时序数据处理框架如何扛住每秒8700+传感器上报?

第一章:农业 PHP 物联网数据可视化案例在智慧农业实践中,PHP 作为轻量级服务端语言,常被用于快速构建物联网数据聚合与可视化看板。本案例基于 ESP32 传感器节点采集土壤湿度、环境温湿度及光照强度,通过 HTTP POST 将 JSON 数据推…...

Arduino RTCtime库:标准time.h兼容的DS1307/DS3231驱动

1. 项目概述RTCtime 是一款专为 Arduino 平台设计的实时时钟(RTC)驱动库,核心目标是在硬件 RTC 模块与标准 C 运行时时间系统之间建立语义一致、类型兼容的桥梁。它并非一个独立的时间计算引擎,而是对底层硬件寄存器操作的封装层&…...

2026年全网视频去水印实测:6款消除字幕工具上手,哪款更适合你

短视频剪辑、素材二创时,画面里的顽固字幕、平台角标总是破坏整体质感,找对去字幕工具能直接拉高成品效率。这次我们亲测了市面上 6 款关注度较高的视频消除字幕工具,从便捷性、处理效果、隐私安全、批量能力、平台兼容五个维度逐一拆解&…...

加入csdn 5周年

不知不觉,已经是5年过去了,今天在b站刷了个视频大有感触,决定也用csdn记录一点东西,而不是一直把东西放在github上面或者是本地...

Idiap研究院:让语音识别AI学会聆听对话历史,压缩音频记忆

语音识别技术在我们的生活中越来越常见,从手机语音助手到客服电话,从会议记录到智能搜索。但你有没有想过,为什么这些系统有时候会犯一些很明显的错误?比如当你在和语音助手对话时,明明在前一句话中提到了"张三&q…...

方差的数学意义

方差(Variance)是统计学中一个非常基础且核心的概念。简单来说,它的数学意义就是衡量一组数据的离散程度,或者叫波动性。 如果说“平均值”(均值)告诉我们数据的中心在哪里,那么“方差”告诉我们…...

从月损耗20万到年增收300万:零售老板180天蜕变

李老板在二线城市经营着5家社区超市,年营收5000万,利润却越来越薄。一个残酷的数字让他夜不能寐:因线上线下系统割裂、手工操作繁多,每月生鲜损耗和运营错漏造成的损失超过20万元。他意识到,不变革,就是在慢…...

OpenClaw+Qwen3.5-9B组合优势:3个不可替代的使用场景

OpenClawQwen3.5-9B组合优势:3个不可替代的使用场景 1. 为什么选择OpenClawQwen3.5-9B组合 去年夏天,当我第一次尝试用Python脚本自动化处理医疗研究数据时,遇到了一个尴尬的问题:要么忍受公有云API的数据隐私风险,要…...

GLM-. 全面支持与 Gemini CLI 集成:HagiCode 的多模型进化之路估

1. 流图:数据的河流 如果把传统的堆叠面积图想象成一块块整齐堆叠的积木,那么流图就像一条蜿蜒流淌的河流,河道的宽窄变化自然流畅,波峰波谷过渡平滑。 它特别适合展示多个类别数据随时间的变化趋势,尤其是当你想强调整…...

使用Dify对接自己开发的mcp

先要有自己开发的mcp,然后部署到服务器 如何开发自己的mcp:Java使用spring Ai集成的mcp开发自己的mcp-CSDN博客 使用Dify对接mcp服务 Dify如何接入MCP工具_dify如何使用mcp工具-CSDN博客 基本上都差不多, 只说一点:如果一直报…...

eVTOL 研制必读 | 厘清研制保证与设计保证的边界

在很多航空企业里,经常会出现一种现象:项目团队在谈“研制保证体系”,管理层在谈“设计保证系统”;技术人员在强调 ARP4754A/B,组织层面却在说 DOA 合规。大家都在讲“保证”,却未必在讲同一件事。结果是什…...

无人外卖店

本项目以智能无人柜云值守模式,布局写字楼、社区等外卖密集区,24小时运营,对接美团、饿了么平台,主打预制餐饮品、零食等标准化商品。...

如何快速搭建个人数字图书馆:Talebook私有书库终极指南

如何快速搭建个人数字图书馆:Talebook私有书库终极指南 【免费下载链接】talebook 一个简单好用的个人书库 项目地址: https://gitcode.com/gh_mirrors/ta/talebook 想要拥有一个属于自己的数字图书馆吗?Talebook是一个基于Calibre的简单好用的个…...

问题解决策略基础算法实现训练1

问题 A: C 语言习题 字符串排序 [提交] [状态]题目描述 输入nnn个字符串,将它们按字母由小到大的顺序排列并输出。编写三个函数实现, 用于输出inputnnn个字符串, 用于排序sortstrnnn个字符串, 用于输出outputnnn个字符…...

当Windows 10的OneDrive无法彻底卸载时,这个批处理脚本是你的终极解决方案

当Windows 10的OneDrive无法彻底卸载时,这个批处理脚本是你的终极解决方案 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/on/OneDrive-Uninstaller 你是否…...

OpenClaw截图分析功能:Qwen3.5-9B多模态界面理解案例

OpenClaw截图分析功能:Qwen3.5-9B多模态界面理解案例 1. 为什么需要截图分析功能 在日常工作中,我经常遇到需要分析软件界面、排查异常或生成报告的场景。传统方式要么依赖人工截图标注,要么需要开发专门的自动化脚本,效率低下且…...

Navicat找回历史执行记录突然失效怎么办_重置与缓存清理

Navicat历史记录消失是因异常退出导致history.db处于WAL日志不一致或事务未提交状态,并非数据被删;需关闭所有实例、备份并重命名history.db及相关文件后重启,新记录将重新生成。Navicat 历史执行记录消失,history.db 文件还在但不…...

自动送料机构的设计

自动送料机构是现代工业中提升效率的关键部件,其核心作用在于通过机械结构实现物料的精准、连续输送,替代人工操作带来的效率波动与误差风险。无论是金属零件、塑料制品还是粉末状原料,该机构均能根据工艺需求调整输送节奏,确保物…...

Windows Server 配置与管理——第4章:磁盘管理

目录 4.1 项目背景 4.2 相关知识 1. 概念和术语 2. 基本磁盘 3. 动态磁盘 4. 磁盘配额 4.3 项目过程 4.3.1 任务 1 基本磁盘管理 1. 扩展磁盘空间 2. 新建简单卷 3. 删除简单卷 4. 添加新磁盘 4.3.2 任务 2 动态磁盘管理 1. 将基本磁盘转换成动态磁盘 2. 创建、…...