进入实验室1

news2024/9/23 23:24:50
with open(csv_filepath) as f:
    reader = csv.reader(f)
    lst = list(reader)
lst.pop(0)

这段代码的作用是打开一个CSV文件(csv_filepath),

然后使用csv模块的reader函数创建一个CSV文件的读取器。

接着将读取器转换为列表,并将其存储在变量lst中。

最后,代码从列表lst中移除第一个元素(通常是表头),即将其从列表中删除。

.pop()函数 

n=512
load_profile = np.asarray(lst).astype('float64').flatten()
load_profile = np.array(load_profile[:n])

 这段代码首先将一个名为n的变量设置为512。

然后,将一个名为load_profile的变量初始化为将lst转换为NumPy数组(asarray()),然后将其数据类型转换(astype())为'float64'(64位浮点数),最后将其展平为一维数组(.flatten())

接着,代码将load_profile数组的前n个元素提取出来,形成一个新的数组,并将其存储回load_profile变量中。

new_profile = np.append(new_profile, [load_profile[i]])

 这行代码的作用是将load_profile数组中索引为i的元素添加到new_profile数组的末尾。这里使用了NumPy库中的append函数来实现。

def batCapCalc(load_profile,target_thresh,n):
    tempCap = np.array([], dtype='int32')
    m = int(n/24)  # 512/24
    for i in range(m):
        temp = 0
        for j in range(24*i,24*(i+1)):
            if load_profile[j] > target_thresh:
                temp += load_profile[j] - target_thresh
        buff_cap = 0.1*temp
        tempCap = np.append(tempCap, [buff_cap + temp])
    BattCap = max(tempCap)
    return BattCap

 这段代码定义了一个名为batCapCalc的函数,

该函数接受三个参数:load_profile(负载数据的数组)、target_thresh(目标阈值)和n(数组长度)。

函数首先创建一个空的NumPy数组tempCap来存储临时容量值,数据类型为'int32'。

然后计算m的值,即n除以24的整数部分。

接着,函数使用两个嵌套的for循环来遍历负载数据load_profile。在内部循环中,如果负载数据大于目标阈值target_thresh,则将超出部分加到temp变量中

然后计算缓冲容量buff_cap,其值为temp的10%。

最后,将buff_cap和temp的总和添加到tempCap数组中。

函数返回tempCap数组中的最大值作为BattCap(电池容量)。

def cyclesCalc(load_profile,new_profile,target_battery,n):
    counter = np.array([], dtype='int32')
    c = 0
    temp = 0
    for i in range(n):
        if temp < (2*target_battery):
            temp += abs(load_profile[i] - new_profile[i])
            counter = np.append(counter,[c])
        elif temp >= (2*target_battery): 
            temp = 0
            c += 1
            counter = np.append(counter,[c])
    return counter

 这段代码定义了一个名为cyclesCalc的函数,

该函数接受四个参数:load_profile(负载数据的数组)、new_profile(新负载数据的数组)、target_battery(目标电池容量)和n(数组长度)。

函数首先创建一个空的NumPy数组counter来存储循环次数,数据类型为'int32'。

然后初始化变量c为0,temp为0。

接着,函数使用一个for循环遍历负载数据的每个元素。

在循环中,如果temp小于目标电池容量的两倍,

则将负载数据和新负载数据之差的绝对值加到temp中,并将c的值添加到counter数组中。

                  如果temp大于等于目标电池容量的两倍,

则将temp重置为0,增加c的值,并将c的值添加到counter数组中。

最后,函数返回counter数组,其中包含了每个循环中的计数值。 

if __name__ == "__main__":
    target_peak_shave = 0.1 # 10% peak-shaving targeted
    target_thresh = max(load_profile) - target_peak_shave*max(load_profile)
    target_battery = batCapCalc(load_profile,target_thresh,n)

    new_profile, abs_charge = NewProf(target_thresh, load_profile, target_battery, n)
    charge_cycles = cyclesCalc(load_profile,new_profile,target_battery,n)
    numCycles = charge_cycles[-1]

    old_cost = CostCalc(load_profile,n)
    new_cost = CostCalc(new_profile,n)
    percent_saving = (abs(new_cost - old_cost)/old_cost)*100

这段代码首先检查当前脚本是否作为主程序运行,即判断是否为主模块。如果是主模块,则执行以下操作:

1. 将目标峰值削减量(target_peak_shave)设置为0.1,即目标为削减10%的峰值负载。
2. 计算目标阈值(target_thresh),其值为负载数据中的最大值减去目标削减量(target_peak_shave)乘以负载数据中的最大值。
3. 调用batCapCalc函数计算目标电池容量(target_battery),并将结果存储在target_battery变量中。
4. 调用NewProf函数计算新的负载数据(new_profile)和绝对充电量(abs_charge)。
5. 调用cyclesCalc函数计算充电循环次数(charge_cycles),并将结果存储在charge_cycles变量中。

将最后一个循环次数存储在numCycles变量中。
6. 调用CostCalc函数计算旧负载数据的成本(old_cost)和新负载数据的成本(new_cost)。
7. 计算成本节约百分比(percent_saving),其值为新成本与旧成本之差除以旧成本的绝对值,再乘以100。

x=np.arange(0,n,1)
    thresharr = np.ones(n)*target_thresh
    plt.figure(figsize=(15,7))

 这段代码首先使用NumPy的arange函数创建一个从0到n-1的数组x,步长stride为1

(stride = 1)。

接着,创建一个长度为n的由target_thresh值组成的数组thresharr,即将target_thresh重复n次。

最后,使用Matplotlib库创建一个大小为15x7的新图形(figure)对象,用于绘制后续的图形。

我在我的Jupyter notebook中实验,不行。试了洋红和black,不行 

两阶段鲁棒优化

c_T=[canshu(3)*ones(1,24) canshu(8)*canshu(9)*ones(1,24) canshu(8)/canshu(9)*ones(1,24) zeros(1,24) ...,
   canshu(10)*ones(1,24) canshu(10)*ones(1,24) fh(2,:) -fh(2,:) zeros(1,24) zeros(1,24)];


- ones(1,24) 创建了一个 1x24 的全为1的矩阵。
- zeros(1,24) 创建了一个 1x24 的全为0的矩阵。
- fh(2,:) 表示 fh 矩阵的第二行,其中冒号表示选取该行的所有列。

根据代码片段中的描述,c_T 的定义如下:
- 前 24 列为 canshu(3) 的值构成的行向量。
- 接下来的 24 列为 canshu(8) * canshu(9) 的值构成的行向量。
- 再接下来的 24 列为 canshu(8) / canshu(9) 的值构成的行向量。
- 然后是 24 列全为0的行向量。
- 紧接着是 24 列为 canshu(10) 的值构成的行向量。
- 再之后是另一个 24 列为 canshu(10) 的值构成的行向量。
- 最后是 fh 矩阵第二行的值减去 fh 矩阵第二行的值所得到的行向量。
- 最后再接上两个 24 列全为0的行向量。

希望这能帮助解释这段代码的功能。如果有任何疑问或需要进一步解释的地方,请随时告诉我。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1490199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【wpf】关于绑定的一点明悟

背景简介 软件功能为&#xff0c;读取一个文件夹下的所有子文件夹&#xff0c;每个文件夹对自动对应生成 一组 “按键四个勾选” 按键点击触发&#xff0c;可以发送与其对应文件夹中的一些内容。这个绑定的过程我在之前的文章有过详细的介绍&#xff0c;非常的简单。 这里回顾…

【C++干货基地】面向对象核心概念 | 访问限定符 | 类域 | 实例化 | 类对象模型

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

【数据库】SQLite的基本指令、数据约束、联结表、触发器及索引的使用技巧

目录 一、SQLite 语句基础 1、创建表&#xff1a;create 语句 2、创建表&#xff1a;create 语句 (设置主键&#xff09; ​编辑 3、查看表 4、修改表&#xff1a;alter 5、删除表&#xff1a;drop table 语句 6、插入新行&#xff1a;insert into 语句--全部赋值 7、…

【AI视野·今日Robot 机器人论文速览 第八十期】Fri, 1 Mar 2024

AI视野今日CS.Robotics 机器人学论文速览 Fri, 1 Mar 2024 Totally 32 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Humanoid Locomotion as Next Token Prediction Authors Ilija Radosavovic, Bike Zhang, Baifeng Shi, Jathushan Rajasegaran…

上位机图像处理和嵌入式模块部署(qmacvisual配置)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们谈到了qmacvisual的编译、验证码、用户登录以及流程的编辑&#xff0c;这部分都是基础工作。事实上&#xff0c;除了这些内容之外&#xf…

uniapp制作--进步器的选择

介绍&#xff1a; 进步器的选择,一般用于商城购物选择物品数量的场景 注意&#xff1a;该输入框只能输入大于或等于0的整数 效果展示&#xff1a; 代码展示&#xff1a; 以下是一个简单的购物车页面示例&#xff0c;包括选择商品和显示数量的功能&#xff1a; 在这个示例中…

电动车检测解决方案官网版(1)

电动车检测解决方案 方案背景 现状分析&#xff1a;①电动车私拉电线、电池老化、线路故障容易引发火灾。 ②电动车充电时温度无法检测&#xff0c;无法提前预警。 ③近五年&#xff0c;全国共发生电动车火灾1万余起&#xff0c;年均约2000起&#xff0c;较前五年增长33.3%. …

uipath调用js代码

1&#xff0c;调用js代码&#xff0c;不带参数&#xff0c;没有返回值 为了去掉按钮的disabled属性 function(){ document.getElementsByClassName(submitBtn)[0].removeAttribute(disabled); } 2&#xff0c;调用js代码&#xff0c;带参数&#xff0c;没有返回值 输入参数&a…

Vue-02

开发者工具 安装插件&#xff0c;用于调试 Vue 应用。 https://chrome.zzzmh.cn/index 搜索 Vue &#xff0c;下载 Vue.js Devtools &#xff0c;此插件可以帮助更新信息&#xff0c;而不通过控制台更新&#xff0c;更方便调试。 注&#xff1a;安装插件后&#xff0c;记得在插…

05. Nginx入门-Nginx访问控制

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径&#xff1a;/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…

安卓开发:时间选择器

activity_main.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://sc…

高效备考一级数据分析师考试《CDA Level I 实操训练营》3月30日开课!

曾经报名了考试&#xff0c;买了教程辅导书&#xff0c;却因为各种原因没有坚持学习&#xff0c;这样的经历可能让你感到沮丧和失望。但是&#xff0c;失败并不代表终结&#xff0c;而是迈向成功的必经之路。为了帮助大家能够快速学习考试相关知识&#xff0c;特别为CDA LEVEL …

面试问答总结之Java进阶

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;注解Annotaion &#xff08;java标注&#xff09;&#x1f415;内置注解&#x1f415;元注解 &#x1f380;对象克隆&#x1f415;如何实现克隆&#x1f415;如何实现深克…

Linux第70步_新字符设备驱动的一般模板

1、了解“申请和释放设备号函数” int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) //注册字符设备驱动 //dev&#xff1a;保存申请到的设备号 //baseminor&#xff1a;次设备号的起始地址 //count&#xff1a;要申请的设备数…

【Java设计模式】五、建造者模式

文章目录 1、建造者模式2、案例&#xff1a;共享单车的创建3、其他用途 1、建造者模式 某个对象的构建复杂将复杂的对象的创建 和 属性赋值所分离&#xff0c;使得同样的构建过程可以创建不同的表示建造的过程和细节调用者不需要知道&#xff0c;只需要通过构建者去进行操作 …

Spring(22) Spring中的9种设计模式

目录 一、简单工厂模式&#xff08;Simple Factory&#xff09;二、工厂方法模式&#xff08;Factory Method&#xff09;三、单例模式&#xff08;Singleton&#xff09;四、适配器模式&#xff08;Adapter&#xff09;五、代理模式&#xff08;Proxy&#xff09;七、观察者模…

将jar包打包成exe可执行文件的工具介绍

在Java开发中&#xff0c;将.jar包打包成可执行的.exe文件是一种常见的需求&#xff0c;尤其是在需要将Java应用程序分发给没有安装Java虚拟机&#xff08;JVM&#xff09;的普通用户时。有多种工具可以将Java应用程序打包成.exe文件&#xff0c;这些工具通常使用Java的launch4…

从Win转Mac,我的感受如何

文章目录 前言MacBook优点美观动画流畅安装软件方便轻便、续航强大多数命令和Linux通用系统稳定、安全做工精美、视听体验好CPU性能较好触控板体验好 MacBook缺点缺乏部分软件部分操作逻辑不是很科学&#xff1f;玩不了多少游戏 总结与展望 前言 整个大学期间&#xff0c;我的主…

Flutter中的Provider状态管理工具有哪些优势

在Flutter应用开发中&#xff0c;状态管理是一个至关重要的方面。而Provider作为一种简单、灵活且高效的状态管理工具&#xff0c;在众多Flutter开发者中备受青睐。本文将深入探讨Provider在Flutter中的优势&#xff0c;帮助读者更好地理解其价值和应用场景。 简单易用 Provi…

最全AI领域知识星球:GoAI的学习社区

最全AI领域知识星球&#xff1a;GoAI的学习社区 【作者及星球介绍】 &#x1f468;‍&#x1f4bb;作者简介&#xff1a; CSDN、阿里云人工智能领域博客专家&#xff0c;新星计划计算机视觉导师&#xff0c;百度飞桨PPDE&#xff0c;专注大数据与AI知识分享。 ✨公众号&#x…