ecole环境安装指南
前言ecole 是用于生成milp合成数据集的一个库,亦有其他功能。官方的安装提示是:[ecole install](Installation — Ecole 0.8.1 documentation)
但是事实上你如果真的直接按照它的命令
1conda install -c conda-forge ecole pyscipopt
安装 ecole 那么你会发现再import的时候报错找不到 scip.8.so 这种错误,这是由于时代变迁,这里依赖的库不能直接通过pyscipopt正确安装了
正确方法下面首先提供一个可以一键安装并且能够正确处理依赖的 conda-env.yaml
1234567891011name: ecole-envchannels: - conda-forge - defaultsdependencies: - numpy=1.24.3 - scip=8.0.0 - python=3.10 - pyscipopt - ecole
直接使用命令
1conda env create -f xxx.yaml
即可
如果你想要再现有环境中安装,记得先安装1. ...
No title
This is your new vault.
Make a note of something, [[create a link]], or try the Importer!
When you’re ready, delete this note and make the vault your own.
Python Package Managers
UV工具简介uv 是一款基于项目的包管理器,本人非常推荐使用,因为它默认的配置是基于 pyproject.toml 进行的,这是Python官方推荐的新一代依赖管理方式,并且可以非常简单地进行打包和自安装,可以直接使用 src layout 使用项目名称作为顶级包名进行导入,避免手动添加 sys.path 更加优雅不会出错
什么是 src layout简单来说,项目的结构是
1234project_xxx|-src| |--project_xxx|-pyproject.toml
在这种layout下面,可以定义打包 src/ 目录下面的东西,然后使用命令
1pip install -e .
以可编辑的方式安装自己,即可自动安装所有依赖,并且使用 project_xxx.xxx 这种方式来导入项目中的包
uv 的安装和基本命令TBD
Hydra | python参数配置包
简介这个包看起来是一个非常好用的参数和配置文件管理的包,采用yaml保存相关的配置,相关的参考可以看官方网站hydra 网站
Takeaway notes简单的用法如下
123456789import hydrafrom omegaconf import DictConfig, OmegaConf@hydra.main(version_base=None, config_path="conf", config_name="config")def my_app(cfg : DictConfig) -> None: print(OmegaConf.to_yaml(cfg))if __name__ == "__main__": my_app()
然后所有的配置都会以类似namespace的形式保存在cfg这个变量里面
可以通过类似
1python my_app.py db.user=root db.pass=1234
的方式来覆盖某些配置
arXiv:1704.01665v4 | Learning Combinatorial Optimization Algorithms over Graphs | NCO论文阅读
简介本文解决的问题是,给定一个图优化问题 和问题的分布 的实例,我们能从 中学习到更好的启发式推广到看不见的实例吗?
算法的大体结构是一个贪心算法,即我们在选择点的时候,每次都贪心地选择当前状态下最优的一个点,加入到选择集合中。与之前传统算法相比,本文本质上是使用强化学习去训练了一个policy, 根据当前的选择以及图的状态,来选择下一个点
本文的强化学习部分采用的是传统的 Q-Learining,说是因为policy gradient 方法在采样方面比较困难,而且本文推导出来 Q 函数有数学上的意义,因此采样了Q learning。
本文解决的图论问题本文主要尝试了以下三个问题:
本文的基本假设
一个问题的实例 是从一个分布中采样出来的,这个分布可以是一个模型,也可以是来自于现实世界的例子
本文采样特征向量来作为当前局部最优解的表征,即一个位上是1表示选择该点,是0表示不选择该点
某些问题上可能需要一个helper function来合法化上面演化算法出来的解
对于一个局部的解 通过一个函数 来衡量其优越性,其中的 算子表示组合结构
贪心策略会选择能够最大化一个评估函数 ...
GAE | 广义优势估计
本文主要介绍常用的几种优势函数的估计方式,首先定义一下本文讨论的优势函数,即:可以理解为,在状态 的情况下,采用动作 比平均动作能获得多少优势。
蒙特卡洛方法(MC方法)蒙特卡洛方法非常朴素,但是并不实用。即,在一个回合结束之后,再根据公式算出 ,然后再用公式直接用 来表示 ,从而估计出最终的优势函数
这种方法的好处是,这是无偏估计,但是方差比较大,并且在online的时候无法做
TD方法这个方法只需要一个值函数,使用如下方法来做估计:这相当于是使用 来估计 ,当然这就是有偏的了,不过这个方法的方差比上面的小。
A2C方法(这个方法是不是A2C笔者没有Check过)这个方法比TD的改进是,使用两个
PPO
前言PPO是目前最好用的on-policy的算法,之前想学TRPO发现太复杂了,这里开个新坑
替代优势首先,考虑一个问题,对于策略参数 更新为参数 的时候,到底带来了多少优势
定义优势函数为:而替代优势可以写为:如果引入无限长度的折扣分布,那么上面的式子可以把期望展开成:由于我们希望这里面两个策略离得非常近,所以使用 来代替 上面的式子变成
重新把这个式子写成期望的形式:后面那一项被称为替代优势,即:
PPO Penalty这里面的想法很简单,使用下面这个式子来控制梯度的调整:这里面的 通过检查目标散度与实际的KL散度的大小来更新,如果更新的KL大于设定值的1.5倍则倍增 来惩罚,如果小于一半则 减半来扩大信赖域
FLA Lab Report | 自动机大作业实验报告
设计思路整体上我的程序分为如下几个步骤:
读取命令行参数
如果有 -h 就输出帮助信息并退出
如果带有 -v 或者 --verbose 参数就把fla结构体中对应的值设为true
根据命令行输入的文件后缀,判定运行的模拟类型,并记录到fla结构体中
读取文件的内容,加载到对应的结构体中
根据上一步判定的模拟器类型,把fla结构体传给对应的模拟器
PDA模拟器对于pda模拟器,我的设计如下:
我用的面向对象的方法,每一个状态都被封装成了一个类,模拟器保存了一个迭代器指向当前的状态。每个状态提供一个 pair<bool,pair<int,string>>get_transition(char input, char stack_top) 方法,传入当前的字符、栈顶符号,返回 (是否成功,下一个状态的编号,栈顶压入符号)
具体的运行方式如下:
使用 compile() 函数可以编译一个pda模拟器,经历如下步骤:
传给Lexer,按照行给整个传入的文件进行划分,并丢弃所有分号后面的内容。
Lexer将每一行传给 get_statement() 函数,该函数 ...
Database Review | 数据库期末复习笔记
概述信息与数据
信息:用于反映现实世界中事物的物理状态,向人们提供一些已知的、客观存在的事实和知识
数据:是指具有一定的语义含义,并且可以被记录下来的已知事实(在计算机世界中是具有一定结构的格式串)数据是信息的载体,信息是数据的内涵
数据库系统的基本特点
数据的集成性
数据的高共享性与低冗余性
数据独立性
数据的统一管理与控制
三种语言
DDL:数据定义语言
DML:数据操作语言
DCL:数据控制语言
数据库的三级模式
概念模式(简称模式)(是关于整个数据库中数据的全局逻辑结构的描述,是面向数据库系统的,它一般以某种数据模型为基础,利用具体的DBMS所提供的数据定义语言(DDL)来描述)
外模式(也称子模式、用户模式)(是关于某个用户所需数据的逻辑结构的描述)
内模式(也称物理模式)(是关于数据库中数据的物理存储结构和物理存取方法的描述)
在这三种数据库中,只有物理数据库是真实存在于计算机的外存中的,其他两种数据库并不真正存在于计算机中,而是由物理数据库通过数据库管理系统构造而成的
三级模式的两级映射
从概念模式到内模式的映射由DBMS完成,实现了物理独立性
外模式到概念模式 ...
Artificial Intelligence Review Note | 人工智能复习笔记
启发式搜索——算法在启发式搜索里面,会考虑两个集合,一个叫 Open set 一个叫 Closed set
Open:表示当前需要考虑的,还未完成搜索的节点
Closed:表示已经处理完毕,不会再考虑的节点
启发式搜索的大概步骤是:
把初始的节点加入到Open集合中
将Open set中的节点按照评估函数 的大小从小到大排序,选出最小的那个,设置成当前的节点(CS),如果已经没有可以选的了,结束,表示未搜索到
如果CS是终点,结束操作
将CS的所有可达节点进行以下操作:
如果节点在Closed list中,继续下一个
否则加入到 Open list中
将CS加入Closed list中,回到第2步
算法的评估函数为: 其中的 表示从开始移动到节点 的实际代价,而 是定义的启发式评估函数,用于评估当前节点 到目标节点的代价
由于上面的定义,不难发现, ,如果满足 那么这个启发式算法是可采纳的,一定会找到最优解的。
这里的 应当理解为从点n到终点的真实代价
推理谓词推理推理规则一共有如下几条:
取式假言推理:已知 和 为真,那么 为真
拒式假言推 ...
