Date: Nov 1, 2005 9:40 AM
Author: Jens Benecke
Subject: Optimization with external simulator (SPICE)?
Hello everybody,

I have a circuit simulator (SPICE) that runs a high frequency model of an

electrical device. I want to tune the parameters of this model to fit my

measurements. I am considering using the Optimization toolbox for this.

Basically I have two sets of frequency dependant variables m(f) and s(f),

and I need to tune about 20 variables (values of resistors, capacitors,

etc) within quite restrictive constraints (factor 10 at most) so that

|| m(f) - s(f) ||² == min

All circuit elements are linear, within certain limits. Just R, L, C.

Normally this would be simple (using \), however s(f) can only be provided

with an external circuit simulator (SPICE in this case), it is too

complicated to be formulated mathematically.

So I need to find a way to make the Matlab optimizer decide on the values

for the next iteration, but perform the actual calculation of s(f) by an

external program (and then read the external program's output file).

The idea is:

Matlab decides on initial values for all variables

Matlab writes SPICE netlist with those values

Matlab calls SPICE simulator

Matlab reads results

... loop until max iterations or required min. difference reached

My ultimate goal is to do this with m(f) and s(f) being matrices instead of

vectors, considering multiple "versions" of the circuit with different m(f)

and parameter constraints for each one (e.g. one circuit with filter, one

without filter), and running seperate external simulations for each one.

Any ideas? Is this possible with the opt. toolbox? Is it feasible? CPU power

and RAM is not the problem (I can order a new 8GB Dual Opteron if that's

what it takes). But I would like to have an idea whether Matlab is the

right tool for this at all beforehand. :-)

Thank you!

--

Jens Benecke