2023五岳杯量子计算挑战赛APMCM亚太地区

问题一要求在特定区域内部署两个边缘服务器,以便根据计算需求分布覆盖最大的计算需求。每个边缘服务器都有一个覆盖半径为1。目标是确定两个边缘服务器的位置,以覆盖最大的计算需求。假设边缘服务器的位置位于网格的中心,每个网格内的计算需求在附件中提供(Attachment 1_Computational Demand Distribution Data.csv)。
要求使用QUBO模型解决此问题,并使用Kaiwu SDK的模拟退火求解器和CIM模拟器进行求解。需要提供部署边缘服务器的坐标,这些服务器可以覆盖最大计算需求,以及相应的总计算需求覆盖量。
这个问题的关键在于理解和转换问题为一个适合的QUBO模型,并有效地使用Kaiwu SDK来找到最佳解决方案。接下来,我们通过对附件中的计算需求分布数据对分析,以开始建模分析。
数据集中包含了三列:
X-axis:表示网格的X轴坐标。
Y-axis:表示网格的Y轴坐标。
Amount of Computational Demands:表示在该网格位置的计算需求量。
数据可视化如下图

这幅图展示了计算需求在不同网格位置的分布情况。图中每个单元格代表一个网格点,其颜色的深浅表示该位置的计算需求量。颜色越深的区域表示计算需求越高。
通过观察这幅图,我们可以发现计算需求在不同网格之间的分布不均。这种分布对于确定两个边缘服务器的最佳部署位置至关重要。理想情况下,我们希望将服务器部署在计算需求集中且相对较高的区域,以最大化覆盖范围和总计算需求量。
接下来,我们可以根据这个分布,结合QUBO模型和模拟退火算法,来确定两个边缘服务器的最佳部署位置。
为了解决问题一,我们需要使用这些数据来构建QUBO模型,从而找出能够覆盖最大计算需求的两个边缘服务器的最佳位置。QUBO模型的构建将基于以下原则:
二元决策变量:为每个网格位置定义一个二元变量(0或1),表示是否在该位置部署边缘服务器。
目标函数:构建一个目标函数来最大化覆盖的计算需求。这将涉及到考虑边缘服务器的覆盖半径和每个网格的计算需求。
约束:虽然QUBO模型通常不涉及显式约束,但我们需要确保模型反映出只能部署两个边缘服务器的条件。

构建了QUBO(Quadratic Unconstrained Binary Optimization)矩阵,这是解决问题一所需的关键步骤。这个矩阵的构建基于以下原则:
矩阵大小:QUBO矩阵的大小与网格点的数量相同。在这种情况下,每个网格点对应一个二进制决策变量(0或1),表示是否在该位置部署一个边缘服务器。
奖励机制:QUBO矩阵的对角线元素代表在相应位置部署边缘服务器的奖励,与该位置的计算需求成比例。因此,计算需求越高的位置,其对应的矩阵元素值越小(在这里使用负值表示奖励,因为我们是在最小化QUBO)。
约束条件:QUBO矩阵的非对角线元素用于实施约束,即总共只能部署两个边缘服务器。通过增加矩阵的非对角线元素的值,可以对部署超过两个服务器的情况施加惩罚。
接下来的步骤是使用Kaiwu SDK的模拟退火求解器和CIM模拟器来求解这个QUBO矩阵,找到最优的服务器部署方案。
搜索结果:

在这里插入图片描述

最优解:显示了在哪些网格位置部署边缘服务器,True 表示在相应位置部署服务器。
最优值:显示了该解的QUBO能量值,代表了被覆盖的计算需求总量。
在可视化中,计算需求分布以颜色深浅展示,而边缘服务器的位置则用红色标记。

问题二:

问题二所需的三个数据集:
用户数据(Attachment 2):包含每个用户位置的X坐标、Y坐标,以及该位置的计算需求量。
边缘服务器数据(Attachment 3):包含每个候选边缘服务器位置的编号、X坐标、Y坐标,以及该位置的固定成本。
云服务器数据(Attachment 4):包含云服务器的编号、X坐标、Y坐标。
为了解决问题二,我们需要进行步骤:
数据分析与准备:理解并分析用户的计算需求分布、边缘服务器的候选位置以及它们的固定成本,以及云服务器的位置。
问题建模:使用QUBO模型来表示问题,这将包括确定边缘服务器的最优部署位置、计算成本、传输成本,以及确保每个用户的需求都得到满足的同时最小化总成本。
求解模型:使用模拟退火求解器或CIM模拟器求解QUBO模型,以确定最优的计算网络布局。
结果分析:分析求解器得出的结果,确定边缘服务器的部署位置和数量,以及用户与服务器之间的连接方式。
先进行数据可视化
在这里插入图片描述

数据可视化展示了以下信息:
用户计算需求分布:以不同颜色的点表示,颜色深浅代表不同的计算需求量。这些点分布在整个区域中,显示了每个位置的计算需求。
边缘服务器候选位置:用红色方形标记表示。这些位置是部署边缘服务器的潜在选项,每个位置都有相应的固定成本。
云服务器位置:用蓝色星形标记表示。云服务器的位置是固定的,其计算资源容量被认为是无限的
下面进行数据分析
计算需求分布:需求分布不均,有些区域的需求量显著高于其他区域。在决定边缘服务器的部署位置时,这些高需求区域应被优先考虑。
边缘服务器的位置选择:候选位置的选择需要考虑覆盖高需求区域的能力以及与这些区域的距离,因为传输成本与距离成正比。
成本效益分析:在选择部署边缘服务器的位置时,需要权衡固定成本和计算成本。位置越靠近用户,传输成本越低,但也可能意味着较高的固定成本。

· 目标函数:目标函数需要最小化总成本,包括固定成本、计算成本和传输成本。
·约束条件:
每个用户只能连接到一个服务器。
边缘服务器的计算资源容量不得超过其限制。
下面进行代码编写和分析
固定成本:每个候选边缘服务器位置的固定成本直接添加到QUBO矩阵的对应位置。
计算成本和传输成本:需要根据用户与服务器之间的连接决策来计算。这可能涉及到复杂的计算,尤其是在处理用户到边缘服务器和边缘服务器到云服务器的传输成本时。
约束条件:确保每个用户只连接到一个服务器,并且边缘服务器的计算资源容量不被超过。
构建完整的QUBO模型涉及到大量的计算和逻辑判断,考虑到模型的复杂性,可能需要进行一些简化或近似,以确保模型可以有效地被求解器处理。
完整内容见简介

完整的问题二求解代码

首先,我们需要定义一些辅助函数来计算距离和成本

def euclidean_distance(x1, y1, x2, y2):
“”“计算两点之间的欧几里得距离”“”
return round(((x1 - x2)**2 + (y1 - y2)**2)**0.5, 2)

def compute_cost(QUBO, solution, data_user, data_edge, data_cloud):
“”“计算给定解决方案的总成本”“”
total_cost = 0
N = len(data_edge)
M = len(data_user)
cloud_x, cloud_y = data_cloud.iloc[0][‘X-axis’], data_cloud.iloc[0][‘Y-axis’]

# 固定成本和计算成本
for i in range(N):if solution[i] == 1:total_cost += data_edge.iloc[i]['Fixed Cost']for j in range(M):if solution[N + i * M + j] == 1:total_cost += 2 * data_user.iloc[j]['Amount of Computational Demands']  # 边缘服务器计算成本# 传输成本
for j in range(M):user_x, user_y = data_user.iloc[j]['X-axis'], data_user.iloc[j]['Y-axis']connected_to_edge = Falsefor i in range(N):if solution[N + i * M + j] == 1:edge_x, edge_y = data_edge.iloc[i]['X-axis'], data_edge.iloc[i]['Y-axis']total_cost += euclidean_distance(user_x, user_y, edge_x, edge_y) * data_user.iloc[j]['Amount of Computational Demands']  # 用户到边缘的传输成本total_cost += euclidean_distance(edge_x, edge_y, cloud_x, cloud_y) * data_user.iloc[j]['Amount of Computational Demands']  # 边缘到云的传输成本connected_to_edge = Truebreakif not connected_to_edge:total_cost += 2 * euclidean_distance(user_x, user_y, cloud_x, cloud_y) * data_user.iloc[j]['Amount of Computational Demands']  # 用户到云的传输成本return total_cost

构建QUBO矩阵

N = len(data_edge)
M = len(data_user)
num_variables = N + N * M # 每个边缘服务器位置一个变量 + 每个用户对每个边缘服务器的连接变量
QUBO = np.zeros((num_variables, num_variables))

填充QUBO矩阵

固定成本

for i in range(N):
QUBO[i, i] = data_edge.iloc[i][‘Fixed Cost’]

连接决策(暂时不考虑容量限制和其他约束)

for i in range(N):
for j in range(M):
QUBO[N + i * M + j, N + i * M + j] = 2 * data_user.iloc[j][‘Amount of Computational Demands’] # 边缘服务器计算成本

运行模拟退火算法

init_state = np.random.choice([0, 1], size=num_variables)
result = dual_annealing(lambda x: compute_cost(QUBO, x > 0.5, data_user, data_edge, data_cloud), bounds=[(0, 1)] * num_variables, x0=init_state)

输出结果

optimal_solution = result.x > 0.5
optimal_value = compute_cost(QUBO, optimal_solution, data_user, data_edge, data_cloud)

print(“Optimal Solution:”, optimal_solution)
print(“Optimal Value:”, optimal_value)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我们为什么那么关注 Java 中的 String Template ,Java 21 特性

本心、输入输出、结果 文章目录 我们为什么那么关注 Java 中的 String Template ,Java 21 特性前言String TemplateString Template 有什么好处字符串连接 – 一个常见但无趣且容易出错的任务jetbrains IDEA 2023.2 版本及以上对于 String Template 的支持字符串模板…

FPS和SFTP的速度哪个更快?区别在哪里?

在互联网时代,我们频繁需要传输大文件,如视频、音乐、图片和文档等。这些文件不仅占用大量空间,而且传输时间长。确保传输过程的安全性和稳定性,以防文件被窃取或损坏成为重要考虑因素。在选择传输方式时,FPS和SFTP是两…

Databend 如何利用 GPT-4 进行质量保证

背景 在数据库行业,质量是核心要素。 Databend 的应用场景广泛,特别是在金融相关领域,其查询结果的准确性对用户至关重要。因此,在快速迭代的过程中,如何确保产品质量,成为我们面临的重大挑战。 随着 Da…

leaflet:经纬度坐标转为地址,点击鼠标显示地址信息(137)

第137个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中将经纬度坐标转化为地址,点击鼠标显示某地的地址信息 。主要利用mapbox的api将坐标转化为地址,然后在固定的位置显示出来。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示…

Segment Anything--SAM框架(二)

文章目录 prologuepaper && codeImage encoderPrompt encoderLightweight mask decoderMaking the model ambiguity-aware prologue 没什么事,写一写SAM的paper中关于模型框架的部分和实际代码部分。 paper && code SAM有三个组件,如图…

【PTA题目】7-31 前世档案 分数 20

7-31 前世档案 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 网络世界中时常会遇到这类滑稽的算命小程序,实现原理很简单,随便设计几个问题,根据玩家对每个问题的回答选择一条判断树中的路径(如下图所示&#xff09…

【若依系列】1.项目修改成自己包名并启动服务

项目下载地址: 分离版本 https://gitee.com/y_project/RuoYi-Vue 修改工具下载 https://gitee.com/lpf_project/common-tools 相关截图: 1.项目结构: 2.修改包名工具: 工具截图,根据对应提示自定义修改即可&#x…

【JS】检索树结构,并返回结果节点的路径与子节点

【JS】检索树结构,并返回结果节点的路径与子节点 需求代码效果展示 需求 一个树结构,需要添加条件检索功能,检索结果依然是一个树结构,包含所有的符合要求的节点,以及他们到根节点的路径,与他们的子节点 …

Spring Boot基础

文章目录 一、Spring Boot1. Spring的缺点2. Spring Boot 改变了什么3. Spring Boot项目搭建4. 热部署5. 依赖管理6. 代码生成器7. 日志8. 日期转换9. 接口文档10. 打包部署11. 自动装配 一、Spring Boot 1. Spring的缺点 在Spring Boot出现以前,使用Spring框架的…

二叉树OJ题之三

哈喽伙伴们,有一段时间没更新博客了,主要是这段时间要准备学校的期末考试,所以没有把部分时间分给博客,今天我们一起去接着看二叉树递归有关的OJ题,今天我们要学习的是 判断相同的树,力扣题目--100 &…

JSONArray添加JSONObject数据组装后,toString()发现值有{“$ref“:“$[0]“}乱码问题

出现这个问题是FastJson的循环引用造车的,可以手动设置取消FastJson的循环引用的检查。代码如下: JSONArray oaArr new JSONArray(); //取消JSON循环引用检查 String s JSON.toJSONString(oaArr, SerializerFeature.DisableCircularReferenceDetect)…

龙芯loongarch64服务器编译安装pytorch

前言 PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序,它是一个基于Python的可续计算包。在通过龙芯开源仓库下载依赖包后,执行import torch后,发现其中安装的"pytorch"就无法正常使用,这里就演示下pytorch整个编译流程。 1、环境准…

推荐一款Excel快速加载SQL的插件,方便又好用

如果告诉你只需要双击一下,SQL数据库中存放在表里面的数据,就能加载到你的Excel中,你想不想要? 今天给大家推荐一款好用的Excel插件,安装简单,使用方便,是经常使用SQL数据库的不二。 这款插件…

Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。

文章目录 HTTP协议1.HTTP协议是什么?2.HTTP协议的特点3.什么是URL?4.通过浏览器控制台学习HTTP协议Request Headers请求数据格式说明Response Headers请求数据格式说明 5.HTTP工作原理 HTTP协议 1.HTTP协议是什么? HTTP协议是一种超文本传输协议&…

前端实现主题(深色模式)切换的几种方案

方案一:link 动态引入 通过改变link 标签的 href 属性实现动态修改样式(暂不推荐这种方案) 优点:实现了按需加载,提高了性能; 缺点:动态加载样式文件,可能会因为网络问题导致样式…

使用Scanner扫描器和if语句来判断QQ等级的活跃程度

一、主要特点 总体使用try包围起来,用到了Scanner扫描器,还用到了若干if语句。 二、运行代码 import java.util.Scanner; public class QQtest {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) {System.out.pr…

吉利护航,宣称比友商“更懂车”,魅族造车的底气与底色

继小米、华为后,又一家手机厂商宣布跨界造车。 在近日举办的2023魅族秋季无界生态发布会上,星纪魅族集团(下称“魅族”)董事长兼CEO沈子瑜宣布,魅族正式进入汽车市场,将在2024年第一季度启动“DreamCar共创…

【STM32】STM32学习笔记-课程简介(01)

00. 目录 文章目录 00. 目录01. 课程简介02. 硬件设备03. 软件工具04. 硬件套件4.1 面包板和跳线/飞线4.2 杜邦线和STM32最小系统板4.3 STLINK和OLED显示屏4.4 LED和按键4.5 电位器和蜂鸣器4.6 传感器和旋转编码器4.7 USB转串口和MPU60504.8 Flash闪存和电机模块4.9 SG90舵机 0…

win10与 vm虚拟机win7共享文件夹创建

1:在win10(主机)电脑先随意共享一个文件夹 2:在win10(主机)上创建一个网络映射 右键此电脑选择映射网络驱动器 成功后会多出这个网络位置 3:win7虚拟机设置 在虚拟机中点击计算机右键添加一个网络位置

C# Onnx CenterNet目标检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:input.1 tensor:Float[1, 3, 384, 384] --------------------------------------------------------------- Outputs ------------------------- name&a…