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 = 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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

案例058:基于微信小程序的智能社区服务系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

Python脚本模拟真实设备刷视频播放量、浏览量

简述 Python3脚本刷视频播放量 前情提示 系统:centOS7,8阿里云一折优惠云小站_专享特惠_云产品推荐-阿里云 宝塔8.x 一说 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行字样的为提示或者…

半导体划片机助力氧化铝陶瓷片切割:科技与工艺的完美结合

在当今半导体制造领域,氧化铝陶瓷片作为一种高性能、高可靠性的材料,被广泛应用于各种电子设备中。而半导体划片机的出现,则为氧化铝陶瓷片的切割提供了新的解决方案,实现了科技与工艺的完美结合。 氧化铝陶瓷片是一种以氧化铝为基…

三相电表可以当作高压电表使用吗?

在电力系统中,为了准确测量和计量电能的使用情况,电表起着至关重要的作用。与此同时,为了满足不同电网的需求,各种类型的电表被研发和设计出来。其中,三相电表作为常见的一种类型,广泛应用于低压电网中。但…

打工人副业变现秘籍,某多/某手变现底层引擎-StableDiffusionUI引擎部署

Stable Diffusion Web UI是一个基于Stable Diffusion的交互式程序,使用gradio模块构建而成。除了基本的txt2img、img2img等功能外,该模块还包含许多模型融合改进、图片质量修复等附加升级。所有这些功能都可以通过易于使用的Web应用程序图形用户界面进行访问。 一、简介 St…

【数据结构(八)】哈希表

文章目录 1. 基本概念1.1. 哈希表基本介绍 2. 实例应用2.1. 思路分析2.2. 代码实现2.2.1. 实现添加、显示功能2.2.2. 实现查找功能 1. 基本概念 先看一个实际需求: google 公司的一个上机题:     有一个公司,当有新的员工来报道时&…

Swing程序设计详解(二)

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

写实3D游戏模型纹理贴图设置

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

CSU计算机学院2023秋C语言期中题目思路分享(前三道题)

文章目录 写在前面A:个税计算——阅读理解与数据类型转换原题输入输出样例输入样例输出 题目分析题目理解代码实现与问题解决 我的代码 B:时制转换——问题是一点点解决的原题输入输出样例输入样例输出 题目分析我的代码 C:统计进位——人教版…

js基础之事件监听案例入门

事件绑定 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head&…

力扣 Java 101.对称二叉树

给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 提示&#xff1a; 树中节点数目在…

粒子群优化算法的实践

粒子群优化算法的实践 flyfish 粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;或者粒子群算法 红叉的地方是理想之地&#xff0c;这些粒子都想去&#xff0c;总结8个字是信息共享&#xff0c;个人决策。 上完图之后&#xff0c;上代码&a…

【Spring Boot 源码学习】ApplicationContextInitializer 详解

Spring Boot 源码学习系列 ApplicationContextInitializer 详解 引言往期内容主要内容1. 初识 ApplicationContextInitializer2. 加载 ApplicationContextInitializer3. ApplicationContextInitializer 的初始化 总结 引言 书接前文《初识 SpringApplication》&#xff0c;我们…

Python爬虫之重放攻击详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 重放攻击是一种网络攻击方式&#xff0c;攻击者通过截获合法用户的请求&#xff0c;并将其重新发送&#xff0c;以模拟合法用户的行为。在Python爬虫领域&#xff0c;了解重放攻击的原理和防范方法至关重要。本文…

DDSP-SVC-3.0完全指南:一步步教你用AI声音开启音乐之旅

本教程教你怎么使用工具训练数据集推理出你想要转换的声音音频&#xff0c;并且教你处理剪辑伴奏和训练后的音频合并一起&#xff0c;快来试试看把&#xff01; 1.使用的工具 要想训练ai声音&#xff0c;首先需要有各种工具&#xff0c;还需要我们提供你需要训练的声音&#…

简单桶排序

#include<stdio.h> int main() { int a[11], i, j, t; for (i 0;i < 10;i) a[i] 0;//初始化为零 for (int i 1;i < 5;i)//循环输入5个数&#xff1b; { scanf("%d", &t);//把每一数读取到变量t中 a[t];/…

淘宝api接口获取商品详情 评论数据

淘宝商品详情评论API接口是一种用于获取淘宝商品详情评论信息的接口。通过联讯数据该接口&#xff0c;开发者可以获取到商品详情页面的评论数据&#xff0c;包括评论内容、评论时间、评论者信息等。 使用淘宝商品详情评论API接口可以方便地获取淘宝平台上大量商品的评价数据&a…

64位Office API声明语句第113讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…

1688跨境货源铺货API接口商品采集接口

在跨境电商运营中&#xff0c;不少卖家都会优先选择1688平台产品作为跨境店铺货源。 为帮助卖家提升运营效率&#xff0c;正式上线 1688一键跨境铺货及采购功能&#xff0c;帮助跨境卖家实现选品、铺货及采购一步到位&#xff01; 一键铺货&#xff0c;快速选品 公共参数 名称…

基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现汽车在线销售系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…