<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Archiving and Interchange DTD v2.3 20070202//EN" "archivearticle.dtd">
<article article-type="methods-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Energy Res.</journal-id>
<journal-title>Frontiers in Energy Research</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Energy Res.</abbrev-journal-title>
<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">1152032</article-id>
<article-id pub-id-type="doi">10.3389/fenrg.2023.1152032</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Energy Research</subject>
<subj-group>
<subject>Methods</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Multiple game trading strategy of multiple virtual power plants considering carbon trading</article-title>
<alt-title alt-title-type="left-running-head">Chu 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.2023.1152032">10.3389/fenrg.2023.1152032</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Chu</surname>
<given-names>Tianfeng</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2135537/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>An</surname>
<given-names>Xingchen</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhu</surname>
<given-names>Yu</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Xueying</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Deng</surname>
<given-names>Limin</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2224735/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>College of Information Science and Engineering</institution>, <institution>Northeastern University</institution>, <addr-line>Shenyang</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>State Grid Liaoning Electric Power Co., Ltd.</institution>, <institution>Electric Power Research Institute</institution>, <addr-line>Shenyang</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1676358/overview">Zhi-Wei Liu</ext-link>, Huazhong University of Science and Technology, China</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1799340/overview">Bowen Zhou</ext-link>, Northeastern University, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1794455/overview">Ruizhuo Song</ext-link>, University of Science and Technology Beijing, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Tianfeng Chu, <email>15524182863@126.com</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>16</day>
<month>05</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>11</volume>
<elocation-id>1152032</elocation-id>
<history>
<date date-type="received">
<day>27</day>
<month>01</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>26</day>
<month>04</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Chu, An, Zhu, Wang and Deng.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Chu, An, Zhu, Wang and Deng</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). 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.</p>
</license>
</permissions>
<abstract>
<p>The large-scale access of distributed energy resources has a certain impact on the power grid, so distributed energy resources cannot participate in the power market transactions alone. The concept of the virtual power plant (VPP) has thus emerged, which can aggregate distributed power sources and controllable loads in a region for coordinated regulation. The trading of VPPs should not only consider the economy but also its degree of low carbon. Therefore, this paper constructs a unified bidding strategy for multi-VPPs that considers carbon&#x2013;electricity integration trading. We design a multi-game trading strategy among multi-VPPs to achieve unified trading, after each VPP determines its internal trading strategy. Finally, through simulation, we verify that the multiple game strategy between multi-VPPs that considers carbon trading here proposed can effectively improve the efficiency and trading income of VPPs and promote the consumption of new energy.</p>
</abstract>
<kwd-group>
<kwd>integrated carbon&#x2013;electricity trading</kwd>
<kwd>virtual power plant trading</kwd>
<kwd>multiple game strategy</kwd>
<kwd>stepped carbon trading</kwd>
<kwd>distributed optimization</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Smart Grids</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Due to the fluctuating power output and high uncertainty of each distributed energy source, direct participation in grid dispatch and power trading is not possible (<xref ref-type="bibr" rid="B6">Huang et al., 2019</xref>). VPP can aggregate generation and consumption units in the region to form a &#x201c;self-generating and self-consuming&#x201d; whole (<xref ref-type="bibr" rid="B9">Liu et al., 1109</xref>) which can be self-sufficient and conduct two-way power trading with external interests (<xref ref-type="bibr" rid="B15">Wang et al., 2022a</xref>). It can conduct direct trading between VPPs or choose to trade with the grid, reducing power supply pressure on the main network and ensuring that renewable energy can be consumed locally (<xref ref-type="bibr" rid="B13">Shayegan-Rad et al., 2017</xref>).</p>
<p>At present, research on the trading of individual VPP is relatively mature (<xref ref-type="bibr" rid="B14">Feng et al., 2018</xref>). Improving the uncertainty that the system will face in ensuring that VPPs can participate in the medium and long-term electricity market can improve its robustness. In the current electricity market environment, the number of subjects that can participate in electricity trading is gradually increasing, and the competition is more diversified. Therefore, the influence of the bidding strategies of other competitors amongst multi-VPPs must be considered (<xref ref-type="bibr" rid="B2">Zhi et al., 2021</xref>). Aggregated electric vehicles with dual characteristics of energy storage and load use market clearing to characterize the relationship between other VPPs and their own strategies and use non-cooperative game method to conduct day-ahead transactions.</p>
<p>Existing trading models for VPPs tend to focus only on economic benefits and ignore the additional environmental costs incurred in the generation of electricity by the internal units of VPPs, and on the process of purchasing electricity, which can inhibit the carbon reducing potential of VPPs. Some literature has also studied the low-carbon operation of VPPs (<xref ref-type="bibr" rid="B3">Chu et al., 2023</xref>). Some has considered the coordination and optimization of the environment and economy in a single VPP trading model and reducing pollution caused by VPP operations (<xref ref-type="bibr" rid="B20">Zhao et al., 2020</xref>). Other literature has considered the uncertainty faced by the power system and the impact of carbon emissions on the conservatism of VPP bidding, building a low-risk VPP bidding model to analyze the impact of carbon emissions (<xref ref-type="bibr" rid="B11">Liu et al., 2023</xref>). A VPP low-carbon economic dispatch has been proposed that accounts for the user electricity consumption behavior considering carbon trading (<xref ref-type="bibr" rid="B5">Huang et al., 2022</xref>). The impact of carbon consumption constraints on VPP participation in electricity market bidding has been considered; the results demonstrate that carbon emission constraints can change the bidding strategies of VPPs.</p>
<p>Considering these problems and challenges, this paper will limit the carbon utilization in VPP operations based on stepped carbon trading so as to improve renewable energy consumption. First, it establishes a multi-VPPs model consisting of wind turbines (WTs), photovoltaic power generation (PV), energy storage systems (ESSs), micro-turbines (MTs), and controllable loads (CL) to study how they participate in integrated carbon&#x2013;electricity trading. In the trading process, each VPP should consider not only its own trading strategy but also the impact of other participants&#x2019; trading strategies on itself. This paper designs a multiple game mechanism for multi-VPPs and uses a distributed solution method to determine the final game equilibrium solution. Finally, by setting different scenarios, the accuracy and rationality of the proposed method are verified. The following principal contributions we make are:<list list-type="simple">
<list-item>
<p>1) A stepped carbon trading mechanism is introduced into the power trading system of VPPs to form integrated carbon&#x2013;electricity trading of multi-VPPs, thus reducing the system&#x2019;s carbon emissions. At the same time, the introduction of a ladder-type carbon emission transaction strategy can improve the level of clean energy consumption.</p>
</list-item>
<list-item>
<p>2) We propose a multiple game trading mechanism among multi-VPPs which no longer uses a one-game approach with unstable game equilibrium points, as in previous studies. Non-cooperative and evolutionary games are introduced in the framework of a master&#x2013;slave game.</p>
</list-item>
<list-item>
<p>3) For coordinated optimization problems between multiple regions, the use of distributed solution algorithms can greatly accelerate the iteration speed and improve the solution&#x2019;s efficiency.</p>
</list-item>
</list>
</p>
<p>This article is organized thus: <xref ref-type="sec" rid="s2">Section 2</xref> focuses on the integrated carbon&#x2013;electricity trading market for VPPs; <xref ref-type="sec" rid="s3">Section 3</xref> introduces a proposed multiple game model; <xref ref-type="sec" rid="s4">Section 4</xref> is the solution method; <xref ref-type="sec" rid="s5">Section 5</xref> performs the simulation analysis; <xref ref-type="sec" rid="s6">Section 6</xref> draws conclusions.</p>
</sec>
<sec id="s2">
<title>2 Integrated carbon&#x2013;electricity trading model</title>
<sec id="s2-1">
<title>2.1 Virtual power plant operation structure analysis</title>
<p>In traditional power systems, wind power, photovoltaic, and various types of loads participate independently in the market, and the grid lacks real-time awareness of each unit&#x2019;s operating status (<xref ref-type="bibr" rid="B7">Li et al., 2020</xref>). The system cannot come to a unified dispatch and trading method due to distributed power resources, the power characteristics of differentiated loads, and the carbon emission level of each unit (<xref ref-type="bibr" rid="B16">Wang et al., 2022b</xref>). Building an integrated carbon&#x2013;electricity market needs to rely on VPP to aggregate distributed energy, load, and energy storage systems in a certain region (<xref ref-type="bibr" rid="B21">Zhu et al., 2022</xref>). The structure of VPP operation is shown in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Operation structure of typical VPP.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g001.tif"/>
</fig>
<p>At the data level, each unit in a VPP needs to report internal data to the VPP control center (<xref ref-type="bibr" rid="B4">Dou et al., 2022</xref>), which then allocates the output and load of each generator unit and the response capacity of ESS according to the constraints of current user satisfaction, income, carbon emissions, and other objectives.</p>
</sec>
<sec id="s2-2">
<title>2.2 Characterization of integrated carbon&#x2013;electricity trading market</title>
<p>Carbon trading is the trading of carbon credits as commodities. It is crucial to measure and count the carbon credits and also to monitor their non-reuse. Carbon credits flow together with electricity trading, and the credits and corresponding benefits are transferred together with the electricity (<xref ref-type="bibr" rid="B17">Zhang et al., 2017</xref>). The flow of an integrated carbon&#x2013;electricity transaction in a VPP is shown in <xref ref-type="fig" rid="F2">Figure 2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Integrated carbon&#x2013;electricity trading volume.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g002.tif"/>
</fig>
<p>The trading features are.<list list-type="simple">
<list-item>
<p>1) No carbon emission is generated while WT and PV operate, and the VPP centralized control center can allocate the corresponding carbon emission to MT or sell them to obtain additional economic benefits (<xref ref-type="bibr" rid="B10">Liu et al., 2021</xref>);</p>
</list-item>
<list-item>
<p>2) If VPP invokes CL for demand response in the dispatch, it needs to give corresponding carbon credits to users as economic compensation.</p>
</list-item>
</list>
</p>
</sec>
<sec id="s2-3">
<title>2.3 Calculation of VPP stepped carbon trading cost</title>
<p>Regulatory authorities will first allocate a certain amount of free carbon emissions to each carbon emission source and ensure that total amounts decrease annually (<xref ref-type="bibr" rid="B8">Liu, 2022</xref>). Each VPP will formulate and adjust the scheduling and bidding plan according to the allocated amount. Therefore, there are two situations in the process of carbon trading by VPPs (<xref ref-type="bibr" rid="B1">Chen et al., 2021b</xref>): the first is that the actual amount of carbon emissions generated in the VPP scheduling is more than the free quota allocated by the regulatory authority, so the VPP needs to pay for the excess in the market; in the second case, when the actual amount of carbon emissions generated in the VPP scheduling is less than the given free quota, the manufacturer can sell the remaining quota on the carbon trading market and obtain the corresponding income according to the current carbon trading price (<xref ref-type="bibr" rid="B18">Zhang et al., 2020</xref>).</p>
<p>Unlike the traditional carbon trading approach, a stepped carbon trading mechanism further motivates power producers to reduce emissions by linearizing the carbon price in segments. The cost of carbon emissions exceeding a certain amount of carbon quotas will be penalized according to the amount exceeded, thus prompting them to adjust their power generation strategies or introduce low-carbon technologies. The stepped carbon trading mentioned in this study principally comprises three parts: initial carbon emission quota, actual carbon emissions of operators, and carbon trading costs.</p>
<sec id="s2-3-1">
<title>2.3.1 Initial carbon emission quota model</title>
<p>Generally speaking, the electricity purchased by a VPP from the external network comes from thermal units (<xref ref-type="bibr" rid="B19">Guotao et al., 2021</xref>). This makes two major sources of carbon emissions in the operation of VPP: MT and the electricity purchased from the external network. At present, China&#x2019;s carbon trading policy is mainly based on the free quota of the actual power generation of the manufacturer, so the determination by the regulatory authority of the carbon emission quota of the VPP operator by two sources is expressed thus:<disp-formula id="e1">
<mml:math id="m1">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>Here, <italic>T</italic> is the dispatch period; <inline-formula id="inf1">
<mml:math id="m2">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf2">
<mml:math id="m3">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf3">
<mml:math id="m4">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the power output of the corresponding unit at time <italic>t</italic>; <inline-formula id="inf4">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the free carbon emission allowances for VPP operators set by the regulator; <inline-formula id="inf5">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the carbon emission allowances of the production of per unit electricity; and <inline-formula id="inf6">
<mml:math id="m7">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the purchased power by the VPP from the main network at time <italic>t</italic>.</p>
</sec>
<sec id="s2-3-2">
<title>2.3.2 Actual carbon emissions model</title>
<p>According to the power network carbon emission calculation method, the actual carbon emissions generated by a VPP during the dispatch process are determined as<disp-formula id="e2">
<mml:math id="m8">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf7">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the amout of actual carbon emission by the VPP; <inline-formula id="inf8">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf9">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the carbon emission factor of per unit active output of thermal power units and MT, respectively.</p>
</sec>
<sec id="s2-3-3">
<title>2.3.3 Stepped carbon trading cost model</title>
<p>Compared with the traditional unified pricing mechanism, this paper adopts a stepped carbon trading pricing model to achieve further control carbon emission reduction. Under this mechanism, carbon emissions are divided into multiple intervals (<xref ref-type="bibr" rid="B12">Liu et al., 2022</xref>). For intervals with higher carbon emissions, the unit carbon emission price and the carbon compensation cost will be higher. The specific calculation formula is as follows:<disp-formula id="e3">
<mml:math id="m12">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">4</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">4</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">6</mml:mn>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">4</mml:mn>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">4</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">A</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">F</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">4</mml:mn>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf10">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the carbon trading cost to be paid by VPPs; <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the market benchmark price of carbon emissions; <italic>l</italic> is the interval length of each carbon emission interval; and <inline-formula id="inf12">
<mml:math id="m15">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the growth rate of the stepped carbon trading price.</p>
</sec>
</sec>
<sec id="s2-4">
<title>2.4 Objective function</title>
<p>Costs include two items: VPP operating costs <inline-formula id="inf13">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and carbon trading costs <inline-formula id="inf14">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.<disp-formula id="e4">
<mml:math id="m18">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">min</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
<disp-formula id="e5">
<mml:math id="m19">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf15">
<mml:math id="m20">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, respectively, denote the operating costs of WT, PV, ESS, and MT in VPP<italic>k</italic>; <inline-formula id="inf16">
<mml:math id="m21">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> denote the direct power trading costs between VPPk and other VPPs, and between VPP<italic>k</italic> and the main grid; and <inline-formula id="inf17">
<mml:math id="m22">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> denotes the compensation cost of VPPk calling CL. Among these, the operation cost function of each unit is the same as that in the traditional way and will not be repeated.</p>
</sec>
<sec id="s2-5">
<title>2.5 Constraint condition</title>
<sec id="s2-5-1">
<title>2.5.1 Power balance constraint</title>
<p>
<disp-formula id="e6">
<mml:math id="m23">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf18">
<mml:math id="m24">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the load after VPP<italic>k</italic> scheduling optimization at moment <italic>t</italic>; <inline-formula id="inf19">
<mml:math id="m25">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is positive when the energy storage system is charging and negative when it is discharging; and <inline-formula id="inf20">
<mml:math id="m26">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the power sold by VPP to the main network at time <italic>t</italic>.</p>
</sec>
<sec id="s2-5-2">
<title>2.5.2 Renewable energy output constraints</title>
<p>
<disp-formula id="e7">
<mml:math id="m27">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf21">
<mml:math id="m28">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf22">
<mml:math id="m29">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the upper limits of WT and PV output of VPP<italic>k</italic>, respectively.</p>
</sec>
<sec id="s2-5-3">
<title>2.5.3 Energy storage system constraints</title>
<p>For the ESS, its first priority is to meet the charging and discharging power without exceeding the limit:<disp-formula id="e8">
<mml:math id="m30">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf23">
<mml:math id="m31">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf24">
<mml:math id="m32">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the lower limit and upper limits of ESS power of VPP<italic>k</italic>, respectively.</p>
<p>The internal storage power of ESS<italic>k</italic> is<disp-formula id="e9">
<mml:math id="m33">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>At the same time, its state of charge must also meet certain constraints:<disp-formula id="e10">
<mml:math id="m34">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">min</mml:mi>
</mml:msubsup>
<mml:mo>&#x3c;</mml:mo>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">max</mml:mi>
<mml:mo>&#x2061;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf25">
<mml:math id="m35">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf26">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c9;</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denote the charging and discharging efficiency of the ESS, respectively; <italic>b</italic> denotes charging and discharging state: 0 when charging, 1 when discharging; and <inline-formula id="inf27">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">O</mml:mi>
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denote the initial and termination power of the ESS in one dispatching cycle, respectively.</p>
</sec>
<sec id="s2-5-4">
<title>2.5.4 Interaction power constraint</title>
<p>This equation includes direct interactive power constraints between VPPs and interactive power constraints between VPPs and the grid:<disp-formula id="e11">
<mml:math id="m38">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">max</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">V</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">max</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">g</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mi mathvariant="bold">d</mml:mi>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mi mathvariant="bold">max</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">g</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mi mathvariant="bold">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">g</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mi mathvariant="bold">d</mml:mi>
<mml:mi mathvariant="bold">s</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mi mathvariant="bold">max</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold">g</mml:mi>
<mml:mi mathvariant="bold">r</mml:mi>
<mml:mi mathvariant="bold">i</mml:mi>
<mml:mi mathvariant="bold">d</mml:mi>
<mml:mi mathvariant="bold">s</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-5-5">
<title>2.5.5 MT output and climbing constraint</title>
<p>
<disp-formula id="e12">
<mml:math id="m39">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
<disp-formula id="e13">
<mml:math id="m40">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2264;</mml:mo>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf28">
<mml:math id="m41">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">max</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf29">
<mml:math id="m42">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">min</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the upper and lower limits of MT unit output, respectively; <inline-formula id="inf30">
<mml:math id="m43">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf31">
<mml:math id="m44">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> are the downward and upward climbing power of the MT unit, respectively.</p>
</sec>
</sec>
</sec>
<sec id="s3">
<title>3 Multi-game model for multi-VPPs</title>
<p>Based on the optimal results of each VPP in the first stage, the supply&#x2013;demand ratio (SDR) coefficient is introduced to distinguish between power-sale VPP and power-purchase VPP.<disp-formula id="e14">
<mml:math id="m45">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">D</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
<disp-formula id="e15">
<mml:math id="m46">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">G</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">E</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf32">
<mml:math id="m47">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the electricity supply of VPP<italic>k</italic> in time period <italic>t</italic>; <inline-formula id="inf33">
<mml:math id="m48">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">D</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the whole electricity demand of VPP<italic>k</italic> in time period <italic>t</italic>; and <inline-formula id="inf34">
<mml:math id="m49">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">G</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the renewable energy output of VPP<italic>k</italic> in time period <italic>t</italic>; during period <italic>t</italic>: if <inline-formula id="inf35">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, define the VPP<italic>k</italic> as power-purchase VPP, if <inline-formula id="inf36">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, define the VPP<italic>k</italic> as power-sale VPP.</p>
<sec id="s3-1">
<title>3.1 VPP utility function</title>
<sec id="s3-1-1">
<title>3.1.1 Power-sale VPP utility function</title>
<p>The power-sale VPP obtains economic benefits by selling excess power to the load side and the power-purchase VPP, whose utility function can be expressed as<disp-formula id="e16">
<mml:math id="m52">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf37">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the satisfaction coefficient of the demand side of the power-sale VPP; <inline-formula id="inf38">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the power trading strategy of the power-sale VPP&#x2014;electricity price in <italic>t</italic> period; and <inline-formula id="inf39">
<mml:math id="m55">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the interactive electricity of VPP<italic>j</italic> participating in VPP direct trading.</p>
</sec>
<sec id="s3-1-2">
<title>3.1.2 Power-purchase VPP utility function</title>
<p>The internal power supply of the power-purchase VPP is insufficient to meet its own internal demand, so it needs to purchase the corresponding demand from the power-sale VPP. The utility function of the power-purchase VPP<italic>i</italic> choosing the power-sale VPP<italic>j</italic> to purchase power at time <italic>t</italic> can be expressed as<disp-formula id="e17">
<mml:math id="m56">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">V</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf40">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the satisfaction coefficient on the demand side of the power-purchase VPP.</p>
</sec>
</sec>
<sec id="s3-2">
<title>3.2 The evolutionary game between power-purchase VPP</title>
<p>After comprehensive evaluation of its electricity price information, the power-purchase VPP selects the best source for electricity trading. Power-purchase VPPs must constantly adjust their selection strategies to form an evolutionary game, which takes the following form.</p>
<p>The selection strategy of a power-purchase VPP at the time of power purchase can be expressed by the probability <inline-formula id="inf41">
<mml:math id="m58">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">J</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> of power-purchase VPP<italic>i</italic> choosing power-sale VPP<italic>j</italic> to purchase power at time <italic>t</italic>. The ultimate goal is to maximize the utility function of power-purchase VPP<italic>i</italic>.</p>
<p>In the evolution process, a correction factor <inline-formula id="inf42">
<mml:math id="m59">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is introduced to denote the proportion of power-purchase VPP<italic>i</italic> shifted from the selection of power-sale VPP<italic>m</italic> to power-sale VPP<italic>j</italic> in time period <italic>t</italic>. The modified protocol of the dynamic evolutionary game can be formulated as<disp-formula id="e18">
<mml:math id="m60">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">J</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>The dynamic evolution equation of power-purchase VPP is<disp-formula id="e19">
<mml:math id="m61">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">J</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">exp</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>
</p>
<p>The power-purchase VPP group reaches evolutionary equilibrium when <inline-formula id="inf43">
<mml:math id="m62">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>; that is, <inline-formula id="inf44">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-3">
<title>3.3 The non-cooperative game among power-sale VPPs</title>
<p>When the trading between the power-sale VPP and the power-purchasing VPP begins, the utility of each power-sale VPP depends not only on its own reported trading strategy and the power-purchasing VPP&#x2019;s selection strategy but also on the published electricity prices of other power-sale VPPs&#x2014;the process of publishing electricity selling prices by the power-sale VPP can be described by the non-cooperative game model.</p>
<p>The power-sale VPP chooses the power sales price <inline-formula id="inf45">
<mml:math id="m64">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> at time <italic>t</italic> as its game strategy when playing the power sales game, with the final goal of optimizing the utility function of the power-sale VPP<italic>j</italic>. From Eq. <xref ref-type="disp-formula" rid="e17">17</xref>, the optimal purchased electricity for power-purchase VPP<italic>i</italic> in time period <italic>t</italic> is<disp-formula id="e20">
<mml:math id="m65">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>The total amount of electricity purchased by power-purchase VPPi from power-sale VPPj in time period <italic>t</italic> is<disp-formula id="e21">
<mml:math id="m66">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">I</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
</p>
<p>Therefore, the utility function of the power-sale VPP can be expressed as<disp-formula id="e22">
<mml:math id="m67">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="bold-italic">I</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:msub>
</mml:mfrac>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>
</p>
<p>In the process of the game, each VPP changes its pricing strategy according to the aforementioned utility function until the utility is optimal; the game reaches equilibrium when all power-sale VPPs cannot benefit from changing their strategies.</p>
</sec>
<sec id="s3-4">
<title>3.4 The master&#x2013;slave game between power-sale VPP and power-purchase VPP</title>
<p>
<xref ref-type="fig" rid="F3">Figure 3</xref> shows the overall game framework for multi-VPPs. The power-sale VPP changes its pricing according to the market situation, so as to guide the power-purchase VPP to make trading choices and feed them back to the power-sale VPP, which updates its pricing according to its latest utility function and the power-purchasing VPP&#x2019;s strategy, thus ultimately maximizing the benefits of both parties. In this case, there is a certain sequence of participants in the electricity market when making corresponding decisions, and this behavior can be described by a follower&#x2013;leader game model, with the power-sale VPP as the leader and the power-purchase VPP as the follower.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Game structure diagram of multi-VPP system.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g003.tif"/>
</fig>
<p>Both the power-purchase VPP and the power-sale VPP need to participate in the follower&#x2013;leader game, and the strategy sets of both are still the power sale price of the power sale-VPP and the power purchase choice state of the power-purchase VPP. The objective of the game is still to optimize the utility function of both players.</p>
<p>The strategy set of the leader power-sale VPP can be expressed as<disp-formula id="e23">
<mml:math id="m68">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf46">
<mml:math id="m69">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the vector of electricity price strategies published by the power-sale VPP<italic>j</italic>.</p>
<p>The strategy set of the follower power-purchase VPP can be expressed as<disp-formula id="e24">
<mml:math id="m70">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
<p>Here, <inline-formula id="inf47">
<mml:math id="m71">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the probability vector that power-purchase VPP<italic>i</italic> chooses power-sale VPP<italic>j</italic>.</p>
<p>The objective of the master&#x2013;slave game model is to optimize the utility of both the power-sale VPP and the power-purchase VPP. After the power-sale VPP releases selling price information <inline-formula id="inf48">
<mml:math id="m72">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the power-purchase VPP can find an equilibrium strategy to optimize its own utility, which is expressed by <inline-formula id="inf49">
<mml:math id="m73">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and feed it back to the power-sale VPP. The power-sale VPP determines its optimal electricity price strategy set <inline-formula id="inf50">
<mml:math id="m74">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> according to its own utility function and the optimal response strategy of the power-purchase VPP, so the Nash equilibrium solution of this master&#x2013;slave game can be expressed by (<inline-formula id="inf51">
<mml:math id="m75">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>).</p>
</sec>
</sec>
<sec id="s4">
<title>4 Multiple game solving process</title>
<p>For the proposed multiple game model, this paper adopts a parallel distributed solution method; the solution process is shown in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Flowchart of multiple game solution.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g004.tif"/>
</fig>
<p>
<statement content-type="step" id="Step_1">
<label>Step 1</label>
<p>As the leader of the master&#x2013;slave game, the power-sale VPP first transmits initial price information to the follower power-purchase VPP.</p>
</statement>
</p>
<p>
<statement content-type="step" id="Step_2">
<label>Step 2</label>
<p>The power-purchase VPP makes decisions on its own power purchasing selection status according to the leader&#x2019;s strategy and continuously updates it until the evolutionary game reaches equilibrium to obtain its optimal utility. The evolutionary game equilibrium solution is solved as follows:<list list-type="simple">
<list-item>
<p>1) Power-purchase VPP<italic>i</italic> selects a power-sale VPP according to the leader&#x2019;s strategy and calculates the optimal power purchase and power consumption utility of the power-purchase VPP according to Eq. <xref ref-type="disp-formula" rid="e20">20</xref> and Eq. <xref ref-type="disp-formula" rid="e17">17</xref>, respectively.</p>
</list-item>
<list-item>
<p>2) Discretize Eq. <xref ref-type="disp-formula" rid="e19">19</xref> as follows:</p>
</list-item>
</list>
<disp-formula id="e25">
<mml:math id="m76">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bd;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(25)</label>
</disp-formula>
</p>
<p>Here, <italic>m</italic> is the number of iterations of the evolutionary game; <inline-formula id="inf52">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the iteration step size.</p>
<p>The power-purchase VPP updates the power purchase status by Eq. <xref ref-type="disp-formula" rid="e25">25</xref>;</p>
<p>3) Judge whether the power purchase strategy reaches the evolutionary equilibrium. If it reaches equilibrium state, go to Step 3, otherwise return to 1); Step 3: According to the results of <xref ref-type="statement" rid="Step_2">Step 2</xref>, each power-sale VPP obtains the optimal power selling price through a non-cooperative game. The non-cooperative game solving process is as follows: <list list-type="simple">
<list-item>
<p>1) Calculate the total amount of power purchased by power-purchase VPP<italic>i</italic> from power-sale VPP<italic>j</italic> and the own utility of power-sale VPP<italic>j</italic> in time period <italic>t</italic> according to Eqs <xref ref-type="disp-formula" rid="e21">21</xref>, <xref ref-type="disp-formula" rid="e22">22</xref>.</p>
</list-item>
<list-item>
<p>2) The power-sale VPP<italic>j</italic> updates its own price strategy through Eq. <xref ref-type="disp-formula" rid="e26">26</xref>.</p>
</list-item>
</list>
<disp-formula id="e26">
<mml:math id="m78">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">j</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>
</p>
<p>Here, <italic>n</italic> is the number of iterations of the non-cooperative game; <inline-formula id="inf53">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the iteration step size.</p>
<p>3) Judge whether the power-sale VPP strategy reaches equilibrium. If it reaches equilibrium state, go to Step 4, otherwise return to 1); Step 4: Judge whether the system master&#x2013;slave game reaches equilibrium. If so, stop the iterative solution and output the result, otherwise return to <xref ref-type="statement" rid="Step_2">Step 2</xref>.</p>
</statement>
</p>
</sec>
<sec id="s5">
<title>5 Case studies</title>
<sec id="s5-1">
<title>5.1 Basic data</title>
<p>In this paper, we established a multi-VPPs system consisting of five VPPs. The total output of WT and PV in each VPP, load situation, and the unit purchase price of electricity from the VPP to the main network is shown in <xref ref-type="fig" rid="F5">Figure 5</xref>. The price range of VPP electricity sales specified by the electricity sales market is [0.3,1.2]; the price of electricity trading from VPP to main grid is shown in <xref ref-type="table" rid="T1">Table 1</xref>. In the stepped carbon trading model, <italic>&#x3bc;</italic> is set at 280 yuan/t, <italic>l</italic> is set at 2t, and <italic>&#x3b1;</italic> is set at 25%.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Forecasting curves of renewable energy output and load demand.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g005.tif"/>
</fig>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Electricity purchase and sale price from VPP to main network.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Trading form</th>
<th align="left">Time period</th>
<th align="left">Price (yuan/kW)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="3" align="left">Electricity purchase</td>
<td align="left">9:00&#x2013;11:00; 18:00&#x2013;22:00</td>
<td align="left">1.289</td>
</tr>
<tr>
<td align="left">7:00&#x2013;8:00; 12:00&#x2013;17:00</td>
<td align="left">1.289</td>
</tr>
<tr>
<td align="left">1:00&#x2013;6:00; 23:00&#x2013;24:00</td>
<td align="left">1.289</td>
</tr>
<tr>
<td align="left">Electricity sale</td>
<td align="left">1:00&#x2013;24:00</td>
<td align="left">1.289</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s5-2">
<title>5.2 Model simulation results</title>
<p>In order to verify the effectiveness of the stepped-type carbon trading model designed in this paper in the operation of VPP, we set up four different models. Model 1 is the traditional carbon trading model in which the carbon trading range is not divided, and the CO<sub>2</sub> exceeding the carbon emission quota is directly settled at the initial carbon trading price. Model 2 is still the traditional carbon trading model, but the benchmark price is set at 320 yuan/t. Model 3 is a stepped carbon trading model without considering the carbon emission cost. In the objective function, only the operating costs and power purchase costs of each unit in the VPP are considered. Model 4 comprehensively considers the stepped carbon emission cost and VPP operation cost for economic and low-carbon enhancement. Taking VPP1 as an example, the operation results of these four scenarios are shown in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Operation results of these four scenarios of VPP1.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Model</th>
<th align="center">Carbon emission/kg</th>
<th align="center">Carbon trading cost/yuan</th>
<th align="center">Operation cost/yuan</th>
<th align="center">Total/yuan</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">1</td>
<td align="center">35,139.1</td>
<td align="center">1,998.9</td>
<td align="center">24,834.3</td>
<td align="center">26,833.2</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">32,587.2</td>
<td align="center">1,465.6</td>
<td align="center">26,273.9</td>
<td align="center">27,739.5</td>
</tr>
<tr>
<td align="center">3</td>
<td align="center">36,832.6</td>
<td align="center">4,106.3</td>
<td align="center">24,468.1</td>
<td align="center">28,574.4</td>
</tr>
<tr>
<td align="center">4</td>
<td align="center">33,932.4</td>
<td align="center">2,071.6</td>
<td align="center">25,324.5</td>
<td align="center">27,396.1</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Model 1 has the lowest total cost among the four models because it adopts the traditional carbon trading mechanism with a uniform benchmark price for carbon emissions; however, its energy saving and emission reduction potential is not fully exploited, and there is a certain amount of new energy output within the VPP that cannot be absorbed. In Model 2, since the benchmark price is no longer used for carbon emissions, the total cost of the VPP increases significantly. Although the unit operation cost of Model 3 is the lowest of the four models, huge amounts of CO<sub>2</sub> are emitted because carbon transaction costs are not considered in the scheduling process which require VPP operators to pay high carbon emission costs. After Model 4 divides the carbon emission range, the carbon emission of VPP is significantly reduced compared with the traditional model.</p>
<p>According to the operational comparison of models 1 and 4 in <xref ref-type="table" rid="T2">Table 2</xref>, the carbon emission cost increases after adopting the stepped carbon trading scheduling strategy, but the carbon emission decreases by 1,206.7&#xa0;kg. This is because the carbon emission interval is strictly divided after adopting the stepped carbon trading model. With the gradual increase in carbon emissions, the carbon emission price faced by VPP operators will increase exponentially, greatly limiting the call of carbon sources. Although the total cost is slightly higher for VPP operators, it promotes the absorption of internal &#x201c;abandoned wind and light&#x201d; and generally achieves the goal of low-carbon economic operation.</p>
<p>We can take VPP1 (PV) and VPP5 (WT) as examples to draw the day-ahead resource scheduling curve as shown in <xref ref-type="fig" rid="F6">Figure 6</xref>. From the internal supply and demand relationship of each VPP in each period, the required external interactive power can be obtained, thus introducing the trading strategy proposed in this paper.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Day-ahead dispatching results.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g006.tif"/>
</fig>
<p>In <xref ref-type="fig" rid="F6">Figure 6</xref>, the PV output of VPP1 shows a peak trend during the time of high light intensity (7&#x2013;17), and the demand response call is less then; VPP5, which is dominated by wind power output, charges during the time of low load demand and peak wind power output at night, and its energy storage system charges for three periods in 24&#xa0;h per day. Thus, the VPP energy storage system, while meeting its own load demand through charging, sells excess power to other VPPs to promote the balance between the supply and demand of the system and improve the system&#x27;s overall economic effectiveness.</p>
<p>In each dispatching time period, the five VPPs are divided into power-sale VPP and power-purchase VPP according to the SDR of each VPP. When the multiple games reach the equilibrium state, each VPP will decide different power sales prices for each time period, and the probability that the power-purchase VPP selects the power-sale VPP is also different. <xref ref-type="fig" rid="F7">Figures 7</xref>, <xref ref-type="fig" rid="F8">8</xref> show the sale prices of the power sales VPPs at time <italic>t</italic> and the probability distribution of each power-sale VPP being selected by the power-purchase VPPs, respectively.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Electricity sale price of power-sale VPPs in <italic>t</italic> period.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g007.tif"/>
</fig>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Probability of power-sale VPPs to be chosen to purchase electricity in <italic>t</italic> period.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g008.tif"/>
</fig>
<p>Taking time periods <italic>t</italic> &#x3d; 2, <italic>t</italic> &#x3d; 12, and <italic>t</italic> &#x3d; 18 as examples, it can be seen from <xref ref-type="fig" rid="F7">Figure 7</xref> that only VPP5 is a power-sale VPP in time period 2, and VPP5 delivers power to the remaining four VPPs while satisfying its own load. The power-sale VPPs in time period 12 are VPP1 and VPP3; at <italic>t</italic> &#x3d; 18, all five VPPs are in the state of power purchase. During this period, there is no power interaction between VPPs, and only power is purchased from the main network. It can be seen that, in 24 time periods of a day, each VPP can present different states, and its internal available power can be consumed by interacting with other VPPs when there is a surplus state.</p>
<p>From <xref ref-type="fig" rid="F7">Figures 7</xref>, <xref ref-type="fig" rid="F8">8</xref>, it can be seen that the power-purchase VPPs prefer a power-sale VPP with low power selling prices, but it can be observed that the probability of the power-purchase VPPs choosing the power-sale VPP with the lowest price at <italic>t</italic> &#x3d; 10, <italic>t</italic> &#x3d; 12, <italic>t</italic> &#x3d; 14, and <italic>t</italic> &#x3d; 16 is not the highest.</p>
<p>Taking <italic>t</italic> &#x3d; 10 as an example, it can be seen from <xref ref-type="table" rid="T3">Tables 3</xref>, <xref ref-type="table" rid="T4">4</xref> that the optimal electricity price issued by VPP1 is lower than that of VPP4, but the probability of the power-purchase VPPs choosing VPP1 is 0.4819, which is lower than the probability of choosing VPP4 by 0.5181. It can be seen that, during the dispatching process of the system, the electricity price is not the only factor to be considered by the power-purchase VPP when choosing the power sales VPP but also the influence of the controllable load call and its own load demand on the strategy.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Resource allocation of each VPP in t &#x3d; 10 period.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Unit</th>
<th align="center">VPP</th>
<th align="center">Power/kW</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="5" align="center">Renewable energy</td>
<td align="center">VPP1</td>
<td align="center">169.3</td>
</tr>
<tr>
<td align="center">VPP2</td>
<td align="center">38.8</td>
</tr>
<tr>
<td align="center">VPP3</td>
<td align="center">340.4</td>
</tr>
<tr>
<td align="center">VPP4</td>
<td align="center">256.0</td>
</tr>
<tr>
<td align="center">VPP5</td>
<td align="center">191.5</td>
</tr>
<tr>
<td rowspan="5" align="center">Controllable loads</td>
<td align="center">VPP1</td>
<td align="center">59.6</td>
</tr>
<tr>
<td align="center">VPP2</td>
<td align="center">33.1</td>
</tr>
<tr>
<td align="center">VPP3</td>
<td align="center">17.5</td>
</tr>
<tr>
<td align="center">VPP4</td>
<td align="center">64.7</td>
</tr>
<tr>
<td align="center">VPP5</td>
<td align="center">109.3</td>
</tr>
<tr>
<td rowspan="5" align="center">Load</td>
<td align="center">VPP1</td>
<td align="center">91.8</td>
</tr>
<tr>
<td align="center">VPP2</td>
<td align="center">15.5</td>
</tr>
<tr>
<td align="center">VPP3</td>
<td align="center">215.8</td>
</tr>
<tr>
<td align="center">VPP4</td>
<td align="center">31.1</td>
</tr>
<tr>
<td align="center">VPP5</td>
<td align="center">146.0</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Selection strategy of power-purchase VPP in t &#x3d; 10 period.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th rowspan="2" align="center">Power-purchase VPP</th>
<th rowspan="2" align="center">Power-sale VPP with the lowest price</th>
<th colspan="2" align="center">Power-purchase VPP selection probability</th>
</tr>
<tr>
<th align="center">VPP1</th>
<th align="center">VPP4</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">VPP2<break/>VPP3<break/>VPP5</td>
<td align="center">VPP1</td>
<td align="center">0.4819</td>
<td align="center">0.5181</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>When <italic>t</italic> &#x3d; 3, the convergence process of the probability of each power-sale VPP being selected when the power-purchase VPP purchases electricity is shown in <xref ref-type="fig" rid="F9">Figure 9</xref>. It can be seen that the probability of each power-sale VPP being selected can converge to the equilibrium value quickly; that is, the dynamic selection behavior of the power-purchase VPP can reach the evolutionary equilibrium state in a short time.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Probability convergence process of selecting power-sale VPP to purchase electricity.</p>
</caption>
<graphic xlink:href="fenrg-11-1152032-g009.tif"/>
</fig>
<p>In order to verify the rationality of the proposed multiple game trading strategy for multi-VPPs considering carbon trading model, two different operation scenarios were set to analyze the multi-VPPs trading cost results.</p>
<p>Scenario 1: the multi-VPPs trading model with carbon trading market described in this paper, while the trading between multi-VPPs is based on the traditional method.</p>
<p>Scenario 2: the multi-VPPs trading model with stepped carbon trading market described in this paper and multiple game strategies among multi-VPPs are constructed.</p>
<p>By comparing Scenario 2 (considering multiple game strategy) with Scenario 1 (conventional game strategy) in <xref ref-type="table" rid="T5">Table 5</xref>, the total cost of carbon trading and multi-VPP system operation are reduced by 2,434 yuan and 4.873&#xd7;10<sup>4</sup> yuan, respectively. Therefore, if there is no electric energy interaction among the VPPs, as soon as the power in the VPP cannot meet its own internal electricity demand, only purchasing power from the main network increases the operating cost of VPP system, which makes the main network face the huge pressure of electricity supply. this shows that, when the resource allocation among the subjects in the multi-VPPs is carried out through the game idea, the resource utilization rate of VPP can be improved, and the carbon transaction cost of the system can be reduced to promote the economic operation of the system.</p>
<table-wrap id="T5" position="float">
<label>TABLE 5</label>
<caption>
<p>VPP scheduling cost in different scenarios.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Scenario</th>
<th align="center">VPP</th>
<th align="center">Carbon trading costs/yuan</th>
<th align="center">VPP operating costs/yuan</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="6" align="center">1</td>
<td align="center">VPP1</td>
<td align="center">&#x2212;2.0716 <inline-formula id="inf54">
<mml:math id="m80">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">2.5324 <inline-formula id="inf55">
<mml:math id="m81">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP2</td>
<td align="center">&#x2212;3.5010 <inline-formula id="inf56">
<mml:math id="m82">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">4.6735 <inline-formula id="inf57">
<mml:math id="m83">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP3</td>
<td align="center">&#x2212;6.6369 <inline-formula id="inf58">
<mml:math id="m84">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">3.0943 <inline-formula id="inf59">
<mml:math id="m85">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP4</td>
<td align="center">&#x2212;2.8630 <inline-formula id="inf60">
<mml:math id="m86">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">2.8455 <inline-formula id="inf61">
<mml:math id="m87">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP5</td>
<td align="center">&#x2212;3.8412 <inline-formula id="inf62">
<mml:math id="m88">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">1.8950 <inline-formula id="inf63">
<mml:math id="m89">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">Total</td>
<td align="center">&#x2212;1.9914 <inline-formula id="inf64">
<mml:math id="m90">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
<td align="center">1.5041 <inline-formula id="inf65">
<mml:math id="m91">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>5</sup>
</td>
</tr>
<tr>
<td rowspan="6" align="center">2</td>
<td align="center">VPP1</td>
<td align="center">&#x2212;2.6873 <inline-formula id="inf66">
<mml:math id="m92">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">1.8513 <inline-formula id="inf67">
<mml:math id="m93">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP2</td>
<td align="center">&#x2212;3.8575 <inline-formula id="inf68">
<mml:math id="m94">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">3.8834 <inline-formula id="inf69">
<mml:math id="m95">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP3</td>
<td align="center">&#x2212;7.4680 <inline-formula id="inf70">
<mml:math id="m96">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">1.0345 <inline-formula id="inf71">
<mml:math id="m97">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP4</td>
<td align="center">&#x2212;3.3507 <inline-formula id="inf72">
<mml:math id="m98">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">2.5275 <inline-formula id="inf73">
<mml:math id="m99">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
</tr>
<tr>
<td align="center">VPP5</td>
<td align="center">&#x2212;4.9848 <inline-formula id="inf74">
<mml:math id="m100">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
<td align="center">8.7137 <inline-formula id="inf75">
<mml:math id="m101">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>3</sup>
</td>
</tr>
<tr>
<td align="center">Total</td>
<td align="center">&#x2212;2.2348 <inline-formula id="inf76">
<mml:math id="m102">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>4</sup>
</td>
<td align="center">1.0168 <inline-formula id="inf77">
<mml:math id="m103">
<mml:mrow>
<mml:mo>&#xd7;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 10<sup>5</sup>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec sec-type="conclusion" id="s6">
<title>6 Conclusion</title>
<p>In this paper, we analyzed a multi-VPPs unified trading strategy considering integrated carbon&#x2013;electricity trading and proposed a new multiple game strategy among multi-VPPs, in which a non-cooperative game between power-sale VPPs is prioritized to determine the power sales price, and then an evolutionary game is played among power-purchase VPPs to make the choice of power purchase objects according to the power price strategy at this time. This will reduce pollution levels from VPP operations while increasing the benefits of VPP operations. After the corresponding case analysis, the following results are obtained.<list list-type="simple">
<list-item>
<p>1) Under the carbon trading mechanism, the multi-VPP system trading model with wind and photovoltaic is considered, which effectively promotes the consumption of renewable energy and achieves the goal of system economic operation.</p>
</list-item>
<list-item>
<p>2) From the perspective of multiple power-sale VPPs and multiple power-purchase VPPs, a multiple game trading strategy is adopted to improve the safe and stable operation of the system, which in turn has a positive effect on the coordinated distribution of benefits among the various entities in the system.</p>
</list-item>
<list-item>
<p>3) For multi-VPPs unified trading in multiple regions, a parallel distributed solution strategy is chosen in this paper, which can greatly accelerate the solution speed and avoid large amounts of computation.</p>
</list-item>
</list>
</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s7">
<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 id="s8">
<title>Author contributions</title>
<p>TC conceived the idea for the manuscript and XA, YZ, XW, and LD wrote it. All authors have read and agreed to its published version.</p>
</sec>
<sec id="s9">
<title>Funding</title>
<p>This work is supported by the Science and Technology Project of Electric Power Research Institute of State Grid Liaoning Electric Power Supply Co., Ltd.&#x2014;Research on Power Transaction and Multi regional Energy Coordination Optimization Technology of Virtual Power Plants Based on Blockchain (2022YF-78).</p>
</sec>
<sec sec-type="COI-statement" id="s10">
<title>Conflict of interest</title>
<p>Authors TC, YZ and XW were employed by the company State Grid Liaoning Electric Power Co., Ltd.</p>
<p>The remaining authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
<p>The reviewer editor BZ declared a shared affiliation with authors TC, WA, and LD at the time of the review.</p>
<p>The authors declare that this study received funding from the Science and Technology Project of Electric Power Research Institute of State Grid Liaoning Electric Power Supply Co., Ltd. The funder had the following involvement in the study: Research on Power Transaction and Multi regional Energy Coordination Optimization Technology of Virtual Power Plants Based on Blockchain (2022YF-78).</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>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Optimal scheduling of integrated energy systems considering stepped carbon trading and flexible dual response of supply and demand</article-title>. <source>High. Volt. Tech.</source> <volume>47</volume> (<issue>09</issue>), <fpage>3094</fpage>&#x2013;<lpage>3106</lpage>. <pub-id pub-id-type="doi">10.13336/j.1003-6520.hve.20211094</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chu</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>An</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Tian</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Multiple virtual power plants transaction matching strategy based on alliance blockchain</article-title>. <source>Sustainability</source> <volume>15</volume> (<issue>8</issue>), <fpage>6939</fpage>. <pub-id pub-id-type="doi">10.3390/su15086939</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dou</surname>
<given-names>Yangming</given-names>
</name>
<name>
<surname>Ming</surname>
<given-names>Chi</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Zhi-Wei</given-names>
</name>
<name>
<surname>Wen</surname>
<given-names>Guanghui</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Qihai</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Distributed secondary control for voltage regulation and optimal power sharing in DC microgrids</article-title>. <source>IEEE Trans. Control Syst. Technol.</source> <volume>30</volume>, <fpage>2561</fpage>&#x2013;<lpage>2572</lpage>. <pub-id pub-id-type="doi">10.1109/TCST.2022.3156391</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Feng</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Hua</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Yong</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Jianfeng</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Mian</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>A virtual power plant bidding model considering uncertainty</article-title>. <source>Appl. Sci. Technol.</source> <volume>45</volume> (<issue>05</issue>), <fpage>62</fpage>&#x2013;<lpage>66</lpage>.</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Guotao</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Quan</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Junhua</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Guoming</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Ying</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Chao</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Research on the low-carbon path of regional energy systems based on multi market linkage</article-title>. <source>Electr. Power Constr.</source> <volume>42</volume> (<issue>03</issue>), <fpage>19</fpage>&#x2013;<lpage>26</lpage>.</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Xiao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Distributed optimal control of DC microgrid considering balance of charge state</article-title>. <source>IEEE Trans. Energy Convers.</source> <volume>37</volume> (<issue>3</issue>), <fpage>2162</fpage>&#x2013;<lpage>2174</lpage>. <pub-id pub-id-type="doi">10.1109/TEC.2022.3169462</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huang</surname>
<given-names>Bonan</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Lining</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Huaguang</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Yushuai</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Qiuye</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Distributed optimal economic dispatch for microgrids considering communication delays</article-title>. <source>IEEE Trans. Syst. Man, Cybern. Syst.</source> <volume>49</volume> (<issue>8</issue>), <fpage>1634</fpage>&#x2013;<lpage>1642</lpage>. <pub-id pub-id-type="doi">10.1109/tsmc.2019.2900722</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>D. W.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Double-mode energy management for multi-energy system via distributed dynamic event-triggered Newton-raphson algorithm</article-title>. <source>IEEE Trans. Smart Grid</source> <volume>11</volume> (<issue>6</issue>), <fpage>5339</fpage>&#x2013;<lpage>5356</lpage>. <pub-id pub-id-type="doi">10.1109/tsg.2020.3005179</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Xiaoou</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Research on optimal dispatch method of virtual power plant considering various energy complementary and energy low carbonization</article-title>. <source>Int. J. Electr. Power and Energy Syst.</source> <volume>136</volume>, <fpage>107670</fpage>. <pub-id pub-id-type="doi">10.1016/j.ijepes.2021.107670</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Du</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Q.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Blockchain-based renewable energy trading using information entropy theory</article-title>. <source>IEEE Trans. Netw. Sci. Eng.</source>, <fpage>1</fpage>&#x2013;<lpage>12</lpage>. <pub-id pub-id-type="doi">10.1109/TNSE.2023.3238110</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Liang</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A multi microgrid energy trading method based on game theory</article-title>. <source>Power Grid. Technol.</source> <volume>45</volume> (<issue>02</issue>), <fpage>587</fpage>&#x2013;<lpage>595</lpage>. <pub-id pub-id-type="doi">10.13335/j.1000-3673.pst.2020.0175</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Elahi</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A blockchain-based trustworthy collaborative power trading scheme for 5G-enabled social internet of vehicles</article-title>. <source>Digital Commun. Netw.</source> <volume>8</volume> (<issue>6</issue>), <fpage>976</fpage>&#x2013;<lpage>983</lpage>. <pub-id pub-id-type="doi">10.1016/j.dcan.2022.10.014</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="other">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Zhi-Wei</given-names>
</name>
<name>
<surname>Shi</surname>
<given-names>Yu-Lun</given-names>
</name>
<name>
<surname>Yan</surname>
<given-names>Huaicheng</given-names>
</name>
<name>
<surname>Han</surname>
<given-names>Bing-Xin</given-names>
</name>
<name>
<surname>Guan</surname>
<given-names>Zhi-Hong</given-names>
</name>
</person-group>. <article-title>Secure consensus of multi-agent systems via impulsive control subject to deception attacks</article-title>. <source>IEEE Trans. Circuits Syst. II Express Briefs</source> <volume>170</volume>, <fpage>166</fpage>&#x2013;<lpage>170</lpage>. <pub-id pub-id-type="doi">10.1109/TCSII.2022.3196042</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shayegan-Rad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Badri</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Zanganeh</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Day-ahead scheduling of virtual power plant in joint energy and regulation reserve markets under uncertainties</article-title>. <source>Energy</source> <volume>121</volume> (<issue>2</issue>), <fpage>114</fpage>&#x2013;<lpage>125</lpage>. <pub-id pub-id-type="doi">10.1016/j.energy.2017.01.006</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Gui</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Fully distributed dynamic edge-event-triggered current sharing control strategy for multi-bus DC microgrids with power coupling</article-title>. <source>IEEE Trans. Industrial Inf.</source> <volume>19</volume>, <fpage>5667</fpage>&#x2013;<lpage>5678</lpage>. <pub-id pub-id-type="doi">10.1109/TII.2022.3188352</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Ma</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>M. -J.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Accurate current sharing and voltage regulation in hybrid wind/solar systems: An adaptive dynamic programming approach</article-title>. <source>IEEE Trans. Consumer Electron.</source> <volume>68</volume> (<issue>3</issue>), <fpage>261</fpage>&#x2013;<lpage>272</lpage>. <pub-id pub-id-type="doi">10.1109/tce.2022.3181105</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>D. W.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Distributed optimal energy management for energy internet</article-title>. <source>IEEE Trans. Industrial Inf.</source> <volume>13</volume> (<issue>6</issue>), <fpage>3081</fpage>&#x2013;<lpage>3097</lpage>. <pub-id pub-id-type="doi">10.1109/tii.2017.2714199</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Zhong</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Comprehensive energy system planning considering the uncertainty of reward and punishment for tiered carbon trading and electricity heat transfer load</article-title>. <source>Proc. CSEE</source> <volume>40</volume> (<issue>19</issue>), <fpage>6132</fpage>&#x2013;<lpage>6142</lpage>. <pub-id pub-id-type="doi">10.13334/j.0258-8013.pcsee.191302</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhao</surname>
<given-names>Haotian</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Bin</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Xuanyuan</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Active dynamic aggregation model for distributed integrated energy system as virtual power plant</article-title>. <source>J. Mod. Power Syst. Clean Energy</source> <volume>8</volume> (<issue>5</issue>), <fpage>831</fpage>&#x2013;<lpage>840</lpage>. <pub-id pub-id-type="doi">10.35833/mpce.2020.000202</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhi</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zhijian</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Changhong</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Tiange</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Multi stage planning of a comprehensive energy system in a park based on a tiered carbon trading mechanism</article-title>. <source>Power Autom. Equip.</source> <volume>41</volume> (<issue>09</issue>), <fpage>148</fpage>&#x2013;<lpage>155</lpage>. <pub-id pub-id-type="doi">10.16081/j.epae.202109012</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhu</surname>
<given-names>Y. S.</given-names>
</name>
<name>
<surname>Nie</surname>
<given-names>C. J.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Q. Y.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Z. T.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>J. L.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Research on multiple game cooperative scheduling of microgrid cluster systems under mixed time scales</article-title>. <source>Power Grid Technol.</source>, <fpage>1</fpage>&#x2013;<lpage>12</lpage>. <pub-id pub-id-type="doi">10.13335/j.1000-3673.pst.2022.0611</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>