核心内容摘要
朝鲜威胁行为体利用虚假招聘面试锁定软件开发者
分布式电源选址定容/Matlab编程 综合考虑投资成本、电压偏移量和线路网损构建分布式电源定容选址的数学模型通过启发式算法求解出分布式电源配置及最优选址。
注:对分布式电源不做区分!先搞个30节点的配电网模型练手。
网络参数直接塞进矩阵里电压基准取10kVbus_data [... 1 0 0 0 0 0
0; 2 100 60 0 0 0
0; ... % 其他节点数据 30 80 40 0 0 0
0];目标函数得把投资成本、网损、电压偏差揉在一起。
这里用加权求和法处理多目标function [f] objective(x) % x [安装位置, 容量, ...] cost_inv sum(x(:,
*
; % 假设5千元/kW loss calc_power_loss(x); % 网损计算函数 voltage_dev max(abs(1 - bus_voltage(x))); f
5*cost_inv
3*loss
2*voltage_dev*10000; end注意这里的权重系数要结合实际项目调整网损单位是kW电压偏差得放大系数才能和成本量级匹配。
分布式电源选址定容/Matlab编程 综合考虑投资成本、电压偏移量和线路网损构建分布式电源定容选址的数学模型通过启发式算法求解出分布式电源配置及最优选址。
注:对分布式电源不做区分!网损计算用前推回代法最靠谱不过赶时间的话可以用近似公式function [Ploss] fast_loss_calc(P,Q,V,R,X) I (P - 1j*Q)./V; Ploss real(sum(3 * (I).^2 .* (R 1j*X))); end重点来了——启发式算法选型。
经过实测改进的遗传算法在收敛速度和精度上比较平衡options optimoptions(ga,... PopulationSize,50,... CrossoverFraction,
8,... MutationFcn,mutationadaptfeasible,... MaxGenerations,
; [x_opt,fval] ga(objective,... 2*num_dg,... [],[],[],[],... zeros(1,2*num_dg),... [ones(1,num_dg)*30, ones(1,num_dg)*2000],... [],... options);这里有个坑直接把安装位置用连续变量处理取整的时候可能跑偏。
后来改成整数编码效果立竿见影IntCon 1:num_dg; % 前num_dg个变量为安装位置 [x_opt,fval] ga(objective,... 2*num_dg,... [],[],[],[],... [ones(1,num_dg),zeros(1,num_dg)],... [ones(1,num_dg)*30, ones(1,num_dg)*2000],... [],IntCon,options);最后来个结果可视化电压分布对比图最能说明问题figure; plot(1:30, V_base, r--, 1:30, V_opt, b-); title(节点电压对比); legend(原始网络,优化后); grid on;跑完发现个有趣现象最优位置往往出现在馈线中段而不是末端这和教科书案例不太一样。
后来排查发现是负荷分布不均导致的说明实际项目中的数据清洗比算法本身更重要。
参数调优方面几个经验值种群数量不要超过节点数的1/3变异率初始设
2后期逐步降低网损权重超过
4时会出现过度投资最后提醒别迷信全局最优多跑几次取Pareto解集才是王道。
下次试试混合粒子群算法说不定有惊喜呢