21.3D surface

3D surface

python 复制代码
"""
@File    : 05-decoding-Major
@Name    : 3d_surface.py
@Author  : lyq
@Date    : 2024/11/16 23:10
@Envi    : PyCharm 
@Description:  files details
"""
import numpy as np
import matplotlib.pyplot as plt

# 设置全局默认字体为Times New Roman
plt.rcParams['font.family'] = 'Times New Roman'


def test_dynamic_performance(alpha, beta, gamma, T, N, scenario_fluctuation=0.2):
    q_n_t = np.random.uniform(1, 5, (N, T))  # Simulated quality levels
    dynamic_fluctuations = np.random.uniform(1 - scenario_fluctuation, 1 + scenario_fluctuation, (N, T))

    QoE = 0
    variances = []
    for t in range(T):
        quality = np.mean(q_n_t[:, t] * dynamic_fluctuations[:, t])  # Add dynamic fluctuation to quality
        delay = np.mean([0.1 * q * (1 + 0.1 * np.sin(10 * gamma)) for q in q_n_t[:, t]])
        variance = np.var(q_n_t[:, t] * dynamic_fluctuations[:, t])
        decoding = np.mean([0.05 * q * (1 + 0.05 * np.cos(7 * gamma)) for q in q_n_t[:, t]])

        variances.append(variance)
        QoE += (quality - alpha * delay - beta * variance - gamma * decoding)

    QoE_normalized = (QoE / (T * 5)) * 10  # Normalize QoE to 0-10 range
    variance_scaled = (np.mean(variances) / (5 ** 2)) * 1  # Scale Variance to target ~1
    return QoE_normalized, variance_scaled


# Generate a grid of alpha, beta, and gamma values for the QoE surface
alpha_range = np.linspace(0.08, 0.12, 10)  # Around fixed alpha = 0.1
beta_range = np.linspace(0.45, 0.55, 10)  # Around fixed beta = 0.5
gamma_range = np.linspace(0.045, 0.055, 10)  # Around target gamma range

# Create meshgrid for alpha, beta, and gamma
alpha_grid, beta_grid, gamma_grid = np.meshgrid(alpha_range, beta_range, gamma_range)

# Compute QoE for each combination of alpha, beta, and gamma
qoe_surface = np.zeros_like(alpha_grid)
T = 100  # Time steps
N = 5  # Number of users
for i in range(alpha_grid.shape[0]):
    for j in range(alpha_grid.shape[1]):
        for k in range(alpha_grid.shape[2]):
            alpha = alpha_grid[i, j, k]
            beta = beta_grid[i, j, k]
            gamma = gamma_grid[i, j, k]
            qoe, _ = test_dynamic_performance(alpha, beta, gamma, T, N)
            qoe_surface[i, j, k] = qoe

# Plot 3D QoE surface for fixed gamma slice
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')

# Select a slice of gamma for visualization
gamma_index = len(gamma_range) // 2  # Middle gamma value
qoe_slice = qoe_surface[:, :, gamma_index]

alpha_slice = alpha_grid[:, :, gamma_index]
beta_slice = beta_grid[:, :, gamma_index]

surf = ax.plot_surface(alpha_slice, beta_slice, qoe_slice, cmap='viridis')
ax.set_title(f"3D QoE Surface (Gamma = {gamma_range[gamma_index]:.3f})")
ax.set_xlabel("Alpha (X-axis)")
ax.set_ylabel("Beta (Y-axis)")
ax.set_zlabel("QoE")
fig.colorbar(surf, shrink=0.5, aspect=10, label='QoE')
plt.autoscale(tight=True)
plt.savefig('3D_QoE_Surface.pdf')
plt.show()
相关推荐
大模型真好玩1 小时前
大模型工程面试经典(七)—如何评估大模型微调效果?
人工智能·面试·deepseek
黎燃9 小时前
短视频平台内容推荐算法优化:从协同过滤到多模态深度学习
人工智能
TF男孩10 小时前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
飞哥数智坊10 小时前
多次尝试用 CodeBuddy 做小程序,最终我放弃了
人工智能·ai编程
后端小肥肠11 小时前
别再眼馋 10w + 治愈漫画!Coze 工作流 3 分钟出成品,小白可学
人工智能·aigc·coze
唐某人丶14 小时前
教你如何用 JS 实现 Agent 系统(2)—— 开发 ReAct 版本的“深度搜索”
前端·人工智能·aigc
FIT2CLOUD飞致云14 小时前
九月月报丨MaxKB在不同规模医疗机构的应用进展汇报
人工智能·开源
阿里云大数据AI技术14 小时前
【新模型速递】PAI-Model Gallery云上一键部署Qwen3-Next系列模型
人工智能
袁庭新15 小时前
全球首位AI机器人部长,背负反腐重任
人工智能·aigc
机器之心15 小时前
谁说Scaling Law到头了?新研究:每一步的微小提升会带来指数级增长
人工智能·openai