Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
sparrowzz
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
sgool
sparrowzz
Commits
d7704ec3
Commit
d7704ec3
authored
Sep 20, 2025
by
dongshufeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: little change
parent
05bbe130
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
35 行增加
和
35 行删除
+35
-35
rspower/examples/test_var_in_for.txt
+4
-4
rspower/lib/total_load.txt
+31
-31
没有找到文件。
rspower/examples/test_var_in_for.txt
查看文件 @
d7704ec3
...
@@ -13,11 +13,12 @@
...
@@ -13,11 +13,12 @@
#include ../lib/pfsoln.txt
#include ../lib/pfsoln.txt
#include ../lib/total_load.txt
#include ../lib/total_load.txt
/*
info("Running power flow on case14...");
info("Running power flow on case14...");
for i in 0..5 {
for i in 0..5 {
V = runpf();
runpf();
//V = runpf();
}
}
info("Run power flow on case14 end");
*/
info("Run power flow on case14 end");
V = [
V = [
[c(1.06, 0.0)],
[c(1.06, 0.0)],
...
@@ -35,7 +36,6 @@ V = [
...
@@ -35,7 +36,6 @@ V = [
[c(1.0138455467690366, -0.27462511105715226)],
[c(1.0138455467690366, -0.27462511105715226)],
[c(0.9952474931854945, -0.28601520251885126)]
[c(0.9952474931854945, -0.28601520251885126)]
];
];
bus = assign(bus, abs(V), [0], [VM-1, VM] );
bus = assign(bus, abs(V), [0], [VM-1, VM] );
bus = assign(bus, angle(V) * 180 / pi, [0], [VA-1, VA] );
bus = assign(bus, angle(V) * 180 / pi, [0], [VA-1, VA] );
...
...
rspower/lib/total_load.txt
查看文件 @
d7704ec3
//TOTAL_LOAD Returns vector of total load in each load zone.
//
TOTAL_LOAD Returns vector of total load in each load zone.
// PD = TOTAL_LOAD(MPC)
// PD = TOTAL_LOAD(MPC)
// PD = TOTAL_LOAD(MPC, LOAD_ZONE)
// PD = TOTAL_LOAD(MPC, LOAD_ZONE)
// PD = TOTAL_LOAD(MPC, LOAD_ZONE, OPT)
// PD = TOTAL_LOAD(MPC, LOAD_ZONE, OPT)
...
@@ -79,59 +79,58 @@
...
@@ -79,59 +79,58 @@
// #include ../lib/idx_brch.txt
// #include ../lib/idx_brch.txt
// #include ../lib/make_sdzip.txt
// #include ../lib/make_sdzip.txt
fn
total_load(bus, gen, load_zone, opt_type, opt_nominal, mpopt)
{
fn
total_load(bus, gen, load_zone, opt_type, opt_nominal, mpopt)
{
//matlab中load_zone、opt为字符串输入,本程序中规定直接用数字来指代相应的选项类型
//
matlab中load_zone、opt为字符串输入,本程序中规定直接用数字来指代相应的选项类型
//load_zone为分区模式,包括、整个系统为一个分区(all,默认值,用0表示)、每个母线单独分区(bus,用1表示)、使用母线区域定义(area,用2表示)
//
load_zone为分区模式,包括、整个系统为一个分区(all,默认值,用0表示)、每个母线单独分区(bus,用1表示)、使用母线区域定义(area,用2表示)
//opt_type为负荷类型,包括固定+可调度负荷(BOTH,默认值,用0表示)、仅计算固定负荷(FIXED,用1表示)、仅计算可调度负荷(DISPATCHABLE,用2表示)
//
opt_type为负荷类型,包括固定+可调度负荷(BOTH,默认值,用0表示)、仅计算固定负荷(FIXED,用1表示)、仅计算可调度负荷(DISPATCHABLE,用2表示)
//opt_nominal为实际值(默认值,用0表示),额定值(用1表示)
//
opt_nominal为实际值(默认值,用0表示),额定值(用1表示)
nb = size(bus, 0); // number of buses
nb = size(bus, 0); // number of buses
// default options
// default options
if is_empty(opt_type){
if is_empty(opt_type)
{
if is_empty(gen){
if is_empty(gen)
{
opt_type = 1;
opt_type = 1;
}else{
}else{
opt_type = 0;
opt_type = 0;
}
}
}
}
if is_empty(opt_nominal){
if is_empty(opt_nominal)
{
opt_nominal = 0;
opt_nominal = 0;
}
}
want_fixed = (opt_type == 0 || opt_type == 1); //是否计算固定负荷
want_fixed = (opt_type == 0 || opt_type == 1); //
是否计算固定负荷
want_disp = (opt_type == 0 || opt_type == 2); //是否计算可调度负荷
want_disp = (opt_type == 0 || opt_type == 2); //
是否计算可调度负荷
// initialize load_zone
// initialize load_zone
if is_empty(load_zone){
if is_empty(load_zone)
{
LZone = slice(bus, [0], [BUS_AREA-1, BUS_AREA]);
LZone = slice(bus, [0], [BUS_AREA-1, BUS_AREA]);
}
else
{
}
else
{
if load_zone == 0{ // make a single zone of all buses
if load_zone == 0
{ // make a single zone of all buses
LZone = ones(nb, 1);
LZone = ones(nb, 1);
}
else if load_zone == 1
{ // each bus is its own zone
}
else if load_zone == 1
{ // each bus is its own zone
LZone = range(1, nb+1)';
LZone = range(1, nb+1)';
}
else if load_zone == 2
{ // use areas defined in bus data as zones
}
else if load_zone == 2
{ // use areas defined in bus data as zones
LZone = slice(bus, [0], [BUS_AREA-1, BUS_AREA]);
LZone = slice(bus, [0], [BUS_AREA-1, BUS_AREA]);
}
}
}
}
nz = max(LZone); // number of load zones
nz = max(LZone); // number of load zones
// fixed load at each bus, & initialize dispatchable
// fixed load at each bus, & initialize dispatchable
if want_fixed == 1{
if want_fixed == 1
{
Sd = make_sdzip(1, bus);
Sd = make_sdzip(1, bus);
Vm = slice(bus, [0], [VM-1, VM]);
Vm = slice(bus, [0], [VM-1, VM]);
Sbusd = slice(Sd, [0], [2, 3]) + slice(Sd, [0], [1, 2]) .* Vm + slice(Sd, [0], [0, 1]) .* Vm.^2;
Sbusd = slice(Sd, [0], [2, 3]) + slice(Sd, [0], [1, 2]) .* Vm + slice(Sd, [0], [0, 1]) .* Vm.^2;
Pdf = real(Sbusd); // real power
Pdf = real(Sbusd); // real power
Qdf = imag(Sbusd); // reactive power
Qdf = imag(Sbusd); // reactive power
}
else
{
}
else
{
Pdf = zeros(nb, 1); // real power
Pdf = zeros(nb, 1); // real power
Qdf = zeros(nb, 1); // reactive power
Qdf = zeros(nb, 1); // reactive power
}
}
// dispatchable load at each bus
// dispatchable load at each bus
if want_disp ==
1
{ // need dispatchable
if want_disp ==
1
{ // need dispatchable
ng = size(gen, 0);
ng = size(gen, 0);
is_ld = (slice(gen, [0], [PMIN-1, PMIN]) < 0) && (slice(gen, [0], [PMAX-1, PMAX]) == 0) && (slice(gen, [0], [GEN_STATUS-1, GEN_STATUS]) > 0);
is_ld = (slice(gen, [0], [PMIN-1, PMIN]) < 0) && (slice(gen, [0], [PMAX-1, PMAX]) == 0) && (slice(gen, [0], [GEN_STATUS-1, GEN_STATUS]) > 0);
ld = find(is_ld);
ld = find(is_ld);
...
@@ -144,39 +143,40 @@ fn total_load(bus, gen, load_zone, opt_type, opt_nominal, mpopt){
...
@@ -144,39 +143,40 @@ fn total_load(bus, gen, load_zone, opt_type, opt_nominal, mpopt){
index_line = get_multi(e2i, slice(gen, [0], [GEN_BUS-1, GEN_BUS]) - 1) - 1;
index_line = get_multi(e2i, slice(gen, [0], [GEN_BUS-1, GEN_BUS]) - 1) - 1;
Cld = full(sparse(index_line', range(0, ng)', is_ld, nb, ng));
Cld = full(sparse(index_line', range(0, ng)', is_ld, nb, ng));
if opt_nominal == 1
{
// use nominal power
if opt_nominal == 1
{
// use nominal power
Pdd = -Cld * slice(gen, [0], [PMIN-1, PMIN]); // real power
Pdd = -Cld * slice(gen, [0], [PMIN-1, PMIN]); // real power
Q = zeros(ng, 1);
Q = zeros(ng, 1);
if ~~is_empty(ld){
println("is empty 5");
if ~~is_empty(ld) {
value_Qld = (select(gen, [ld], [QMIN - 1]) == 0) .* select(gen, [ld], [QMAX - 1]) + (select(gen, [ld], [QMAX - 1]) == 0) .* select(gen, [ld], [QMIN - 1]);
value_Qld = (select(gen, [ld], [QMIN - 1]) == 0) .* select(gen, [ld], [QMAX - 1]) + (select(gen, [ld], [QMAX - 1]) == 0) .* select(gen, [ld], [QMIN - 1]);
Q = set(Q, ld, value_Qld );
Q = set(Q, ld, value_Qld );
}
}
Qdd = -Cld * Q; // reactive power
Qdd = -Cld * Q; // reactive power
}
else{
// use realized actual power dispatch
}
else {
// use realized actual power dispatch
Pdd = -Cld * slice(gen, [0], [PG-1, PG]); // real power
Pdd = -Cld * slice(gen, [0], [PG-1, PG]); // real power
Qdd = -Cld * slice(gen, [0], [QG-1, QG]); // reactive power
Qdd = -Cld * slice(gen, [0], [QG-1, QG]); // reactive power
}
}
}
else
{
}
else
{
Pdd = zeros(nb, 1);
Pdd = zeros(nb, 1);
Qdd = zeros(nb, 1);
Qdd = zeros(nb, 1);
}
}
// compute load sums
// compute load sums
if (nz == nb) && (sum(LZone == range(1,nb+1)')/nz == 1)
{ //
nz == nb且LZone和range(1,nb+1)'元素全相等
if (nz == nb) && (sum(LZone == range(1,nb+1)')/nz == 1)
{ //
nz == nb且LZone和range(1,nb+1)'元素全相等
BUS_TYPE_NONE = (slice(bus, [0], [BUS_TYPE-1, BUS_TYPE]) == ones(nb,1)* NONE); //判断节点类型是否为NONE
BUS_TYPE_NONE = (slice(bus, [0], [BUS_TYPE-1, BUS_TYPE]) == ones(nb,1)* NONE); //
判断节点类型是否为NONE
Pd = (Pdf + Pdd) .* (~~BUS_TYPE_NONE);
Pd = (Pdf + Pdd) .* (~~BUS_TYPE_NONE);
Qd = (Qdf + Qdd) .* (~~BUS_TYPE_NONE);
Qd = (Qdf + Qdd) .* (~~BUS_TYPE_NONE);
}
else
{
}
else
{
BUS_TYPE_NONE = (slice(bus, [0], [BUS_TYPE-1, BUS_TYPE]) == ones(nb,1)* NONE);
BUS_TYPE_NONE = (slice(bus, [0], [BUS_TYPE-1, BUS_TYPE]) == ones(nb,1)* NONE);
Pd = zeros(nz, 1);
Pd = zeros(nz, 1);
Qd = zeros(nz, 1);
Qd = zeros(nz, 1);
for k in 1..(nz+1){
for k in 1..(nz+1)
{
idx = find( LZone == k && BUS_TYPE_NONE == 0);
idx = find( LZone == k && BUS_TYPE_NONE == 0
);
Pd = set(Pd, [k-1], [sum(get_multi(Pdf, [idx])) + sum(get_multi(Pdd, [idx]))]
);
Pd = set(Pd, [k-1], [sum(get_multi(Pdf, [idx])) + sum(get_multi(Pdd, [idx]))]);
Qd = set(Qd, [k-1], [sum(get_multi(Qdf, [idx])) + sum(get_multi(Qdd, [idx]))]
);
Qd = set(Qd, [k-1], [sum(get_multi(Qdf, [idx])) + sum(get_multi(Qdd, [idx]))]);
}
}
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论