# 颜佳佳论文

## 多智能体随机网络结构的实时精确估算

### 基于扰动理论的特征向量估算方法

**计算特征值扰动**

$$\Delta \lambda_{A_i} = \lambda_{A2} - \lambda_{A1}$$

**特征向量修正项**
$$
U_B = \sum_{k=1}^{n} \frac{\Delta \lambda_{A_i} U_k}{(\lambda_{A_i} - \lambda_{A_k})}
$$

- **解释**：
  - $U_k$ 是 $A_{t1}$ 的第 $k$ 个特征向量
  - 分母 $(\lambda_{A_i} - \lambda_{A_k})$ 表示特征值差异，避免奇异（需假设 $\lambda_{A_i} \neq \lambda_{A_k}$）
  - 分子 $\Delta \lambda_{A_i}$ 反映特征值变化对特征向量的影响

**更新特征向量**
$$
U_{A2} = U_{A1} + U_B
$$
**意义**：通过一阶扰动修正当前特征向量，得到未来时刻的 $U_{A2}$



## 网络结构优化

**直接SNMF分解（无优化）**

- 输入矩阵：原始动态网络邻接矩阵 $A$（可能稠密或高秩）
- 处理流程：
  - 直接对称非负矩阵分解：$A \approx UU^T$
  - 通过迭代调整$U$和旋转矩阵$Q$逼近目标
- 存在问题：
  - 高秩矩阵需要保留更多特征值（$\kappa$较大）
  - 非稀疏矩阵计算效率低

**先优化再SNMF（论文方法）**

- 优化阶段（ADMM）：
  - 目标函数：$\min_{A_{\text{opt}}} (1-\alpha)\|A_{\text{opt}}\|_* + \alpha\|A_{\text{opt}}\|_1$
  - 输出优化矩阵$A_{\text{opt}}$
- SNMF阶段：
  - 输入变为优化后的$A_{\text{opt}}$
  - 保持相同分解流程但效率更高



### 网络优化中的邻接矩阵重构问题建模与优化

**可行解集合定义（公式4-4）**
$$
\Omega = \left\{ A \middle| A^T = A,\, A \odot P = A_{\text{pre}} \odot P,\, A \odot A_{\max}' = 0 \right\}
$$

- **$A^T = A$**：确保邻接矩阵对称  
- **$A \odot P = A_{\text{pre}} \odot P$**：掩码矩阵$P$ ，**原来已有的连接不变，只让优化原本没有连接的地方**。（$\odot$为Hadamard积）  
- **$A \odot A_{\max}' = 0$**：功率约束矩阵$\ A_{\max}'$ 禁止在原本无连接的节点间新增边  



**限制矩阵$A_{\max}'$的定义（公式4-5）**
$$
A'_{\max, ij} = 
\begin{cases} 
0, & \text{若 } A_{\max, ij} \ne 0 \\ 
1, & \text{若 } A_{\max, ij} = 0 
\end{cases}
$$

- $A_{\max, ij}$表示在最大发射功率下哪些节点对之间能连通（非零表示可连通，零表示即便满功率也连不通）
- $A_{\max}'$在“连不通”的位置上是1，其他位置是0。通过$A_{\max}'$标记禁止修改的零元素位置  
- 对于所有满足 $A'_{\max,ij}=1$ 的位置（即物理不可连通的节点对），必须有 $A_{ij}=0$，即始终保持断开



**原始优化目标（公式4-6）**
$$
\min_{A} \, (1-\alpha)\, \text{rank}(A) + \alpha \|A\|_0
$$
$\|A\|_0$ 表示矩阵 $A$ 中非零元素的个数

- **目标**：平衡低秩性（$\text{rank}(A)$）与稀疏性（$\|A\|_0$）  
- **问题**：非凸、不可导，难以直接优化  



**凸松弛后的目标（公式4-7）**
$$
\min_{A} \, (1-\alpha)\, \|A\|_* + \alpha \|A\|_1
$$

- **核范数$\|A\|_*$**：奇异值之和，替代$\text{rank}(A)$  
- **L1范数$\|A\|_1$**：元素绝对值和，替代$\|A\|_0$  
- **性质**：凸优化问题，存在全局最优解  



**求解方法**

- **传统方法**：
  可转化为**半定规划（SDP）**问题，使用内点法等求解器。但缺点是计算效率低，尤其当矩阵规模大（如多智能体网络节点数 $n$ 很大）时不可行。
- **改进方法**：
  采用**ADMM（交替方向乘子法）**结合**投影**和**对偶上升**的方法，适用于动态网络（矩阵频繁变化的情况）。



### ADMM核心算法

#### **变量定义与作用**

- **输入变量**：
  - $A_{pre}$：初始邻接矩阵（优化前的网络拓扑）。
  - $P$：对称的0-1矩阵，用于标记 $A_{pre}$ 中非零元素的位置（保持已有边不变）。
  - $A'_{max}$：功率最大时的邻接矩阵的补集（$A'_{maxij} = 1$ 表示 $A_{maxij} = 0$，即不允许新增边）。
  - $\alpha$：权衡稀疏性（$L_1$ 范数）和低秩性（核范数）的系数。
  - **iters**：ADMM迭代次数。



<img src="https://pic.bitday.top/i/2025/04/03/ouy27i-0.png" alt="image-20250403150317427" style="zoom:80%;" />



#### **算法步骤详解**

**(S.1) 更新原始变量 $A$（对应ADMM的$x$步）**

- **代码行4-17**：通过内层循环（投影和对偶上升）更新 $A$。
  - **行4-11**：
    - 通过内层循环（行8-11）迭代更新 $R$，本质是**梯度投影法**：
      - $temp_R^{k+1} = M - X^k \odot A_{\text{pre}}$（计算残差）。
      - $X^{k+1} = X^k + \beta(A_{\text{pre}} \odot temp_R^{k+1})$（梯度上升步，$\beta$ 为步长）。
    - **本质**：通过迭代强制 $A$ 在 $P$ 标记的位置与 $A_{pre}$ 一致。
  - **行13-17**：将 $A$ 投影到 $A \odot A'_{\text{max}} = 0$ 的集合。
    - 类似地，通过内层循环（行14-17）更新 $Y$：
      - $temp_A^{k+1} = D_2 - Y^k \odot A'_{\text{max}}$（残差计算）。
      - $Y^{k+1} = Y^k + \gamma(A'_{\text{max}} \odot temp_A^{k+1})$（对偶变量更新）。

**(S.2) 更新辅助变量 $Z_1, Z_2$（对应ADMM的$z$步）**

通过阈值操作分离目标函数的两部分：

- **行18-19**：分别对核范数和 $L_1$ 范数进行阈值操作：
  - $Z_1^{t+1} = T_r(A^{t+1} + U_1^t)$：  
    $T_r(\cdot)$ 是**奇异值阈值算子**（核范数投影），对$A + U1$ 做SVD分解，保留前 $r$ 个奇异值。**作用**：把自己变成低秩矩阵=》强制 $A$ 低秩。
  - $Z_2^{t+1} = S_{\alpha}(A^{t+1} + U_2^t)$：  
    $S_{\alpha}(\cdot)$ 是**软阈值算子**（$L_1$ 范数投影），将小于 $\alpha$ 的元素置零。把自己变成稀疏矩阵=》促进 $A$ 的稀疏性。

**(S.3) 更新 拉格朗日乘子$U_1, U_2$（对应ADMM的对偶上升）**

- **行20-21**：通过残差 $(A - Z)$ 调整拉格朗日乘子 $U_1, U_2$：
  - $U_1^{t+1} = U_1^t + A^{t+1} - Z_1^{t+1}$（核范数约束的乘子更新）。
  - $U_2^{t+1} = U_2^t + A^{t+1} - Z_2^{t+1}$（$L_1$ 范数约束的乘子更新）。
  - **作用**：惩罚 $A$ 与辅助变量 $Z1, Z2$ 的偏差（迫使$A$更贴近$Z$），推动收敛。



## 网络结构控制

- **核心目标**：将优化后的低秩稀疏矩阵 $A$ 转化为**实际网络参数**（如功率、带宽），并维持动态网络的**连通性**和**稳定性**。
- **具体实现**：
  1. 通过PID控制调整发射/接收功率，使实际链路带宽匹配矩阵 $A$ 的优化值。
  2. 结合CSMA/CA协议处理多节点竞争，确保稀疏网络下的高效通信。

```plaintext
优化模型（4.2节）
   ↓ 生成目标带宽矩阵A
香农公式 → 计算目标Pr → 自由空间公式 → 计算目标Pt
   ↓
PID控制发射机（AGC电压） → 实际Pt ≈ 目标Pt
   ↓
PID控制接收机（AAGC/DAGC） → 实际Pr ≈ 目标Pr
   ↓
实际带宽 ≈ Aij （闭环反馈）
```

- **发射机**：  

  - **功能**：将数据转换为无线信号并通过天线发射。  
  - **关键参数**：发射功率（$P_t$）、天线增益（$G_t$）、工作频率（决定波长$\lambda$）。  
  - **控制目标**：通过调整AGC电压，动态调节发射功率，以匹配优化后的带宽需求（矩阵$A$中的$A_{ij}$）。  

- **接收机**：  

  - **功能**：接收无线信号并转换为可处理的数据。  
  - **关键参数**：接收功率（$P_r$）、噪声（$N_0$）、天线增益（$G_r$）。  
  - **控制目标**：通过AAGC/DAGC增益调整，确保接收信号强度适合解调，维持链路稳定性。  

  

### 具体步骤

**步骤1：生成目标带宽矩阵 $A$（4.2节优化模型）**

- **数学建模**：

  - 通过凸松弛优化问题（公式4-7）得到低秩稀疏矩阵 $A$：
    $$
    \min_A (1-\alpha) \|A\|_* + \alpha \|A\|_1 \quad \text{s.t.} \quad A \in \Omega
    $$

  - 约束集 $\Omega$ 确保矩阵对称性、保留原有链路（$A \odot P = A_{\text{pre}} \odot P$）、禁止不可达链路（$A \odot A'_{\max} = 0$）。

- **物理意义**：

  - 非零元素 $A_{ij}$ 直接表示 **目标信道带宽** $C_{ij}$（单位：bps），即：
    $$
    A_{ij} = C_{ij} = W \log_2\left(1 + \frac{P_r}{N_0 W}\right) \quad \text{(香农公式4-10)}
    $$

**步骤2：从带宽 $A_{ij}$ 反推功率参数**

- **接收功率 $P_r$ 计算**：

  - 根据香农公式解耦：
    $$
    P_r = (2^{A_{ij}/W} - 1) N_0 W
    $$

  - **输入**：噪声 $N_0$、带宽 $W$、目标带宽 $A_{ij}$。

- **发射功率 $P_t$ 计算**：

  - 通过自由空间公式（4-11）：
    $$
    P_t = \frac{P_r L (4\pi d)^2}{G_t G_r \lambda^2}
    $$

  - **输入**：距离 $d$、天线增益 $G_t, G_r$、波长 $\lambda$、损耗 $L$。

- **逻辑分支**：

  - 若 $A_{ij} \neq A_{\text{pre}ij}$（需调整链路）：
    - 计算 $P_r$ 和 $P_t$；
  - 若 $A_{ij} = 0$（无连接）：
    - 直接设 $P_r = P_t = 0$。

**步骤3：发射机功率调整（图4-2a）**

1. **定义目标**：$P_t$（来自步骤2）。
2. **测量实际**：通过传感器获取当前发射功率 $P_{t,\text{actual}}$。
3. **计算偏差**：$e(t) = P_t - P_{t,\text{actual}}$。
4. **PID调节**：通过AGC电压改变发射功率，逼近 $P_t$。

**步骤4：接收机功率调整（图4-2b）**

1. **定义目标**：$P_r$（来自步骤2）。
2. **测量实际**：检测空口信号功率 $P_{r,\text{actual}}$。
3. **计算偏差**：$e(t) = P_r - P_{r,\text{actual}}$。
4. **PID调节**：
   - 调整AAGC（模拟增益）和DAGC（数字增益），持续监测直至 $|e(t)| < \epsilon$。



## 智能体随机网络结构实时表示的应用

### (1) 谱聚类分组Spectral_Clustering（表5.1）

**目标**：将无人机和充电站划分为 $K$ 个簇，使充电站位于簇中心。  
**步骤**：  

1. **输入**：带权邻接矩阵 $A$（权值=无人机间距离）、节点数 $N$、充电站数 $K$。  
2. **拉普拉斯矩阵**：  
   $$L = D - A, \quad D_{ii} = \sum_j A_{ij}$$  
3. **归一化**：  
   $$L_{norm} = D^{-\frac{1}{2}}LD^{\frac{1}{2}}$$  
4. **谱分解**：求 $L_{norm}$ 前 $K$ 小特征值对应的特征向量矩阵 $V \in \mathbb{R}^{N \times K}$。  
5. **聚类**：对 $V$ 的行向量进行 k-means 聚类，得到标签 $\text{labels}$。  

**输出**：每个无人机/充电站的簇编号 $\text{labels}$。

### (2) 无人机选择充电站（表5-2）

**目标**：电量低的无人机前往对应簇中心的充电站。  
**步骤**：  

1. **周期性运行**（间隔 $\Delta t$）：  
   - 通过 `Push_Sum` 协议获取所有无人机位置 `Positions`。  
   - 计算距离矩阵 $A$。  
2. **动态聚类**：调用 `Spectral_Clustering(A)` 更新簇标签。  
3. **充电触发**：若电量 $E < P_{th}$，向簇中心请求坐标 $\text{CS\_point}$ 并前往。  

**关键公式**：  
$$A_{ij} = \| \text{Position}_i - \text{Position}_j \|_2$$

### (3) 充电站跟踪算法（表5-3）

**目标**：充电站动态调整位置至簇中心。  
**步骤**：  

1. **周期性运行**（间隔 $\Delta t$）：  
   - 同无人机算法获取 $A$ 和 `labels`。  
2. **定位簇中心**：  
   - 充电站根据编号匹配簇标签。  
   - 计算簇内无人机位置均值：  
     $$\text{CS\_point} = \frac{1}{|C_k|} \sum_{i \in C_k} \text{Position}_i$$  
     其中 $C_k$ 为第 $k$ 簇的节点集合。  
3. **移动至新中心**并广播位置。  

---

### (4) 算法改进

**替换通信协议**：用第3章的卡尔曼滤波 替代 `Push_Sum`，获取特征值、特征向量重构全局矩阵 $A$，减少消息传递。  









