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()
相关推荐
gddkxc19 分钟前
AI CRM中的数据分析:悟空AI CRM如何帮助企业优化运营
人工智能·信息可视化·数据分析
我是李武涯22 分钟前
PyTorch Dataloader工作原理 之 default collate_fn操作
pytorch·python·深度学习
AI视觉网奇35 分钟前
Python 检测运动模糊 源代码
人工智能·opencv·计算机视觉
东隆科技36 分钟前
PRIMES推出SFM 2D全扫描场分析仪革新航空航天LPBF激光增材制造
人工智能·制造
无风听海1 小时前
神经网络之计算图repeat节点
人工智能·深度学习·神经网络
刘晓倩1 小时前
在PyCharm中创建项目并练习
人工智能
Kratzdisteln1 小时前
【Python】绘制椭圆眼睛跟随鼠标交互算法配图详解
python·数学·numpy·pillow·matplotlib·仿射变换
Dev7z1 小时前
阿尔茨海默病早期症状影像分类数据集
人工智能·分类·数据挖掘
神码小Z1 小时前
DeepSeek再开源3B-MoE-OCR模型,视觉压缩高达20倍,支持复杂图表解析等多模态能力!
人工智能
maxruan1 小时前
PyTorch学习
人工智能·pytorch·python·学习