I've been thinking about solar collectors where several independent mirrors to focus the light on a solar collector, similar to the following design from Energy Innovations.

Solar Array

Because there will be flaws in the assembly of this solar array, I am proceeding with the following assumptions (or lack thereof):

  • The software knows the "position" of each mirror, but doesn't know how this position relates to the real world or to other mirrors. This will account for poor mirror calibration or other environmental factors which may effect one mirror but not the others.

  • If a mirror moves 10 units in one direction, and then 10 units in the opposite direction, it will end up where it originally started.

I would like to use machine learning to position the mirrors correctly and focus the light on the collector. I expect I would approach this as an optimization problem, optimizing the mirror positions to maximize the heat inside the collector and the power output.

The problem is finding a small target in a noisy high-dimensional space (considering each mirror has 2 axis of rotation). Some of the problems I anticipate are:

  • cloudy days, even if you stumble upon the perfect mirror alignment, it might be cloudy at the time

  • noisy sensor data

  • the sun is a moving target, it moves along a path, and follows a different path every day - although you could calculate the exact position of the sun at any time, you wouldn't know how that position relates to your mirrors

My question isn't about the solar array, but possible machine learning techniques that would help in this "small target in a noisy high dimensional-space" problem. I mentioned the solar array because it was the catalyst for this question and a good example.

What machine learning techniques can find such a small target in a noisy high-dimensional space?


A few additional thoughts:

  • Yes, you can calculate the suns position in the real world, but you don't know how the mirrors position is related to the real world (unless you've learned it somehow). You might know the suns azimuth is 220 degrees, and the suns elevation is 60 degrees, and you might know a mirror is at position (-20, 42); now tell me, is that mirror correctly aligned with the sun? You don't know.

  • Lets assume you have some very sophisticated heat measurements, and you know "with this heat level, there must be 2 mirrors correctly aligned". Now the question is, which two mirrors (out of 25 or more) are correctly aligned?

  • One solution I considered was to approximate the correct "alignment function" using a neural network which would take the suns azimuth and elevation as input and output a large array with 2 values for each mirror which correspond to the 2 axis of each mirror. I'm not sure what the best training method is though.

More thoughts:

  • The mirrors do have a coordinate system which the software has access to, but the software doesn't know how this coordinate system relates the the real world. Let's say a mirror is at position (4, 42); what does that mean? I don't know and neither does the software. But I do know that if I move the mirror around and then move it back to (4, 42) the mirror will be in the same position it was previously. Additionally, two mirrors may be at position (4, 42) but be pointing in opposite directions in the real world.

  • Yes, with a lot of quality sensors the problem is easy to solve. Energy Innovations is out of business as best I can tell, probably because they used a bunch of really awesome sensors and people said "I'll just buy solar panels, they're cheaper."

  • The only sensors in the system are in the collector head.

  • Sorry for not answering your question but I suddenly got an idea reading through your post. Would it not be reasonable to use the measurements of the other to determine who has the best alignment, and the overall goal to make the standard deviation as small as possible AND that everyone should produce equal to or more than the max from the population? Commented Nov 27, 2012 at 21:43
  • 2
    See also en.wikipedia.org/wiki/Heliostat Commented Nov 27, 2012 at 22:03
  • 2
    In a world where any mobile phone knows where it is and how it is positioned, the assumption that a mirror of an heliostat doesn't is unrealistic.
    – mouviciel
    Commented Nov 28, 2012 at 6:47
  • 1
    As long as you know where your array is, where each mirror is relative to that point, where the collector is relative to each mirror and how the array is oriented (azimuth-wise), everything you want to do is calculable. This isn't a machine learning problem, it's all geometry.
    – Blrfl
    Commented Nov 28, 2012 at 12:59
  • 1
    I see your new edit. It seems to me like your problem boils down to translating the mirror coordinates into azimuth and elevation. It should not require an array, nor does it require machine learning; it's probably just a couple of simple mathematical equations with some constants. Commented Nov 28, 2012 at 18:10

4 Answers 4


Sun paths can be predicted, so I imagine you can get the mirror aligned pretty closely already if you know the time of day, the day of the year, and the latitude and longitude.

You don't need machine learning for this.

If you have mirrors that don't know which way they're pointed (i.e. you can't correlate their position with elevation and azimuth measurements), you could try using a camera with a wide field of view, sweeping the sky until a bright white spot appears in the camera's view. You can then move the mirror towards that spot (using some simple x/y calculations), until the bright spot is centered in the camera's view. Put a dark filter on the camera so that all it sees is the sun.

However, your question states that you do know where the mirrors are pointed. If you have sensors on the mirrors that tell you how they are positioned, then you have the capability to correlate those position measurements to actual azimuth and elevation numbers.

I would imagine it would be pretty simple to detect cloudy days with a single solar cell, or the absence of any heat on the mirror.

  • 6
    You still need to take assembly imperfections into account, but this is a calibration problem that doesn't involve machine learning. Control engineering would be a more relevant theoritical framework.
    – mouviciel
    Commented Nov 27, 2012 at 21:30
  • 2
    @FrustratedWithFormsDesigner: If your mirrors were mounted on railroad cars, I suppose. A run-of-the-mill GPS and levelling sensors would solve that problem. Commented Nov 27, 2012 at 21:51
  • 3
    @RobertHarvey: But would it be as much fun? ;) Commented Nov 27, 2012 at 21:58
  • 7
    The fact that you have hundreds of mirrors is not a big deal, the behavior for each individual mirror doesn't depend on its neighbors. You're intentionally making this problem harder than it really is. Commented Nov 27, 2012 at 22:50
  • 4
    @Buttons840: If you have no way to correlate what your position sensors mean relative to the actual position of the mirror, machine learning isn't going to help you position them. Anything you do without that data will essentially be a drunkard's walk. Coarse calibration should be a factor of the design. Fine calibration can be accomplished by rastering each mirror against the sun and watching the output of your collector. Whatsisname is absolutely right: you're making this more difficult than it needs to be.
    – Blrfl
    Commented Nov 28, 2012 at 16:03

For this sort of application, a field of mirrors trying to point at a solar collector, you can very much calculate where you think the sun should be, where the mirrors should be, what angle they should be at, and how to position them so they point towards your collector. You know, a mathematical model. It'll be close. Probably close enough.

As for calibrating the mirrors to deal with imperfections and deviations from your model:
Wiggle one mirror at a time. If your output increases, keep the change. Store the alteration as calOffset. Call it done.

I agree with Harvey, machine learning is overkill for this.

But hey, let's say you want an mobile autonomous system that can wake up after a long nap and go find the sun. And we can't afford a $0.05 battery to keep time. And since it's mobile, the sun could be in god-knows what direction. And all the humans are dead. And our robotic solar-cell overlords had a serious binger and they don't know what part of the world they woke up on. And their GPS can't pick up a signal. And none of their buddies know what happened.

1) Sweep the area with one mirror and note any spikes in power output. Repeat that a few times to make sure it wasn't a cloud or something.
2) You now know the position of the sun. Go git it.
3) Wait an hour.
4) Sweep the whole area again with a mirror. Spikes. Clouds. Yada yada.
5) You now know the path of the sun. Follow it till you reach the limit of your servos or until the power drops off
6) Rotate 180 degrees and wait 12 hours.
7) Do the sweep thing.
8) From the difference in the sun's setting position and the rising position, you now roughly know your latitude/season*. (At least, your offset from the equator. Still don't know north from south). Adjust accordingly.
9) Wait a day. Note the difference in the sunrise location. You now know what side of the solstice you're on.
10) Wait upwards towards 6 months. Note where the direction of sunrise peaks. You now know if you're in winter or summer, and can safely figure out the path of the sun for the next EON.

If any of the steps with "now you know" aren't clear, the answer is MATH (and the orbital mechanics of Earth**). Mr. Math is your friend. He can tell you things. And unless the axiom of equality or some such turns out to be false, you can even trust him.

*Offer not valid in the Arctic or Antarctic circles.
**Offer also not valid on Mars, Venus, Titan, Io, and other select locations.

  • As stated I am proceeding under the assumption that I don't know the mirrors positions in the real world, and the claim that with some math I can get "close enough" has no basis.
    – Buttons840
    Commented Nov 27, 2012 at 23:20
  • When you say you don't know the mirrors' positions in the real world, what do you mean by that exactly? I've got a GPS on my phone that can give you latitude and longitude coordinates, accurate to within a few meters. Commented Nov 27, 2012 at 23:29
  • 2
    Assume GPS has been rendered inoperative by solar flares or a Kessler bomb.
    – user28988
    Commented Nov 28, 2012 at 0:44
  • @WorldEngineer - Assume that everything but machine learning has been rendered inoperative, would machine learning be the solution?
    – mouviciel
    Commented Nov 28, 2012 at 7:58
  • @mouviciel no, without some servos or sensors, machine learning has nothing to learn from and nothing to do after all that thinking.
    – Philip
    Commented Nov 28, 2012 at 16:24

Your question doesn't seem to relate to machine learning so much as it does to automatic calibration of a group of devices. You've got a device (a mirror) with position sensors, and you know where you want to point the device, but you don't know how the sensor output relates to the real world. So you really just need to calibrate the device -- find the correct position so that you can determine how the sensor readings relate to actual position. Once calibrated, it sounds like you can rely on the sensors to position the device.

Given all that, you should probably calibrate each of the devices individually. You can do it automatically using some sort of a search algorithm. Gilbert Le Blanc describes one that should work. Another way would be to assume that the sensor data is correct and use it to point the mirror approximately in the right position; then move the mirror in a pattern that spirals outward until you hit the target.

If you really want to adjust all the mirrors at once, a genetic algorithm might be called for:

  • Choose a random setting for each mirror and store them in an array. Repeat, so that you have some number of mirror field configurations.
  • Next, run through the mirror field configurations, setting the all the mirrors for each one and then measuring the heat generated.
  • Remove the mirror field configurations that generate the least heat from the list.
  • Generate some new configurations by recombining parts of the configurations that remain in the list.
  • Repeat until the configurations converge to a single solution or the improvement at each iteration drops below some threshold (i.e. you've reached "good enough").

Also, I should point out that if you try the method above, the thing you're trying to optimize is the mirror sensor calibration, not position. Each step will take some time, so you'll need to account for the movement of the sun as the process goes on. The "setting" for each mirror is not the position but the sensor error, i.e. difference between sensor reading and the ideal reading.


I almost hate to write this.

  • Determine from a solar cell whether or not the sun is shining.
  • If the sun is shining, start with the mirror at (0, 0).
  • Rotate the mirror to 0 on the x axis.
  • Rotate the mirror along the entire Y axis. At each step, measure to see if the heat output of your solar collector increases. If so stop, and move to the next mirror in the array.
  • Rotate the mirror along the X axis one step. Repeat the previous step.
  • If the mirror has been rotated along the entire x and y axis without increasing the heat output, mark the mirror as needing maintenance, and move to x = 0 and y = 0.
  • Repeat all of the steps with every mirror in the mirror array.
  • Wait an hour, and repeat all of the steps.
  • Simple, however this approach is far from optimal, assuming that rotation of mirrors costs energy.....
    – mikera
    Commented Nov 28, 2012 at 14:25
  • That's not publication-worthy though.
    – Job
    Commented Nov 28, 2012 at 15:35
  • 3
    @Job Oh I'm sorry, did you want SE.Programmers to help you with your thesis? I knew the homework issue was kind of a problem, but now we have grad students that want us to do their work?
    – Philip
    Commented Nov 28, 2012 at 16:27
  • @mikera: True, this is a brute force solution. However, since one of the clarification edits was "Additionally, two mirrors may be at position (4, 42) but be pointing in opposite directions in the real world.", I don't see any shortcuts. Commented Nov 29, 2012 at 14:15
  • @Gilbert - you need to use the information from previous measurements. Two measurements, for example, is enough to get a partial gradient estimate. Then you can start using methods such as gradient descent to find the optimum position. Much better than brute force, especially since the optimisation problem in this case is likely to be convex!
    – mikera
    Commented Nov 29, 2012 at 14:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.