Replies: 2 comments
-
This is absolutely no reason why you couldn't do this. Indeed, in the course of my PhD research I used PySpice to simulate random networks which I then used for Unconventional Computing, this was called Evolution in-Materio [1] (similar to Physical Reservoir Computing). I was optimising my conductive network to map my inputs to outputs and enable classification. But I was always interested in the possibility of the auto-design/tuning of the conductive network itself. Similar work to this effect does seem to have been considered [2]. Your fcmaes package seems to be able to use the ask/tell structure, meaning it can integrate with such non-standard problems. [1] B. JONES, ‘Harnessing Evolution in-Materio as an Unconventional Computing Resource’, Doctoral, Durham University, 2023. Available: http://etheses.dur.ac.uk/15119/ |
Beta Was this translation helpful? Give feedback.
-
Thks to your encouraging answer. I will check the references. Regarding multiprocessing: Initially I was interested in space flight related problems like https://github.com/esa/SpOC2 . ESA developed their own optimization library https://github.com/esa/pygmo2 . Pygmos parallelism utilizes C++ multithreading, but Python's multiprocessing is much better in isolating parallel simulation threads, which makes it ideal for parallel optimization in the context of simulation libraries. On a modern 16 core CPU a speed factor of 16-20 can be achieved when utilizing 32 parallel threads. I tested that already for
|
Beta Was this translation helpful? Give feedback.
-
From the paper:
"Most of the commercially available software provides an interface to perform paramet-
ric analysis on a design. However, if we want to generate different versions of a circuit, each
version has to be generated by hand (e.g., a flash ADC with different number of bits), thus
reducing the possible space of exploration due to time or complexity constraints. With our
tool, parametric characteristics can be embedded directly into the components and the
multiple designs can be generated in a modular and programmable fashion."
That is really interesting.
Optimizing circuit design involving both topology and parameters looks challenging for several reasons:
Thanks to the capabilities of modern multi-core processors, it's now feasible to simulate and evaluate various designs and parameter combinations concurrently.
The ideal solution would be an open source Python optimization library that is capable of performing parallel evaluations and accommodating both discrete and continuous parameters, potentially including support for constraints, multi-objective, and quality diversity optimization approaches.
The European Space Agency (ESA) annually hosts an optimization competition. A particular optimization library excelled above the rest, which can be seen here: https://optimise.esa.int/user/867404f708354718b547739c784da79c . Despite its different application area, the features that contributed to its success are exactly what's needed for circuit design optimization.
As the creator of fcmaes (https://github.com/dietmarwo/fast-cma-es), I am exploring new areas where my library could be applied. My current interest is to develop a tutorial incorporating PySpice. However, this requires a PySpice sample that defines an objective function to accept input parameters, carry out a simulation, and return the results and possibly constraint values.
There are precedents in other domains, such as fluid dynamics, where objective functions for simulation-based optimization already exist. For example, take a look at https://github.com/AlgTUDelft/ExpensiveOptimBenchmark/blob/master/expensiveoptimbenchmark/problems/DockerCFDBenchmark.py. In my tutorial at https://github.com/dietmarwo/fast-cma-es/blob/master/tutorials/FluidDynamics.adoc, I demonstrate the application of fcmaes for parallel optimization in optimizing such designs.
I would like to hear your thoughts on this and whether it would be feasible to provide one or more meaningful example objective functions suitable for optmization. We could start with a small one.
Just to show you how this could look like I modified one of your examples, defined the resistor values
as decision variables and defined as objective the "distance" to the example node voltages.
Of course this makes not much sense, but what you can see is how easy it is to utilize parallel
PySpice simulation - it is just the "workers=16" definition. Of course fcmaes provides many more
optmization algorithms. Parallel Python exection works better on Linux, but on Windows there is
https://docs.microsoft.com/en-us/windows/wsl providing the same performance.
Best regards, Dietmar
Beta Was this translation helpful? Give feedback.
All reactions