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

news2025/1/24 22:38:50

问题一要求在特定区域内部署两个边缘服务器,以便根据计算需求分布覆盖最大的计算需求。每个边缘服务器都有一个覆盖半径为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 = False
    for 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 = True
            break
    if 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.coloradmin.cn/o/1289566.html

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

相关文章

最小生成树算法与二分图算法

文章目录 概述 P r i m Prim Prim 算法 - 稠密图 - O ( n 2 ) O(n^2) O(n2)思路概述时间复杂度分析AcWing 858. Prim算法求最小生成树CODE K r u s k a l Kruskal Kruskal 算法 - 稀疏图 - O ( m l o g m ) O(mlogm) O(mlogm)思路解析时间复杂度分析AcWing 859. Kruskal算法求…

JDBC增删查改操作-jsp实验-实现页面跳转

实验 JDBC增删查改操作 一、实验目的 1、掌握JDBC增删查改MySQL或者sql server数据库表的方法。 2、在增删查改页面间跳转 二、实验内容 在MySQL或者sql server中创建一张表,之后使用JDBC进行增删查改。(功能不限),包括&#xff1…

Java多线程万字详解(基础概念、多线程实现方式、锁、消费者机制、线程池)

1 、基础概念解释 1.1线程与进程 线程:是操作系统能够进行运算调度的最小单位。它被包含在进程当中,是进程中的实际运作单位。 进程:是程序的基本执行实体。一个进程中至少有一个线程。一个进程中是可以有多个线程的。如QQ,微信那…

并发编程(已整理,已废弃)

这一块知识,那真是有的啃了。 直接先看速成基础,再直接吃掉高频考点。 每个小知识点,直接看短视频,浅浅了解,在写下来就是自己的资料。 # 基础 一个进程有多个线程,多个线程共享进程的堆和方法区&#xf…

Linux环境变量与命令行参数

Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种…

​DeepMind:开发出可以向人类学习的人工智能

Nature发表了一篇Google DeepMind的研究成果:研究人员在3D模拟环境中使用神经网络和强化学习,展示了AI智能体如何在没有直接从人类那里获取数据的情况下,通过观察来学习和模仿人类的行为。 这项研究被视为向人工通用智能(AGI&…

ssm土家风景文化管理平台源码和论文答辩PPT

摘要 土家风景文化管理平台是土家风景文化管理必不可少的一个部分。在风景文化管理的整个过程中,平台担负着最重要的角色。为满足如今日益复杂的管理需求,各类土家风景文化管理平台也在不断改进。本课题所设计的土家风景文化管理平台,使用jav…

SAP MM中的科目分配类别是什么,如何配置

一、概述 这篇文章将概述 SAP MM 中的科目分配类别的基本概念以及如何在系统中配置它。我将在SAP配置中逐步解释配置。在此之前要理解采购的两种模式,库存物料采购和消耗型物料采购之间的区别。 1.1、库存采购 库存采购的物料,在收货后做库存管理&…

python创建子进程执行ping命令无法检测到超时情况(破案了:ping命令-W参数单位为s,我写了个1000)

文章目录 问题描述破案了:ping命令-W参数单位为s,我写了个1000。。。,,ԾㅂԾ,, 问题描述 我用了创建子进程的方式去执行ping,一开始用os.system(),有问题,后面用subprocess问题还是存在,后来我把这个改了&…

Python BeautifulSoup 选择器无法找到对应元素(异步加载导致)

文章目录 问题原因解决方案找到包含内容的 XHR 异步请求无头浏览器 个人简介 问题 使用 Python BeautifulSoup 爬取一个股吧帖子发现某个样式无法找到,但是在网页中确实存在这个元素:网页使用 document.querySelector 可以正常查找: 但是 Py…

javascript实现List列表数据结构

书籍推荐 有幸拜读《数据结构与算法Javascript描述》这本书,先强烈安利一波!非常感谢作者大大给我们前端领域带来这本书。 全书从javascript的角度出发,简单明了的分析了数据结构在javascript领域的实现过程与实际的应用案例,且…

ps快捷键和常见项目总结

处理以像素构成的位图的软件 Mac笔记本快捷键: 打开文件:commandO 图像缩放:command 多个文件切换:同一桌面中:command (英文状态下输入) 切换屏幕模式:F,全屏模式下Tab键可进行切换 首选项—性能&a…

class051 二分答案法与相关题目【算法】

class051 二分答案法与相关题目【算法】 算法讲解051【必备】二分答案法与相关题目 code1 875. 爱吃香蕉的珂珂 // 爱吃香蕉的珂珂 // 珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉 // 警卫已经离开了,将在 h 小时后回来。 // 珂珂…

Swing程序设计详解(二)

一 文件标签组与图标 在Swing程序设计中,标签(JLabel)被用于显示文本、图标等内容。在Swing应用程序的用户系面中,用户能够通过标签上的文本、图标等内容获得相应的提示信息。 1.1 JLable标签 标签(JLabel)的父类是JComponent类。虽然标签不能被添加…

Qt绘制直线箭头

一.使用QPainter绘制 满足条件: 任意角度直线都可绘制箭头所有箭头同样大小 void MainWindow::paintEvent(QPaintEvent*) {QPainter painter(this); // 创建QPainter对象,并指定绘制目标为当前的widgetQLineF line(50,20,500,500);double distanceFromEnd1 20;qre…

LeetCode Hot100 200.岛屿数量

题目: 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以…

目标检测综述(待补ing)

文章目录 摘要引言目标检测发展历程目标检测路线图传统检测器基于CNN的两阶段检测器基于CNN的一阶段检测器 目标检测数据集及指标数据集评价指标标注软件 摘要 目标检测作为计算机视觉中最基本、最具挑战性的问题之一,近年来受到了广泛的关注。它在过去二十五年的发…

2023中医药国际传承传播大会在深圳召开

12月2日,2023中医药国际传承传播大会在深圳召开,大会由世界针灸学会联合会、中新社国际传播集团、中国新闻图片网、中国民族医药学会、中国针灸学会主办,世界针灸学会联合会健康传播工作委员会、中新雅视文化发展有限公司公司与深圳巨邦传媒集…

【西交少年班】数据解读近两年西少录取数据,凭什么让浙江霸榜?

招生简章 12月2日,西安交通大学发布了2024年“少年班”招生简章,大家可以参照这篇文章了解少年班招生信息。 【重磅】初三可报,直上985,西安交通大学2024年“少年班”招生简章 数据说话 最初的目的: 一是&#xf…

知识小课堂:在光伏电站中发生绝缘阻抗异常的排查方法

【摘要】近几年,光伏发电技术迅猛发展,光伏扶贫电站及分布式光伏使光伏发电走进千家万户。然而光伏发电设备运行期间仍存在隐患。及时发现并解决*常见异常运行故障,可以很大地提高光伏发电设备可利用率,是保证光伏发电设备正常运行…