About me
I work in ETH Zürich, where I am currently a Principal Investigator (PI) sponsored by the Swiss National Science Foundation, a Senior Scientist, an NCCR Automation Researcher, a Guest Lecturer, and the Lead Developer of Daline. I am also an Associate Editor for both IEEE Systems Journal and the IET Renewable Power Generation. To know more about me, please click the Bio button or download my cv.
Power flow linearization approaches should be readily accessible as fundamental tools. We thus developed Daline, a data-driven power flow linearization toolbox. This open-source package features 57 linearization methods, including 53 data-driven methods and 4 commonly used physics-driven methods. Daline is free to use, quick to deploy, easy to code, and more than linearization. Interested? See Daline Official Website for more details.
model = daline.all('case118')
data = daline.generate('case.name', 'case118')
opt = daline.setopt('noise.SNR_dB', 45)
data = daline.noise(data, opt)
data = daline.outlier(data, 'outlier.switchTrain', 1, 'outlier.percentage', 2.5)
data = daline.denoise(data, 'filNoi.switchTrain', 1, 'filNoi.useARModel', false)
opt = daline.setopt('filNoi.useARModel', false, 'filNoi.zeroInitial', 0)
data = daline.deoutlier(data, opt)
data = daline.normalize(data, 'norm.switch', 1)
data = daline.data('num.trainSample', 500, 'num.testSample', 300)
opt = daline.setopt('data.baseType', 'TimeSeriesRand', 'method.name', 'RR')
data = daline.data('data.program', 'acpf', 'data.baseType', 'TimeSeriesRand')
model = daline.all('case118', 'method.name', 'RR')
data = daline.generate('case.name', 'case118')
data = daline.data('case.name', 'case39')
time_list = daline.time(data, {'LS', 'LS_SVD', 'RR'}, 'PLOT.repeat', 5, 'PLOT.style', 'light')
opt = daline.setopt('method.name', 'LS_PIN', 'variable.predictor', {'P', 'Q'}, 'variable.response', {'PF'})
model = daline.fit(data, opt)
opt = daline.setopt('method.name', 'LS_SVD', 'variable.response', {'PF'})
model = daline.fit(data, opt)
model = daline.fit(data, 'method.name', 'LS_COD')
model = daline.rank(data, method, opt)
opt = daline.setopt('data.program', 'acpf')
data = daline.data(opt)
model = daline.all('case118', 'method.name', 'RR')
data = daline.generate('data.baseType', 'TimeSeriesRand')
model = daline.fit(data, opt)
model = daline.fit(data, 'method.name', 'LS_COD')
model = daline.fit(data, 'method.name', 'LS_HBLE', 'HBL.language', 'yalmip', 'HBL.solver', 'quadprog', 'HBL.programType', 'whole')
model = daline.fit(data, 'method.name', 'LS_LIFX', 'variable.liftType', 'polyharmonic', 'variable.liftK', 2)
model = daline.fit(data, 'method.name', 'LS_WEI')
model = daline.fit(data, 'method.name', 'DRC_XYM', 'DRC.probThreshold', 90, 'DRC.gamma2', 0.5, 'DRC.language', 'cvx', 'DRC.solverM', 'Mosek', 'DRC.programType', 'whole')
model = daline.fit(data, 'method.name', 'LS_REC', 'LSR.recursivePercentage', 30, 'LSR.initializeP', 0)
model = daline.fit(data, 'method.name', 'LS_REP', 'LSR.recursivePercentage', 75)
model = daline.rank(data, {'DLPF_C', 'RR', 'PLS_REC'}, 'RR.lambdaInterval', 1e-5, 'RR.cvNumFold', 4, 'PLS.recursivePercentage', 40)
time_list = daline.time(data, {'LS', 'LS_SVD', 'RR'})
model = daline.fit(data, 'method.name', 'LS_PIN')
model = daline.fit(data, opt)
model = daline.fit(data, 'method.name', 'LS_COD')
model = daline.fit(data, 'method.name', 'LS_HBLE')
model = daline.fit(data, 'method.name', 'LS_LIFX')
model = daline.fit(data, 'method.name', 'LS_WEI')
model = daline.fit(dataN, 'method.name', 'DRC_XYM')
model = daline.fit(data, 'method.name', 'LS_REC')
model = daline.fit(data, 'method.name', 'LS_REP')
model = daline.rank(data, {'DLPF_C', 'RR', 'PLS_REC'})
time_list = daline.time(data, {'LS', 'LS_SVD', 'RR'})
model = daline.fit(data, 'method.name', 'LS_PIN')
model = daline.fit(data, 'method.name', 'LS_SVD')
model = daline.fit(data, 'method.name', 'LS_COD')
data = daline.data('case.name', 'case39')
opt = daline.setopt('variable.predictor', {'P', 'Q'}, 'variable.response', {'PF', 'Vm'})
daline.rank(data, methods)
daline.rank(data, methods, 'PLOT.response', {'Vm', 'PF'})
daline.rank(data, {'TAY', 'QR'}, 'PLOT.theme', 'commercial', 'PLOT.style', 'light')
daline.time(data, methods)
daline.time(datalist, methods)
data = daline.data('case.name', 'case39')
opt = daline.setopt('variable.predictor', {'P', 'Q'}, 'variable.response', {'PF', 'Vm'}, 'PLOT.repeat', 5, 'PLOT.style', 'light')
time_list = daline.time(data, 'LS', 'LS_SVD', 'RR', opt)
opt = daline.setopt('method.name', 'LS_PIN', 'variable.predictor', {'P', 'Q'}, 'variable.response', {'PF'})
model = daline.fit(data, opt)
opt = daline.setopt('method.name', 'LS_SVD', 'variable.predictor', {'P', 'Q'}, 'variable.response', {'PF'})
model = daline.fit(data, opt)
opt = daline.setopt('method.name', 'LS_COD', 'variable.predictor', {'P', 'Q'}, 'variable.response', {'PF'})
model = daline.fit(data, opt)
model = daline.rank(data, method, opt)
data = daline.generate('case.name', 'case118', 'data.program', 'acpf', 'data.baseType', 'TimeSeriesRand')
opt = daline.setopt('noise.switchTrain', 1, 'noise.switchTest', 1, 'noise.SNR_dB', 45)
data = daline.noise(data, opt)
data = daline.outlier(data, 'outlier.switchTrain', 1, 'outlier.percentage', 2.5)
data = daline.denoise(data, 'filNoi.switchTrain', 1, 'filNoi.useARModel', false)
opt = daline.setopt('filNoi.switchTrain', 1, 'filNoi.useARModel', false, 'filNoi.zeroInitial', 0)
data = daline.deoutlier(data, opt)
data = daline.normalize(data, 'norm.switch', 1)
data = daline.data('case.name', 'case118', 'num.trainSample', 500, 'num.testSample', 300, 'data.program', 'acpf', 'data.baseType', 'TimeSeries', 'noise.switchTrain', 1, 'outlier.switchTrain', 1, 'norm.switch', 1)
opt = daline.setopt('data.baseType', 'TimeSeries', 'method.name', 'RR')
data = daline.data('case.name', 'case118', 'data.program', 'acpf', 'data.baseType', 'TimeSeries')
opt = daline.setopt('case.name', 'case57', 'data.program', 'acpf', 'data.baseType', 'TimeSeries'); data = daline.data(opt)
model = daline.all('case118', 'data.baseType', 'Random', 'method.name', 'RR')
Recent News
-
Oct. 30, 2024
Swissgird, the Swiss national transmission grid operator, reported our physics-data-driven power flow linearization work on their official media. This approach addresses topological corrective measures and phase shift angle control, and passes the real European power grid test!
-
Oct. 25, 2024
I'm honored to have the opportunity to share my past and current work with the Department of Automation at Shanghai Jiao Tong University. Thanks for the kind invitation and the chance to engage!
-
July 24, 2024
I have been invited as the commentator for the talks given at the IEEE PES China Chapters Council Student Research Showcase, Seattle, Washington, the U.S. See the news here for more details.
-
July 18, 2024
I was interviewed by the Swiss National Centre of Competence in Research (Automation) regarding Daline, the toolbox we recently developed. You can read the interview here: Drawing a Line from Data to Better Grid Management. Thanks again for the interview and the blog!
-
June 28 - July 15, 2024
I have been invited to give talks at the Department of Electrical Engineering of Tsinghua University, Department of Automation of Shanghai Jiao Tong University, Department of Electrical Engineering of North China Electric Power University, and College of Information and Electrical Engineering at China Agricultural University (universities arranged in chronological order of the given talks), presenting Daline and how to enable large language models to do power system simulations using toolboxes such as Daline. See Daline Official Website and this paper for more details.
-
July 14, 2024
I received the Best Oral Presentation Award at the International Conference on Power and Energy Technology 2024, Beijing, China, for presenting Daline .
-
May 9, 2024
I have been invited to chair the session “Storage Systems: Control, Scheduling, and Planning” in Power Systems Computation Conference 2024, a flagship conference in the field of power system.
-
May 3, 2024
I have been invited to chair the session “Power Flow Analysis” in Power Systems Computation Conference 2024, a flagship conference in the field of power system.
-
Feb. 22, 2024
Our paper Physics-Data-Driven Power Flow Linearization Considering Topological Remedial Actions has been accpeted by IEEE PES General Meeting, 2024, Seattle, WA, USA, a flagship conference in the field of power system.
-
Feb. 9, 2024
Our paper Optimal Planning of Standalone Net-Zero Energy Systems With Small Modular Reactors has been accpeted by IEEE Transactions on Smart Grid.
-
Jan. 18, 2024
My collaborative work focusing on digital twins has been selected an High Impact Paper by the Proceedings of the CSEE. See here for more details.
-
Nov. 16, 2023
My collaborative work in the background of carbon neutrality has been selected an ESI Hot Paper (top 0.1%) and an ESI Highly Cited Paper (top 1%). See here for more details.
-
Nov. 15, 2023
I have been promoted to a Senior Scientist at Power Systems Laboratory, ETH Zürich, and will start my new role from December 1st, 2023.
-
Oct. 20, 2023
I have been awarded a Grant by the Swiss National Science Foundation (SNSF) and became a Principal Investigator (PI). The success rate is 20.6% (155 projects out of 761 proposals). I appreciate the announcements and congratulations from the Power Systems Lab, ETH Zürich and the NCCR Automation.
-
Sept. 23, 2023
I started to strongly support the co-chair of Power Systems Computation Conference 2024 by taking care of various organizational tasks.
-
Jun. 25, 2023
I have been invited to chair the session “Load Flow and Power Quality” in IEEE PowerTech Belgrade 2023, a flagship conference in the field of power system.
To see more announcements, please click the News button at the navigation bar.
Selected Works
To see more of my works, please scroll right or click the Research button at the navigation bar.