99 karma · joined November 20, 2011
I specialize in combining power system simulation libraries with web technologies. I have experience with power flow simulation, optimization and transient simulation. I also work on solvers for sparse systems of linear equations and sparse matrix ordering algorithms. For web development I typically use Vue with Web Components and have experience with WebAssembly.
Sector: Electrical Power Engineering
Nationality: British
Language: English
Experience: 10+ years
Qualifications: MEng, PhD
Languages: Rust, Python, TypeScript...
Source: https://github.com/rwl
Flagship: https://matpower.app
Contracts: EU or US (Remote)
Rate: 120 $/hr (min. 20 hrs)
Comms: Asynchronous
Email: HN username @gmail.com
https://github.com/osqp/osqp_benchmarks
The problem described seems to be an ideal use-case for Machine Learning. The MATPOWER Optimal Scheduling Toolkit (MOST) can already solve:
"a stochastic, security-constrained, combined unit-commitment and multiperiod optimal power flow problem with locational contingency and load-following reserves, ramping costs and constraints, deferrable demands, lossy storage resources and uncertain renewable generation."
Much more and it becomes a global optimization problem where you can never really be sure you are not just stuck in a local optimum. The L2RPN (Learning to Run a Power Network) challenge, from RTE-France, is the most interesting effort I have seen applying Machine Learning to energy system management.
https://github.com/rte-france/l2rpn-baselines
The competition has been renewed for 2022 and has been accepted for the IEEE World Congress on Computational Intelligence in July.
pyodide._module.FS.readFile("/pjm5bus_out.txt", { encoding: 'utf8' })
I published this just to demonstrate that Time Domain Simulation was working to Hantao Cui, the author of Andes. Small Signal Stability Analysis will require SciPy and an ARPACK package. I would like to create a PWA that runs Andes in a web worker, like I did for MATPOWER:The JavaScript application presents the UI and controls editing of a JSON representation of the MATPOWER case structure. This data can be seen using the JSON option on the Export page. The WebAssembly program contains GNU Octave and its dependencies. It is run in a WebWorker (background thread) and the JSON data is passed to and fro. The program that converts the JSON into Octave data structures and back again is available here:
Octave is using UMFPACK to solve sparse systems of linear equations. There may be some performance to be gained by using KLU with AMD preordering.
I am interested to know how best to compile BLAS and LAPACK to WebAssembly. Traditionally, implementations optimized for a particular machine architecture are used to extract maximum performance. However, WebAssembly targets a stack-based conceptual machine. At present, I use LAPACK v3.4.2 and convert it to C with f2c before compiling to WebAssembly. It would be interesting to perform some benchmark tests against other implementations and compare across browsers.
WebAssembly creates an exciting opportunity to combine these libraries with convenient, reactive user interfaces that help to manage the their complexity. The web development community is so large and the frameworks and tools available are of such high quality that an individual, or small team of developers, can quickly create complex applications that would have previously taken much longer. Ultimately, this should accelerate the process of bringing the latest research to industry.
I imagine this app being quite useful to lecturers teaching Power Engineering at Universities. Being able to just send students a link and not requiring them to install complex libraries, deal with licenses or restricted trial versions and them not having to use a particular OS or CPU architecture should help get them started quickly.
$ easy_install muntjac
$ muntjac
to run the demos locally.