# A Relay Optimization Method for NOMA-Based Power Line Communication Systems
## 3 Optimization Process and Performance Analysis
### Uplink from Relay Node to Other Users
Heuristic Optimization: The goal is to minimize total power while ensuring communication quality (capacity requirement). Simulated annealing (SA) was chosen for this problem due to its unique ability to balance global exploration and local exploitation, particularly in complex non-convex optimization landscapes. In the context of NOMA-based PLC systems, the joint optimization of power allocation and relay positioning involves multiple interdependent variables and nonlinear constraints. Traditional gradient-based methods often struggle with such problems due to their sensitivity to local minima, while heuristic methods like genetic algorithms (GAs) and particle swarm optimization (PSO) may require extensive parameter tuning or population management. The key advantages of SA in this scenario are that SA probabilistically accepts worse solutions during the search process, enabling it to escape local optima and approach the global optimum. This is critical in PLC environments where channel conditions (e.g., noise, fading) create a rugged optimization landscape. Perform multiple iterations using the simulated annealing heuristic algorithm to gradually optimize power allocation. Input: Initial power values \(p_{s}\) and \(p_{i}\) predicted CSI, noise power, and minimum capacity. Process: Define a function to calculate total power and SINR. Initialize the best power, best \(p_{s}\), and best \(p_{i}\). Iterate a fixed number of times: a. Calculate total power, \(SINR_{S}\), and \(SINR_{i}\). b. Check if capacity constraints are met and if total power is minimized. c. If conditions are met, update the best power, best \(p_{s}\), and best \(p_{i}\). d. Adjust \(p_{s}\) and \(p_{i}\) using random perturbation. Return the best \(p_{s}\) and best \(p_{i}\). Output: Optimized power values for best \(p_{s}\) and best \(p_{i}\). The performance of the simulated annealing algorithm heavily depends on the choice of parameters, particularly the cooling rate and initial temperature. In this study, we carefully selected these parameters based on extensive experimentation and analysis to ensure optimal performance. The initial temperature was set to a high value (e.g., 1000) to allow the algorithm to explore a wide range of solutions in the early stages. This ensures that the algorithm does not become trapped in local optima prematurely. The traditional cooling rate was set to 0.999, which was determined through iterative testing to balance exploration and exploitation. A slower cooling rate allows the algorithm to thoroughly explore the solution space, while a faster cooling rate may lead to premature convergence. Traditional simulated annealing algorithms use a fixed cooling rate (alpha), which may lead to excessively fast or slow cooling in certain cases, thereby affecting the convergence speed and the quality of the solution. This paper proposes adopting an adaptive temperature control mechanism to optimize the simulated annealing algorithm. The adaptive temperature control dynamically adjusts the cooling rate based on the quality of the current solution and the frequency of accepting new solutions. Specifically, if the solution improves, the cooling rate is increased to accelerate convergence. Conversely, if the solution deteriorates, the cooling rate is decreased to allow more exploration. This adaptive approach ensures that the algorithm can escape local optima while efficiently converging to the global optimum. The specific temperature update rule is as follows:  
\[T_{k+1}=\alpha_{k}\cdot T_{k} \tag{32}\]  
where \(\alpha_{k}\) is the adaptive cooling rate, which can be dynamically adjusted based on the quality of the current solution. Specifically:  
\[\alpha_{k}=\left\{ \begin{array}{ll}\alpha\cdot\mathrm{adjustmentFactor}_{ \mathrm{improvement}}&\mathrm{if}\ f_{\mathrm{new}}<f_{\mathrm{current}}\\ \alpha\cdot\mathrm{adjustmentFactor}_{\mathrm{deterioration}}&\mathrm{if}\ f_{ \mathrm{new}}\geq f_{\mathrm{current}}\end{array} \right.