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()
相关推荐
WangYaolove131412 分钟前
请介绍一下Python的网络编程以及如何使用socket模块进行网络通信
开发语言·网络·python
DisonTangor19 分钟前
TableGPT2-7B:用于表格数据分析的大规模解码器模型
人工智能·数据挖掘·数据分析
codists20 分钟前
《Django 5 By Example》阅读笔记:p211-p236
python·django
pumpkin8451420 分钟前
Django
后端·python·django
Altair澳汰尔25 分钟前
数据分析丨世界杯冠军猜想:EA 体育游戏模拟能成功预测吗?
人工智能·游戏·数据挖掘·数据分析
噜噜噜噜鲁先森28 分钟前
零基础利用实战项目学会Pytorch
人工智能·pytorch·python·深度学习·神经网络·算法·回归
程序员陆通40 分钟前
Streamlit + AI大模型API实现视频字幕提取
人工智能·音视频
DisonTangor41 分钟前
【AI绘画】Alpha-VLLM 的 Lumina-Next:新一代图像生成器
人工智能·aigc