XincFun - 学习笔记
type: channel
link: https://xinc.fun/index.php/category/xxrj/
description: 记录学习心得
items: mac环境下配置docker：openGauss3.0.0+DBeaver
items: OS-Homework3 Docker环境配置经验若干
items: Paper阅读杂记
items: 数学建模与模拟人口问题作业
items: 优化方法基础知识：向量范数、矩阵范数、方向导数、梯度和海森矩阵
items: 数学建模与模拟非线性优化作业

mac环境下配置docker：openGauss3.0.0+DBeaver
type: item
date: 2025-10-19T18:28:00+08:00
description: 碎碎念 此文章为macOS使用docker配置openGauss的简单指引。之所以选择3.0.0版本，是因为我测试了若干版本后，发现很多更高的版本都会出现docker运行容器闪退的问题，于是根据 https://blog.csdn.net/Katharsis_Tk/article/details/138305306 和@ysy同学提供的经验，更换3.0.0版本后正常，特别感谢！ 但是，上述教程仍然存在一些问题，所以建议参考本文。 [scode type="blue"]本教程基于macOS，但windows亦可作为参考。windows适配的版本号未经测试。 推荐使用适宜的网络环境，如果没有，可以更换国内镜像源。 [/scode] STEP1 下载安装docker 有关docker desktop的安装可以参考上述文章的前半部分，这里不再赘述。 或者可以参考以下文章： [post cid="136" /] STEP2 拉取openGauss镜像 docker配置完成后，在后台打开docker desktop，然后打开终端输入以下命令，拉取3.0.0版本的镜像： docker pull enmotech/opengauss:3.0.0 等待拉取完成即可。 ​​ STEP3 创建openGauss容器 docker run --name opengauss --privileged=true -d -e GS_PASSWORD=openGauss@123 -p 5432:5432 enmotech/opengauss:3.0.0 运行该命令会返回一串id。 ​​ [scode type="red"]openGauss的密码要求包含大小写字母、数字和特殊符号。 作为测试，不推荐在此步修改GS_PASSWORD。 [/scode] 然后打开docker，验证一下是否处于运行状态 ​​ 此步中，如果出现容器运行闪退的情况，请检查： 1.端口是否被占用； 2.openGauss版本号是否为3.0.0。 上述命令中，-p 5432:5432​的位置不可改变。冒号前代表宿主机（即本机电脑）的端口号，冒号后代表docker中对应的端口号。如果你需要自定义，仅推荐修改前者。 如果容器处于Running状态，并且Port(s)列也正确显示了端口映射情况，则此步正确完成。 STEP4 完成openGauss的基础配置 此步参考https://blog.csdn.net/Katharsis_Tk/article/details/138305306。 安装后的openGauss默认有一个用户gaussdb，账户密码就是刚刚设置的密码，这里是openGauss@123 打开终端执行以下步骤： 先切换到omm用户,然后使用gsql工具创建普通用户方便管理： su - omm gsql -d postgres -U gaussdb -W openGauss@123 CREATE USER myuser WITH PASSWORD "userpw1."; 其中，"myuser"和"userpw1."可以分别替换为你设定的账号和密码。 STEP5 配置DBeaver 可以前往https://dbeaver.io/download/下载对应版本的DBeaver ​​ macOS可以直接使用brew下载（推荐） brew install --cask dbeaver-community 使用brew下载需要静待其完成安装，然后在启动台处即可找到。 如果提示没有brew可以自行搜索安装homebrew，一个强大的包管理器。 ​​ 然后，下载并解压对应架构的openGauss JDBC驱动。 如果你是windows系统或Intel芯片的mac系统，通常选择x86_64；如果你是M芯片的mac系统，选择AArch64。 ​​ ​​ 在DBeaver中，点击菜单栏的“Driver Manager”，然后点击NEW创建新的驱动。 在创建新驱动页，依次点击Libraries，Add File，添加我们刚刚解压的驱动文件（通常为带版本号的这个jar文件） 然后点击Find Class ​​ 完成后，切换到Settings，按照如下设置完成后，点击OK即可。（ID不用改） [scode type="blue"]2025.10.21补充：URL如下 jdbc:opengauss://{host}:{port}/{database} 方便各位粘贴[/scode] ​​ 然后，在主界面，右键如图所示的postgres，选择Edit connection，然后填写用户和密码。可以是默认的账户，也可以是刚刚你新设置的账户。如果填写默认账户，且你没有修改我给出的默认密码，则默认密码是openGaus…

OS-Homework3 Docker环境配置经验若干
type: item
date: 2025-09-24T00:27:00+08:00
description: 碎碎念 我在完成OS课程的Homework3时，本以为是很简单的配置，但不知是否因为本机环境太杂乱，还是遇到了一些小问题。由于立下了这个学期开始一定要坚持写一些东西、以免被AI支配的Flag，所以把这些不足为道的经验分享给大家，希望能帮助到遇到同样问题的同学。 ::aru:cryingface:: STEP1 Docker下载及安装 如果你是Windows或Mac，可以直接从Docker官网下载适用于Windows或Mac的Docker Desktop安装包。按照向导完成安装即可。如果是Linux，相信你可以跳过此步。 建议参考网上的教程安装以及检验，不再赘述。之后的步骤记得保证Docker处于运行状态。 STEP2 插件安装 无论是VScode还是Cursor，都可以直接在扩展处搜索安装此插件。至此，准备工作就完成了。 STEP3 使用Dockerfile构建环境 这一步就容易出问题了。按照老师的步骤进行，你可能会遇到： "Docker not found" 错误 如果在执行reopen in container时遇到类似于“Docker not found”的错误提示，首先检查Docker是否正确安装并运行。Windows或Mac可以直接查看任务栏Docker Desktop是否正常工作；Linux环境可以通过以下命令检查Docker状态：sudo systemctl status docker 如果Docker没有启动，请尝试启动它： sudo systemctl start docker 如果还是无法找到Docker，检查VScode的插件是否正确安装，并确保VScode的设置中Docker路径配置正确，可以尝试重启。 "无法连接到远程开发容器" 错误 此错误一般出现在输入"reopen in container"创建容器之后，同时控制台可能输出以下错误信息（节选）： type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root --include-configuration --include-merged-configuration [2025-09-23T11:37:12.076Z] Exit code 1 遇到此错误时，可以尝试以下解决方案： 解决方法 进入 lmbench 文件夹下的 .devcontainer 文件夹。 打开 Dockerfile 文件，并将内容替换为以下配置： # 使用 Ubuntu 22.04 作为基础镜像 FROM ubuntu:22.04 # 安装ca-certificates以解决证书验证问题 RUN apt-get update && apt-get install -y ca-certificates # 如果BFSU镜像有问题，可以将镜像源替换为官方Ubuntu镜像 # COPY sources.list /etc/apt/sources.list # 更新包列表并安装wget RUN apt-get update && apt-get install -y wget # 添加LLVM的GPG密钥 RUN wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc # 更新包列表 RUN apt-get update # 安装必要的软件包和工具链 RUN apt-get update && apt-get install -y \ make \ git \ gcc \ clang \ clangd \ gdb && \ rm -rf /var/lib/apt/lists/* # 设置默认的工作目录 WORKDIR /workspace/lmbench 此问题一般是证书验证问题或网络问题导致的，通常更换Dockerfile的内容后即可正常下载镜像创建容器了。如果仍有网络问题，可以尝试使用特殊方法，或是自行搜索教程，更换其它源。 STEP4 编译评测 经过前面的配置，现在的VScode已经处于Linux环境中，接下来是进行编译和评测的步骤。 编译 lmbench 在 lmbench 目录下，使用以下命令来编译 lmbench： make results 执行 make results 后，你会看到一系列提示，要求你设置一些测试选项。通常情况下，可以直接按回车键使用默认设置即可，无需更改。 注意 在编译过程中，你可能会遇到一些路径问题，错…

Paper阅读杂记
type: item
date: 2025-07-19T23:28:00+08:00
description: MemOS: An Operating System forMemory-Augmented Generation (MAG) in LargeLanguage Models (Short Version) Part1 核心内容 LLMs的记忆受限于参数化的、短期的内存，知识演化和迭代能力受到了制约。本文引入了MemOS——一个专为LLMs设计的内存操作系统，首次将内存提升为一级操作资源。 就是把原来模糊不清、散乱的大模型“记忆”用了一个系统来明确地管理。 Part2 深入探究 2.1 方法论 对于记忆系统的探索 step1 一般的分类：隐式记忆和显式记忆、短期和长期 隐式记忆：模型权重、推理过程中的缓存 显式记忆：上下文（短期）、类似RAG的外部检索（长期） step2 类人记忆模式 step3 系统化记忆管理 ———得到了我们的牛b系统，记忆大一统。 Q：但是这样本质上不是还是原来的这些记忆方式和记忆编辑手段吗？有什么新意吗？发现其实没有。 MemOS将内存分为三种核心类型：参数化内存（Parametric Memory）【包括可插拔的LoRA模块】、激活内存（Activation Memory）【可持久化？？？】和明文内存（Plaintext Memory） 2.2 模型架构 引入MemCube作为封装单元。（可以类比消息） 结构分为Header、Payload，以及一些其他的有关访问控制的属性。（行为指标） 框架分为Interface Layer（输入）、Operation Layer（执行）、Infrastructure Layer（基本架构） ‍ AGENT KB: Leveraging Cross-Domain Experience for Agentic Problem Solving Part1 核心内容 给出一种新框架AGENT KB，让agent可以学习、提炼以往经验（更高层面，而不只是局限于某一特定的任务），实现经验知识在智能体之间的传递。 Part2 深入探究 2.1 方法论 构建共享的知识库，捕捉高层次的解决问题策略及详细的执行教训，从而实现知识在不同框架内智能体之间的传递。 Reason-Retrieve-Refine（推理、检索、精炼）流水线，teacher-student检索机制。学生首先检索工作流程级别的模式来构建其方法，而教师随后识别特定的执行模式来优化实现细节（实现监督）。这两个智能体都是为最后执行智能体服务的。 先通过任务池提取经验，构成经验库。然后在推理中进行检索和应用。 ‍ 当前agent系统的三大缺陷： 1.agent对于不同类型任务的经验是孤立的，没有很好的泛化性。（没有办法迁移） 2.agent检索问题时没有一个序列化的推理优化。 3.agent的经验形式太垂直？（从经验保存的角度来看，比如对于某一专业领域的经验，没有经过抽象，太难迁移） 2.2 模型架构 对于这两种智能体，实际上都有RRR的流程。 学生智能体的核心功能是生成符合任务需求的初始规划，流程包括： 问题解析 提取任务的问题模式（$\hat{\pi}$）和目标（$\hat{\gamma}$），生成初步解决思路（$\tau$）； 经验检索 从 AGENT KB 中检索与任务匹配的工作流级经验（$\mathcal{E}_w$），公式为： $\mathcal{E}_{w} = \underset{\mathcal{E}_{i} \in \mathcal{K}}{top-k}\left[\alpha \cdot \phi_{r}\left(\mathcal{E}_{i}, \mathcal{T}, \hat{\pi}, \hat{\gamma}\right)\right]$其中$\phi_r$衡量经验与任务的相关性，$\alpha$为权重； 方案优化 检索到的经验与初始思路整合，生成结构化执行计划（$\Pi$）并执行，输出执行轨迹（S）。 学生智能体的重点是确保任务解决的整体框架合理，例如工具选择、步骤顺序等策略层面的正确性。 教师智能体的核心功能是优化学生的执行细节，流程包括： 轨迹分析 总结学生的执行轨迹（$Z = \text{SUMMARIZE TRAJECTORY}(S)$），识别错误类型及原因； 精准检索 从 AGENT KB 中检索与错误步骤匹配的步骤级经验（$\mathcal{E}_s$），公式为： $\mathcal{E}_{s} = \underset{\mathcal{E}_{j} \in \mathcal{K}}{top-m} \sum_{s_{i} \in \mathcal{Z}}\left[\alpha \cdot \phi_{r}\left(s_{i}, \mathcal{S}_{j}\righ…

数学建模与模拟人口问题作业
type: item
date: 2024-12-13T18:58:00+08:00
description: 数学建模与模拟人口问题作业 问题 研究差分方程 $x_{k+1}=bx_{k}(1-x_{k})$ 的的收敛、分岔及混沌现象。 要求： 1.程序源代码 2.列表记录对应 b 的不同取值的收敛点。 3.作出收敛点关于 b 的取值图。 解答 1.程序源码 import numpy as np import matplotlib.pyplot as plt import pandas as pd # 设置matplotlib中文显示 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False def converge_point(x0, b, n=1000, m=100): '''计算迭代 参数： x0: 初值x0 b: 参数b n: 迭代次数 m: 舍去前m个迭代值 ''' x = x0 res = [] for i in range(n): x = b * x * (1 - x) #迭代公式 if i >= m: res.append(x) return res # 主程序 if __name__ == '__main__': # 参数设置 x0 = 0.5 b_min, b_max = 2.5, 3.5 delta_b = 0.01 b_list = np.arange(b_min, b_max + delta_b, delta_b) # 存储数据 b_plot = [] # 绘图用b值 x_plot = [] # 绘图用x值 all_data = [] # 存储所有数据 max_len = 0 # 最大收敛点个数 # 计算每个b值对应的收敛点 for b in b_list: x_values = converge_point(x0, b) conv_points = sorted(set(x_values)) # 存储绘图数据 for x in conv_points: b_plot.append(b) x_plot.append(x) # 存储表格数据 all_data.append({ 'b': f'{b:.2f}', 'points': conv_points }) max_len = max(max_len, len(conv_points)) # 绘制分岔图 plt.figure(figsize=(10, 6)) plt.scatter(b_plot, x_plot, s=0.5, c='black') plt.xlabel('参数 b') plt.ylabel('收敛值 x') plt.title('收敛点关于b的取值图') plt.grid(True) plt.savefig('img1.png', dpi=300, bbox_inches='tight') plt.close() # 生成完整数据表格 b_cols = [f'{b:.2f}' for b in b_list] data_rows = [['k'] + b_cols] # 表头 for k in range(max_len): row = [k] for i, b in enumerate(b_list): points = all_data[i]['points'] val = points[k] if k < len(points) else '' row.append(f'{val:.2f}' if val != '' else '') data_rows.append(row) pd.DataFrame(data_rows).to_csv('converge_points.csv', index=False, header=False, encoding='utf-8-sig') # 生成示例数据表格 test_b = [2.5, 2.7, 2.9, 3.1, 3.3, 3.5] # 选择6个b，不然太多了 test_data = [] # 计算示例数据 for b in test_b: points = sorted(set(converge_point(x0, b)))[:10] # 取前10个收敛点 test_data.append({ 'b': f'{b:.1f}', 'points': points }) # 生成示例表格 test_rows = [] test_rows.append(['k'] + [f'b={b:.1f}' for b in test_b]) for k in range(10): # 只取前10行 row = [k] for i, b in enumerate(test_b): poin…

优化方法基础知识：向量范数、矩阵范数、方向导数、梯度和海森矩阵
type: item
date: 2024-12-13T17:47:00+08:00
description: 优化方法基础知识：向量范数、矩阵范数、方向导数、梯度和海森矩阵 常见向量范数和矩阵范数 向量范数 1-范数：$||x||_1 = |x_1|+|x_2|+......+|x_n|$ 2-范数：$||x||_2 = \sqrt{|x_1|+|x_2|+......+|x_n|}$ 无穷-范数：$||x||_{\infty}=\max\limits_{1\leq{i}\leq{n}}\left\vert{x_i}\right\vert$ p-范数：$\|x\|_p=\left(\sum_{i=1}^n\lvert x_i\rvert^p\right)^{\frac{1}{p}}$ （1、2范数的一般形式） 矩阵范数 常见的矩阵范数：向量范数与矩阵范数具有相容性（见矩阵论） 由向量范数$\|\cdot\|_p$导出关于矩阵 $A_n\in R_n\times n$的$p$范数 $$ \|A\|_p=\max_{x\neq0}\frac{\|Ax\|_p}{\|x\|_p}=\max_{\|x\|_p=1}\|Ax\|_p $$ 其他还有： $$ \begin{aligned} & \|A\|_1=\max_{1\leq j\leq n}\sum_{i=1}^{n}|a_{ij}| & & \text{(1-范数,列和范数)} & & \\ & \|A\|_{\infty}=\max_{1\leq i\leq n}\sum_{j=1}^{n}|a_{ij}| & & \text{(∞-范数,行和范数)} & & \\ & \|A\|_2=\sqrt{\rho(A^{T}A)} & & \text{(2-范数,谱范数)} & & \rho(A)=\max_{1\leq i\leq n}|\lambda_{i}|\end{aligned} $$ 方向导数、梯度和Hessian矩阵 1.方向导数 对于二元函数 $f(x,y)$来说，其方向导数为 $$ f_{\vec{l}}(x_0,y_0)=f_x(x_0,y_0)\cos\alpha+f_y(x_0,y_0)\cos\beta $$ 其中$\alpha,\beta$是$R^2$中向量$\vec{l}$的方向角. 简单的理解，就是沿着 $\vec{l}$ 方向的变化率。 2.梯度 也就是每个向量分别求偏导，组成的向量。 若$f(x,y,z)$在点$P_0(x_0,y_0,z_0)$存在对所有自变量的偏导数，则称向量$\left(f_x(P_0),f_y(P_0),f_z(P_0)\right)$为函数$f$在 点 $P_0$的梯度，记作 $$ grad\:f(P_{0})=\left(f_{x}(P_{0}),f_{y}(P_{0}),f_{z}(P_{0})\right). $$ $gradf(P_{0})$的模为:${|grad\:f(P_0)|}={\sqrt{f_{x}(P_0)^2+f_{y}(P_0)^2+f_{z}(P_0)^2}}$ 当函数在P0可微时，f在P0的 梯度方向 是f的值增长最快的方向，沿这一方向的 变化率 就是梯度的模！（也就是方向向量和梯度向量的夹角为0）当与梯度向量方向相反，方向导数有最小值。 $$ f_i(P_0)=gradf(P_0)\cdot\vec{l_0}=|gradf(P_0)|\cos\theta $$ 上式给出了方向导数的另外一种表示方法。就是该点梯度的模乘梯度向量grad $f(P_0)$和方向向量$\vec{l}_0$的夹角，也就是这里的$\theta$ 3.海森矩阵（Hessian Matrix） 海森矩阵主要用于研究函数的曲率特性及其极值点的性质。 1. 定义 对于一个实值函数 $f: \mathbb{R}^n \to \mathbb{R}$，其海森矩阵是所有二阶偏导数的矩阵，定义为： 注：这里实际上就是按矩阵的元素标号求导。 $H(f) = \begin{bmatrix}\frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \dots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\\frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \dots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\\vdots & \vdots & \ddots & \vdots \\\frac{\parti…

数学建模与模拟非线性优化作业
type: item
date: 2024-12-13T17:44:00+08:00
description: 问题提出 市场上有n种资产 S (i=1,2,...,n)可以选择作为投资项目，现用数额为M的相当大的资金作一个时 期的投资。这n种资产在这一时期内购买$S_i$的平均收益率为$r_i$,风险损失率为$q_\mathrm{i}$。投资越分散，总的风险越小，总体风险可用投资的$S_i$中最大的一个风险来度量。 购买$S_i$要付交易费(费率$p_i$),当购买额不超过给定值$u_i$时，交易费按购买$u_i$计算。另外，假定同期银行存款利率是$\mathbf{r}_0(\mathbf{r}_0=5\%)$,既无交易费又无风险费。 已知n=4时相关数据如下： 请给该公司设计一种投资组合方案，即用给定的资金M，有选择地购买若干种资产或存银行生息，使净收益尽可能大，且总体风险尽可能小。 类似模型一，求解模型二：固定盈利水平，优化风险。并根据结果分析参数k的选取。k的取值：[0,0.27]，每隔0.001求解一个相应的线性规划问题，记录相应的最优值和最优解。画出k与最优解R对应的散点图。指出k取何值时，模型最为合适，R的值最小。 问题假设 投资数额 M 相当大，为了便于计算，假设 M=1。 投资越分散，总的风险越小。 总体风险用投资风险中 $S_i$ 最大的一个风险来度量。 N 种资产 $S_i$之间是相互独立的。在投资的这一时期内，$r_i,q_i,p_i,r_0$为定值，不受意外因素的影响。净收益和总体风险只受$r_i,q_i,p_i$ 影响，不受其他因素干扰。 模型符号 $\begin{aligned} & S_{i} & & \text{第i种投资项目,如股票,债券等}\\ & r_{i_{}} & & \text{第i种投资项目的平均收益率}\\ & q_{i} & & \text{第i种投资项目的风险损失率}\\ & p_{i} & & \text{第i种投资项目的交易费率}\\ & u_{i} & & \text{第i种投资项目的交易定额}\\ & x_{i} & & \text{第i种投资项目的投资金额}\\ & r_0 & & \text{同期银行利率}\\ & \alpha & & \text{投资风险度}\\ & Q & & \text{总体收益}\\ & \Delta Q & & \text{总体收益的增量}\end{aligned}$ 模型建立： 投资者希望找到总盈利至少达到水平k以上，优化到风险最小的投资方案。这样就把多目标变成一个目标的线性规划。 决策变量： $x_i$ 目标函数： $$ \operatorname*{\mathrm{min}}R=\operatorname*{\mathrm{min}}{\operatorname*{\left\lbrace\mathrm{max}\{q_{i}x_{i},i=0,1\ldots n\}\right\rbrace}} $$ 约束条件： $$ \sum_{i=0}^{n}(r_{i}-p_{i})x_{i}\geq k $$ $$ \sum_{1=0}^{n}(1+p_{i})x_{i}=M $$ $$ x_{i}\geq0,i=0,1,...n $$ 模型求解 把上述题目数据代入公式： $$ \operatorname*{\mathrm{min}}R=\operatorname*{\mathrm{min}}{\operatorname*{\left\lbrace\mathrm{max}\{q_{i}x_{i},i=0,1\ldots n\}\right\rbrace}} $$ $$ s.t.\begin{cases}0.05x_0+0.27x_1+0.19x_2+0.185x_3+0.185x_4\geq k\\x_0+1.01x_1+1.02x_2+1.045x_3+1.065x_4=M\\x_i\geq0,i=0,1,2,3,4\end{cases} $$ import numpy as np import scipy.optimize as opt import matplotlib.pyplot as plt # 配置中文字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体字体 plt.rcParams['axes.unicode_minus'] = False # 正常显示负号 # 定义目标函数和约束 def objective(x, q): return np.max(q * x) def constraint_1(x, k): # 盈利约束 return np.dot([0.05, 0.27, 0.19, 0.185, 0.185], x) - k def constraint_2(x):…