Simple closed-form solution for alpha in detect_clearsky #2171
                  
                    
                      agodbehere
                    
                  
                
                  started this conversation in
                Ideas
              
            Replies: 2 comments 2 replies
-
| Thanks for pointing this out. The implementation went through several iterations and this slipped by. Could you check that formula for the minimum? I get  | 
Beta Was this translation helpful? Give feedback.
                  
                    2 replies
                  
                
            -
| I would be happy to do so. Thank you!… On Wed, Aug 21, 2024 at 09:49 Cliff Hansen ***@***.***> wrote:
 I had forgotten about that typo in the 1996 paper. The intent is to scale
 the clear-sky model by \alpha, not to scale the GHI measurements.
 Are you interested to submit a pull request to replace the call to
 scipy.optimize?
 —
 Reply to this email directly, view it on GitHub
 <#2171 (reply in thread)>,
 or unsubscribe
 <https://github.com/notifications/unsubscribe-auth/AANUIXR5H2XOPWNNTIZGYELZSSLE3AVCNFSM6AAAAABM2QO4ZSVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTANBQHAYDAMI>
 .
 You are receiving this because you authored the thread.Message ID:
 ***@***.***>
 | 
Beta Was this translation helpful? Give feedback.
                  
                    0 replies
                  
                
            
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
        
    
Uh oh!
There was an error while loading. Please reload this page.
-
The algorithm in clearsky.detect_clearsky optimizes for a scaling parameter alpha by finding a value that minimizes the root mean-squared error (RMSE) between measurements and a scaled clear-sky model. Currently, the implementation computes the RMSE and uses scipy.optimize to iteratively minimize the function. However, a simple closed-form solution exists, bypassing the need to call scipy.optimize.
The objective function is$f(\alpha) = \sqrt{\frac{\sum_i (G_i - \alpha C_i)^2}{n}}$ , where $G$  represents measurements of GHI and $C$  represents the clear-sky model.
Since$f(\alpha)$  is nonnegative, $\arg\min_\alpha f(\alpha) = \arg\min_\alpha f^2(\alpha)$ . The value $n$  is a constant and similarly does not affect the solution.
Thus, we end up with a modified objective function$\hat{f}(\alpha) = \sum_i (G_i-\alpha C_i)^2$ . Solving for $\frac{d\hat{f}}{d\alpha} = 0$  yields the optimal value: $\hat{\alpha} = \frac{\sum_i G_i^2}{\sum_i G_iC_i}$ . The result is nonnegative, so the constraint $\alpha > 0$  is satisfied implicitly.
Beta Was this translation helpful? Give feedback.
All reactions