Info

This question is closed. Reopen it to edit or answer.

What type of optimization do we need?

1 view (last 30 days)
Jordan Epstein
Jordan Epstein on 10 Aug 2016
Closed: MATLAB Answer Bot on 20 Aug 2021
We have a deformable mirror controlled by 40 actuators that have input voltages from -1V to 1V. Prior to hitting the mirrors, a pulse of light enters a diffraction grating and then the light is spread over the mirror by wavelength. Each actuator applies a difference phase shift to each wavelength. In the end, the light gets reconverged and read by a CCD.
Our goal is to maximize the integral of the spectrum read by the CCD with respect to the 40 variable voltages. This optimization will be done in matlab. I mostly just need to know what type of problem this is...
The program will do something like:
1. Measure a spectrum and integrate
2. Input the new spectrum to the optimization toolbox.
3. Output a new set of voltages to try
4. Go back to 1
There is likely multiple local maxima and the positions will change from day to day as our setup is always changing. Any help on where to look for more information would be much appreciated!

Answers (1)

Alan Weiss
Alan Weiss on 10 Aug 2016
Edited: Alan Weiss on 10 Aug 2016
This is indeed a challenging problem. I worked on a related optics problem involving MEMS a while back, and found that it was crucial to have a model of the problem so that the optimizer would not spend a ton of time futilely optimizing while in the wrong basin of attraction. What I mean is, it is very helpful if you have some idea of reasonable settings before you start to optimize so that you are not going into a local optimum that is not good.
However, if the measurements are fast and you are willing to invest a lot of cycles in optimizing for a given setup, you can just use patternsearch starting from a large variety of initial settings. Set the bounds to [-1,1] in every component, and fire away, something like this:
ub = ones(40,1);
lb = -ub;
options = psoptimset('InitialMeshSize',1/4); % or some such thing
x0 = lb + rand(size(lb)).*(ub - lb); % you will do this many times
voltages = patternsearch(yourfun,x0,[],[],[],[],lb,ub,[],options);
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
  1 Comment
Alan Weiss
Alan Weiss on 10 Aug 2016
Edited: Alan Weiss on 10 Aug 2016
Oh, you were asking for pointers and references. The report of the work I was involved in is here:
1100 x 1100 Port MEMS-Based Optical Crossconnect With 4-dB Maximum Loss, J. Kim, C.J. Nuzman, B. Kumar, D.F. Lieuwen, J.S. Kraus, A. Weiss, C.P. Lichtenwalner, A.R. Papazian, R.E. Frahm, N.R. Basavanhally, D.A. Ramwey, V.A. Aksyuk, F. Pardo, M.E. Simon, V. Lifton, H.B. Chan, M. Haueis, A. Gasparyan, H.R. Shea, S. Arney, C.A. Bolle, P.R. Kolodner, R. Ryf, D.T. Neilson, J.V. Gates,, IEEE Photonics Technology Letters, 15, No. 11, pp. 1537–1539, November 2003.
Alan Weiss
MATLAB mathematical toolbox documentation

This question is closed.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!