- 博客(60)
- 收藏
- 关注
原创 python 中的datetime, time(笔记向)
在excel中,总是计算1899-12-30 这个到这个输入日期之间的天数,比如输入2025-3-1后会自动解析成数值 45658,这个数字是 1899-12-30 到 2025-3-1 之间的天数,当我们在excel中手动设置日期的格式,只是在选择显示的内容的格式。Q3: 在 mysql 执行查询后,把00:15所在列规定为 VARCHAR 类型,通过pymysql和pandas将这一列的查询结果进行管理,再将结果放到excel中进行管理,那么pandas和excel将会怎么进行解析?
2025-09-14 20:56:36
1324
原创 数据预处理和特征工程
很多时候获得的数据是无法直接进行分析的,数据中可能存在的问题包括:数据的不一致性,比如在表一中某属性的量纲是kg,在表二中该属性的g,此时需要进行统一数据存在错误或异常,比如身高为 -1,需要使用插值法基于以上问题,对数据挖掘之后获得的数据进行数据预处理是必要的。
2025-09-14 20:56:22
596
原创 机器学习:XGBoost
\hspace{1.68em}XGBoost 作为 Boosting 模型的一种,借鉴了很多其他优秀的迭代思想,XGBoost 算法的主要特点如下:\hspace{1.68em}根据 XGBoost 建立好的集成模型,只要知道样本特征,就能判定集成模型中这个样本特征应该落在哪个叶子结点(正如决策树那一节中所述的一样),每棵树上的叶子结点能够计算出一个预测分数,将建立好的集成模型中的所有树对于该样本的预测分数加起来,就是最后对于这个样本的预测值。\hspace{1.68em}为了更清晰地说明预测分数是怎么
2025-09-14 20:54:42
924
原创 机器学习(四):支持向量机
SVM 作为一种目标中就考虑到泛化能力的模型,在很多分类场景中并不亚于后面说到的 RF,XGBoost。提出用超平面将不同的分类进行分隔,在超平面一边的样本的标签为 1,另一边样本的标签为 -1,用超平面两侧的支持向量到超平面的距离之和来表示当前模型对样本分类的 “分隔程度”,距离越大,间隔越大,分隔程度越好。
2025-09-14 20:54:10
675
原创 机器学习(三):决策树
在之前的线性回归和逻辑回归的章节中,我们已经知道机器学习可以按照提出的数据模型进行拟合或者分类,那么是否有可能通过一种结构实现这两种功能?可以使用决策树这种模型。
2025-09-14 20:53:56
1039
原创 机器学习(二):逻辑回归
1.模型假设给定特征向量x∈Rp,二分类逻辑回归假设样本标签y∈01Py1∣x;θhθxσθTx其中σz1e−z1是Sigmoid函数,将线性得分zθTx映射到概率区间01。2.二项分布表示Py∣x;θhθxy⋅1−hθx1−y对于nLθi1∏nPyi∣xi;
2025-09-14 20:53:41
963
原创 机器学习(一):线性回归
有清晰的解析解,难度在于去除样本特征之间的共线性现象如果使用优化方法,可以直接通过梯度的反方向作为每一步的下降方向,难度在于如何平衡回归的搜索速度和搜索精度多项式回归是可以通过数据变换变成线性回归模型的。
2025-09-14 20:52:57
835
原创 中国电力市场研究(二)电力系统基本概念
发展新型电力系统的过程,就是适应新能源大规模接入的过程,呈现出新的特点是是“双高”(高比例可再生能源、高比例电力电子设备)背景下电力系统的发展问题。动力系统主要包括以上所有概念。电能质量包括频率和电压。
2025-09-14 20:50:35
909
原创 数据结构之BFS广度优先算法(腐烂的苹果)
队列这个数据结构在很多场景下都有使用,比如在实现二叉树的层序遍历,floodfill问题(等等未完成)中,都需要借助队列的先进先出特性,下面给出这几个问题的解法。
2025-04-17 21:08:09
713
原创 (leetcode算法题)309. 买卖股票的最佳时机含冷冻期
由于规则中强调不能同时参与多笔交易,所以前一天是否持有股票会影响第二天,还强调卖出股票之后不能立即在第二天买股票。按照题目要求,研究对象是最后一天结束后获得的最大利润。第 1 天结束后获得的最大利润,第 2 天结束后获得的最大利润,第 i 天结束后获得的最大利润,那么就可以把问题拆分成。
2025-04-17 21:06:01
356
原创 Electricity Market Optimization(VI) - 机组组合模型以及 Gurobi 求解
机组组合问题在电力系统中非常重要,这个问题也是一个优化问题,研究的就是如何调度现有的机组,是以煤炭、石油、天然气为燃料的火力发电机以及水力发电机等可预测处理的发电机组,是指派某个发电机组在未来的某个特定的时间开始启动,在预定的时段开始发电,是在满足约束的前提下尽量的是发电成本最小化。截止24年底,中国以煤炭、石油、天然气为燃料的火力发电机的装机容量占全部发电装机容量的 47.62%,所以我们这主要讨论火力发电机的启停的情况,下面是一个记录大型火电机组启动过程的甘特图vit−wit。
2025-04-17 21:05:11
992
原创 Electricity Market Optimization 探索系列(V)
本文参考链接众所周知, 社会福利是指消费者剩余和生产者剩余的和,也等价于产品的市值减去产品的成本,在电力市场中也非常关注社会福利这一概念,基于电力商品的同质性的特点,我们引入反价格需求函数来形象地刻画电力市场中的社会福利这一概念。
2025-04-17 21:03:00
1028
原创 Electricity Market Optimization 探索系列(VII)- 直流潮流方程的推导及例题
本文参考书籍:电力经济与电力市场,甘德强,杨莉,冯冬涵 著文章的结构如下:围绕电力传输系统中短线路的等值等效模型,从节点注入功率的角度和线路功率的角度分析电网中的潮流,并介绍将模型简化后的直流潮流方程的推导,并给出方程使用的例题潮流方程需要进行简化的原因:未经简化的潮流方程在求解最优潮流问题时常常不能保证求解能够收敛,因此工程实践中只考虑直流潮流方程作为现实物理模型的一个近似方程。
2025-04-17 21:02:24
1039
原创 Electricity Market Optimization(VI) - 机组组合问题的 GAMS 求解
根据之前的博客,我们考虑机组的启动成本只讨论考虑以下几种约束的机组组合问题:mins.t.t1∑TCtgenCtucCtcurtCtgeni∈G∑cipitcCtuci∈G∑cisuvitcisdwitCtcurtccurtPtw−ptwPtpv−ptpvi∈G∑pitcp。
2025-04-17 21:01:42
755
原创 Electricity Market Optimization 探索系列(VII)- 最优潮流 与 节点边际电价
本文参考链接在上一节中,我们讨论了电力网络中潮流方程的由来,引出了 PTDF(Power Transmission Distribution Factor),本节我们将讨论最优潮流与节点边际电价。
2025-04-17 21:01:05
1651
原创 Electricity Market Optimization 探索系列(IV)- 考虑新能源机组的经济调度模型以及 Gurobi 求解
本文参考链接我们往往将发电机分为三类:传统发电机,风力发电机,光伏发电机。机组组合确定了之后,为了简化问题,可以将每个类内的发电机综合考虑,所谓综合考虑,以下面的例子为例例如:已经确定要在第二天的实际运营中使用 1号燃气轮机,2号燃气轮机,3号燃气轮机发电,那么将其整体考虑为一个整体的燃气轮机对象,也就是可以把不同燃气轮机的参数合并成一个参数现在详细说一说发电机的这几个属性。
2025-02-07 00:00:40
1051
原创 Electricity Market Optimization 探索系列(三)
中可以看到负荷持续时间曲线的大致形状,两台发电机在某一时段的发电量需要大于在该时段的负荷,而为了安全性考虑,可以考虑直接将负载负荷曲线看作是一个分段线性函数,但是这个分段这里考虑的并不是在之前那篇博客中显示的三段线性函数,而是形如下面的图片中的分段函数。电网容量规划是一个寻求最优发电容量的过程,找到的最优发电容量能够可靠地满足未来电网的需求。发电机的容量和发电成本呈正相关关系,一台发电机的发电量不能超过其额定发电容量,结合。发电机1的规划发电容量为8.88,发电机2的规划发电容量为6.12。
2025-02-05 20:27:51
1057
原创 Electricity Market Optimization 探索系列(二)
负荷持续时间曲线 (Load Duration Curve),是根据实际的符合数据进行降序排序之后得到的一个曲线。净负荷(net load) 是指预期负荷和预期可再生能源发电量之间的差值,净负荷可以帮助规划资源配置。这个曲线能够发现负荷在某个区间时,将会持续多长时间,有助于发电容量的规划。以下是根据caiso在2023年的负荷数据得到的画出四条曲线的代码。
2025-02-02 23:38:57
521
原创 Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr
在新版本的 Gurobi 中,向 addConstr 这个方法中传入一个 TempConstr 对象,在模型中就会根据这个对象生成一个约束。更重要的是:TempConstr 对象可以传给所有addConstr系列方法,所以下面先介绍 TempConstr 对象。
2025-02-01 21:46:08
1940
原创 Electricity Market Optimization 探索系列(一)
现在需要使用两台发电机满足用户的用电需求,发电机一的发电功率上限是 6MW,发电机二的发电功率上限是 4MW,发电机一的度电成本是0.015,发电机二的度电成本是0.03,用电需求是8 MW,求这两台发电机应该发多少电,满足需求的同时成本最小(我知道很简单,但是先听我说完)怎么用代码实现上面的模型呢?
2025-02-01 21:42:09
1099
原创 generator 生成器,enumerate,命名空间(笔记向)
Python 中有各种各样的推导式,比如列表推导式,字典推导式,其实都是借助了 generator 对象。
2025-02-01 15:29:24
516
原创 Gurobi 基础语法之 LinExpr 类 和 QuadExpr 类,以及对 quicksum 方法的说明
优化问题中普遍出现的一种类型的约束就是线性约束,线性约束形如,Gurobi 中设计了一个 LinExpr 类来创建线性表达式。当 i 的取值范围较小的时候,可以直接将这个线性表达式写出来,作为 addConstr 的参数,以此方便的建立起一个线性约束,但是当 i 的取值范围达到上百个时,使用 LinExpr 类来创建线性约束就是非常有必要的。
2025-01-28 13:43:13
678
原创 Gurobi基础语法之addVar 和 addVars
addVar 和 addVars作为 Gurobi模型对象中的方法,常常用来生成变量,本文介绍了Python中的这两个接口的使用。
2025-01-27 14:45:18
1989
原创 Gurobi 基础语法之 tupledict 和 tuplelist
在gurobi中,用一个 tuple 作为字典中的key,如果字典中有多个键值对,则 这些 key(即元组)的长度都必须相同。
2025-01-25 21:36:49
1048
原创 (leetcode算法题)84. 柱状图中最大的矩形 2334. 元素值大于变化阈值的子数组
这里可以采用与84题相同的算法来更新,这是因为2334也可以转换成一个相同的问题:将nums[i]作为连续子数组中最小的那个数,更新出连续子数组的的长度k,然后判断nums[i]/k和threshold的关系。由于原问题中矩形的面积完全取决于其中最小矩形的高度,那么很容易想到遍历每个矩形,让每一个矩形都做一次最小矩形,看看其能够覆盖的最大宽度是多少,就能找到题目的答案。由于采取了单调递增栈,那么当遍历到heights[i]这个高度时,我们想要更新的到底是什么,策略有两种。
2025-01-18 13:52:27
404
原创 (leetcode算法题)155. 最小栈 901. 股票价格跨度
所以从当天往回数,一旦遇到一个比当天价格更高的一天,就立刻停止往前数,那么是否还有必要保存以往的历史价格呢?答案是没必要,只需要知道离当前最近的连续价格下降的那些日子的价格即可,这可以用一个单调栈来保存这些价格。那么之后如果插入数据都比val大,之前在栈中还是会有小于val的数据,那么之后查询最小值一定不是val。如果不断pop数据,val自然也会被首先pop掉,之后插入的任何值的大小和val本身无关。那么如果插入了一个大于最小栈栈顶的元素val,就只能是case3。这两道题都是单调栈专题中的引子题目,
2025-01-13 14:51:21
322
原创 (leetcode算法题)287. 寻找重复数(经典题目,二分解法)
一个很自然的想法就是画一条水平线,让这条水平线从上往平移,一旦平移到穿过两个即以上的点,那么此时这条水平线的纵坐标就是要找的重复两次的数,这样的想法就是两个for循环来实现的o(n2) 的算法,能够满足题目要求,但是这样的算法不能通过全部测试用例。以nums = [1,3,4,2,2]为例,可以画出如下散点图,下列散点图,因为这个题要求不能更改原数组,而且只能使用o(1)的空间复杂度设计算法,所以直接画出{1, 1}, {2, 3}, {3, 4}, {4, 2}, {5, 2} 这几个点。
2025-01-11 15:03:07
551
原创 (leetcode算法题)239. 滑动窗口最大值
此题研究目标所在的窗口大小固定,窗口的边界并不一定是窗口内的最大值,所以可以通过一个双端队列的数据结构来维护。
2025-01-09 20:52:11
344
原创 (leetcode算法题)769. 最多能完成排序的块
"成块" 是指只要只需要将nums[i]放到前面的某个子数组的尾部,然后将这个子数组进行排序,就能得到一个拥有连续自然数的子数组,就称为成块。先预设一个策略,每当当前的nums[i]满足可以 "成块",就直接让这个数成块,也就是说之后的遍历过程中不会将这个数在考虑到自己的块内,反证法:假设nums[i]为结尾的成块的子数组,其中最大值小于 i。规律2. 以nums[i]为结尾的成块的子数组,其中的最大值不能大于 i。规律1. 以nums[i]为结尾的成块的子数组,其中的最大值不能小于 i。
2025-01-08 21:23:00
425
原创 (leetcode算法题)3413. 收集连续 K 个袋子可以获得的最多硬币
是像 2271 中那样考虑以每一个coins[i][1]作为连续袋子中最右边那个端点呢?还是考虑 以每一个coins[i][0]作为连续袋子中最左边那个端点呢?以coins = [[8,10,1],[1,3,2],[5,6,4]], k = 4为例。最大硬币的数量只有可能在上面那个蓝条或最下面那个蓝条中出现,不可能在中间那个蓝条中出现。这道题是 2271. 毯子覆盖的最多白色砖块数 的子题,但是针对那些状态进行分析呢?答案是这两者都要考虑,而且最多硬币数量一定在这两种状态中出现,
2025-01-08 13:09:47
328
原创 (leetcode算法题)2271. 毯子覆盖的最多白色砖块数
从图中可以看出,之所以这么选,是因为中间的把蓝条(毯子)的右端点放到瓷砖的右端点,其覆盖的瓷砖的长度总是大于等于把蓝条(毯子的右端点)放到瓷砖的中间,case1: r 指向的tiles的右端点 - 毯子的长度 > l 所指向的 tiles 的左端点,也就是说毯子右端。棕色叉号表明的是当蓝色的毯子盖不住从 l 指向tiles的左端点到l指向的tiles的右端点时,需要删除的长度。l 指向的tiles 的右端点 大于 r指向的tiles的右端点 - 毯子的长度 + 1。
2025-01-08 12:23:31
990
原创 (leetcode算法题)76. 最小覆盖子串
当发现 s[l] 存在于 t中,而且当前s[l, r]的中 s[l]的个数小于等于 t中 s[l]的个数。r 遍历到的当前字符是 s[r], 无论 s[r] 是否在 t中,都需要不断进窗口。r 遍历到的当前字符是 s[r], 无论 s[r] 是否在 t中,都需要不断进窗口。Q1. 什么情况需要考虑开始从 r 所指的位置循环执行进窗口动作?Q3. 什么时候需要考虑开始从 l 所指的位置循环执行出窗口动作?当发现 s[l, r] 已经覆盖了 t 这个字符串。条件:s[l, r] 覆盖了 t 这个字符串。
2025-01-07 12:46:23
624
原创 (leetcode算法题)318. 最大单词长度乘积
利用数字位图来标识只有小写字母的单词,实际上就是一种hash的思想。有时候暴力,也未尝不是一种解脱 ~~~~~~~~~~~那么怎么找到两个没有相同字母的字符串的最大长度乘积呢?那自然是暴力最好了!
2025-01-06 20:31:41
136
原创 (leetcode算法题)面试题 17.19. 消失的两个数字
可以在O(n)的时间复杂度下得到这两个消失的数字的异或的结果,或者得到这两个数字的和。然后再根据这一位把 [1, n] 分为两个不同的数字集合 A 和 B,然后A ^ C得到 消失的数字①,B ^ D 得到消失的数字②。比如对于异或的结果,可以知道这两个数字在哪一位的置位是不同的。也把 nums 分为两种不同的数字集合 C 和 D。下面以[1, 14]中消失了两个数字为例。但是怎么从上面的结果中得到这两个数字?
2025-01-06 20:23:05
489
原创 (leetcode算法题)137. 只出现一次的数字 II
考虑数据集中所有数据的第 i 位的取值,那么将会有j + 1个比特位,其中如果n1 到 nj中有且仅有 x个数字在第 i 位取1,其他的数字在第 i 位取0。那么((target >> i ) & 1 + α) % k一定等于(target >> i ) & 1。所以将这j + 1个比特位相加之后对k 取模,得到的一定是 target在第 k位的取值。处理这种数据集中只有一个数出现的频次为1,其他数出现的频次均为k的题目。那么将这 j 个数全部相加,得到的结果为α,α一定是 k 的倍数,
2025-01-06 17:00:19
293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅