Giter Club home page Giter Club logo

udt-random-access's Introduction

Achieving Maximum Urgency-Dependent Throughput in Random Access

Yijin Zhang*, Aoyu Gong*, Lei Deng, Yuan-Hsun Lo, Yan Lin, Jun Li

IEEE | PDF | BibTeX

Figure: An example of the working procedure of the proposed protocol for N = 6 and D = 6.

Designing efficient random access is a vital problem for urgency-constrained packet delivery in uplink Internet of Things (IoT), which has not been investigated in depth so far. In this paper, we focus on unpredictable frame-synchronized traffic, which captures a number of scenarios in IoT communications, and generalize prior studies on this issue by considering a general ALOHA-like protocol, a general single-packet reception (SPR) channel, urgency-dependent throughput (UDT) based on a general urgency function, and the dynamic programming optimality. With a complete knowledge of the number of active users, we use the theory of Markov Decision Process (MDP) to explicitly obtain optimal policies for maximizing the UDT, and prove that a myopic policy is in general optimal. With an incomplete knowledge of the number of active users, we use the theory of Partially Observable MDP (POMDP) to seek optimal policies, and show that a myopic policy is in general not optimal by presenting a counterexample. Because of the prohibitive complexity to obtain optimal or near-optimal policies for this case, we propose two practical policies that utilize the inherent property of our MDP framework and channel model. Simulation results show that both outperform other alternatives. The robustness under relaxed system settings is also examined.

Configuration

You can reproduce our experiments using MATLAB R2021a.

  • Clone the repository: git clone https://github.com/aygong/udt-random-access.git

  • Run the script: main.m

The code may be compatible with the previous versions of MATLAB.

Quick Start

  1. Set the type of the system assumptions.

    • Run experiments under the basic system assumption.

      • Set system_assumption = 'basic-configuration'.
    • Run experiments under the relaxed system assumptions.

      • Set system_assumption = 'unknown-lambda' for unknown $\lambda$.
      • Set system_assumption = 'heterogeneous-lambdas' for heterogeneous $\lambda_1, \lambda_2, \cdots, \lambda_N$.
      • Set system_assumption = 'unsynchronized-traffic' for unsynchronized periodic traffic.
      • Set system_assumption = 'dynamic-number' for dynamic-varying $N$.
  2. Set the types of the metric, the channel model, and the urgency function.

    • Change metric_type, channel_type, and urgency_type in main.m.
  3. Set the simulation parameters.

    • Change simu_switch, simu_indept, and simu_frames in the separate run scripts.

Folder Structure

./udt-random-access/
├── README.md
|
├── basic-configuration/
|   ├── run_basic_config.m       # Run experiments under the basic system assumption
|   ├── basic_opt_ana.m          # Analyze the optimal policy (idealized)
|   ├── basic_opt_sim.m          # Simulate the optimal policy (idealized)
|   ├── basic_simQ_sim.m         # Simulate the simplified QMDP-based policy (realistic)  
|   ├── basic_furQ_sim.m         # Simulate the further simplified QMDP-based policy (realistic)
|   ├── basic_myo_sim.m          # Simulate the myopic policy (realistic)
|   ├── basic_sta_ana.m          # Analyze the optimal static scheme (realistic)
|   ├── basic_sta_sim.m          # Simulate the optimal static scheme (realistic)
|   ├── basic_DaH_ana.m          # Analyze the D&H scheme (realistic)
|   └── basic_DaH_sim.m          # Simulate the D&H scheme (realistic)
|
├── unknown-lambda/
|   ├── run_unknown_lambda.m     # Run experiments under unknown lambda
|   ├── unknown_simQ_sim.m
|   ├── unknown_furQ_sim.m
|   └── unknown_myo_sim.m
|
├── heterogeneous-lambdas/
|   ├── run_heter_lambdas.m      # Run experiments under heterogeneous lambdas
|   ├── asymmetric_binomial.m    # Compute the joint distribution of Bernoulli random variables
|   ├── heter_simQ_sim.m
|   ├── heter_furQ_sim.m
|   ├── heter_myo_sim.m
|   └── heter_sta_sim.m
|
├── unsynchronized-traffic/
|   ├── run_unsync_traffic.m     # Run experiments under unsynchronized periodic traffic
|   ├── unsync_simQ_sim.m
|   ├── unsync_furQ_sim.m
|   └── unsync_sta_sim.m
|
├── dynamic-number/
|   ├── run_dynamic_number.m     # Run experiments under the dynamic-varying number of users
|   └── dynamic_sta_sim.m
|
├── main.m                       # Compare the UDT/PLR performance
├── function_computing.m         # Compute the MDP and POMDP functions
├── QF_computing.m               # Compute the Q-functions
└── metric_computing.m           # Compute the metric

Citation

If you find the code helpful, please consider citing our paper:

@ARTICLE{zhang2023achieving,
  title={Achieving maximum urgency-dependent throughput in random access},
  author={Zhang, Yijin and Gong, Aoyu and Deng, Lei and Lo, Yuan-Hsun and Lin, Yan and Li, Jun},
  journal={IEEE Trans. Commun.},
  volume={},
  number={},
  pages={1-1},
  year={2023},
}

udt-random-access's People

Contributors

aygong avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.