<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Savvas Panagi</title><link>https://savvaspanagi.github.io/</link><atom:link href="https://savvaspanagi.github.io/index.xml" rel="self" type="application/rss+xml"/><description>Savvas Panagi</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 24 Oct 2022 00:00:00 +0000</lastBuildDate><image><url>https://savvaspanagi.github.io/media/icon.svg</url><title>Savvas Panagi</title><link>https://savvaspanagi.github.io/</link></image><item><title>Dynamic Flexibility Requests in Local Flexibility Markets: Quantifying the DSO Willingness to Pay</title><link>https://savvaspanagi.github.io/publications/dynamic-flexibility-requests-in-local-flexibility-markets-quantifying-the-dso-wi/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/dynamic-flexibility-requests-in-local-flexibility-markets-quantifying-the-dso-wi/</guid><description/></item><item><title>A Benchmarking Case Study for Local Flexibility Markets: Network, Scenarios, and Open Inputs</title><link>https://savvaspanagi.github.io/publications/a-benchmarking-case-study-for-local-flexibility-markets-network-scenarios-and-op/</link><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/a-benchmarking-case-study-for-local-flexibility-markets-network-scenarios-and-op/</guid><description/></item><item><title>Towards an open-source real-time operator-training platform: Analysis of computational efficiency</title><link>https://savvaspanagi.github.io/publications/towards-an-open-source-real-time-operator-training-platform-analysis-of-computat/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/towards-an-open-source-real-time-operator-training-platform-analysis-of-computat/</guid><description/></item><item><title>Tuning performance of grey-box models for thermal building applications</title><link>https://savvaspanagi.github.io/publications/tuning-performance-of-grey-box-models-for-thermal-building-applications/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/tuning-performance-of-grey-box-models-for-thermal-building-applications/</guid><description/></item><item><title>cresROADS 2026</title><link>https://savvaspanagi.github.io/events/cresroads-2026/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/cresroads-2026/</guid><description>&lt;p&gt;Brought together researchers, TSOs, DSOs, industry partners, and developers working on the future of power system simulation, operation, and digitalization.&lt;/p&gt;
&lt;p&gt;Many thanks to CRESYM, TwinEU, and all collaborators involved in these activities.&lt;/p&gt;</description></item><item><title>Enhanced Optimal Power Flow Using a Trained Neural Network Surrogate for Distribution Grid Constraints</title><link>https://savvaspanagi.github.io/publications/enhanced-optimal-power-flow-using-a-trained-neural-network-surrogate-for-distrib/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/enhanced-optimal-power-flow-using-a-trained-neural-network-surrogate-for-distrib/</guid><description/></item><item><title>2nd DENSE Summer School</title><link>https://savvaspanagi.github.io/events/dense-summer-school-2/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/dense-summer-school-2/</guid><description>&lt;p&gt;Hosted at the École Centrale de Nantes. The program included lab tours and collaborative working package meetings, fostering knowledge exchange and networking among researchers and industry partners.&lt;/p&gt;</description></item><item><title>Coordinated curtailment of uncontrollable distributed energy resources in isolated power systems</title><link>https://savvaspanagi.github.io/publications/coordinated-curtailment-of-uncontrollable-distributed-energy-resources-in-isolat/</link><pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/coordinated-curtailment-of-uncontrollable-distributed-energy-resources-in-isolat/</guid><description/></item><item><title>A thermal-electrical co-optimization framework for active distribution grids with electric vehicles and heat pumps</title><link>https://savvaspanagi.github.io/publications/a-thermal-electrical-co-optimization-framework-for-active-distribution-grids-wit/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/a-thermal-electrical-co-optimization-framework-for-active-distribution-grids-wit/</guid><description/></item><item><title>PSCC 2026</title><link>https://savvaspanagi.github.io/events/pscc-2026/</link><pubDate>Thu, 08 Jan 2026 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/pscc-2026/</guid><description>&lt;p&gt;As power systems become increasingly complex, operator training requires simulation environments that can accurately reproduce system dynamics while meeting strict real-time constraints.&lt;/p&gt;
&lt;p&gt;In this work, we evaluate the real-time performance of the open-source dynamic simulator Dynawo as the core engine of a modern operator-training platform. Using a large-scale model of the French transmission system and a range of realistic contingency scenarios, we investigate how network-model fidelity, topology representation, and solver settings affect computational performance.&lt;/p&gt;</description></item><item><title>Increasing the RES Hosting Capacity of the Cyprus Distribution System Focusing on Export Limitation Schemes</title><link>https://savvaspanagi.github.io/publications/increasing-the-res-hosting-capacity-of-the-cyprus-distribution-system-focusing-o/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/increasing-the-res-hosting-capacity-of-the-cyprus-distribution-system-focusing-o/</guid><description/></item><item><title>Secondment at The University of Manchester</title><link>https://savvaspanagi.github.io/events/manchester-secondment/</link><pubDate>Thu, 20 Nov 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/manchester-secondment/</guid><description>&lt;p&gt;During the secondment, stochastic scheduling and operational techniques were investigated and implemented for the optimal operation of electric vehicles and heat pumps.&lt;/p&gt;</description></item><item><title>Impact of Uncontrolled Electric Vehicle Charging on Unbalanced Suburban Low-Voltage Networks</title><link>https://savvaspanagi.github.io/publications/impact-of-uncontrolled-electric-vehicle-charging-on-unbalanced-suburban-low-volt/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/impact-of-uncontrolled-electric-vehicle-charging-on-unbalanced-suburban-low-volt/</guid><description/></item><item><title>ISGT Europe 2025</title><link>https://savvaspanagi.github.io/events/isgt-europe-2025/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/isgt-europe-2025/</guid><description>&lt;p&gt;Participated in IEEE ISGT Europe 2025 in Malta and presented a Monte Carlo-based modeling and simulation framework designed to evaluate the impact of uncontrolled electric-vehicle charging on three-phase suburban low-voltage networks, incorporating realistic data from surveys, smart meters, and rooftop PV installations.&lt;/p&gt;</description></item><item><title>Smart Energy Systems Conference 2025</title><link>https://savvaspanagi.github.io/events/smart-energy-systems-2025/</link><pubDate>Mon, 22 Sep 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/smart-energy-systems-2025/</guid><description>&lt;p&gt;Valuable insights into heating and cooling system modeling and control. Glad to share the experience with DENSE doctoral candidates Hasibuzzaman Mahmud and Milad Mohammadyari.&lt;/p&gt;</description></item><item><title>1st DENSE Summer School</title><link>https://savvaspanagi.github.io/events/dense-summer-school-1/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/dense-summer-school-1/</guid><description>&lt;p&gt;Explored advanced topics in sector-coupled energy system optimization, multi-energy system modeling, and digitalization in sustainable energy systems, including lab tours, collaborative WP meetings, and a final board session.&lt;/p&gt;</description></item><item><title>IEA-DHC Symposium 2025</title><link>https://savvaspanagi.github.io/events/iea-dhc-2025/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/iea-dhc-2025/</guid><description>&lt;p&gt;Participated in the 2025 District Heating and Cooling Symposium and presented research aiming to balance physical interpretability with data-driven adaptability in thermal building models.&lt;/p&gt;</description></item><item><title>Optimal Operation of Electric Vehicles to Enhance the Flexibility Provision in Active Distribution Grids</title><link>https://savvaspanagi.github.io/publications/optimal-operation-of-electric-vehicles-to-enhance-the-flexibility-provision-in-a/</link><pubDate>Sun, 29 Jun 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/optimal-operation-of-electric-vehicles-to-enhance-the-flexibility-provision-in-a/</guid><description/></item><item><title>PowerTech 2025</title><link>https://savvaspanagi.github.io/events/powertech-2025/</link><pubDate>Sun, 29 Jun 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/powertech-2025/</guid><description>&lt;p&gt;Introduced a day-ahead optimization framework that leverages EV scheduling to support distribution system operation—offering upward and downward flexibility while respecting both network constraints and user preferences.&lt;/p&gt;</description></item><item><title>Sizing of Fast Frequency Response Reserves for improving frequency security in low-inertia power systems</title><link>https://savvaspanagi.github.io/publications/sizing-of-fast-frequency-response-reserves-for-improving-frequency-security-in-l/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/sizing-of-fast-frequency-response-reserves-for-improving-frequency-security-in-l/</guid><description/></item><item><title>DTU PES Summer School 2025</title><link>https://savvaspanagi.github.io/events/dtu-summer-school-2025/</link><pubDate>Sun, 18 May 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/dtu-summer-school-2025/</guid><description>&lt;p&gt;Intensive training on electricity market design, conic relaxations, system reliability with deep learning, hybrid markets for renewable integration, and optimization under uncertainty. Presented Fast Frequency Response for Low Inertia Systems in the poster session.&lt;/p&gt;</description></item><item><title>4th Doctoral Colloquium</title><link>https://savvaspanagi.github.io/events/frederick-colloquium-2025/</link><pubDate>Sat, 05 Apr 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/frederick-colloquium-2025/</guid><description>&lt;p&gt;Shared progress on flexibility modeling and optimization within the DENSE MSCA project.&lt;/p&gt;</description></item><item><title>1st DENSE Thematic Workshop</title><link>https://savvaspanagi.github.io/events/dense-workshop-manchester-2025/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/dense-workshop-manchester-2025/</guid><description>&lt;p&gt;Discussed how EVs can support grid operation through intelligent control and optimization. Research collaboration between SPS Lab (CUT) and Electricity Authority of Cyprus.&lt;/p&gt;</description></item><item><title>CRESYM Power System Dynamics Workshop</title><link>https://savvaspanagi.github.io/events/cresym-workshop-2025/</link><pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/cresym-workshop-2025/</guid><description>&lt;p&gt;Covered angle, frequency, and voltage dynamics with case studies and real-time interaction.&lt;/p&gt;</description></item><item><title>Adaptive Reduced System Modeling for Real-time Dynamic Simulations</title><link>https://savvaspanagi.github.io/publications/adaptive-reduced-system-modeling-for-real-time-dynamic-simulations/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/adaptive-reduced-system-modeling-for-real-time-dynamic-simulations/</guid><description/></item><item><title>DENSE</title><link>https://savvaspanagi.github.io/projects/dense/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/projects/dense/</guid><description>&lt;h2 id="dependable-engineering-of-smart-energy-systems-dense"&gt;Dependable engineering of Smart Energy Systems (DENSE)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Funding Agency:&lt;/strong&gt; Horizon Europe MSCA (Marie Skłodowska-Curie Actions Doctoral Network)&lt;br&gt;
&lt;strong&gt;Start Date:&lt;/strong&gt; January 2024&lt;br&gt;
&lt;strong&gt;Duration:&lt;/strong&gt; 4 years&lt;br&gt;
&lt;strong&gt;Total budget:&lt;/strong&gt; €2.6m&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;SPS Lab:&lt;/strong&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-is-dense"&gt;What is DENSE?&lt;/h2&gt;
&lt;p&gt;DENSE (Dependable Smart Energy Systems) is a 4-year Marie Skłodowska-Curie Actions Doctoral Network (HORIZON-TMA-MSCA-DN) funded under Horizon Europe. It brings together 10 partners from applied research, academia, and industry across 6 countries, with the aim of implementing 12 doctoral research projects.&lt;/p&gt;
&lt;p&gt;The network trains early-stage researchers in the innovative dependable engineering of Smart Energy Systems (SESs), with a main focus on robustness as well as preventive and corrective actions under uncertainty.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="why-it-matters"&gt;Why it matters&lt;/h2&gt;
&lt;p&gt;The European Green Deal aims to transform the EU into a climate-neutral, fair, and prosperous society by 2050. DENSE supports this ambition by training and connecting the next generation of researchers and innovators needed to progress toward dependable Smart Energy Systems.&lt;/p&gt;
&lt;p&gt;Dependability of complex networks such as SESs characterizes their ability to deliver service that can justifiably be trusted. It comprises attributes such as availability, reliability, safety, integrity, and maintainability. DENSE tackles this challenge with a focus on operational robustness and preventive/corrective actions in SESs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="research-objectives"&gt;Research objectives&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Methods for designing scalable, hierarchical, and predictive coordination and operation algorithms for SESs at transnational and communal level&lt;/li&gt;
&lt;li&gt;Tools for robust data-driven planning, control, and adaptation, including open-source solutions for joint planning and optimization across heat and power&lt;/li&gt;
&lt;li&gt;Methods for robust estimation, fault detection, and preventive security management in SESs under uncertainties and disturbances with different time-scales&lt;/li&gt;
&lt;li&gt;Software and hardware demonstrators of systems and components with control, management, and analysis tools from individual doctoral projects&lt;/li&gt;
&lt;li&gt;Advanced validation methods for performance and functionality assessment of SESs, including heat pumps, green mobility, and cross-sectoral applications in smart communities and buildings&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="my-role"&gt;My role&lt;/h2&gt;
&lt;p&gt;As a Doctoral Candidate in DENSE, my research focuses on the &lt;strong&gt;optimal operation of electric vehicles and heat pumps within active distribution networks&lt;/strong&gt;, in collaboration between the Cyprus University of Technology (SPS Lab) and the Electricity Authority of Cyprus (EAC).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="related-publications"&gt;Related publications&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="source"&gt;Source&lt;/h2&gt;
&lt;p&gt;Project page adapted from the
description.&lt;/p&gt;</description></item><item><title>Impact of fast frequency response on renewable energy source curtailment and load shedding</title><link>https://savvaspanagi.github.io/publications/impact-of-fast-frequency-response-on-renewable-energy-source-curtailment-and-loa/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/impact-of-fast-frequency-response-on-renewable-energy-source-curtailment-and-loa/</guid><description/></item><item><title>TRAISIM</title><link>https://savvaspanagi.github.io/projects/traisim/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/projects/traisim/</guid><description>&lt;h2 id="training-simulator-for-power-system-operators-traisim"&gt;Training Simulator for Power System Operators (TRAISIM)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Funding Agency:&lt;/strong&gt; CRESYM&lt;br&gt;
&lt;strong&gt;Start Date:&lt;/strong&gt; January 2025&lt;br&gt;
&lt;strong&gt;Partners:&lt;/strong&gt; Cyprus University of Technology (CUT), Réseau de Transport d’Électricité (RTE), Collaborative Research for Energy System Modelling (CRESYM)&lt;br&gt;
&lt;strong&gt;Website:&lt;/strong&gt;
&lt;br&gt;
&lt;strong&gt;Code:&lt;/strong&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;TRAISIM is developing an open-source real-time training simulator that helps power system operators prepare for a grid that is becoming more dynamic, more digital, and more demanding to operate.&lt;/p&gt;
&lt;p&gt;The project brings together high-fidelity power-system simulation, operator-focused interfaces, and modern digital-twin thinking in a single platform. Its purpose is to make advanced operator training more accessible, transparent, and adaptable for transmission system operators, researchers, and educators.&lt;/p&gt;
&lt;p&gt;Built on top of Dynawo, TRAISIM offers an open alternative to closed and vendor-locked training environments. This creates space for collaboration, easier experimentation, and a clearer pathway from research to real operational use.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="why-it-matters"&gt;Why It Matters&lt;/h2&gt;
&lt;p&gt;Control rooms are evolving quickly. Operators must respond to renewable integration, changing network conditions, automation, and growing system complexity, all while maintaining security and reliability.&lt;/p&gt;
&lt;p&gt;TRAISIM is designed to support that transition by offering a realistic environment where operators can train on credible scenarios, test responses to disturbances, and build confidence with tools that reflect the needs of future grids.&lt;/p&gt;
&lt;p&gt;The project is also a strong demonstration that open-source technology can support large-scale, real-time operator training without sacrificing ambition or practical relevance.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-traisim-delivers"&gt;What TRAISIM Delivers&lt;/h2&gt;
&lt;p&gt;TRAISIM combines several key elements into one training environment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a realistic physical simulator for large transmission networks&lt;/li&gt;
&lt;li&gt;a control-room style human-machine interface&lt;/li&gt;
&lt;li&gt;orchestration tools that align simulation time and operator interaction&lt;/li&gt;
&lt;li&gt;trainer and scenario-management functions for guided exercises&lt;/li&gt;
&lt;li&gt;protection and automation behaviour for more credible event progression&lt;/li&gt;
&lt;li&gt;AI-enabled model adaptation to improve responsiveness where it matters most&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together, these capabilities help create a platform that is realistic enough for serious training, flexible enough for research, and open enough to grow with new operational needs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="progress-so-far"&gt;Progress So Far&lt;/h2&gt;
&lt;p&gt;In its first phase, TRAISIM has shown that open-source real-time training for large transmission systems is a realistic and promising direction. The project has already established a strong benchmarking foundation, identified the main performance bottlenecks, and defined a focused roadmap for the next stage of development.&lt;/p&gt;
&lt;p&gt;The platform is being demonstrated on a very large transmission network model inspired by the French grid, highlighting TRAISIM’s relevance for realistic TSO-scale applications.&lt;/p&gt;
&lt;p&gt;Current work is focused on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;improving simulation speed and robustness&lt;/li&gt;
&lt;li&gt;using adaptive model selection to reduce computational burden&lt;/li&gt;
&lt;li&gt;strengthening coordination between the simulator and the training environment&lt;/li&gt;
&lt;li&gt;preparing reusable methods, software improvements, and research outputs for the wider community&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Early results from the adaptive model selection work are especially encouraging, showing major reductions in model size while maintaining very high predictive accuracy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="publications"&gt;Publications&lt;/h2&gt;
&lt;p&gt;TRAISIM’s first public outputs are already available and showcase both the project vision and its early technical progress:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
, accepted at PSCC 2026&lt;/li&gt;
&lt;li&gt;TRAISIM: Training Simulator for Power System Operators, poster presented at CRESROADS 2026&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These publications present the first benchmark results, explain the platform concept, and outline the next steps in solver optimisation, AI-enabled model adaptation, and open-source dissemination.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="synergy-with-sps-lab-research"&gt;Synergy with SPS-Lab Research&lt;/h2&gt;
&lt;p&gt;TRAISIM is closely connected to other SPS-Lab research directions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IBM (Interpolation-Based Method):&lt;/strong&gt; improved handling of controller-induced discontinuities in hybrid simulations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modeling &amp;amp; Simulation:&lt;/strong&gt; scalable numerical methods for large and complex power-system models&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TwinEU (Pilot 8, Task 5.5):&lt;/strong&gt; digital twin concepts and infrastructure that support the broader training-platform vision&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Contact:&lt;/strong&gt;
&lt;/p&gt;
&lt;h2 id="source"&gt;Source&lt;/h2&gt;
&lt;p&gt;Project page adapted from the
description.&lt;/p&gt;</description></item><item><title>DENSE Welcome Meeting</title><link>https://savvaspanagi.github.io/events/dense-welcome-2024/</link><pubDate>Tue, 05 Nov 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/dense-welcome-2024/</guid><description>&lt;p&gt;Met doctoral candidates and supervisors from the DENSE program.&lt;/p&gt;</description></item><item><title>Comparison of Fast Frequency Response Methods in the Low-Inertia Grid of Cyprus</title><link>https://savvaspanagi.github.io/publications/comparison-of-fast-frequency-response-methods-in-the-low-inertia-grid-of-cyprus/</link><pubDate>Mon, 21 Oct 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/publications/comparison-of-fast-frequency-response-methods-in-the-low-inertia-grid-of-cyprus/</guid><description/></item><item><title>SyNERGY MED 2024</title><link>https://savvaspanagi.github.io/events/synergy-med-2024/</link><pubDate>Mon, 21 Oct 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/synergy-med-2024/</guid><description>&lt;p&gt;Influential platform for innovation and collaboration in Mediterranean energy and digital transformation.&lt;/p&gt;</description></item><item><title>Pizza and Presenting your Research</title><link>https://savvaspanagi.github.io/events/pizza-presenting-research-2024/</link><pubDate>Thu, 17 Oct 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/pizza-presenting-research-2024/</guid><description>&lt;p&gt;Event organized by the Learning Development Network at CUT.&lt;/p&gt;</description></item><item><title>1st SUNRISE Summer School</title><link>https://savvaspanagi.github.io/events/sunrise-workshop-2024/</link><pubDate>Mon, 09 Sep 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/sunrise-workshop-2024/</guid><description>&lt;p&gt;Hands-on sessions and lectures supported by Typhoon HIL.&lt;/p&gt;</description></item><item><title>Grid-Forming Control Workshop (L2EP)</title><link>https://savvaspanagi.github.io/events/l2ep-gfm-workshop-2024/</link><pubDate>Mon, 08 Jul 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/l2ep-gfm-workshop-2024/</guid><description>&lt;p&gt;Organized by L2EP, Laboratoire d’Électrotechnique et d’Électronique de Puissance de Lille.&lt;/p&gt;</description></item><item><title>Graduation</title><link>https://savvaspanagi.github.io/events/graduation-2024/</link><pubDate>Wed, 26 Jun 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/graduation-2024/</guid><description>&lt;p&gt;Graduation day at the National Technical University of Athens — a milestone marking the completion of my studies in Electrical and Computer Engineering.&lt;/p&gt;</description></item><item><title>Grid-Forming Inverters Workshop (AIT)</title><link>https://savvaspanagi.github.io/events/ait-gfm-workshop-2024/</link><pubDate>Thu, 20 Jun 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/ait-gfm-workshop-2024/</guid><description>&lt;p&gt;I participated in the Technical Workshop on Qualification and Validation of Grid Services from Grid-Forming Inverters of Hybrid and Renewable Energy Plants, held on June 20, 2024, in Vienna, Austria. Hosted at the Austrian Institute of Technology (AIT), this workshop offered a profound exploration into the latest advancements and challenges in grid-forming inverter technology.&lt;/p&gt;</description></item><item><title>CIRED 2024 Vienna Workshop</title><link>https://savvaspanagi.github.io/events/cired-2024/</link><pubDate>Wed, 19 Jun 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/cired-2024/</guid><description>&lt;p&gt;I actively participated and presented a poster showcasing my research on the impact of Fast Frequency Response (FFR) on Renewable Energy Source curtailment and load shedding. The CIRED 2024 workshop in Vienna focuses on increasing distribution network hosting capacity.&lt;/p&gt;</description></item><item><title>Kickoff of MSCA PhD (DENSE)</title><link>https://savvaspanagi.github.io/events/dense-kickoff-2024/</link><pubDate>Sat, 01 Jun 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/dense-kickoff-2024/</guid><description>&lt;p&gt;DENSE is a 4-year Marie Skłodowska-Curie Actions Doctoral Network under Horizon Europe.&lt;/p&gt;</description></item><item><title>DSO-TSO-ESS</title><link>https://savvaspanagi.github.io/projects/dso-tso-ess/</link><pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/projects/dso-tso-ess/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Project 1:&lt;/strong&gt; In collaboration with the TSO and DSO of Cyprus, developed technical requirements for integrating Energy Storage Systems (ESS) into the power grid and technical standards for grid-forming inverters to support voltage and frequency regulation.&lt;/p&gt;
&lt;h2 id="focus-areas"&gt;Focus areas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ESS grid integration&lt;/strong&gt;: technical requirements for connecting Energy Storage Systems to the Cyprus power system&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grid-forming inverters&lt;/strong&gt;: technical standards to support voltage and frequency regulation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TSO–DSO collaboration&lt;/strong&gt;: alignment of requirements across transmission and distribution stakeholders&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="context"&gt;Context&lt;/h2&gt;
&lt;p&gt;This work was carried out at the Sustainable Power Systems Laboratory (Cyprus University of Technology), in collaboration with the Transmission System Operator and Distribution System Operator of Cyprus.&lt;/p&gt;</description></item><item><title>ESS and Grid Forming technical requirements</title><link>https://savvaspanagi.github.io/events/ess-gfm-project-2024/</link><pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/ess-gfm-project-2024/</guid><description>&lt;p&gt;Started work related to energy storage systems and grid-forming technical requirements, in collaboration with system stakeholders.&lt;/p&gt;</description></item><item><title>My First KNX Home Automation Project: A Step-by-Step Guide</title><link>https://savvaspanagi.github.io/blog/my-first-knx-house-automation-project/</link><pubDate>Tue, 06 Feb 2024 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/blog/my-first-knx-house-automation-project/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This is my first time diving into home automation in a bottom-up building, and I&amp;rsquo;m starting with something basic, lighting control. The client wanted a smarter and more energy-efficient home, so I decided to use KNX technology to automate the lights. It&amp;rsquo;s an exciting journey, and I&amp;rsquo;m eager to share my experience in the world of KNX automation for the first time. This article will provide an in-depth look at the planning, implementation, and configuration stages of the lighting KNX automation project.&lt;/p&gt;
&lt;h2 id="overview-of-the-project"&gt;Overview of the Project&lt;/h2&gt;
&lt;p&gt;The project involved installing KNX-compatible sensors and actuators to control the lighting in different rooms. Lighting automation is a fundamental aspect of home automation and provides an excellent introduction to KNX technology. By automating the lighting, I hoped to achieve greater convenience, energy efficiency, and customization options for the client&amp;rsquo;s home environment. Throughout the project, I focused on ensuring seamless integration between the KNX devices and maintaining flexibility for future expansion into other automation functionalities.&lt;/p&gt;
&lt;h2 id="devices-used-in-the-project"&gt;Devices used in the project:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;1 x Surge Arrestor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1 x MDT power suply 640mA (STV-064002)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1 x MDT switch actuator 16 fold 16A (AKK-161603)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;3 x MDT push button lite 55 4FOLD (BE-TAL550401)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2 x MDT smart push button 6way with screen (BE-TAS8601)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1 x RGB LED controller (AKD-0324V01)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the KNX installation, a Type 3 surge arrestor plays a crucial role, shielding against low-energy voltage spikes and surges. However, at the main distribution board, it&amp;rsquo;s imperative to install a Type 1 surge arrestor for comprehensive protection. This robust device not only guards against direct lightning strikes but also adeptly handles high-energy surges, ensuring the resilience of the system. The power supply chosen for the KNX setup has a nominal current of 640 mA, strategically accommodating future expansions with ease. To facilitate seamless scene control, we&amp;rsquo;ve deployed three push buttons/sensors: two discreetly positioned within the bedroom (one at the entrance of the bedroom and another next to the bed), and a third positioned outside the bathroom. For enhanced functionality, we&amp;rsquo;ve integrated two advanced sensors/buttons featuring screens—one strategically placed in the corridor and another at the house entrance—enabling intuitive control and monitoring. Complementing these controls, a 16-fold actuator for various loads, ensuring smooth and efficient functionality throughout. Lastly, to elevate the ambiance of the living space, we&amp;rsquo;ve installed an RGB controller in the living room. This dynamic addition allows us to craft captivating lighting moods, enhancing the overall atmosphere of the house.&lt;/p&gt;</description></item><item><title>Deploying Diverse Regression Machine Learning Algorithms: An Implementation Overview</title><link>https://savvaspanagi.github.io/blog/deploying-diverse-regression-machine-learning-algorithms-an-implementation-overview/</link><pubDate>Sun, 19 Nov 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/blog/deploying-diverse-regression-machine-learning-algorithms-an-implementation-overview/</guid><description>&lt;p&gt;In this current post, we go into the exploration and analysis of various regression machine learning methods. Our objective is to utilize a range of machine learning techniques to forecast the load demand of the Cyprus power system.&lt;/p&gt;
&lt;p&gt;In the initial phase, the &amp;lsquo;data&amp;rsquo; dataframe include all essential features and measurements spanning a 16-month period. Throughout the analysis, our focus is directed towards two important features: temperature and hour. While incorporating additional features could potentially enhance result accuracy, for code explanation and methodology simplification, we have opted to retain only these two key features.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import matplotlib.pyplot as plt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import numpy as np
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Create a scatter plot with demand as color
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plt.scatter(data[&amp;#39;hour&amp;#39;], data[&amp;#39;T2M&amp;#39;], c=data[&amp;#39;Demand&amp;#39;], cmap=&amp;#39;plasma&amp;#39;, s=50)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Add colorbar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cbar = plt.colorbar()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cbar.set_label(&amp;#39;Demand (MW)&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Set labels for axes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plt.xlabel(&amp;#39;Hour of the Day&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plt.ylabel(&amp;#39;Temperature (°C)&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plt.title(&amp;#39;Temperature vs Hour (Color-coded by Demand)&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plt.show()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://savvaspanagi.github.io/blog/deploying-diverse-regression-machine-learning-algorithms-an-implementation-overview/image-2_hu_b692c6001ba07c7.webp 320w, https://savvaspanagi.github.io/blog/deploying-diverse-regression-machine-learning-algorithms-an-implementation-overview/image-2_hu_1c981710e6a1ac99.webp 480w, https://savvaspanagi.github.io/blog/deploying-diverse-regression-machine-learning-algorithms-an-implementation-overview/image-2_hu_e8b1e7e7ad38172b.webp 571w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://savvaspanagi.github.io/blog/deploying-diverse-regression-machine-learning-algorithms-an-implementation-overview/image-2_hu_b692c6001ba07c7.webp"
width="571"
height="453"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The first analysis illustrates the fluctuation of demand in megawatts (MW) in response to variations in temperature and hour. In instances of low demand, the figure showcases a darker color, transitioning to brighter hues as demand increases.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data&amp;rsquo;s preparation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Prior to normalizing the data, it&amp;rsquo;s crucial to recognize that the &amp;lsquo;hour&amp;rsquo; feature is cyclical. A detailed analysis on handling cyclical features has been discussed in a previous post, accessible
. Furthermore, the guidance on scaling data developed in other post
, Normalisation and Standardisation method implemented. Moreover, the data&amp;rsquo;s was divided into test and training data.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.preprocessing import StandardScaler
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sc=StandardScaler()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;data.loc[:,[&amp;#39;hour_sin&amp;#39;,&amp;#39;hour_cos&amp;#39;,&amp;#39;T2M_norm&amp;#39;]]=sc.fit_transform(data.loc[:,[&amp;#39;hour_sin&amp;#39;,&amp;#39;hour_cos&amp;#39;,&amp;#39;T2M&amp;#39;]])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.model_selection import train_test_split
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Assessing Machine Learning Regression Models: RMSE and R-squared Evaluation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When it comes to checking how well a machine learning regression model is doing, we use two important measures: RMSE and R-squared. RMSE looks at the average difference between the predicted values and the actual values. If the RMSE is low, it means the model is doing a good job. R-squared, on the other hand, tells us how much of the variability in the data our model can explain. A higher R-squared is better, showing that the model fits the data well. So, by looking at both RMSE and R-squared, we can figure out if our regression model is accurate and how well it explains the data.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.metrics import r2_score
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.metrics import mean_squared_error
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate RMSE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rmse = np.sqrt(mean_squared_error(y_test, X_test[:,5]))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate R-squared
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;r_squared = r2_score(y_test, X_test[:,5])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(f&amp;#39;RMSE: {rmse}&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(&amp;#34;R-squared:&amp;#34;, r_squared)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Current TSO&amp;rsquo;s demand forecast accuracy: RMSE= 30.194821557544707 , R-squared= 0.9700502334373836&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Multiple Linear Regression&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Multiple Linear Regression is a statistical technique that helps us make predictions by analyzing the relationships between multiple variables. Imagine you have a dataset with one outcome you want to predict (let&amp;rsquo;s call it &amp;lsquo;Y&amp;rsquo;) and several factors that might influence it (let&amp;rsquo;s call them &amp;lsquo;X1,&amp;rsquo; &amp;lsquo;X2,&amp;rsquo; etc.).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multiple Linear Regression:&lt;/strong&gt;&lt;/p&gt;
$$
Y = b_0 + b_1X_1 + b_2X_2 + \ldots + b_kX_k
$$&lt;p&gt;The goal is to find the best values for b0,b1,…,&lt;em&gt;bk&lt;/em&gt; that minimize the difference between our predicted &lt;em&gt;Y&lt;/em&gt; and the actual &lt;em&gt;Y&lt;/em&gt; in our dataset. Once we find these values, we can use them to make predictions. For example, if we want to predict someone&amp;rsquo;s weight (&lt;em&gt;Y&lt;/em&gt;), we&amp;rsquo;d use their height (X1), age (X2), and other relevant factors. The coefficients (&lt;em&gt;b&lt;/em&gt;0,&lt;em&gt;b&lt;/em&gt;1,…,&lt;em&gt;bk&lt;/em&gt;) tell us how much &lt;em&gt;Y&lt;/em&gt; is expected to change for a one-unit change in each &lt;em&gt;X&lt;/em&gt; variable, holding other variables constant. A positive coefficient means an increase in &lt;em&gt;Y&lt;/em&gt; with an increase in the corresponding &lt;em&gt;X&lt;/em&gt;, and a negative coefficient means the opposite.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementation of &lt;em&gt;Multiple&lt;/em&gt; Linear Regression&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Training the Simple Linear Regression model on the Training set
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.linear_model import LinearRegression
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MLR = LinearRegression()
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MLR.fit(X_train[:,:3], y_train)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Predicting the Test set results
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;y_predMLR = MLR.predict(X_test[:,:3])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.metrics import r2_score
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.metrics import mean_squared_error
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate RMSE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rmse = np.sqrt(mean_squared_error(y_test, y_predMLR))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate R-squared
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;r_squared = r2_score(y_test, y_predMLR)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(f&amp;#39;RMSE: {rmse}&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(&amp;#34;R-squared:&amp;#34;, r_squared)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. Polyonimial Regression&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Polynomial regression focuses on capturing nonlinear patterns by introducing higher-degree polynomial terms of a single independent variable. Polynomial regression is particularly useful when the relationship between the variables is nonlinear, providing a more accurate fit to the data compared to the linear assumptions of multiple linear regression.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Polynomial Regression:&lt;/strong&gt;&lt;/p&gt;
$$
Y = b_0 + b_1X + b_2X^2 + \ldots + b_nX^n
$$&lt;p&gt;&lt;strong&gt;Implementation of Polyonimial Regression&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;preprocessing&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PolynomialFeatures&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linear_model&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LinearRegression&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pipeline&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;make_pipeline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Assuming X_train is your feature matrix with 3 columns, and y_train is your target variable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a polynomial regression model with degree 2 (you can change the degree as needed)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;degree&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;PR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;make_pipeline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PolynomialFeatures&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;degree&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;LinearRegression&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Train the model&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;PR&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_train&lt;/span&gt;&lt;span class="p"&gt;[:,:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;y_train&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Make predictions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;y_predPR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PR&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_test&lt;/span&gt;&lt;span class="p"&gt;[:,:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;metrics&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;mean_squared_error&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Calculate RMSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rmse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mean_squared_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y_test&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_predPR&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Calculate R-squared&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;r_squared&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;r2_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y_test&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_predPR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;RMSE: {rmse}&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;R-squared:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r_squared&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Implementation Support Vector Regression&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Training the SVR model on the whole dataset
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.svm import SVR
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SVR = SVR(kernel = &amp;#39;rbf&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SVR.fit(X_train[:,:3], y_train)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Predicting a new result
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;y_predSVR=SVR.predict(X_test[:,:3])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(np.concatenate((y_predSVR.reshape(len(y_predSVR),1), y_test.reshape(len(y_test),1)),1))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.metrics import mean_squared_error
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate RMSE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rmse = np.sqrt(mean_squared_error(y_test, y_predSVR))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate R-squared
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;r_squared = r2_score(y_test, y_predSVR)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(f&amp;#39;RMSE: {rmse}&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(&amp;#34;R-squared:&amp;#34;, r_squared)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Implementation Disicion Tree Regression&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Training the Decision Tree Regression model on the whole dataset
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.tree import DecisionTreeRegressor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DTR = DecisionTreeRegressor(random_state = 0)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DTR.fit(X_train[:,:3], y_train)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Predicting a new result
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;y_predDTR=DTR.predict(X_test[:,:3])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.metrics import mean_squared_error
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate RMSE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rmse = np.sqrt(mean_squared_error(y_test, y_predDTR))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate R-squared
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;r_squared = r2_score(y_test, y_predDTR)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(f&amp;#39;RMSE: {rmse}&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(&amp;#34;R-squared:&amp;#34;, r_squared)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Implementation Random Forest Regression&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Training the Random Forest Regression model on the whole dataset
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.ensemble import RandomForestRegressor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RFR = RandomForestRegressor(n_estimators = 10, random_state = 0)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;RFR.fit(X_train[:,:3], y_train)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Predicting a new result
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;y_predRFR=RFR.predict(X_test[:,:3])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from sklearn.metrics import mean_squared_error
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate RMSE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rmse = np.sqrt(mean_squared_error(y_test, y_predRFR))
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Calculate R-squared
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;r_squared = r2_score(y_test, y_predRFR)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(f&amp;#39;RMSE: {rmse}&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;print(&amp;#34;R-squared:&amp;#34;, r_squared)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;TSO&amp;rsquo;s Forecast&lt;/th&gt;
&lt;th&gt;Multiple Linear Regression&lt;/th&gt;
&lt;th&gt;Polyonimial Regression&lt;/th&gt;
&lt;th&gt;Support Vector Regression&lt;/th&gt;
&lt;th&gt;Disicion Tree Regression&lt;/th&gt;
&lt;th&gt;Random Forest Regression&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RMSE&lt;/td&gt;
&lt;td&gt;30.2&lt;/td&gt;
&lt;td&gt;109.9&lt;/td&gt;
&lt;td&gt;63.1&lt;/td&gt;
&lt;td&gt;59.7&lt;/td&gt;
&lt;td&gt;27.3&lt;/td&gt;
&lt;td&gt;29.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R-Squared&lt;/td&gt;
&lt;td&gt;0.970&lt;/td&gt;
&lt;td&gt;0.603&lt;/td&gt;
&lt;td&gt;0.869&lt;/td&gt;
&lt;td&gt;0.883&lt;/td&gt;
&lt;td&gt;0.976&lt;/td&gt;
&lt;td&gt;0.972&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Your thoughts and questions are important for me. Feel free to share your insights or inquire about anything in the comments section below. Let&amp;rsquo;s keep the conversation going!&lt;/p&gt;</description></item><item><title>CIGRE Cyprus National Conference 2023</title><link>https://savvaspanagi.github.io/events/cigre-cyprus-2023/</link><pubDate>Tue, 14 Nov 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/cigre-cyprus-2023/</guid><description>&lt;p&gt;Excited to make my debut at CIGRE Cyprus National Conference 2023! Work focuses on integrating Battery Energy Storage System (BESS) with Fast Frequency Response (FFR) and Frequency Control Reserve (FCR) in the Cyprus power system to address challenges like under-frequency load shedding.&lt;/p&gt;</description></item><item><title>Experience</title><link>https://savvaspanagi.github.io/experience/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/experience/</guid><description/></item><item><title>Basic definition of KNX automations</title><link>https://savvaspanagi.github.io/blog/basic-definition-of-knx-automations/</link><pubDate>Sat, 02 Sep 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/blog/basic-definition-of-knx-automations/</guid><description>&lt;p&gt;The KNX Association was founded in 1990, its headquarters are located in Brussels (Belgium) and its original name was &amp;ldquo;EIB Association&amp;rdquo;. In general, the aim of the Association was to promote smart homes, smart buildings and in particular the EIB (European Installation Bus) system, which jointly developed by some very well-known manufacturers.&lt;/p&gt;
&lt;p&gt;KNX is an alternative method for electrical installation and is widely used in a new buildings. KNX installations are designed to provide centralized control, monitoring, and automation of various devices and systems within a building.The software that is used to programming KNX devices is called ETS.&lt;/p&gt;
&lt;h3 id="difference-between-knx-and-conventional-installation"&gt;Difference between KNX and conventional installation&lt;/h3&gt;
&lt;p&gt;In the case of the use of the most widespread means of transmission of KNX technology, &amp;ldquo;Twisted Pair&amp;rdquo;, is installed parallel to the 230V line and a control cable (transmission medium CNS data). This fact, if compared to the conventional technology of electrical installations has the following effects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;When the KNX devices are installed decentralized, the cost of wiring vs of conventional technical facilities is drastically reduced.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The number of system functions increases significantly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The transparency of the facility increases.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Feature Scaling (Normalisation and Standardisation) / Python implementation</title><link>https://savvaspanagi.github.io/blog/feature-scaling/</link><pubDate>Tue, 29 Aug 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/blog/feature-scaling/</guid><description>&lt;p&gt;following the previous article about
, feature scaling is also important when we are going to use a machine learning algorithms. Is a method to scale the features in a comparative form. But, how can we scaling it ? what is the difference between normalization and standardization ? and when we can use it ? All this questions is gone solve at the current article/blog post.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Equations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Normalization (Min-Max Transform):&lt;/strong&gt;&lt;/p&gt;
$$
X' = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}}
$$&lt;p&gt;&lt;strong&gt;Standardization (Z-Score Transform):&lt;/strong&gt;&lt;/p&gt;
$$
X' = \frac{X - \mu}{\sigma}
$$&lt;p&gt;Base on the very helpful Udemy courses that i have take (Machine learning A-Z) i will try to provide what&amp;rsquo;s the problem if we are not scaling the features and how scaling can help be giving a simple example. Let&amp;rsquo;s imagine that we have 2 columns of &lt;strong&gt;income&lt;/strong&gt; and &lt;strong&gt;age&lt;/strong&gt;, also we have 3 different persons as the following table:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Person&lt;/th&gt;
&lt;th&gt;Income&lt;/th&gt;
&lt;th&gt;Age (Years)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;70.000€&lt;/td&gt;
&lt;td&gt;45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;60.000€&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;52.000€&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;So which 2 of this 3 persons is more similar together? We are clearly sure that the person 1-3 is the worst similar couple that we can take so ignore this pattern. If we try to calculate the difference between the remain combinations, person 1 from 2 has salary difference of 10.000€ and age different of 1 year, but person 2 from 3 has salary different of 8.000€ and age different of 4 years. So numerically the best pair is the person 2-3 which has less totally &amp;ldquo;distance&amp;rdquo; (8004&amp;lt;10001). Is this true? No, because is not acceptable to compare income with age. If we want to compare different units of measurement like income with age we have to change the units to a common comparable form.&lt;/p&gt;
&lt;p&gt;What is the different of each transform (Normalisation and Standardisation) ?&lt;/p&gt;
&lt;p&gt;Normalization, transform the data&amp;rsquo;s is a scale of [0-1], in contrast the standardisation is not predetermined scale from before and as larger is the standard deviation (σ) as closest to the zero was the standardisation data&amp;rsquo;s.&lt;/p&gt;
&lt;p&gt;When we use each transform ?&lt;/p&gt;
&lt;p&gt;Normalisation is recommended when the features follows normal distribution, in contrast the standardisation can be used in the most of situations without any problem. But this universal usage of standardisation does not mean that is always the best choice to scaling the features.&lt;/p&gt;
&lt;p&gt;Going back to the problem we have described and try to normalisation the values ,we will have the following table:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Person&lt;/th&gt;
&lt;th&gt;Income&lt;/th&gt;
&lt;th&gt;Age&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.444&lt;/td&gt;
&lt;td&gt;0.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;What about the most common pair now?&lt;/p&gt;
&lt;p&gt;Person [1-2] = (1-0.444)+(1-0.8) = 0.756&lt;/p&gt;
&lt;p&gt;Person [2-3] = (0.444-0)+(0.8-0) = 1.244&lt;/p&gt;
&lt;p&gt;So is obvious that the most similar couple is the person 1 with person 2 and not the above results he had calculated before normalization.&lt;/p&gt;
&lt;p&gt;To implement this 2 methodologies with python, i will propose to use sklearn.preprocessing library.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Standardisation:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;sklearn.preprocessing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;StandardScaler&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a sample dataset with two features (columns)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a StandardScaler object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scaler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;StandardScaler&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fit the scaler to the data and transform the data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;normalized_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scaler&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fit_transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Original Data:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Normalized Data:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;normalized_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Normalisation:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;sklearn.preprocessing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MinMaxScaler&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a sample dataset with two features (columns)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a MinMaxScaler object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scaler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MinMaxScaler&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fit the scaler to the data and transform the data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;normalized_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scaler&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fit_transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Original Data:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Normalized Data:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;normalized_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Your thoughts and questions are important for me. Feel free to share your insights or inquire about anything in the comments section below. Let&amp;rsquo;s keep the conversation going!&lt;/p&gt;</description></item><item><title>How to handle cyclical features, for distance methodologies like k-means machine learning algorithms</title><link>https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/</link><pubDate>Sat, 26 Aug 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/</guid><description>&lt;p&gt;Often in situations of use machine learnings methods, we have to consider how to handle the cyclic features. For example in K-Means algorithm it use Euclidean distance in order to sort the available data&amp;rsquo;s in clusters. In this situations the distance between the hour 0 (00:00) from 23 (23:00) is bigger than what really is. Base on the literature in order to overcome this problem they are use the sin and cosine method to represent each hour in a different cyclic form. With the help of
and his corresponding article [1] about
i will try to analytical explain the method and with a simple example i will represent how this help in distance measures.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Equations&lt;/strong&gt;&lt;/p&gt;
$$
\begin{align*}
x &amp;= \sin\left(\frac{a \cdot 2\pi}{\max(a) + 1}\right) \\
y &amp;= \cos\left(\frac{a \cdot 2\pi}{\max(a) + 1}\right)
\end{align*}
$$&lt;p&gt;Base on the above equations we transform real values to a new cyclical form. So, lets think a simple cyclical problem of seasons values and try to solve it for the proof of operation. If we declare the seasons Winter, Spring , Summer and Autumn to a number value it will be 0,1,2 and 3 corresponding. As we know after Autumn the next season is the winter but a distance of 3 (3-0) is the maximum that can occur in our problem if we use the declared number values. After the implementation of transform we have the following form of datas:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image_hu_3354227877246b9d.webp 320w, https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image_hu_523dd3f71c519a1c.webp 421w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image_hu_3354227877246b9d.webp"
width="421"
height="98"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s try to represent the above data&amp;rsquo;s in x and y axes of scatter plot (x_axes=Sin , y_axes=Cos) :&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-1_hu_e1401293f88a7711.webp 320w, https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-1_hu_73fd3c27fa8538ab.webp 480w, https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-1_hu_1903ea035a30c4c7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-1_hu_e1401293f88a7711.webp"
width="760"
height="477"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Finally, how does this help in K-Means algorithm and other distance methods that i will use ? Euclidian distance calculated based on the below formulas.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-2_hu_dbe7a94370e9d891.webp 320w, https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-2_hu_75269047dbfd2cde.webp 480w, https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-2_hu_6a410a947bdd406f.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-2_hu_dbe7a94370e9d891.webp"
width="760"
height="428"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;In our simple problem there are 2D points and after applying the formulas the distance is the following:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-3_hu_7040a62705b48277.webp 320w, https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-3_hu_8c37092e67b98381.webp 330w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://savvaspanagi.github.io/blog/handling-cyclical-features-for-use-in-method-such-us-machine-learning/image-3_hu_7040a62705b48277.webp"
width="330"
height="137"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;So is this Euclidean distance true? if we think the reality this represent exactly how far is each season for each other.&lt;/p&gt;
&lt;p&gt;Your thoughts and questions are important for me. Feel free to share your insights or inquire about anything in the comments section below. Let&amp;rsquo;s keep the conversation going!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[1] :
&lt;/p&gt;</description></item><item><title>How to use 0-5v plc to control the speed of high current dc motor</title><link>https://savvaspanagi.github.io/blog/plc-0-5v-dc-motor-speed-control/</link><pubDate>Tue, 22 Aug 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/blog/plc-0-5v-dc-motor-speed-control/</guid><description>&lt;p&gt;A lot of DIY projects need a programmable microcontroller to control the operation of it. In the current article we will discuss a suitable industrial module to control a dc motor speed. The following article is my inspiration after i am trying to building a small project that need to connect Arduino with motor controller to control the speed.&lt;/p&gt;
&lt;p&gt;Base on my personal experience I have bought the following controller:
&lt;/p&gt;
&lt;p&gt;If the above link is not available any more you can find similar controller by keyword CCMHCN&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://savvaspanagi.github.io/blog/plc-0-5v-dc-motor-speed-control/image-5_hu_5cd248489dcd4fc7.webp 320w, https://savvaspanagi.github.io/blog/plc-0-5v-dc-motor-speed-control/image-5_hu_44bc2d01fa8b9c0.webp 480w, https://savvaspanagi.github.io/blog/plc-0-5v-dc-motor-speed-control/image-5_hu_3355f32644d94254.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://savvaspanagi.github.io/blog/plc-0-5v-dc-motor-speed-control/image-5_hu_5cd248489dcd4fc7.webp"
width="760"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;With this type of controller, you can use PWM Arduino output or some other microcontroller output and control the yellow and red signal from the above image. In the other side of controller you have to connect the motor and the power supply. If we assume that the power supply nominal voltage was 12V, this mean that the 5v input signal gives 12v output signal and 2.5v input signal gives 6v output signal and so on.&lt;/p&gt;
&lt;p&gt;In the following code an example of use Arduino to test the operation of the controller is represent. Using serial communication you can give a range of values between 0-10 and it will transform from 0 to 255 PWM output which is 0-5v.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#include &amp;#34;MapFloat.h&amp;#34; //Library Source: https://github.com/radishlogic/MapFloat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ne"&gt;float&lt;/span&gt; &lt;span class="n"&gt;PWMVal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="ne"&gt;int&lt;/span&gt; &lt;span class="n"&gt;pinOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;PWM&lt;/span&gt; &lt;span class="n"&gt;Pin&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;Arduino&lt;/span&gt; &lt;span class="n"&gt;Nano&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;void&lt;/span&gt; &lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9600&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;void&lt;/span&gt; &lt;span class="n"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;available&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ne"&gt;String&lt;/span&gt; &lt;span class="n"&gt;myString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;readString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;Read&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="ne"&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ne"&gt;float&lt;/span&gt; &lt;span class="n"&gt;myFloat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;myString&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toFloat&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="ne"&gt;float&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ne"&gt;float&lt;/span&gt; &lt;span class="n"&gt;PWMVal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapFloat&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myFloat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;10.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;analogWrite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pinOut&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PWMVal&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;Output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;LEVEL = &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myFloat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;print&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;PMW VALUE = &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PWMVal&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Serial&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;----------------------------&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Malta Trip</title><link>https://savvaspanagi.github.io/events/malta-trip-2023/</link><pubDate>Sat, 19 Aug 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/malta-trip-2023/</guid><description>&lt;p&gt;Setting off on a new adventure, my girlfriend and I eagerly ventured to the enchanting island of Malta. Roaming through its picturesque streets, we uncovered a captivating fusion of ancient allure and contemporary energy that the island exuded. From exploring historic sites to savoring the flavors of local delicacies, our journey immersed us in the rich cultural mosaic of Malta. Malta&amp;rsquo;s unique charm and vibrant spirit made this escapade an unforgettable chapter in our travel story.&lt;/p&gt;</description></item><item><title>Joined SPS Lab as Research Associate</title><link>https://savvaspanagi.github.io/events/sps-lab-join-2023/</link><pubDate>Mon, 15 May 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/sps-lab-join-2023/</guid><description>&lt;p&gt;Joined the Sustainable Power Systems Lab of Cyprus University of Technology and started working on operating marginal policy for frequency reserves in the power system of Cyprus. Main responsibilities included dimensioning the necessary inertia, FFR, FCR, FRR, and RR reserves.&lt;/p&gt;</description></item><item><title>Grigoris Farakos Award</title><link>https://savvaspanagi.github.io/events/farakos-award-2023/</link><pubDate>Fri, 24 Mar 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/farakos-award-2023/</guid><description>&lt;p&gt;Commendation in honor of Grigoris Farakos, for my distinction in the three highest averages during the 4th year of studies in the direction of energy.&lt;/p&gt;</description></item><item><title>Romania Trip</title><link>https://savvaspanagi.github.io/events/romania-trip-2023/</link><pubDate>Sun, 19 Mar 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/romania-trip-2023/</guid><description>&lt;p&gt;Embarking on another trip with my girlfriend, this time to Bucharest, Romania, was a truly enriching experience. We wandered through the bustling streets, discovering the perfect blend of old-world charm and modern vibrancy that the city had to offer. Exploring historic landmarks, indulging in local cuisine, and immersing ourselves in the cultural tapestry of Bucharest were highlights of our adventure. The memories we created together in the heart of Romania&amp;rsquo;s capital will forever hold a special place in our hearts.&lt;/p&gt;</description></item><item><title>Diploma Thesis Presentation</title><link>https://savvaspanagi.github.io/events/diploma-thesis-2023/</link><pubDate>Thu, 09 Mar 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/diploma-thesis-2023/</guid><description>&lt;p&gt;On March 9, 2023, I proudly presented my thesis on the optimal operation of smart grids and energy communities, marking the culmination of my academic journey towards obtaining a Bachelor&amp;rsquo;s degree. This moment signifies the completion of my academic responsibilities and represents a significant milestone in my pursuit of knowledge and expertise in the field of electrical and computer engineering.&lt;/p&gt;</description></item><item><title>TSOC-OMP</title><link>https://savvaspanagi.github.io/projects/tsoc-omp/</link><pubDate>Sun, 29 Jan 2023 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/projects/tsoc-omp/</guid><description>&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;The growing integration of renewable energy sources is compelling power system operators to decommission conventional power plants, resulting in a loss of inertia and frequency control capabilities. This shift has led the system to operate at marginal or even lower limits of frequency reserves, diminishing overall reliability. Consequently, there is a critical need to resize reserves using innovative techniques and explore new frequency reserve products to mitigate these challenges. This project focuses on the dimensional aspects of Inertia, FFR (Fast Frequency Response), FCR (Frequency Containment Reserve), FRR (Frequency Restoration Reserve), and RR (Restoration Reserve) to address and optimize the system’s response.&lt;/p&gt;
&lt;h2 id="project-objectives"&gt;Project Objectives&lt;/h2&gt;
&lt;p&gt;The TSOC-OMP (TSOC Operating Margin Policy) project was initiated to address the critical challenges facing the Cyprus power system due to increasing renewable energy penetration. The main objectives include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Operating Margin Assessment&lt;/strong&gt;: Comprehensive review and analysis of the current operating margin policy for the Cyprus Transmission System Operator (TSOC)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frequency Security Enhancement&lt;/strong&gt;: Development of strategies to maintain frequency security in low-inertia conditions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reserve Sizing Optimization&lt;/strong&gt;: Optimization of various frequency reserve types (FFR, FCR, FRR, RR) for the Cyprus power system&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy Recommendations&lt;/strong&gt;: Formulation of new operating margin policies that accommodate the changing generation mix&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="methodology"&gt;Methodology&lt;/h2&gt;
&lt;p&gt;The methodologies used in this project focus on:&lt;/p&gt;
&lt;h3 id="theoretical-analysis"&gt;Theoretical Analysis&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;System Limits Calculation&lt;/strong&gt;: Mathematical modeling of frequency response characteristics under low-inertia conditions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reserve Requirements Assessment&lt;/strong&gt;: Analytical determination of minimum reserve requirements for different contingency scenarios&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="dynamic-simulations"&gt;Dynamic Simulations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Time-Domain Analysis&lt;/strong&gt;: Detailed simulation of frequency dynamics following large disturbances&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scenario Analysis&lt;/strong&gt;: Evaluation across multiple operating conditions and generation mixes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance Metrics&lt;/strong&gt;: Assessment of frequency nadir, rate of change of frequency (RoCoF), and settling time&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="probabilistic-techniques"&gt;Probabilistic Techniques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Risk Assessment&lt;/strong&gt;: Probabilistic evaluation of frequency security under uncertainty&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monte Carlo Simulations&lt;/strong&gt;: Statistical analysis of system performance across various scenarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reliability Indices&lt;/strong&gt;: Calculation of frequency-related reliability metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="machine-learning-approaches"&gt;Machine Learning Approaches&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data-Driven Optimization&lt;/strong&gt;: Gradient-descent-based methods for reserve sizing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic Security Assessment&lt;/strong&gt;: Integration of DSA with linear predictions for optimal FFR allocation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pattern Recognition&lt;/strong&gt;: Identification of critical operating conditions requiring enhanced reserves&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="key-findings"&gt;Key Findings&lt;/h2&gt;
&lt;p&gt;The project has yielded several important insights for the Cyprus power system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast Frequency Response (FFR) Optimization&lt;/strong&gt;: Development of novel data-driven methods for optimal FFR sizing in low-inertia grids&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operating Margin Redefinition&lt;/strong&gt;: Identification of new margin requirements that account for reduced system inertia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reserve Coordination&lt;/strong&gt;: Strategies for effective coordination between different frequency reserve types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System Resilience&lt;/strong&gt;: Enhanced understanding of system behavior under extreme conditions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="impact-and-outcomes"&gt;Impact and Outcomes&lt;/h2&gt;
&lt;p&gt;The TSOC-OMP project has contributed to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Policy Development&lt;/strong&gt;: Informed the development of new operating margin policies for TSOC&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational Guidelines&lt;/strong&gt;: Establishment of practical guidelines for frequency reserve management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Research Advancement&lt;/strong&gt;: Publication of findings in leading power systems journals&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Industry Collaboration&lt;/strong&gt;: Strengthened collaboration between academia and the Cyprus TSO&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="related-publications"&gt;Related Publications&lt;/h2&gt;
&lt;p&gt;The project findings have been published in peer-reviewed journals, including research on
, demonstrating the practical application of the developed methodologies in real-world power system operation.&lt;/p&gt;
&lt;p&gt;See also:
.&lt;/p&gt;
&lt;h2 id="industrial-contacts"&gt;Industrial contacts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Vrahimis Koutsoloukas (TSOC)&lt;/li&gt;
&lt;li&gt;Antonis Lazari (TSOC)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source"&gt;Source&lt;/h2&gt;
&lt;p&gt;Project page adapted from the
description.&lt;/p&gt;</description></item><item><title>Internship at Electricity Authority of Cyprus</title><link>https://savvaspanagi.github.io/events/eac-internship-2022/</link><pubDate>Sat, 01 Oct 2022 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/eac-internship-2022/</guid><description>&lt;p&gt;During my internship at the Electricity Authority of Cyprus (EAC), I became familiar with the Cyprus distributor power system and related operational topics.&lt;/p&gt;</description></item><item><title>Internship at LDK Consultants</title><link>https://savvaspanagi.github.io/events/ldk-internship-2022/</link><pubDate>Mon, 01 Aug 2022 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/ldk-internship-2022/</guid><description>&lt;p&gt;At LDK Consultants, I worked as a junior engineer under an internship program offered by my university. My responsibilities were in the field of energy audits and renewable energy projects. Photo captured during an energy audit.&lt;/p&gt;</description></item><item><title>Hungary Trip</title><link>https://savvaspanagi.github.io/events/hungary-trip-2022/</link><pubDate>Tue, 17 May 2022 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/hungary-trip-2022/</guid><description>&lt;p&gt;A trip to Hungary with my girlfriend was amazing. We explored Budapest, enjoyed the local food, and took in the sights. It was a special time together that we&amp;rsquo;ll always remember fondly. This trip may have been the best I&amp;rsquo;ve ever had.&lt;/p&gt;</description></item><item><title>Netherlands Trip</title><link>https://savvaspanagi.github.io/events/netherlands-trip-2021/</link><pubDate>Sat, 13 Nov 2021 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/netherlands-trip-2021/</guid><description>&lt;p&gt;During my study years, I had the wonderful opportunity to embark on a memorable trip to the Netherlands with my friends. Exploring the charming streets of Amsterdam, cycling along picturesque canals, and immersing ourselves in the rich cultural heritage were highlights of our adventure. We visited world-renowned museums, sampled delicious Dutch cuisine, and soaked in the vibrant atmosphere of this beautiful country.&lt;/p&gt;</description></item><item><title>Favourite tennis court</title><link>https://savvaspanagi.github.io/events/tennis-court-2021/</link><pubDate>Fri, 22 Oct 2021 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/tennis-court-2021/</guid><description>&lt;p&gt;One of my favourite tennis courts in Athens. Located at the National Technical University of Athens, I used to play more than two days a week while studying.&lt;/p&gt;</description></item><item><title>First attempt at opening a business</title><link>https://savvaspanagi.github.io/events/art-your-own-2018/</link><pubDate>Mon, 29 Oct 2018 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/art-your-own-2018/</guid><description>&lt;p&gt;In 2018, after a lot of research, I started my first online printing business (Art Your Own). More specifically, I bought the first equipment and started a company printing customized gifts like mugs, T-shirts, keyrings, and many other items. Until today I maintain my involvement with it mostly for entertainment purposes.&lt;/p&gt;</description></item><item><title>Started studies at NTUA</title><link>https://savvaspanagi.github.io/events/ntua-start-2018/</link><pubDate>Tue, 09 Oct 2018 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/ntua-start-2018/</guid><description>&lt;p&gt;In 2018, I embarked on my academic journey at the National Technical University of Athens (NTUA), where I enrolled in the Department of Electrical and Computer Engineering. This marked the beginning of an exciting chapter in my education, as I delved into the world of electrical engineering and embraced the challenges and opportunities that lay ahead. Photo captured from the building of the Electrical and Computer Engineering department.&lt;/p&gt;</description></item><item><title>Cyprus National Guard</title><link>https://savvaspanagi.github.io/events/army-2017/</link><pubDate>Sat, 09 Sep 2017 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/army-2017/</guid><description>&lt;p&gt;The Cypriot army, known as the Cyprus National Guard, plays a crucial role in safeguarding the sovereignty and security of the island. Conscription is mandatory for male citizens, and service typically lasts for 12 months. I served in the artillery department with the specialty of a communicator.&lt;/p&gt;</description></item><item><title>Lyceum Graduation Day</title><link>https://savvaspanagi.github.io/events/lyceum-graduation-2017/</link><pubDate>Fri, 23 Jun 2017 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/lyceum-graduation-2017/</guid><description>&lt;p&gt;On my Lyceum graduation day, emotions ran high. Surrounded by classmates and loved ones, receiving that diploma was a moment of immense pride and accomplishment. It marked the end of one journey and the beginning of another, filled with anticipation and excitement for what lay ahead.&lt;/p&gt;</description></item><item><title>When Our Paths Crossed</title><link>https://savvaspanagi.github.io/events/paths-crossed-2016/</link><pubDate>Fri, 04 Nov 2016 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/paths-crossed-2016/</guid><description>&lt;p&gt;In 2016, I met my partner. It was a significant moment that brought a positive change to my life. Since then, we&amp;rsquo;ve built a strong connection and shared many memorable experiences.&lt;/p&gt;</description></item><item><title>Growing Up</title><link>https://savvaspanagi.github.io/events/growing-up-2003/</link><pubDate>Wed, 19 Feb 2003 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/growing-up-2003/</guid><description>&lt;p&gt;While I was celebrating my birthdays at kindergarten!&lt;/p&gt;</description></item><item><title>Childhood Memories</title><link>https://savvaspanagi.github.io/events/childhood-memories-2000/</link><pubDate>Wed, 19 Jan 2000 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/childhood-memories-2000/</guid><description>&lt;p&gt;Photo taken from the living room of my parent&amp;rsquo;s house. The chair is still alive with different color!&lt;/p&gt;</description></item><item><title>Born</title><link>https://savvaspanagi.github.io/events/born-1999/</link><pubDate>Fri, 19 Feb 1999 00:00:00 +0000</pubDate><guid>https://savvaspanagi.github.io/events/born-1999/</guid><description>&lt;p&gt;I was born in Paralimni, Cyprus. Paralimni is a town located on the eastern coast of the island of Cyprus, near the popular tourist destination of Ayia Napa. In this picture you can see my godfather, my godmother and around me are my sister, my cousins and my aunt.&lt;/p&gt;</description></item></channel></rss>