考虑分布式电源的配电网无功优化问题研究(matlab代码)

简介: 考虑分布式电源的配电网无功优化问题研究(matlab代码)

1 主要内容

该程序部分参考《含分布式电源的配电网多目标优化问题研究》,以IEEE33节点系统为研究对象,采用改进单目标粒子群算法(采用惯性权重和小生境算法改进)进行优化,在配电网中设置分布式电源和电容器,以网损和电压偏差构建权值多目标函数,研究不同接入位置不同接入容量对电压值和网损的影响,程序采用多种方式对比,能够更好的研究确定最佳无功优化方案,程序基本实现句句注释,非常方便学习!

  • 33节点系统图

  • 参考算例模型

2 部分代码

clc;clear all;
%情景1-已知安装容量求解最佳安装位置
popmax=[33 1];%变量上限,位置1是接入节点最大值,位置2固定1M的DG
popmin=[2 1];%位置下限
[ploss1,Up,popsite]=pf33DG(popmax,popmin);%计算最优安装位置
best_a=popsite(1);%得到最佳安装位置
rand_b=[2,30];%随机确定对比位置
%未安装DG情况
shuju=case33bw; %得到33节点的数据
[basemva bus gen branch success et]=runpf(shuju);%潮流计算
n_Up=bus(:,8);%未安装DG情况的电压
ploss0=branch(:,14)+branch(:,16);
%其余对比情况
for i=1:2
shuju=case33bw; %得到33节点的数据
shuju.bus(rand_b(i),3)                        =shuju.bus(rand_b(i),3)-1;    %增加DG
[basemva bus gen branch success et]=runpf(shuju);%潮流计算
rand_Up(:,i)=bus(:,8);
plossd(:,i)=branch(:,14)+branch(:,16);
end
%画图
figure;
plot(n_Up,'k->')
hold on
plot(rand_Up(:,1),'b-*')
plot(rand_Up(:,2),'c-+')
plot(Up,'r-o')
legend('NO DG','接入2','接入30','接入12')
xlabel('节点');
ylabel('电压(p.u.)');
grid on
figure;
plot(ploss0(1:32,1),'k->')
hold on
plot(plossd(1:32,1),'b-*')
plot(plossd(1:32,2),'c-+')
plot(ploss1(1:32,1),'r-o')
legend('NO DG','接入2','接入30','接入12')
xlabel('支路');
ylabel('网损(MW)');
grid on
%-----------------------------------------------------------------------------
%情景2-已知安装位置求解最佳安装容量


3 程序结果


相关文章
|
14天前
|
调度
【核心完整复现】基于目标级联法的微网群多主体分布式优化调度
【核心完整复现】基于目标级联法的微网群多主体分布式优化调度
|
14天前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
14天前
|
算法
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
【免费】基于ADMM算法的多微网电能交互分布式运行策略(matlab代码)
|
14天前
|
NoSQL Java 关系型数据库
【Redis系列笔记】分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
146 2
|
14天前
|
NoSQL Java Redis
redis分布式锁
redis分布式锁
|
14天前
|
存储 监控 NoSQL
【Redis】分布式锁及其他常见问题
【Redis】分布式锁及其他常见问题
47 0
|
14天前
|
NoSQL Java Redis
【Redis】Redis实现分布式锁
【Redis】Redis实现分布式锁
19 0
|
14天前
|
监控 NoSQL 算法
探秘Redis分布式锁:实战与注意事项
本文介绍了Redis分区容错中的分布式锁概念,包括利用Watch实现乐观锁和使用setnx防止库存超卖。乐观锁通过Watch命令监控键值变化,在事务中执行修改,若键值被改变则事务失败。Java代码示例展示了具体实现。setnx命令用于库存操作,确保无超卖,通过设置锁并检查库存来更新。文章还讨论了分布式锁存在的问题,如客户端阻塞、时钟漂移和单点故障,并提出了RedLock算法来提高可靠性。Redisson作为生产环境的分布式锁实现,提供了可重入锁、读写锁等高级功能。最后,文章对比了Redis、Zookeeper和etcd的分布式锁特性。
165 16
探秘Redis分布式锁:实战与注意事项
|
14天前
|
NoSQL Java 大数据
介绍redis分布式锁
分布式锁是解决多进程在分布式环境中争夺资源的问题,与本地锁相似但适用于不同进程。以Redis为例,通过`setIfAbsent`实现占锁,加锁同时设置过期时间避免死锁。然而,获取锁与设置过期时间非原子性可能导致并发问题,解决方案是使用`setIfAbsent`的超时参数。此外,释放锁前需验证归属,防止误删他人锁,可借助Lua脚本确保原子性。实际应用中还有锁续期、重试机制等复杂问题,现成解决方案如RedisLockRegistry和Redisson。
|
14天前
|
缓存 NoSQL Java
【亮剑】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护,如何使用注解来实现 Redis 分布式锁的功能?
【4月更文挑战第30天】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护。基于 Redis 的分布式锁利用 SETNX 或 SET 命令实现,并考虑自动过期、可重入及原子性以确保可靠性。在 Java Spring Boot 中,可通过 `@EnableCaching`、`@Cacheable` 和 `@CacheEvict` 注解轻松实现 Redis 分布式锁功能。

热门文章

最新文章