<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3-mathml3.dtd">
<article article-type="research-article" dtd-version="1.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Energy Res.</journal-id>
<journal-title-group>
<journal-title>Frontiers in Energy Research</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Energy Res.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">2296-598X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1746997</article-id>
<article-id pub-id-type="doi">10.3389/fenrg.2025.1746997</article-id>
<article-version article-version-type="Version of Record" vocab="NISO-RP-8-2008"/>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Original Research</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Multi-objective partitioning and cooperative peak shaving for distributed photovoltaic clusters via multi-agent reinforcement learning</article-title>
<alt-title alt-title-type="left-running-head">Ni et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fenrg.2025.1746997">10.3389/fenrg.2025.1746997</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Ni</surname>
<given-names>Jun</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; original draft" vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/">Writing - original draft</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Conceptualization" vocab-term-identifier="https://credit.niso.org/contributor-roles/conceptualization/">Conceptualization</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Investigation" vocab-term-identifier="https://credit.niso.org/contributor-roles/investigation/">Investigation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Formal analysis" vocab-term-identifier="https://credit.niso.org/contributor-roles/formal-analysis/">Formal Analysis</role>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Xu</surname>
<given-names>Chao</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/3182540"/>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Funding acquisition" vocab-term-identifier="https://credit.niso.org/contributor-roles/funding-acquisition/">Funding acquisition</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Methodology" vocab-term-identifier="https://credit.niso.org/contributor-roles/methodology/">Methodology</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Supervision" vocab-term-identifier="https://credit.niso.org/contributor-roles/supervision/">Supervision</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Project administration" vocab-term-identifier="https://credit.niso.org/contributor-roles/project-administration/">Project administration</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &#x26; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/">Writing - review and editing</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Fei</surname>
<given-names>Ke</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Software" vocab-term-identifier="https://credit.niso.org/contributor-roles/software/">Software</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Data curation" vocab-term-identifier="https://credit.niso.org/contributor-roles/data-curation/">Data curation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &#x26; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/">Writing - review and editing</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Validation" vocab-term-identifier="https://credit.niso.org/contributor-roles/validation/">Validation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Investigation" vocab-term-identifier="https://credit.niso.org/contributor-roles/investigation/">Investigation</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Hu</surname>
<given-names>Peng</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &#x26; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/">Writing - review and editing</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Resources" vocab-term-identifier="https://credit.niso.org/contributor-roles/resources/">Resources</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Formal analysis" vocab-term-identifier="https://credit.niso.org/contributor-roles/formal-analysis/">Formal Analysis</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Visualization" vocab-term-identifier="https://credit.niso.org/contributor-roles/visualization/">Visualization</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Xu</surname>
<given-names>Yan</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2165804"/>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Project administration" vocab-term-identifier="https://credit.niso.org/contributor-roles/project-administration/">Project administration</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Resources" vocab-term-identifier="https://credit.niso.org/contributor-roles/resources/">Resources</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &#x26; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/">Writing - review and editing</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Funding acquisition" vocab-term-identifier="https://credit.niso.org/contributor-roles/funding-acquisition/">Funding acquisition</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Li</surname>
<given-names>Jun</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Validation" vocab-term-identifier="https://credit.niso.org/contributor-roles/validation/">Validation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Investigation" vocab-term-identifier="https://credit.niso.org/contributor-roles/investigation/">Investigation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Data curation" vocab-term-identifier="https://credit.niso.org/contributor-roles/data-curation/">Data curation</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &#x26; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/">Writing - review and editing</role>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Ning</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Methodology" vocab-term-identifier="https://credit.niso.org/contributor-roles/methodology/">Methodology</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Writing &#x2013; review &#x26; editing" vocab-term-identifier="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/">Writing - review and editing</role>
<role vocab="credit" vocab-identifier="https://credit.niso.org/" vocab-term="Software" vocab-term-identifier="https://credit.niso.org/contributor-roles/software/">Software</role>
</contrib>
</contrib-group>
<aff id="aff1">
<label>1</label>
<institution>Wuxi Power Supply Company of State Grid Jiangsu Electric Power Co., Ltd.</institution>, <city>Wuxi</city>, <country country="CN">China</country>
</aff>
<aff id="aff2">
<label>2</label>
<institution>Jiangsu Frontier Electric Technology Co., Ltd.</institution>, <city>Nanjing</city>, <country country="CN">China</country>
</aff>
<aff id="aff3">
<label>3</label>
<institution>State Grid Jiangsu Electric Power Co., Ltd.</institution>, <city>Nanjing</city>, <country country="CN">China</country>
</aff>
<author-notes>
<corresp id="c001">
<label>&#x2a;</label>Correspondence: Chao Xu, <email xlink:href="mailto:xuchao.21@163.com">xuchao.21@163.com</email>
</corresp>
</author-notes>
<pub-date publication-format="electronic" date-type="pub" iso-8601-date="2026-01-23">
<day>23</day>
<month>01</month>
<year>2026</year>
</pub-date>
<pub-date publication-format="electronic" date-type="collection">
<year>2025</year>
</pub-date>
<volume>13</volume>
<elocation-id>1746997</elocation-id>
<history>
<date date-type="received">
<day>15</day>
<month>11</month>
<year>2025</year>
</date>
<date date-type="rev-recd">
<day>08</day>
<month>12</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>18</day>
<month>12</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2026 Ni, Xu, Fei, Hu, Xu, Li and Wang.</copyright-statement>
<copyright-year>2026</copyright-year>
<copyright-holder>Ni, Xu, Fei, Hu, Xu, Li and Wang</copyright-holder>
<license>
<ali:license_ref start_date="2026-01-23">https://creativecommons.org/licenses/by/4.0/</ali:license_ref>
<license-p>This is an open-access article distributed under the terms of the <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution License (CC BY)</ext-link>. The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</license-p>
</license>
</permissions>
<abstract>
<sec>
<title>Introduction</title>
<p>To address the urgent need for enhanced grid flexibility in high-penetration distributed photovoltaic (PV) systems, this paper proposes a novel two-stage framework integrating multi-objective cluster partitioning and multi-agent reinforcement learning (MARL) for cooperative peak shaving.</p>
</sec>
<sec>
<title>Methods</title>
<p>First, a comprehensive multi-objective optimization model defines PV cluster partitioning using three domain-specific metrics: available peak shaving margin (APSM), peak shaving synergy (PSS), and node correlation degree (NCD). This approach replaces conventional clustering algorithms, ensuring partitions balance electrical compactness, regulation capacity, and operational coordination. Subsequently, each partitioned cluster acts as an autonomous agent in a hierarchical MARL framework. Leveraging the multi-agent deep deterministic policy gradient (MADDPG) algorithm, agents collaboratively optimize active/reactive power allocation among clusters while coordinating unit-level control within clusters.</p>
</sec>
<sec>
<title>Results</title>
<p>Validated on the IEEE-33 node system, the strategy achieves a 29.39% reduction in peak-to-valley difference and 54.44% improvement in power balance deviation, significantly smoothing net load curves and enhancing voltage stability. </p>
</sec>
<sec>
<title>Discussion</title>
<p>This work demonstrates how MARL-driven coordination unlocks the inherent flexibility of distributed PV clusters, providing a scalable solution for grid-edge resource participation in system-level peak shaving.</p>
</sec>
</abstract>
<kwd-group>
<kwd>cluster partitioning</kwd>
<kwd>cooperative peak shaving</kwd>
<kwd>distributed photovoltaics</kwd>
<kwd>MADDPG</kwd>
<kwd>multi-agent reinforcement learning</kwd>
</kwd-group>
<funding-group>
<award-group id="gs1">
<funding-source id="sp1">
<institution-wrap>
<institution>State Grid Jiangsu Electric Power</institution>
<institution-id institution-id-type="doi" vocab="open-funder-registry" vocab-identifier="10.13039/open_funder_registry">10.13039/501100015330</institution-id>
</institution-wrap>
</funding-source>
</award-group>
<funding-statement>The author(s) declared that financial support was received for this work and/or its publication. This work is supported by the Science and Technology Project of State Grid Jiangsu Electric Power Company (J2024180).</funding-statement>
</funding-group>
<counts>
<fig-count count="18"/>
<table-count count="5"/>
<equation-count count="33"/>
<ref-count count="22"/>
<page-count count="00"/>
</counts>
<custom-meta-group>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Smart Grids</meta-value>
</custom-meta>
</custom-meta-group>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<label>1</label>
<title>Introduction</title>
<p>In the context of an accelerated global energy transition, the changing generation mix and load profile have imposed significant operational challenges to power systems due to structural shifts in generation and load profiles (<xref ref-type="bibr" rid="B18">Sun et al., 2022</xref>). The rapid integration of distributed energy resources, along with the growing complexity of user-side load characteristics, has intensified peak-to-valley differences in distribution networks (<xref ref-type="bibr" rid="B16">Shi et al., 2025</xref>). In 2024, a total of 451.9 GW of PV capacity was added globally, with China accounting for 278 GW and India following at 24.5 GW, whose inherent intermittency and volatility pose substantial challenges to system power balance (<xref ref-type="bibr" rid="B9">Irena, 2025</xref>). While flexibility resources such as pumped hydro storage and electrochemical energy storage are being increasingly deployed, their large-scale adoption remains constrained by long construction cycles, strong geographical dependencies, and high costs (<xref ref-type="bibr" rid="B1">Aleksandrov et al., 2025</xref>). Moreover, demand-side response mechanisms are still immature and cannot independently fulfill system peak shaving demands (<xref ref-type="bibr" rid="B17">Song et al., 2025</xref>). Therefore, it is imperative to develop a novel peak shaving framework that fully exploits the regulatory potential of distributed resources to enhance system flexibility and robustness (<xref ref-type="bibr" rid="B8">Hu et al., 2022</xref>). However, unlocking this potential is hindered by two fundamental research gaps. First, it remains challenging to construct PV clusters that are simultaneously electrically compact and functionally adequate for peak shaving; neglecting the latter often leads to clusters with insufficient regulation margins despite their geographical proximity. Second, achieving effective inter-cluster coordination without heavy communication dependencies is critical but unresolved, as traditional centralized or iterative distributed controls struggle with the latency and privacy issues inherent in grid-edge resources.</p>
<p>In recent years, the clustering and partitioning of PV clusters have attracted growing research interest as a means to address scale complexity. Existing studies primarily employ clustering algorithms, optimization techniques, and deep learning methods using geographical, electrical, and operational data to achieve cluster partitioning (<xref ref-type="bibr" rid="B14">Miraftabzadeh et al., 2023</xref>). For instance (<xref ref-type="bibr" rid="B10">Jiao et al., 2024</xref>), applied a density-based clustering algorithm to smart meter measurement data for topology identification in low-voltage distribution networks, providing a data-driven foundation for electrically-aware partitioning (<xref ref-type="bibr" rid="B12">Li et al., 2024</xref>). Utilized a self-organizing map (SOM) for multi-step clustering and equivalent modeling of distributed PV, validating the rationality of cluster-based modeling (<xref ref-type="bibr" rid="B19">Wen et al., 2025</xref>). Designed and implemented an intelligent control device for distributed PV clusters, which demonstrated high-precision power control and significantly enhanced operational stability in practical applications. Despite these advancements, these methodologies typically prioritize topological or electrical distances while overlooking the explicit peak shaving regulation capacity required for active grid support. Consequently, traditional clustering methods often fail to produce partitions that balance regulation capability with electrical compactness, creating a mismatch between cluster formation and operational objectives. Thus, there is a critical need for a high-performance, multi-objective clustering approach capable of processing high-dimensional data to achieve precise and functionally meaningful cluster divisions.</p>
<p>Regarding the participation of distributed PV clusters in grid peak shaving, existing research has largely focused on coordinated strategies involving hybrid resources such as energy storage and conventional generation units (<xref ref-type="bibr" rid="B15">Shen et al., 2019</xref>). For example (<xref ref-type="bibr" rid="B6">Guo et al., 2021</xref>), demonstrated the effectiveness of energy storage in reducing peak-to-valley differences through timed charging and discharging (<xref ref-type="bibr" rid="B13">Li et al., 2025</xref>; <xref ref-type="bibr" rid="B21">Zare Ghaleh Seyyedi et al., 2025</xref>). Proposed an &#x201c;aggregation&#x2013;peak shaving&#x2013;decomposition&#x201d; model for PV-storage systems, showing that coordinated operation can alleviate peak shaving pressure while enhancing economic benefits (<xref ref-type="bibr" rid="B22">Zhou et al., 2025</xref>). Integrated PV, energy storage, and electric vehicles to effectively reduce the grid load peak-valley difference through optimal power rationing. Nonetheless, these studies predominantly address coordination between distributed PV and external devices, paying limited attention to the inherent peak shaving capabilities of distributed PV itself. More importantly, existing coordinated control methods usually rely on frequent information exchange, suffering from low efficiency and inadequate global optimization (<xref ref-type="bibr" rid="B20">Yin et al., 2024</xref>). This reliance on communication infrastructure contradicts the need for autonomous, resilient control at the grid edge, identifying a clear gap for decentralized strategies that can operate with minimal inter-agent communication while maintaining global system stability (<xref ref-type="bibr" rid="B7">He et al., 2025</xref>).</p>
<p>In response to the aforementioned challenges, this paper proposes an integrated two-stage framework that synergizes multi-objective cluster partitioning with MARL to unlock the cooperative potential of distributed PV clusters for systematic peak shaving. The main contributions of this work are threefold. First, moving beyond conventional clustering methods, we formulate a multi-objective optimization model for PV cluster partitioning based on three dedicated metrics-APSM, PSS, and NCD -to ensure the formed clusters are structurally sound and functionally adequate for coordinated control. Second, a novel hierarchical control paradigm is established where each partitioned cluster acts as an autonomous agent. Leveraging the MADDPG algorithm, the framework achieves de-centralized decision-making for cooperative power allocation among clusters and precise regulation within a cluster, all under a centralized-training-decentralized-execution scheme. Finally, the proposed strategy is rigorously validated on a modified IEEE-33 node system, demonstrating significant improvements in flattening the net load profile and enhancing voltage stability. The overall architecture of the proposed methodology, illustrating the seamless flow from cluster partitioning to cooperative control, is depicted in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Framework of this paper.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g001.tif">
<alt-text content-type="machine-generated">Flowchart illustrating a process titled &#x22;Distributed PV cluster clustering with improved K-means&#x22; and &#x22;Peak shaving Optimization with multi-agent model.&#x22; The first part describes obtaining distribution network and PV parameters, calculating cluster division indices, applying an improved K-means algorithm, and outputting partition results. The second part involves a decision algorithm interacting with the environment states \(S_t\) and \(S_{t&#x2b;1}\), considering variables like average voltage amplitude, average cluster active and reactive power, residual output capacity, and total active load. A blue brain icon is used to depict the decision algorithm.</alt-text>
</graphic>
</fig>
<p>As illustrated in <xref ref-type="fig" rid="F1">Figure 1</xref>, the framework begins with the multi-objective partitioning of distributed PV systems into coherent clusters. Subsequently, these clusters are modeled as agents in the MARL environment, where they learn collaborative peak shaving policies through interaction with the distribution network. The remainder of this paper is organized as follows: <xref ref-type="sec" rid="s2">Section 2</xref> details the cluster partitioning methodology, <xref ref-type="sec" rid="s3">Section 3</xref> presents the MADDPG-based multi-agent peak shaving model, <xref ref-type="sec" rid="s4">Section 4</xref> provides case studies and analysis, and <xref ref-type="sec" rid="s5">Section 5</xref> concludes the paper.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Multi-objective partitioning model for distributed PV clusters</title>
<sec id="s2-1">
<label>2.1</label>
<title>Formulation of the comprehensive index system</title>
<p>The goal of cluster division is to achieve internal balanced autonomy and minimize the power exchange between clusters. Under the framework shown in <xref ref-type="fig" rid="F1">Figure 1</xref>, the comprehensive indicators for PV cluster clustering used in this paper can be classified into three categories based on their characteristics: APSM, PSS, and NCD indicators.</p>
<p>APSM is utilized to quantify the aggregated adjustable power capacity of the PV cluster, providing a fundamental data basis for evaluating its potential contribution to distributed peak shaving. The PSS index assesses the temporal alignment between local PV generation and load demand. A higher PSS indicates that the load profile closely follows the PV output curve, which minimizes the net load deviation and optimizes the cluster&#x2019;s self-balancing capability on a time scale. NCD index evaluates the electrical coupling strength among nodes, ensuring that the formed clusters are electrically compact and structurally suitable for coordinated voltage regulation. The specific indicators are defined as follows:<list list-type="order">
<list-item>
<p>As can be seen from <xref ref-type="fig" rid="F2">Figure 2</xref>, by adjusting the working voltage of the photovoltaic according to the photovoltaic characteristic curve, the output power of the photovoltaic can be changed. In order to effectively control the output of photovoltaic power, it is necessary to ensure that the leading nodes within the photovoltaic cluster have sufficient regulation capacity. In this paper, the MPPT algorithm is adopted, and there are two operating regions on its left and right. Given the reference power <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, there are two operating points A and B corresponding to it.</p>
</list-item>
</list>
</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Changes in operating points when PV clusters participate in power grid peak regulation.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g002.tif">
<alt-text content-type="machine-generated">Graph illustrating the power-voltage relationship of a photovoltaic system. The curve shows a peak at the maximum power point tracking (MPPT), labeled between points A and B. Vertical and horizontal dashed lines indicate important voltages \(U_a\), \(U_{\text{mppt}}\), \(U_b\), and \(U_{\text{oc}}\), and power levels \(P_{\text{max}}\) and \(P_{\text{ref}}\). Arrows mark left and right operating points.</alt-text>
</graphic>
</fig>
<p>If the photovoltaic system operates on the left side of the MPPT, the photovoltaic working voltage needs to be reduced to cut down the photovoltaic output power, that is: <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>If the photovoltaic system operates on the right side of the MPPT, the photovoltaic working voltage needs to be increased to reduce the photovoltaic output power, that is: <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The specific formula for peak shaving margin is defined as <xref ref-type="disp-formula" rid="e1">Equation 1</xref>:<disp-formula id="e1">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>where <inline-formula id="inf4">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the upper limit of the output of the photovoltaic cluster, <inline-formula id="inf5">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the current target power between <inline-formula id="inf6">
<mml:math id="m7">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf7">
<mml:math id="m8">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf8">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> indicates the APSM of this photovoltaic cluster.<list list-type="simple">
<list-item>
<p>2. PSS refers to the degree of matching between the renewable energy output power of the photovoltaic cluster as a whole and the optimized energy demand within a certain time scale, which is demonstrated through the coordinated dispatching among the nodes within the cluster.</p>
</list-item>
</list>
</p>
<p>As photovoltaic power is an uncontrollable resource, the cluster needs to establish a net load optimization model. The optimization object is all nodes within the cluster. The optimization objective is to make the optimized load curve as close as possible to the PV cluster&#x2019;s power generation curve in terms of time sequence, that is, to minimize the net load within the cluster, as shown in <xref ref-type="disp-formula" rid="e2">Equations 2</xref>, <xref ref-type="disp-formula" rid="e3">3</xref>.<disp-formula id="e2">
<mml:math id="m10">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>d</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:msub>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mstyle>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
<disp-formula id="e3">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>&#x3c6;</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>where <inline-formula id="inf9">
<mml:math id="m12">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the net load value of the <italic>K-th</italic> cluster after optimized scheduling at time <italic>t</italic>; <inline-formula id="inf10">
<mml:math id="m13">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the load value within cluster <italic>k</italic> at time t and the total power value of renewable energy; <inline-formula id="inf12">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>&#x3c6;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the optimization objective of the net load optimization model; <italic>T</italic> represents the scheduling period. In order to maximize the utilization of energy within the cluster during the optimal operation stage of the distribution network and reduce cross-regional power interaction, this paper takes the net load size within the cluster after optimized dispatching as the core basis for determining the matching degree of source-load-storage resources within the cluster.</p>
<p>Considering that both photovoltaic output and load output have the characteristic of fluctuating over time, it is necessary to select the average value of the cluster at a specific time scale to quantify the indicators. Based on this, the functional indicators of cluster division and the peak shaving coordination indicators can be expressed as <xref ref-type="disp-formula" rid="e4">Equations 4</xref>, <xref ref-type="disp-formula" rid="e5">5</xref>:<disp-formula id="e4">
<mml:math id="m16">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi>v</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
<disp-formula id="e5">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c6;</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>C</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x222b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>C</mml:mi>
</mml:msub>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x222b;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mi>T</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>where <inline-formula id="inf13">
<mml:math id="m18">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the degree of coordination between PV output and load in the <italic>K-th</italic> cluster at time t, and <inline-formula id="inf14">
<mml:math id="m19">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mi>t</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> &#x2208; (0,1]. <inline-formula id="inf15">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c6;</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the peak regulation coordination index of the entire distribution network, <inline-formula id="inf16">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>C</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the number of clusters. The more the optimized net load tends to 0, the closer the optimized load curve is to the photovoltaic output curve, indicating that the better the interaction matching degree of internal load resources in the cluster is, and the larger the value will be.<list list-type="simple">
<list-item>
<p>3. This index is based on the modularity concept (<xref ref-type="bibr" rid="B11">Kumari et al., 2025</xref>), which is used to measure the structural strength of the community network. Under the given power grid topology, line parameters and reference operating point, the definition of the cluster comprehensive performance index <inline-formula id="inf17">
<mml:math id="m22">
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> based on electrical distance and cluster comprehensive reserve degree is presented in <xref ref-type="disp-formula" rid="e6">Equation 6</xref>:</p>
</list-item>
</list>
<disp-formula id="e6">
<mml:math id="m23">
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>where m (calculated as <xref ref-type="disp-formula" rid="e7">Equation 7</xref>) represents the total weight of all the edges of the nodes in the cluster, <inline-formula id="inf18">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the edge weight of nodes <italic>i</italic> and <italic>j</italic>, <inline-formula id="inf19">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the product of the total weight of the edges connected to node <italic>i</italic> and node <italic>j</italic>, and <inline-formula id="inf20">
<mml:math id="m26">
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the identification function, defined as <xref ref-type="disp-formula" rid="e8">Equation 8</xref>.<disp-formula id="e7">
<mml:math id="m27">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m28">
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>Node&#x2009;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mtext>&#x2009;and&#x2009;Node&#x2009;</mml:mtext>
<mml:mi>j</mml:mi>
<mml:mtext>&#x2009;are&#x2009;in&#x2009;the&#x2009;same&#x2009;cluster</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mspace width="-14em"/>
<mml:mrow>
<mml:mtext>else</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>In the distribution network, the electrical distance based on which the network edge weight is determined is generally defined by the sensitivity relationship between power and voltage amplitude (<xref ref-type="bibr" rid="B2">Cai et al., 2020</xref>), as the changes of active and reactive power will significantly affect the voltage. The power-voltage sensitivity matrix of active and reactive power can be calculated by the power flow correction equation of Newton-Raphson method in polar coordinate form.</p>
<p>The Jacobian matrix is transformed to obtain the sensitivity matrix, as shown in <xref ref-type="disp-formula" rid="e9">Equation 9</xref>:<disp-formula id="e9">
<mml:math id="m29">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">J</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>where <inline-formula id="inf21">
<mml:math id="m30">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">J</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the inverse of Jacobian matrix; <inline-formula id="inf22">
<mml:math id="m31">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the active power-voltage phase Angle sensitivity matrix; <inline-formula id="inf23">
<mml:math id="m32">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is reactive power-voltage phase Angle sensitivity matrix; <inline-formula id="inf24">
<mml:math id="m33">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the active power-voltage amplitude sensitivity matrix; <inline-formula id="inf25">
<mml:math id="m34">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the reactive power-voltage amplitude sensitivity matrix.</p>
<p>The variation of voltage amplitude at any node and the variation of injected active and reactive power at all nodes are expressed as <xref ref-type="disp-formula" rid="e10">Equation 10</xref>:<disp-formula id="e10">
<mml:math id="m35">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>Thus, the electrical distances <inline-formula id="inf26">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf27">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> of nodes <italic>i</italic> and <italic>j</italic> based on re-active voltage sensitivity and active voltage sensitivity can be obtained as <xref ref-type="disp-formula" rid="e11">Equation 11</xref>:<disp-formula id="e11">
<mml:math id="m38">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>where <inline-formula id="inf28">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf29">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are the sensitivity coefficients of injected reactive power and active power of node <italic>i</italic> to its own voltage, respectively. <inline-formula id="inf30">
<mml:math id="m41">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf31">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are the sensitivity coefficients of injected reactive and active power of node <italic>j</italic> to its own voltage, respectively. <inline-formula id="inf32">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf33">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are the sensitivity coefficients of the injected reactive power and active power of node <italic>j</italic> to the voltage of node <italic>i</italic>, respectively. <inline-formula id="inf34">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf35">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are the sensitivity coefficients of the injected reactive and active power at node <italic>i</italic> to the voltage at node <italic>j</italic>, respectively</p>
<p>The following can be obtained as <xref ref-type="disp-formula" rid="e12">Equation 12</xref>:<disp-formula id="e12">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>A</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>where <inline-formula id="inf36">
<mml:math id="m48">
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the electrical distance matrix composed of the electrical distance between any two nodes in the cluster.</p>
<p>Finally, the comprehensive cluster clustering index <inline-formula id="inf37">
<mml:math id="m49">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3c6;</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> was generated by combining the APSM index, PSS index and NCD indices.</p>
</sec>
<sec id="s2-2">
<label>2.2</label>
<title>Multi-objective optimization model and solution method</title>
<p>PV cluster clustering is based on the geographical location, output characteristics, meteorological data and other multi-dimensional characteristics of PV, using clustering algorithm to extract and group its features, photovoltaic power stations with similar output patterns are divided into the same cluster, so as to achieve large-scale management and cooperative peak regulation control.</p>
<p>The clustering index data <inline-formula id="inf38">
<mml:math id="m50">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3c6;</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> selected above is normalized so that its mean value is 0 and its standard deviation is 1. The processed data can be expressed as <xref ref-type="disp-formula" rid="e13">Equation 13</xref>:<disp-formula id="e13">
<mml:math id="m51">
<mml:mrow>
<mml:msup>
<mml:mi>d</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>where <inline-formula id="inf39">
<mml:math id="m52">
<mml:mrow>
<mml:msup>
<mml:mi>d</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the normalized value of each clustering index data, <inline-formula id="inf40">
<mml:math id="m53">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the actual value of each clustering index data, <inline-formula id="inf41">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the minimum value of each clustering index data, and <inline-formula id="inf42">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the maximum value of each clustering index data.</p>
<p>The improved <italic>K</italic>-means clustering algorithm that optimizes the initial clustering center is simple and practical. This paper uses the clustering algorithm to divide the PV into different clusters according to the selected clustering index. Suppose that there is <italic>n</italic> distributed PV systems in the area, forming cluster <inline-formula id="inf43">
<mml:math id="m56">
<mml:mrow>
<mml:mi>Y</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. The optimal number of clusters is determined as <italic>K</italic> by the elbow method, where <inline-formula id="inf44">
<mml:math id="m57">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>:</p>
<p>Minimizing the squared error is expressed as <xref ref-type="disp-formula" rid="e14">Equation 14</xref>:<disp-formula id="e14">
<mml:math id="m58">
<mml:mrow>
<mml:msup>
<mml:mi>Q</mml:mi>
<mml:mtext>pv</mml:mtext>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>k</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msup>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>The conventional <italic>K</italic>-means algorithm is inherently limited by its sensitivity to initial centroid selection and outlier data points, which often leads to suboptimal clustering outcomes. In the context of peak shaving in power systems, such limitations can significantly undermine the effectiveness of cluster-based control strategies. To over-come these challenges and ensure that the clustering results are both structurally sound and functionally aligned with peak shaving requirements, this paper introduces an enhanced <italic>K</italic>-means methodology. This approach integrates three domain-specific clustering indices-namely, the APSM, PSS, and NCD-to reformulate the clustering process as a multi-objective optimization problem. The objective is to concurrently optimize several competing criteria, thereby achieving a balanced and technically viable partition of PV clusters. This formulation provides the foundation for the multi-objective optimization model, defined as <xref ref-type="disp-formula" rid="e15">Equation 15</xref>:<disp-formula id="e15">
<mml:math id="m59">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>K</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>K</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>min</mml:mi>
<mml:mtext>&#x2003;</mml:mtext>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>K</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:msub>
<mml:mi>&#x3c6;</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi>&#x3c6;</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>K</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mspace width="3em"/>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>In the formulated model, the objective function <inline-formula id="inf45">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> aims to maximize the electrical compactness within each cluster, thereby enhancing structural coherence; <inline-formula id="inf46">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> seeks to maximize the total peak-shaving capacity of the system, ensuring sufficient regulation margin across clusters; and <inline-formula id="inf47">
<mml:math id="m62">
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> achieves balanced distribution of peak-shaving responsibility among clusters by minimizing the standard deviation of power regulation coefficients. The set of PV nodes is denoted as <italic>N</italic>, and the predetermined number of clusters is <italic>K</italic>. The model employs binary decision variables <inline-formula id="inf48">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to define node-cluster assignments, constrained such that each node must belong to exactly one cluster, thereby ensuring solution feasibility and practical applicability. The complete work-flow for solving this multi-objective optimization problem is illustrated in <xref ref-type="fig" rid="F3">Figure 3</xref>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Flowchart of PV cluster clustering based on improved <italic>K</italic>-means.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g003.tif">
<alt-text content-type="machine-generated">Flowchart of a clustering process. It begins with data preprocessing, calculating three clustering indicators, and normalizing them. Optimal cluster number \( K \) is determined using the Elbow Method. DTW computes time-series similarity and builds a distance matrix. Initial cluster centers are selected through multi-objective optimization. For each point \( i \), the distance is calculated to each center. Nodes are assigned using a fused metric. After iterating for \( i &#x3d; n \), inter-cluster synergy is evaluated versus a threshold of 0.8. If exceeded, it outputs \( K \) clustering results and centers, ending the process.</alt-text>
</graphic>
</fig>
<p>Based on the enhanced <italic>K</italic>-means clustering algorithm and integrated with a comprehensive peak shaving evaluation index-comprising the APSM, PSS, and NCD indices-the optimal partitioning scheme for each cluster is determined. Finally, the load clustering results are generated and visualized. The detailed procedure is as follows:<list list-type="order">
<list-item>
<p>Data Preprocessing and Similarity Matrix Construction: First, the three key characteristic indicators for each photovoltaic (PV) node in the region are computed using the selected clustering metrics, and a dynamic time warping (DTW) distance matrix is constructed.</p>
</list-item>
<list-item>
<p>Determination of Optimal Cluster Number: The optimal number of clusters, <inline-formula id="inf49">
<mml:math id="m64">
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, is determined using the Elbow Method or other appropriate criteria. This ensures a practical balance between clustering compactness and the operational feasibility of the peak shaving task.</p>
</list-item>
<list-item>
<p>Initial Centroid Generation: Multi-objective Optimization Guidance. The initialization process is guided by two stages: The first initial centroid is selected as the midpoint of the node pair exhibiting the minimum distance in the DTW matrix. Subsequently, an improved k-mean sampling strategy guided by multi-objective optimization is adopted. The minimum weighted distance from each sample to the already selected centroids is calculated by fusing the three indicators&#x2019; weights, and the next centroid is chosen with a probability proportional to the squared distance.</p>
</list-item>
<list-item>
<p>Iterative Assignment and Centroid Update: For each node, its comprehensive distance to the <inline-formula id="inf50">
<mml:math id="m65">
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> centroids is calculated by integrating the three characteristic indicators, and the node is assigned to the nearest cluster. The cluster centroids are then updated by the mean or weighted mean of all intra-cluster samples. This assignment-update process repeats until the centroids stabilize.</p>
</list-item>
<list-item>
<p>Synergy Constraint Verification: For each pair of clusters, the Inter-Cluster Contribution Correlation is calculated. It is then verified whether the synergy coefficient for all cluster pairs exceeds the predefined threshold, which is set at 0.8 in this study. For each cluster <inline-formula id="inf51">
<mml:math id="m66">
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and time, define the cluster&#x2019;s direct contribution to balance deviation improvement as <xref ref-type="disp-formula" rid="e16">Equation 16</xref>:</p>
</list-item>
</list>
<disp-formula id="e16">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mtext>rest</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>where <inline-formula id="inf52">
<mml:math id="m68">
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mtext>rest</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> denotes the improvement under PV regulation, <inline-formula id="inf53">
<mml:math id="m69">
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> denotes the baseline deviation without PV regulation, and <inline-formula id="inf54">
<mml:math id="m70">
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> is a small constant to avoid division by zero.</p>
<p>Over the evaluation window (<inline-formula id="inf55">
<mml:math id="m71">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), the mean contribution of cluster <italic>c</italic> is calculated as <xref ref-type="disp-formula" rid="e17">Equation 17</xref>:<disp-formula id="e17">
<mml:math id="m72">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>S</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>c</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2211;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mn>1</mml:mn>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>The peak-shaving synergy coefficient between clusters <inline-formula id="inf56">
<mml:math id="m73">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf57">
<mml:math id="m74">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is defined as the Pearson correlation of their contribution time series, as shown in <xref ref-type="disp-formula" rid="e18">Equation 18</xref>:<disp-formula id="e18">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>S</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>S</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>S</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>S</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>where <inline-formula id="inf58">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the Inter-Cluster Contribution Correlation between cluster <italic>m</italic> and cluster <italic>n</italic>, which is a scalar value ranging from &#x2212;1 to 1.<list list-type="simple">
<list-item>
<p>6. Synergy-based Node Reallocation and Local Optimization:For any cluster pair that violates the synergy constraint, critical nodes identified as having the largest positive marginal impact on synergy improvement are reallocated. After each reallocation, the synergy coefficients are recalculated, and the process returns to Step (4) to continue the iteration until all cluster pairs satisfy the threshold or a maximum iteration/reallocation limit is reached.</p>
</list-item>
<list-item>
<p>7. Termination and Output: The algorithm terminates upon satisfying the synergy threshold or reaching the maximum iteration/reallocation limit. The final output includes cluster labels, centroid positions, and evaluation metrics, which are then utilized for subsequent peak shaving task allocation and visualization.</p>
</list-item>
</list>
</p>
<p>In summary, this section has established a comprehensive multi-objective partitioning model for distributed PV clusters, integrating three domain-specific metrics-APSM, PSS, and NCD-to guide the clustering process. By reformulating the partitioning task as a multi-objective optimization problem and employing an improved <italic>K</italic>-means algorithm, the proposed model ensures that the resulting clusters are not only electrically compact and structurally coherent but also functionally equipped for coordinated peak shaving.</p>
<p>Building upon this well-structured cluster foundation, the next section will present a hierarchical multi-agent reinforcement learning framework designed to leverage these clusters as autonomous decision-making agents. The goal is to enable cooperative peak shaving through decentralized control, thereby achieving system-wide optimization in both active and reactive power dispatch while maintaining voltage stability and operational efficiency.</p>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>A hierarchical multi-agent reinforcement learning framework for cooperative peak shaving</title>
<sec id="s3-1">
<label>3.1</label>
<title>Formulation of multi-agent peak shaving environment</title>
<p>In machine learning, an agent collects observations from its environment and employs a policy to make decisions based on these observations. Upon executing an action, the agent influences the environment, leading to a state transition. Subsequently, the agent receives a reward determined by the new environmental state, after which it initiates the next cycle of decision-making. The definitions of the agent, observation space, action space, and reward function are detailed in references (<xref ref-type="bibr" rid="B3">Cao et al., 2020</xref>; <xref ref-type="bibr" rid="B4">Cao et al., 2022</xref>).</p>
<sec id="s3-1-1">
<label>3.1.1</label>
<title>Agent definition</title>
<p>The distributed PV system is divided into <italic>K</italic> clusters by the modified <italic>K</italic>-means clustering of <xref ref-type="sec" rid="s2">Section 2</xref>. In this section, each PV cluster is defined as an agent, and the multi-agent system is constructed. The set of agents is set as <xref ref-type="disp-formula" rid="e17">Equation 17</xref>:<disp-formula id="e19">
<mml:math id="m77">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mi>K</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>where <inline-formula id="inf59">
<mml:math id="m78">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>g</mml:mi>
<mml:mi>K</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the corresponding <italic>K-th</italic> cluster, and each cluster acts as a decision-making body responsible for the power regulation of its internal PV unit. The co-operative relationship between clusters is directly determined by the electrical coupling strength characterized by the NCD.</p>
</sec>
<sec id="s3-1-2">
<label>3.1.2</label>
<title>Observation space design</title>
<p>Since this paper considers the PV output under cluster control, and each agent makes decisions only based on the electrical information of the distributed PV access nodes under its own control, the observation space of the designed agent is shown in <xref ref-type="disp-formula" rid="e20">Equation 20</xref>.<disp-formula id="e20">
<mml:math id="m79">
<mml:mrow>
<mml:msubsup>
<mml:mi>O</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mo>_</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mo>_</mml:mo>
</mml:mrow>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mo>_</mml:mo>
</mml:mrow>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>where <inline-formula id="inf60">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mo>_</mml:mo>
</mml:mrow>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the average voltage amplitude of cluster <italic>i</italic> at time period <italic>T</italic>, reflecting the overall voltage level of the cluster. <inline-formula id="inf61">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mo>_</mml:mo>
</mml:mrow>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the average active power of the average voltage amplitude of cluster <italic>i</italic> at time period <italic>T</italic>. <inline-formula id="inf62">
<mml:math id="m82">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mo>_</mml:mo>
</mml:mrow>
</mml:mover>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the average active power load of cluster <italic>i</italic> at time period <italic>T</italic>. <inline-formula id="inf63">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the remaining output capacity of cluster <italic>i</italic> in time period <italic>T</italic>. <inline-formula id="inf64">
<mml:math id="m84">
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the sum of the active power consumed by all users in cluster <italic>i</italic> in time period <italic>T</italic>.</p>
</sec>
<sec id="s3-1-3">
<label>3.1.3</label>
<title>Action space design</title>
<p>The peak shaving problem studied in this paper needs to address two key objectives simultaneously: power balance and voltage quality. To achieve this goal, the action space is designed to coordinate the active and reactive power adjustment instructions of the PV inverter, as shown in <xref ref-type="disp-formula" rid="e21">Equation 21</xref>:<disp-formula id="e21">
<mml:math id="m85">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>where <inline-formula id="inf65">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the number of PV units in cluster <italic>i</italic>, <inline-formula id="inf66">
<mml:math id="m87">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the active power regulation of the <italic>j-th</italic> PV unit in cluster <italic>i</italic> at time period <italic>T</italic>, and <inline-formula id="inf67">
<mml:math id="m88">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the reactive power regulation of the <italic>j-th</italic> PV unit in cluster <italic>i</italic> at time period <italic>T</italic>.</p>
<p>In order to meet the operation constraints of the PV inverter, this paper uses tanh function as the activation function of the output layer of the neural network, limits the original action output in the range of [-1,1], and then obtains the actual power regulation amount through linear scaling, as <xref ref-type="disp-formula" rid="e22">Equations 22</xref>, <xref ref-type="disp-formula" rid="e23">23</xref>.<disp-formula id="e22">
<mml:math id="m89">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>tanh</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mtext>raw</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>tanh</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mtext>raw</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>
<disp-formula id="e23">
<mml:math id="m90">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>where <inline-formula id="inf68">
<mml:math id="m91">
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>P</mml:mi>
</mml:mrow>
<mml:mtext>raw</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf69">
<mml:math id="m92">
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>Q</mml:mi>
</mml:mrow>
<mml:mtext>raw</mml:mtext>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the original active and reactive power action values output by the neural network, respectively. <inline-formula id="inf70">
<mml:math id="m93">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the maximum active power reduction of the PV unit at the current time, where <inline-formula id="inf71">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the current active power output and <inline-formula id="inf72">
<mml:math id="m95">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the minimum allowed active power output. <inline-formula id="inf73">
<mml:math id="m96">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the maximum adjustable reactive power of the PV unit at the current time.</p>
<p>This design method naturally satisfies the following inverter capacity constraints and active power regulation priority constraints, as shown in <xref ref-type="disp-formula" rid="e24">Equation 24</xref>:<disp-formula id="e24">
<mml:math id="m97">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mi>max</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>where <inline-formula id="inf74">
<mml:math id="m98">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the active power regulation coefficient, which reflects the system&#x2019;s acceptable level of generation loss. <inline-formula id="inf75">
<mml:math id="m99">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> denotes that active power reduction is forbidden, and <inline-formula id="inf76">
<mml:math id="m100">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> denotes that maximum active power reduction is allowed.</p>
</sec>
<sec id="s3-1-4">
<label>3.1.4</label>
<title>Reward function design</title>
<p>The reward function guides the learning direction by quantifying how good or bad the agent&#x2019;s behavior is. In this paper, multiple objectives such as voltage quality, network loss, peak shaving effect and cluster coordination are comprehensively considered, and a multi-objective reward function is designed as follows<list list-type="alpha-lower">
<list-item>
<p>Peak shaving effect reward, <inline-formula id="inf77">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext>peak</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the core goal of this paper, aiming to achieve power balance through active power regulation, and its calculation formula is presented in <xref ref-type="disp-formula" rid="e25">Equation 25</xref>.</p>
</list-item>
</list>
<disp-formula id="e25">
<mml:math id="m102">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext>peak</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>net</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>base</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>net</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mtext>limit</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>net</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>V</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>base</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>base</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>L</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(25)</label>
</disp-formula>where <inline-formula id="inf78">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>net</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the net power of the cluster, <inline-formula id="inf79">
<mml:math id="m104">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mtext>base</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the benchmark value that the cluster conforms to, <inline-formula id="inf80">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mtext>limit</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the upper limit of the net power allowed, <inline-formula id="inf81">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the weight coefficient, and <inline-formula id="inf82">
<mml:math id="m107">
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x226b;</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.<list list-type="simple">
<list-item>
<label>b.</label>
<p>Voltage quality reward <inline-formula id="inf83">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext>voltage</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> ensures system voltage safety in the peak shaving process, as defined in <xref ref-type="disp-formula" rid="e26">Equation 26</xref>:</p>
</list-item>
</list>
<disp-formula id="e26">
<mml:math id="m109">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mtext>voltage</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munder>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:munder>
</mml:mstyle>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mtext>ref</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mtext>violation</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3bc;</mml:mi>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>
</p>
<p>Among them: the first term penalizes voltage deviation and encourages voltage stability at the rated value; The second term imposes a penalty on the number of nodes that exceed the voltage limit. The third term penalizes intra-cluster voltage inconsistencies.<list list-type="simple">
<list-item>
<label>c.</label>
<p>Economic operation reward <inline-formula id="inf84">
<mml:math id="m110">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> Balance peak shaving effect and economic cost, as calculated in <xref ref-type="disp-formula" rid="e27">Equation 27</xref>:</p>
</list-item>
</list>
<disp-formula id="e27">
<mml:math id="m111">
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:munderover>
</mml:mstyle>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>q</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(27)</label>
</disp-formula>where the first term only penalizes active power reduction <inline-formula id="inf85">
<mml:math id="m112">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and does not penalize active power increase; The second penalty reactive power adjustment range, avoid excessive movement of equipment; Network loss cost: The third term penalizes the system active power loss.</p>
<p>In the framework of clustering agent peak-shaving, the system state is transferred deterministic by power flow calculation, and the discount factor is set to coordinate the current peak-shaving effect and long-term operation performance. This design enables each cluster agent to make distributed decisions based on local information, while ensuring global performance through multi-period optimization. <xref ref-type="fig" rid="F4">Figure 4</xref> shows the distributed peak shaving control framework of the cluster agent.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Distributed peak shaving control framework based on clustering agents.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g004.tif">
<alt-text content-type="machine-generated">Diagram showing four agents with neural network components, labeled Actor Network and Critic Network, indicating a reinforcement learning architecture. Below, a state-action diagram illustrates actions taken by agents in a grid-like environment, with numbered nodes and solar panels representing action choices and rewards. Dotted arrows indicate state transitions and actions.</alt-text>
</graphic>
</fig>
</sec>
</sec>
<sec id="s3-2">
<label>3.2</label>
<title>MADDPG-based control architecture</title>
<p>MADDPG is a deep reinforcement learning algorithm for multi-agents in partially observable environments, which is configured with an Actor network and a Critic network for each agent. At training time, the Critic network can use the global state and the actions of all agents; However, the Actor network can only use local observation states. When executed, only the Actor network is needed and decisions are made based on local observations.</p>
<p>In this paper, the PV cooperative peak shaving problem is modeled as a cooperative MARL problem. Based on the clustered multi-agent environment constructed in <xref ref-type="sec" rid="s3-1">Section 3.1</xref>, the basic components of the MADDPG algorithm are as follows. In this section, the environment state space, agent observation space, action space and reward function in MADDPG framework are formally defined, aiming to guide multiple cluster agents to coordinately control the active and reactive power output of their internal PV units according to local observation data, and finally realize the comprehensive optimization goal of global peak shaving and voltage stability in distribution network. The flowchart of the MADDPG algorithm is shown in <xref ref-type="fig" rid="F5">Figure 5</xref>.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Flow chart of MADDPG algorithm.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g005.tif">
<alt-text content-type="machine-generated">Flowchart illustrating a multi-agent reinforcement learning system across environments. Two environments, labeled as time t and t&#x2b;1, comprise clusters. Each agent has an Actor's Network and Critic's Network, with corresponding target networks. Updates occur through arrows, including soft updates and neural network processes. Each environment's actors and critics contribute to overall learning through MADDPG loss processes.</alt-text>
</graphic>
</fig>
<p>In MADDPG, The Actor network functions as a decentralized controller, mapping the local observation to a deterministic action. Following the standard notation in (<xref ref-type="bibr" rid="B3">Cao et al., 2020</xref>), we simplify the deep neural network representation as a parameterized policy function. For the <inline-formula id="inf86">
<mml:math id="m113">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> agent, the action <inline-formula id="inf87">
<mml:math id="m114">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is generated as <xref ref-type="disp-formula" rid="e28">Equation 28</xref>:<disp-formula id="e28">
<mml:math id="m115">
<mml:mrow>
<mml:msubsup>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
<mml:mo>&#x7c;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>&#x3c0;</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(28)</label>
</disp-formula>where <inline-formula id="inf88">
<mml:math id="m116">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the policy function parameterized by weights <inline-formula id="inf89">
<mml:math id="m117">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>&#x3c0;</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf90">
<mml:math id="m118">
<mml:mrow>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the local observation vector defined in <xref ref-type="sec" rid="s3-1">Section 3.1</xref>. The output layer employs a hyperbolic tangent (tanh) activation function to ensure the action is bounded within the feasible regulation range <inline-formula id="inf91">
<mml:math id="m119">
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The Critic network serves as a centralized evaluator during the training phase to address the non-stationarity of the multi-agent environment. It estimates the joint action-value function by taking the global state information and joint actions as inputs. The Q-value for agent <inline-formula id="inf92">
<mml:math id="m120">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is calculated as <xref ref-type="disp-formula" rid="e29">Equation 29</xref>:<disp-formula id="e29">
<mml:math id="m121">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi mathvariant="bold">o</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mo>;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(29)</label>
</disp-formula>where <inline-formula id="inf93">
<mml:math id="m122">
<mml:mrow>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mi>N</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf94">
<mml:math id="m123">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="}" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>N</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represent the set of observations and actions from all <inline-formula id="inf95">
<mml:math id="m124">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> clusters, respectively, and <inline-formula id="inf96">
<mml:math id="m125">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the parameters of the Critic network. This centralized critic structure allows the agent to implicitly learn the cooperative strategies embedded in the complex power grid interactions.</p>
<p>Critic Network Optimization: Based on temporal difference learning, the Critic network is updated by minimizing the Bellman error, defined in <xref ref-type="disp-formula" rid="e30">Equation 30</xref>.<disp-formula id="e30">
<mml:math id="m126">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="script">L</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi mathvariant="bold">o</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold">o</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x223c;</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi mathvariant="bold">o</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:msubsup>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
<mml:mtext>target</mml:mtext>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">o</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x7c;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>Q</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msup>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#xa0;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mn>1</mml:mn>
<mml:mtext>target</mml:mtext>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>K</mml:mi>
<mml:mtext>target</mml:mtext>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>K</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(30)</label>
</disp-formula>
</p>
<p>Update the gradient parameters as per <xref ref-type="disp-formula" rid="e31">Equation 31</xref>:<disp-formula id="e31">
<mml:math id="m127">
<mml:mrow>
<mml:msub>
<mml:mo>&#x2207;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
</mml:msub>
<mml:mi mathvariant="script">L</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mo>&#x2207;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
</mml:msub>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi mathvariant="bold">o</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">a</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(31)</label>
</disp-formula>
</p>
<p>Actor Network Optimization: Based on the policy gradient theorem, the Actor network is updated in the direction of boosting Q-values, as shown in <xref ref-type="disp-formula" rid="e32">Equation 32</xref>:<disp-formula id="e32">
<mml:math id="m128">
<mml:mrow>
<mml:msub>
<mml:mo>&#x2207;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
</mml:msubsup>
</mml:msub>
<mml:mi>J</mml:mi>
<mml:mo>&#x2248;</mml:mo>
<mml:msub>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mo>&#x2207;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
</mml:msubsup>
</mml:msub>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xb7;</mml:mo>
<mml:msub>
<mml:mo>&#x2207;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:msub>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>N</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(32)</label>
</disp-formula>
</p>
<p>To stabilize the training, the soft update mechanism is used to synchronize the target network, as described in <xref ref-type="disp-formula" rid="e33">Equation 33</xref>:<disp-formula id="e33">
<mml:math id="m129">
<mml:mrow>
<mml:mfenced open="{" close="" separators="&#x7c;">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>Q</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2190;</mml:mo>
<mml:mi>&#x3c4;</mml:mi>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>Q</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2190;</mml:mo>
<mml:mi>&#x3c4;</mml:mi>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>&#x3c0;</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3c4;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(33)</label>
</disp-formula>where <inline-formula id="inf97">
<mml:math id="m130">
<mml:mrow>
<mml:mi>&#x3c4;</mml:mi>
<mml:mo>&#x226a;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> is the soft update coefficient.</p>
<p>Upon completion of the training process, the network parameters are fixed, and only the Actor components are retained for deployment. Each agent&#x2019;s actuators can then make real-time decisions based on local observations. Since the augmented information is utilized exclusively by the Critic during training, agents are capable of exhibiting cooperative behavior and generating decisions that remain robust with respect to the actions of other agents, relying solely on local information. The flow of the real-time decentralized control algorithm is presented in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>.</p>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p> Multi-agent peak shaving training algorithm based on MADDPG.<list list-type="simple">
<list-item>
<p>1 Initialize replay buffer <inline-formula id="inf98">
<mml:math id="m131">
<mml:mrow>
<mml:mi mathvariant="script">D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, actor networks <inline-formula id="inf99">
<mml:math id="m132">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>&#x3c0;</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, critic networks <inline-formula id="inf100">
<mml:math id="m133">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>Q</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and target networks <inline-formula id="inf101">
<mml:math id="m134">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>Q</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>2 For episode &#x3d; 1: E do</p>
</list-item>
<list-item>
<p>3 &#x2003;Initialize the random operation state of the distribution network <inline-formula id="inf102">
<mml:math id="m135">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>4 &#x2003;For t &#x3d; 1: T do</p>
</list-item>
<list-item>
<p>5 &#x2003;&#x2003;The action of each agent is determined by its prevailing observation: <xref ref-type="disp-formula" rid="e20">Equation 20</xref>
</p>
</list-item>
<list-item>
<p>6 &#x2003;&#x2003;Performing joint actions: <xref ref-type="disp-formula" rid="e28">Equation 28</xref>, the new state is obtained by power flow calculation <inline-formula id="inf103">
<mml:math id="m136">
<mml:mrow>
<mml:msub>
<mml:mi>O</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>7 &#x2003;&#x2003;Calculate each agent&#x2019;s reward <inline-formula id="inf104">
<mml:math id="m137">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>: <xref ref-type="disp-formula" rid="e25">Equation 25</xref>-<xref ref-type="disp-formula" rid="e27">27</xref>
</p>
</list-item>
<list-item>
<p>8 &#x2003;&#x2003;Store experiences: <inline-formula id="inf105">
<mml:math id="m138">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> to <inline-formula id="inf106">
<mml:math id="m139">
<mml:mrow>
<mml:mi mathvariant="script">D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>9 &#x2003;&#x2003;IF experience sample is sufficient then</p>
</list-item>
<list-item>
<p>10 &#x2003;&#x2003;&#x2003;Mini-batch samples are randomly sampled from <inline-formula id="inf107">
<mml:math id="m140">
<mml:mrow>
<mml:mi mathvariant="script">D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>11 &#x2003;&#x2003;&#x2003;For each agent i do</p>
</list-item>
<list-item>
<p>12 &#x2003;&#x2003;&#x2003;&#x2003;Calculate the target Q-value: <inline-formula id="inf108">
<mml:math id="m141">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:msubsup>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi>
<mml:msup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>K</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>K</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="&#x7c;">
<mml:mrow>
<mml:msubsup>
<mml:mi>o</mml:mi>
<mml:mi>K</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>13 &#x2003;&#x2003;&#x2003;&#x2003;Update the critic network: <xref ref-type="disp-formula" rid="e31">Equation 31</xref>
</p>
</list-item>
<list-item>
<p>14 &#x2003;&#x2003;&#x2003;&#x2003;Update the actor network: <xref ref-type="disp-formula" rid="e32">Equation 32</xref>
</p>
</list-item>
<list-item>
<p>15 &#x2003;&#x2003;&#x2003;&#x2003;Soft update target network: <xref ref-type="disp-formula" rid="e33">Equation 33</xref>
</p>
</list-item>
<list-item>
<p>16 &#x2003;&#x2003;&#x2003;End for</p>
</list-item>
<list-item>
<p>17 &#x2003;&#x2003;End if</p>
</list-item>
<list-item>
<p>18 &#x2003;End for</p>
</list-item>
<list-item>
<p>19 End for</p>
</list-item>
</list>
</p>
</statement>
</p>
</sec>
<sec id="s3-3">
<label>3.3</label>
<title>Implementation of the hierarchical cooperative control strategy</title>
<p>This section presents the specific implementation mechanism of the collaborative peak shaving strategy for PV clusters, based on the multi-agent environment and the MADDPG algorithm framework established in the previous section. By leveraging a hierarchical decision-making architecture and a real-time feedback mechanism, the strategy achieves a closed-loop control system that integrates global optimization with local execution. The detailed implementation steps of the proposed approach are illustrated in <xref ref-type="fig" rid="F6">Figure 6</xref>:</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Flowchart of layered coordination control for distributed PV clusters based on multi-objective partitioning.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g006.tif">
<alt-text content-type="machine-generated">Flowchart illustrating the MADDPG algorithm for training. On the left, the offline training phase describes how agents perform actions and update states based on environmental feedback. The process updates global information for critic and actor policies. On the right, three steps detail power allocation among clusters, coordination of units within a cluster, and closed-loop feedback with dynamic adjustments, ensuring optimal power distribution without communication and with constraints and feedback loops in place.</alt-text>
</graphic>
</fig>
<p>Step 1: Power allocation among clusters.</p>
<p>At the system level, the power allocation among clusters is implicitly learned by the MADDPG algorithm in offline training and solidified into the policy of each agent. During the training process, the Critic network with global information guides each Actor to understand the impact of its own actions on the system as a whole and the potential reactions of other clusters. This enables each cluster to autonomously determine its share of power regulation when a system load disturbance is observed, based on its electrical distance from the disturbance node, its own peak shaving capacity, and the operating status of other clusters. The clusters with close electrical distance and strong adjustment ability will take the initiative to undertake more peak shaving tasks, otherwise, it will provide auxiliary support, so as to achieve global near-optimal power allocation without online communication and negotiation.</p>
<p>Step 2: Coordination of units within a cluster.</p>
<p>Inside the cluster, the refinement and execution of power commands are also made by the trained Actor network to achieve distributed autonomous decision-making. After the cluster agent determines the total power adjustment amount of its cluster according to its observation space, the action space output by its Actor network directly defines the active and reactive power adjustment instructions of each PV unit in the cluster. The network has learned in training how to decompose the total task into each unit according to the real-time operation point of each unit, proportion-ally or according to the principle of optimal efficiency, under the premise of meeting the inverter capacity constraints and hill climbing rate constraints.</p>
<p>Step 3: Closed-loop feedback and dynamic adjustment.</p>
<p>The execution results of each cluster will change the operation state of the distribution network, and these changes will be immediately reflected in the local observation of each agent at the next time. The agent then makes a new round of decisions, resulting in a continuous rolling optimization process. The dynamic adjustment mechanism based on real-time feedback makes the strategy automatically adapt to the uncertain factors such as light fluctuation and load change, and continuously track the optimal operating point of the system, thus ensuring the accuracy and robustness of the peak shaving effect.</p>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Simulation validation and case study analysis</title>
<sec id="s4-1">
<label>4.1</label>
<title>Experimental setup and test system configuration</title>
<p>To comprehensively evaluate the effectiveness and robustness of the proposed multi-objective partitioning and cooperative peak shaving strategy for PV clusters, simulations were conducted on the IEEE-33 node system (<xref ref-type="bibr" rid="B5">Gao et al., 2017</xref>). This system is a well-established benchmark in power distribution network studies, characterized by a radial topology consisting of 33 nodes and 32 branches. The IEEE-33 node system is particularly suited for this study due to its moderate number of nodes, clear structure, and flexibility in simulating various operational scenarios, including load fluctuations and high penetration of distributed PV systems.</p>
<p>In this study, a high penetration scenario was constructed by integrating 11 distributed PV systems into the IEEE-33 node system. The specific access points for these PV systems are detailed in <xref ref-type="table" rid="T1">Table 1</xref>, and the topological structure of the system is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>. The selection of these nodes was based on practical considerations, such as ensuring a diverse distribution of PV systems across the network to simulate real-world conditions effectively. The installed capacities of these PV systems range from 46.13 kW to 78.07 kW, reflecting a realistic distribution of PV installations in modern distribution networks.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Parameters of PV systems.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">PV number</th>
<th align="center">Access node</th>
<th align="center">Standard unitary maximum output</th>
<th align="center">Actual maximum capacity</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">PV1</td>
<td align="center">2</td>
<td align="center">0.7634</td>
<td align="center">763.4 kW</td>
</tr>
<tr>
<td align="center">PV2</td>
<td align="center">5</td>
<td align="center">0.7278</td>
<td align="center">727.8 kW</td>
</tr>
<tr>
<td align="center">PV3</td>
<td align="center">10</td>
<td align="center">0.4816</td>
<td align="center">481.6 kW</td>
</tr>
<tr>
<td align="center">PV4</td>
<td align="center">13</td>
<td align="center">0.5524</td>
<td align="center">552.4 kW</td>
</tr>
<tr>
<td align="center">PV5</td>
<td align="center">16</td>
<td align="center">0.4613</td>
<td align="center">461.3 kW</td>
</tr>
<tr>
<td align="center">PV6</td>
<td align="center">19</td>
<td align="center">0.5554</td>
<td align="center">555.4 kW</td>
</tr>
<tr>
<td align="center">PV7</td>
<td align="center">23</td>
<td align="center">0.7146</td>
<td align="center">714.6 kW</td>
</tr>
<tr>
<td align="center">PV8</td>
<td align="center">24</td>
<td align="center">0.7200</td>
<td align="center">720.0 kW</td>
</tr>
<tr>
<td align="center">PV9</td>
<td align="center">26</td>
<td align="center">0.5352</td>
<td align="center">535.2 kW</td>
</tr>
<tr>
<td align="center">PV10</td>
<td align="center">27</td>
<td align="center">0.7557</td>
<td align="center">755.7 kW</td>
</tr>
<tr>
<td align="center">PV11</td>
<td align="center">31</td>
<td align="center">0.7807</td>
<td align="center">780.7 kW</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Topological diagram of IEEE 33-node system.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g007.tif">
<alt-text content-type="machine-generated">Electrical grid diagram showing multiple photovoltaic systems connected at various points. Each PV system is labeled with its power output in kilowatts, such as PV1 with 763.4 kW, PV2 with 727.8 kW, and so on. Lines connect the PV systems, with numbered nodes indicating connection points.</alt-text>
</graphic>
</fig>
<p>The simulations were performed on a hardware platform equipped with an NVIDIA GTX 4050Ti GPU and an Intel Core i9-13900 KF CPU, ensuring sufficient computational power for the complex MARL algorithms employed in this study. The software environment consisted of the Windows 10 operating system, with all algorithms implemented using the PyTorch neural network framework and Python 3.10.0.</p>
<p>To simulate real-world load disturbances, a random disturbance factor was introduced into the IEEE-33 node system. The specific disturbance values for each hour of the day are detailed in <xref ref-type="table" rid="T4">Table 4</xref>. These disturbances were designed to mimic the random fluctuations in load that are commonly observed in power systems, providing a realistic testbed for evaluating the proposed peak shaving strategy.</p>
<p>By carefully configuring the test system and simulation environment, this study ensures that the results are both scientifically rigorous and practically relevant, providing valuable insights into the application of multi-objective partitioning and cooperative peak shaving strategies in modern distribution networks with high penetration of distributed PV systems.</p>
</sec>
<sec id="s4-2">
<label>4.2</label>
<title>PV cluster partitioning results and analysis</title>
<p>Following the determination of the optimal cluster number (<italic>K</italic> &#x3d; 4) via the elbow method, the improved <italic>K</italic>-means algorithm, guided by the comprehensive multi-objective optimization model, was leveraged to partition the distributed PV system. This advanced clustering approach moves beyond conventional methods by explicitly optimizing the defined metrics-APSM, PSS, and NCD-to ensure the resulting clusters are not only geographically and electrically coherent but also functionally prepared for cooperative control. The final partitioning scheme, which effectively delineates the network into four distinct clusters with balanced characteristics, is quantitatively summarized in <xref ref-type="table" rid="T2">Table 2</xref>. More intuitively, the spatial distribution of these clusters within the network topology is visually presented in <xref ref-type="fig" rid="F8">Figure 8</xref>, clearly illustrating the physical grouping of nodes.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Clustering results of PV systems.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Cluster number</th>
<th align="center">Node number</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">1</td>
<td align="center">1, 18, 19, 20, 21</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">5, 6, 7, 25, 26, 27, 28, 29, 30, 31, 32</td>
</tr>
<tr>
<td align="center">3</td>
<td align="center">2, 3, 4, 22, 23, 24</td>
</tr>
<tr>
<td align="center">4</td>
<td align="center">8, 9, 10, 11, 12, 13, 14, 15, 16, 17</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>The clustering partition results are carried out according to the selected clustering index.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g008.tif">
<alt-text content-type="machine-generated">Scatter plot showing clustering partition results based on the Comprehensive Index System. The chart is divided into four colored quadrants: light blue (cluster 1), light green (cluster 2), orange (cluster 3), and red (cluster 4). Each cluster contains multiple numbered data points. The legend on the top right indicates cluster colors. Axes range from zero to two.</alt-text>
</graphic>
</fig>
<p>This rational partition provides a critical structural foundation for the subsequent MARL framework, effectively defining the autonomous decision-making agents for the cooperative peak-shaving task. The following analysis delves into the specific composition and inherent properties of each cluster.</p>
<p>The results show that the distributed PV nodes in the IEEE-33 node system are clustered into four clusters with significant physical significance by the improved <italic>K</italic>-means clustering algorithm. Finally, four types of clusters dominated by core indicators such as peak shaving capacity and response speed were formed. Finally, the system clustering diagram is obtained according to the final layer division results, as shown in <xref ref-type="fig" rid="F9">Figure 9</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Topological mapping of multi-objective clustering results on the IEEE-33 system.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g009.tif">
<alt-text content-type="machine-generated">Diagram of a network system with interconnected nodes and lines, organized into four color-coded sections: blue, green, red, and orange. Each node is numbered from 0 to 32, with solar panel icons above specific nodes indicating power sources.</alt-text>
</graphic>
</fig>
<p>Based on the improved <italic>K</italic>-means clustering algorithm, combined with three core indicators of APSM, PSS, and NCD, the optimal number of clusters is determined to be 4, and the cluster division of PV nodes in IEEE-33 node system is completed. The results of PV cluster division will provide a clear control unit for MADDPG algorithm to construct a multi-agent environment, and will also provide key prior information for the Critic network to learn the interaction mode between clusters and the Actor network to generate the global optimal collaborative peak shaving strategy, thereby ensuring the effectiveness of algorithm training and peak shaving decisions.</p>
<p>To validate the physical significance of the partitioning results, a quantitative analysis of the three proposed metrics was conducted as shown in <xref ref-type="fig" rid="F10">Figure 10</xref>. Regarding regulation capacity, a 40% safety margin was applied to the APSM to ensure robustness against PV output uncertainties. Under this condition, Cluster 2 retains the highest effective capacity of 1.12 MW, establishing it as a capacity-oriented unit for bulk peak shaving. In terms of PSS, Cluster 3 achieves the highest coefficient of 0.68, indicating a strong temporal alignment between source and load. Consequently, Cluster 3 should be prioritized for active power regulation due to its high self-balancing potential. Conversely, Cluster 4 exhibits a negative synergy of &#x2212;0.04, reflecting a typical residential load pattern that is asynchronous with PV generation. Finally, regarding structural topology, <xref ref-type="fig" rid="F10">Figure 10c</xref> shows that Cluster 4 possesses a significantly elevated NCD of 3.83, compared to the average of 1.6 in other clusters. This high NCD characterizes Cluster 4 as a voltage-sensitive cluster located at the feeder end-zone where electrical coupling is strong. Therefore, its control agent naturally focuses on voltage stability maintenance rather than large-scale power flow regulation.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Cluster characteristics profiling based on proposed metrics. <bold>(a)</bold> Available Peak Shaving Margin(APSM). <bold>(b)</bold> Peak Shaving Synergy (PSS). <bold>(c)</bold> Node Correlation Degree (NCD).</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g010.tif">
<alt-text content-type="machine-generated">Three bar charts display different data metrics for four clusters. Chart (a) shows power capacity in megawatts, with Cluster 2 having the highest value at 1.12 and Cluster 1 the lowest at 0.22. Chart (b) presents correlation coefficients, where Cluster 3 is highest at 0.68, while Cluster 4 is slightly negative at -0.04. Chart (c) illustrates the electrical closeness index, with Cluster 4 having the highest value at 3.83, and Cluster 1 the lowest at 1.81.</alt-text>
</graphic>
</fig>
<p>It is important to note that the clustering stage serves primarily as a structural decomposition strategy to reduce the dimensionality of the control problem. The system&#x2019;s overall robustness is fundamentally guaranteed by the MADDPG agents. Trained under stochastic environments, these agents act as an adaptive control layer capable of compensating for minor topological variations resulting from clustering parameter sensitivities. This hierarchical design ensures that the peak-shaving performance is not overly sensitive to the precise tuning of clustering weights, provided the partitions maintain basic electrical coherence.</p>
</sec>
<sec id="s4-3">
<label>4.3</label>
<title>Experimental setup and test system configuration</title>
<p>To validate the effectiveness of the proposed cooperative peak-shaving strategy for PV clusters, the MADDPG algorithm was employed to train autonomous agents based on the clustering results obtained in <xref ref-type="sec" rid="s4-2">Section 4.2</xref>. Within this framework, each cluster defined by the multi-objective partitioning process was modeled as an independent agent. Guided by centralized training, these agents performed decentralized decision-making to optimize both inter-cluster power allocation and intra-cluster unit coordination. <xref ref-type="table" rid="T3">Table 3</xref> presents the hyperparameter settings of the MADDPG algorithm, which were carefully tuned to ensure robust performance. Specifically, the discount factor <italic>&#x3b3;</italic> &#x3d; 0.98 was selected to balance immediate and future rewards, allowing decision impacts to reasonably extend across the 24-h cycle while avoiding excessive emphasis on distant states that could hinder convergence. The hidden layer dimension &#x210e; &#x3d; 256 was chosen to provide sufficient network capacity while preventing overfitting caused by overly large dimensions, thereby achieving a balance between representational power and training efficiency.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Parameter settings of the proposed method.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Parameters</th>
<th align="center">Parameter values</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">Actor network learning rate</td>
<td align="center">0.005</td>
</tr>
<tr>
<td align="center">Critic network learning rate</td>
<td align="center">0.01</td>
</tr>
<tr>
<td align="center">Soft update coefficient</td>
<td align="center">0.005</td>
</tr>
<tr>
<td align="center">Initial exploration noise</td>
<td align="center">0.5</td>
</tr>
<tr>
<td align="center">Minimum exploration noise</td>
<td align="center">0.05</td>
</tr>
<tr>
<td align="center">Explore the noise attenuation coefficient</td>
<td align="center">0.998</td>
</tr>
<tr>
<td align="center">Experience pool capacity</td>
<td align="center">50,000</td>
</tr>
<tr>
<td align="center">Discount factor</td>
<td align="center">0.98</td>
</tr>
<tr>
<td align="center">Hidden layer dimension</td>
<td align="center">256</td>
</tr>
<tr>
<td align="center">Total number of training rounds</td>
<td align="center">200</td>
</tr>
<tr>
<td align="center">Early stop patience value</td>
<td align="center">30</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In order to verify the effectiveness of the distributed cooperative peak shaving control method based on multi-agent proposed in this paper and reflect the random fluctuation characteristics of load in the power system, this paper introduces a random disturbance factor into the IEEE-33 node system connection to simulate the peak shaving scene of the actual power grid, and the specific disturbance values are shown in <xref ref-type="table" rid="T4">Table 4</xref>.</p>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>24-h values of load disturbances.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Time/hour</th>
<th align="center">Load disturbance value (MW)</th>
<th align="center">Time/Hour</th>
<th align="center">Load disturbance value (MW)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">1</td>
<td align="center">0.575</td>
<td align="center">13</td>
<td align="center">0.950</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">0.550</td>
<td align="center">14</td>
<td align="center">0.850</td>
</tr>
<tr>
<td align="center">3</td>
<td align="center">0.508</td>
<td align="center">15</td>
<td align="center">0.850</td>
</tr>
<tr>
<td align="center">4</td>
<td align="center">0.499</td>
<td align="center">16</td>
<td align="center">0.870</td>
</tr>
<tr>
<td align="center">5</td>
<td align="center">0.508</td>
<td align="center">17</td>
<td align="center">0.930</td>
</tr>
<tr>
<td align="center">6</td>
<td align="center">0.570</td>
<td align="center">18</td>
<td align="center">0.990</td>
</tr>
<tr>
<td align="center">7</td>
<td align="center">0.680</td>
<td align="center">19</td>
<td align="center">1.010</td>
</tr>
<tr>
<td align="center">8</td>
<td align="center">0.950</td>
<td align="center">20</td>
<td align="center">0.990</td>
</tr>
<tr>
<td align="center">9</td>
<td align="center">1.010</td>
<td align="center">21</td>
<td align="center">0.840</td>
</tr>
<tr>
<td align="center">10</td>
<td align="center">1.040</td>
<td align="center">22</td>
<td align="center">0.800</td>
</tr>
<tr>
<td align="center">11</td>
<td align="center">1.020</td>
<td align="center">23</td>
<td align="center">0.800</td>
</tr>
<tr>
<td align="center">12</td>
<td align="center">1.000</td>
<td align="center">24</td>
<td align="center">0.700</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>
<xref ref-type="fig" rid="F11">Figure 11</xref> shows the reward value of the agent during the training process, the blue curve in the upper left subfigure is the total reward of each training round, and the red curve is the average reward of the &#x201c;10 rounds moving average&#x201d;. It can be seen that with the increase of the number of training rounds, the total reward shows an overall upward trend, while the &#x201c;10-round moving average&#x201d; curve gradually flattens out at 120 training rounds, indicating that each node has learned the optimal strategy to reduce the network loss.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Average reward curve of agent training.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g011.tif">
<alt-text content-type="machine-generated">Four graphs display performance metrics for a training model. Top-left: Total reward increases over episodes, with a blue line and red moving average. Top-right: Various reward components, with &#x22;Total Reward&#x22; showing a large dip. Bottom-left: Performance metrics with sharp spikes and flat regions. Bottom-right: Exploration noise decays linearly over training episodes.</alt-text>
</graphic>
</fig>
<p>The top right subfigure shows the contribution of each reward component such as balance reward, regulation reward, and voltage reward in the last round of training, indicating that the agent achieved the collaborative optimization of multi-objective in the final policy. The left subgraph quantifies the actual performance of the last round strategy from the dimensions of balance deviation, total regulation, and voltage deviation, which corroborates the metric optimization logic behind the average return improvement. The right subfigure &#x201c;Exploration noise attenuation curve&#x201d; presents the attenuation process of exploration noise with training rounds, reflecting the strategy transition of the algorithm from &#x201c;exploration oriented&#x201d; to &#x201c;exploitation oriented&#x201d;.</p>
<p>
<xref ref-type="fig" rid="F12">Figures 12</xref>, <xref ref-type="fig" rid="F13">13</xref> show the 24-h output of the 11 connected photovoltaics in the given example. The output of distributed PV included in the system is 0 at 0&#x2013;5 and 20&#x2013;24, and increases with the increase of light intensity at 5&#x2013;20.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Active power output curves of individual PV units.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g012.tif">
<alt-text content-type="machine-generated">Graph displaying individual PV output curves under MADDPG control over a 24-hour period. The y-axis represents PV output in megawatts, and the x-axis shows time in hours. Different colored lines indicate various PV units, peaking around noon and decreasing towards evening.</alt-text>
</graphic>
</fig>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>Aggregated active power output curves for each PV cluster.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g013.tif">
<alt-text content-type="machine-generated">Graph showing cluster total photovoltaic (PV) output curves under MADDPG control over a 24-hour period. Four curves represent different clusters: Cluster 1 (blue), Cluster 2 (orange), Cluster 3 (green), and Cluster 4 (red). The y-axis indicates PV output in megawatts, while the x-axis represents time in hours. Cluster 2 peaks highest around midday, followed by Cluster 3, Cluster 4, and Cluster 1. Output decreases symmetrically after each peak.</alt-text>
</graphic>
</fig>
<p>
<xref ref-type="fig" rid="F14">Figures 14</xref>, <xref ref-type="fig" rid="F15">15</xref> illustrate the adjusted power output profiles for individual PV units and aggregated clusters, respectively, following the MADDPG optimization under simulated load fluctuations. As shown in <xref ref-type="fig" rid="F14">Figure 14</xref>, the output of each specific PV unit is dynamically regulated based on the decision-making of its corresponding cluster agent. Furthermore, <xref ref-type="fig" rid="F15">Figure 15</xref> aggregates these responses, demonstrating how the collective adjustment of PV clusters aligns with the system&#x2019;s peak-shaving requirements.</p>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>The adjusted output curve of each PV.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g014.tif">
<alt-text content-type="machine-generated">Line graph showing the adjusted output curves of 11 photovoltaic systems (PV1-PV11) over a 24-hour period under MADDPG control. The y-axis represents PV output in megawatts, and the x-axis shows time in hours. Various colors and line styles differentiate each curve, with peaks between 9 and 17 hours.</alt-text>
</graphic>
</fig>
<fig id="F15" position="float">
<label>FIGURE 15</label>
<caption>
<p>The adjusted output curves of each PV cluster.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g015.tif">
<alt-text content-type="machine-generated">Line graph showing total PV output in megawatts over 24 hours for four clusters under MADDPG control. Cluster 1 is blue, Cluster 2 green, Cluster 3 orange, and Cluster 4 red. Cluster 3 peaks highest around 13 hours, while Cluster 1 shows the lowest and most stable output over time. The outputs for Cluster 2 and Cluster 4 vary significantly, peaking between 10 and 15 hours.</alt-text>
</graphic>
</fig>
<p>To further illustrate the collaborative behaviors of PV clusters, a typical operating day is selected from the simulation results for detailed analysis. <xref ref-type="fig" rid="F16">Figure 16</xref> shows the Controlled Power Output Ratio of each PV cluster during the peak shaving period, while <xref ref-type="fig" rid="F17">Figure 17</xref> presents the Overall Adjustment Ratio of each cluster. Together, these two figures demonstrate the coordinated decision-making mechanism and differentiated functional roles within the multi-agent system, achieved without direct communication.</p>
<fig id="F16" position="float">
<label>FIGURE 16</label>
<caption>
<p>Cluster capacity contribution ratio.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g016.tif">
<alt-text content-type="machine-generated">Line graph depicting hourly collaboration degree of four clusters in a distribution network over 24 hours. Each cluster is represented with different colored lines: blue, green, orange, and red. The graph shows fluctuations in collaboration degree, ranging between zero and 0.75. Time is on the x-axis, and collaboration degree on the y-axis. Significant variability is observed across clusters and time.</alt-text>
</graphic>
</fig>
<fig id="F17" position="float">
<label>FIGURE 17</label>
<caption>
<p>The cluster adjusted the proportion as a whole after MADDPG optimization.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g017.tif">
<alt-text content-type="machine-generated">Line graph showing cluster adjustment ratios over 24 hours under MADDPG control. Four clusters are represented with different colors: blue, orange, green, and red. The adjustment ratio on the y-axis ranges from negative 30 percent to positive 30 percent, showing fluctuations for each cluster over time. Peaks and drops are visible, indicating variable adjustment ratios for each cluster throughout the day.</alt-text>
</graphic>
</fig>
<p>
<xref ref-type="fig" rid="F16">Figure 16</xref> depicts the temporal evolution of the collaboration degree among the four PV clusters over a typical operating day. During non-generation periods (01:00&#x2013;05:00 and 21:00&#x2013;24:00), the PV systems are inactive and do not participate in peak shaving. From 06:00 to 11:00, Cluster 3 consistently maintains the highest synergy level at approximately 0.44, followed by Clusters 2 and 1, indicating that Cluster 3 assumes the dominant regulatory role during this period. As the system transitions into the high-load period (12:00&#x2013;20:00), the collaboration degrees exhibit significant fluctuations, reflecting active but unevenly distributed cooperative regulation. A notable shift occurs between 19:00 and 20:00, when Cluster 1&#x2019;s synergy degree surges to 0.74 while Cluster 3&#x2019;s drops sharply to 0.03, marking Cluster 1 as the primary regulator during this critical interval. Complementing the trends in <xref ref-type="fig" rid="F16">Figures 16</xref>, <xref ref-type="fig" rid="F17">17</xref> also provides the power adjustment ratios of each cluster relative to their baseline output. During the peak shaving phase, Clusters 3, 2, and 1 predominantly contribute by implementing power curtailment to maintain grid balance. In contrast, during the valley filling phase, distinct complementary behaviors emerge: Cluster 4 takes the leading role through downward regulation, while the other three clusters perform positive adjustments by increasing power injection.</p>
<p>The red curve in <xref ref-type="fig" rid="F18">Figure 18</xref> is the &#x201c;before peak shunted&#x201d; curve, showing significant fluctuation characteristics, which intuitively reflects the impact effect of load disturbance on the balance node power without PV regulation. The fluctuation of the blue curve is the &#x201c;after peak adjustment&#x201d; curve, which is significantly narrower, reflecting the regulation effect of the algorithm on the power balance.</p>
<fig id="F18" position="float">
<label>FIGURE 18</label>
<caption>
<p>Peak shaving performance at the balance node under MADDPG control.</p>
</caption>
<graphic xlink:href="fenrg-13-1746997-g018.tif">
<alt-text content-type="machine-generated">Graph comparing balance node power before and after MADDPG peak shaving. Blue line depicts PSO &#x2b; Synergy Control, and red dashed line shows uncontrolled load disturbance. Green area indicates power reduction, while red area shows increase. Chart includes peak shaving metrics like reduction amount, percentage, and total energy adjusted. Total energy adjusted is 20.557 megawatt-hours with a reduction amount of 0.975 megawatts, achieving a 29.39% reduction.</alt-text>
</graphic>
</fig>
<p>The simulation results quantitatively demonstrate the performance of the pro-posed MADDPG-based control strategy in mitigating power fluctuations. The application of the strategy led to a reduction in the peak-to-valley difference from 3.3174 MW to 2.3423 MW, corresponding to an improvement of 29.39%. Concurrently, an average enhancement of 59.68% in power balance deviation was achieved. These quantitative outcomes confirm the strategy&#x2019;s capability to flatten the net load curve and maintain active power balance within the distribution network, effectively alleviating the impact of load disturbances under high PV penetration.</p>
<p>The robustness of the proposed framework is fundamentally underpinned by the decentralized coordination mechanism established through the MARL framework. Relying on the centralized-training-decentralized-execution paradigm, MADDPG agents are trained in an environment characterized by stochastic load fluctuations and PV output uncertainties. This learning capability enables agents to develop cooperative strategies that are resilient to structural variations. Consequently, even if clustering parameters vary-leading to slight shifts in cluster boundaries-the agents can adaptively learn to adjust their policies to compensate for these changes during the training process. This mechanism allows the system to execute decisions based solely on local observations without real-time inter-cluster communication, ensuring that peak shaving performance remains robust and applicable to complex real-world scenarios regardless of precise parameter tuning.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<label>5</label>
<title>Conclusion</title>
<p>This study has successfully addressed the critical challenge of integrating high-penetration PV systems into the grid by introducing a novel, integrated framework that synergizes multi-objective cluster partitioning with hierarchical MARL for cooperative peak shaving. The proposed methodology demonstrates a significant advancement in leveraging the inherent flexibility of distributed PV clusters to enhance grid stability and power quality. The key conclusions derived from this work are summarized as follows.<list list-type="order">
<list-item>
<p>The multi-objective partitioning model, built upon the comprehensive indices of APSM, PSS, and NCD e, proves to be a robust foundation for the entire framework. By optimizing these metrics, the improved clustering algorithm effectively transitions the system from a collection of individual, disparate PV units into a set of functionally coherent and structurally sound clusters. This initial step is crucial, as it ensures that the formed clusters possess the inherent capability and synergistic potential necessary for effective coordinated control, thereby directly addressing the limitations of traditional clustering methods that lack explicit peak-shaving objectives.</p>
</list-item>
<list-item>
<p>The hierarchical MARL framework, centered on the MADDPG algorithm, effectively unlocks the cooperative potential of the partitioned PV clusters. The &#x201c;centralized-training-with-decentralized-execution&#x201d; paradigm enables each cluster agent to learn sophisticated policies that achieve near-optimal power allocation among clusters and precise power regulation within a cluster, relying solely on local observations. This capability was vividly demonstrated by the highly coordinated adjustment patterns of the different clusters, showcasing how the multi-agent system autonomously balances peak-shaving responsibilities based on real-time grid conditions without the need for continuous communication.</p>
</list-item>
<list-item>
<p>The simulation results on the IEEE-33 node system provide compelling evidence of the strategy&#x2019;s effectiveness. The 29.39% improvement in the peak-to-valley difference and the 54.44% enhancement in the average power balance deviation confirm that the proposed strategy significantly smooths the net load curve and mitigates power fluctuations at the balance node. These quantitative improvements, along with the maintained voltage stability, validate that the framework successfully meets its dual objectives of ensuring power balance and enhancing voltage quality.</p>
</list-item>
</list>
</p>
<p>In conclusion, this work presents a scalable and effective solution for managing the complexities of future distribution networks with high-penetration renewable energy. The integrated &#x201c;clustering-partitioning and multi-agent control&#x201d; framework reduces the computational and control complexity of distributed PV systems while demonstrating strong adaptability and robustness. However, for the transition from simulation to engineering application, practical deployment constraints must be carefully considered. Specifically, the stochastic nature of communication networks, particularly data transmission latency, may impact the synchronization stability of multi-agent coordination. Furthermore, the economic feasibility regarding the hardware costs of deploying edge computing nodes capable of running reinforcement learning algorithms needs to be balanced against operational gains. Future research will focus on extending the framework to incorporate heterogeneous resources like energy storage and electric vehicles, testing its performance under more extreme weather conditions, and investigating its practical deployment in real-world grid operations.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/supplementary material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>JN: Writing &#x2013; original draft, Conceptualization, Investigation, Formal Analysis. CX: Funding acquisition, Methodology, Supervision, Project administration, Writing &#x2013; review and editing. KF: Software, Data curation, Writing &#x2013; review and editing, Validation, Investigation. PH: Writing &#x2013; review and editing, Resources, Formal Analysis, Visualization. YX: Project administration, Resources, Writing &#x2013; review and editing, Funding acquisition. JL: Validation, Investigation, Data curation, Writing &#x2013; review and editing. NW: Methodology, Writing &#x2013; review and editing, Software.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>Authors JN, CX, and KF were employed by Wuxi Power Supply Company of State Grid Jiangsu Electric Power Co., Ltd. Authors PH, JL, and NW were employed by Jiangsu Frontier Electric Technology Co., Ltd. Author YX was employed by State Grid Jiangsu Electric Power Co., Ltd.</p>
<p>The authors acknowledge that this work was supported by State Grid Jiangsu Electric Power Company. The funder participated in the overall design of the research. The funder did not participate in data collection, analysis, or interpretation, nor did they contribute to the writing of this paper or the decision to submit it for publication.</p>
</sec>
<sec sec-type="ai-statement" id="s10">
<title>Generative AI statement</title>
<p>The author(s) declared that generative AI was not used in the creation of this manuscript.</p>
<p>Any alternative text (alt text) provided alongside figures in this article has been generated by Frontiers with the support of artificial intelligence and reasonable efforts have been made to ensure accuracy, including review by the authors wherever possible. If you identify any issues, please contact us.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<fn-group>
<fn fn-type="custom" custom-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3170564/overview">YongGang Li</ext-link>, North China Electric Power University (Baoding), China</p>
</fn>
<fn fn-type="custom" custom-type="reviewed-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1605917/overview">Peishuai Li</ext-link>, Nanjing University of Science and Technology, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3285226/overview">Qiang Fu</ext-link>, The Hong Kong Polytechnic University, Hong Kong SAR, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/3287593/overview">Lei Chen</ext-link>, Yangzhou University, China</p>
</fn>
</fn-group>
<ref-list>
<title>References</title>
<ref id="B1">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Aleksandrov</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Chekichev</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Parushev</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Shehova</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Popov</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2025</year>). &#x201c;<article-title>Analysis of energy storage technologies</article-title>,&#x201d; in <conf-name>Proceedings of the 2025 19th Conference on Electrical Machines, Drives and Power Systems (ELMA)</conf-name> (<publisher-loc>Sofia, Bulgaria</publisher-loc>: <publisher-name>Energy/Applied Energy/Renewable Energy/Solar Energy</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>5</lpage>. <pub-id pub-id-type="doi">10.1109/ELMA65795.2025.11083439</pub-id>
</mixed-citation>
</ref>
<ref id="B2">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Cai</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A network partition-based method for voltage control in distribution networks with distributed PV</article-title>. <conf-name>Proceedings of the 2020 IEEE 4th Conference on Energy Internet and Energy System Integration (EI2)</conf-name>. <publisher-loc>Wuhan, China</publisher-loc>: <publisher-name>IEEE</publisher-name>. <fpage>2156</fpage>&#x2013;<lpage>2161</lpage>. <pub-id pub-id-type="doi">10.1109/EI250167.2020.9346833</pub-id>
</mixed-citation>
</ref>
<ref id="B3">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cao</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Blaabjerg</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A multi-agent deep reinforcement learning based voltage regulation using coordinated PV inverters</article-title>. <source>IEEE Trans. Power Syst.</source> <volume>35</volume>, <fpage>4120</fpage>&#x2013;<lpage>4123</lpage>. <pub-id pub-id-type="doi">10.1109/TPWRS.2020.3000652</pub-id>
</mixed-citation>
</ref>
<ref id="B4">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cao</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>Q.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>Deep reinforcement learning enabled physical-model-free two-timescale voltage control method for active distribution systems</article-title>. <source>IEEE Trans. Smart Grid</source> <volume>13</volume>, <fpage>149</fpage>&#x2013;<lpage>165</lpage>. <pub-id pub-id-type="doi">10.1109/TSG.2021.3113085</pub-id>
</mixed-citation>
</ref>
<ref id="B5">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Liang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Multi-objective bilevel coordinated planning of distributed generation and distribution network frame based on mult scenario technique considering timing characteristics</article-title>. <source>IEEE Trans. Sustain. Energy</source> <volume>8</volume>, <fpage>1415</fpage>&#x2013;<lpage>1429</lpage>. <pub-id pub-id-type="doi">10.1109/TSTE.2017.2713053</pub-id>
</mixed-citation>
</ref>
<ref id="B6">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guo</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Cooperative peak shaving and voltage regulation in unbalanced distribution feeders</article-title>. <source>IEEE Trans. Power Syst.</source> <volume>36</volume>, <fpage>5235</fpage>&#x2013;<lpage>5244</lpage>. <pub-id pub-id-type="doi">10.1109/TPWRS.2021.3069781</pub-id>
</mixed-citation>
</ref>
<ref id="B7">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Dai</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Si</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yuen</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>ADMM for Mobile edge intelligence: a survey</article-title>. <source>IEEE Commun. Surv. Tutor.</source> <volume>27</volume>, <fpage>3020</fpage>&#x2013;<lpage>3057</lpage>. <pub-id pub-id-type="doi">10.1109/COMST.2024.3521024</pub-id>
</mixed-citation>
</ref>
<ref id="B8">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Ye</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ye</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Peng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Multi-agent deep reinforcement learning for voltage control with coordinated active and reactive power optimization</article-title>. <source>IEEE Trans. Smart Grid</source> <volume>13</volume>, <fpage>4873</fpage>&#x2013;<lpage>4886</lpage>. <pub-id pub-id-type="doi">10.1109/TSG.2022.3185975</pub-id>
</mixed-citation>
</ref>
<ref id="B9">
<mixed-citation publication-type="book">
<collab>IRENA</collab> (<year>2025</year>). <source>Renewable capacity statistics 2025</source>. <comment>Available online at: <ext-link ext-link-type="uri" xlink:href="https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2025/Mar/IRENA_DAT_RE_Capacity_Statistics_2025.pdf">https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2025/Mar/IRENA_DAT_RE_Capacity_Statistics_2025.pdf</ext-link> (Accessed November 12, 2025)</comment>.</mixed-citation>
</ref>
<ref id="B10">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jiao</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Ai</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Deng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>D.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>Topology identification method for low-voltage distribution node networks based on density clustering using smart meter real-time measurement data</article-title>. <source>IEEE Access</source> <volume>12</volume>, <fpage>83600</fpage>&#x2013;<lpage>83610</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2024.3407827</pub-id>
</mixed-citation>
</ref>
<ref id="B11">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kumari</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kumar</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kumar</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>A new modularity metric for disjoint and overlapping community structure evaluation in weighted complex networks</article-title>. <source>Int. J. Data Sci. Anal.</source> <volume>20</volume>, <fpage>5653</fpage>&#x2013;<lpage>5677</lpage>. <pub-id pub-id-type="doi">10.1007/s41060-025-00791-2.2</pub-id>
</mixed-citation>
</ref>
<ref id="B12">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Jiao</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Self-supervised self-organizing clustering network: a novel unsupervised representation learning method</article-title>. <source>IEEE Trans. Neural Netw. Learn. Syst.</source> <volume>35</volume>, <fpage>1857</fpage>&#x2013;<lpage>1871</lpage>. <pub-id pub-id-type="doi">10.1109/TNNLS.2022.3185638</pub-id>
<pub-id pub-id-type="pmid">35767481</pub-id>
</mixed-citation>
</ref>
<ref id="B13">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Du</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Xing</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Optimal dispatch and cost allocation model for combined peak shaving of source-load-storage under high percentage penetration of renewable energy</article-title>. <source>Renew. Energy</source> <volume>255</volume>, <fpage>123845</fpage>. <pub-id pub-id-type="doi">10.1016/j.renene.2025.123845</pub-id>
</mixed-citation>
</ref>
<ref id="B14">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Miraftabzadeh</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Colombo</surname>
<given-names>C. G.</given-names>
</name>
<name>
<surname>Longo</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Foiadelli</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>
<italic>K</italic>-Means and alternative clustering methods in modern power systems</article-title>. <source>IEEE Access</source> <volume>11</volume>, <fpage>119596</fpage>&#x2013;<lpage>119633</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2023.3327640</pub-id>
</mixed-citation>
</ref>
<ref id="B15">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shen</surname>
<given-names>J.-J.</given-names>
</name>
<name>
<surname>Shen</surname>
<given-names>Q.-Q.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>J.-Y.</given-names>
</name>
<name>
<surname>Meng</surname>
<given-names>Q.-X.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Generation scheduling of a hydrothermal system considering multiple provincial peak-shaving demands</article-title>. <source>IEEE Access</source> <volume>7</volume>, <fpage>46225</fpage>&#x2013;<lpage>46239</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2019.2906831</pub-id>
</mixed-citation>
</ref>
<ref id="B16">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shi</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>A review on the short-term strategy for reducing the peak-valley difference and the long-term energy structure optimization strategy in cities based on the integration of &#x201c;power generation - power grid - power load - energy storage&#x201d;</article-title>. <source>Front. Energy Res.</source> <volume>13</volume>, <fpage>1538811</fpage>. <pub-id pub-id-type="doi">10.3389/fenrg.2025.1538811</pub-id>
</mixed-citation>
</ref>
<ref id="B17">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Song</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Qin</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Wen</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Zou</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Coordinated multi-level scheduling method considering uncertainty of renewable energy and load</article-title>. <source>Front. Energy Res.</source> <volume>13</volume>, <fpage>1612065</fpage>. <pub-id pub-id-type="doi">10.3389/fenrg.2025.1612065</pub-id>
</mixed-citation>
</ref>
<ref id="B18">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sun</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Qiu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yi</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Tao</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Cost-effective coordinated voltage control in active distribution networks with photovoltaics and Mobile energy storage systems</article-title>. <source>IEEE Trans. Sustain. Energy</source> <volume>13</volume>, <fpage>501</fpage>&#x2013;<lpage>513</lpage>. <pub-id pub-id-type="doi">10.1109/TSTE.2021.3118404</pub-id>
</mixed-citation>
</ref>
<ref id="B19">
<mixed-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Wen</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Fan</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Ye</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2025</year>). &#x201c;<article-title>Design and implementation of intelligent control device for distributed photovoltaic clusters</article-title>,&#x201d; in <conf-name>Proceedings of the 2025 International Conference on Smart Grid and Sustainable Energy (SGSE)</conf-name> (<publisher-loc>China</publisher-loc>: <publisher-name>Zhangye</publisher-name>), <fpage>267</fpage>&#x2013;<lpage>270</lpage>. <pub-id pub-id-type="doi">10.1109/SGSE66281.2025.11200380</pub-id>
</mixed-citation>
</ref>
<ref id="B20">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yin</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Ni</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>A cloud&#x2013;edge collaborative multi-timescale scheduling strategy for peak regulation and renewable energy integration in distributed multi-energy systems</article-title>. <source>Energies</source> <volume>17</volume>, <fpage>3764</fpage>. <pub-id pub-id-type="doi">10.3390/en17153764</pub-id>
</mixed-citation>
</ref>
<ref id="B21">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zare Ghaleh Seyyedi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Gitizadeh</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Fakhrooeian</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Jabareh Nasero</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Achieving the goals of energy arbitrage, peak-shaving, and PV self-consumption using PV-BTM BESS microgrids coupled with a distribution network</article-title>. <source>J. Energy Storage</source> <volume>112</volume>, <fpage>115479</fpage>. <pub-id pub-id-type="doi">10.1016/j.est.2025.115479</pub-id>
</mixed-citation>
</ref>
<ref id="B22">
<mixed-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Energy collaborative optimization strategy for virtual power plants participating in green electricity trading and peak regulation ancillary services</article-title>. <source>Int. J. Electr. Power Energy Syst.</source> <volume>172</volume>, <fpage>111284</fpage>. <pub-id pub-id-type="doi">10.1016/j.ijepes.2025.111284</pub-id>
</mixed-citation>
</ref>
</ref-list>
</back>
</article>