AI-Based PV Power Forecasting
الإشعاع الشمسي ودرجة الحرارة والانحدار متعدد المتغيرات والتنبؤ
🎯 Lab Objectives
- Understand PV-power forecasting as a supervised-learning problem.
- Use solar irradiance and temperature as input features.
- Build a multiple linear-regression model.
- Interpret model parameters physically.
- Forecast PV output for new weather conditions.
- Evaluate predictions using MAE, MSE, and RMSE.
- Understand the limitations of a simple linear model.
🎯 أهداف المختبر
- فهم التنبؤ بقدرة PV كمسألة تعلم خاضع للإشراف.
- استخدام الإشعاع الشمسي ودرجة الحرارة كمدخلات.
- بناء نموذج انحدار خطي متعدد المتغيرات.
- تفسير معاملات النموذج فيزيائيًا.
- التنبؤ بالقدرة الكهروضوئية لظروف جوية جديدة.
- تقييم التنبؤ باستخدام MAE وMSE وRMSE.
- فهم حدود النموذج الخطي البسيط.
1. PV Forecasting Problem
Photovoltaic power depends strongly on solar irradiance and is also affected by temperature.
where:
- G = solar irradiance [W/m²]
- T = temperature [°C]
- PPV = PV electrical power [kW]
1. مسألة التنبؤ بقدرة PV
تعتمد قدرة النظام الكهروضوئي بصورة أساسية على الإشعاع الشمسي، كما تتأثر بدرجة الحرارة وعوامل أخرى.
2. Why Use Two Inputs?
Higher irradiance generally increases available PV power.
Higher cell temperature often reduces PV conversion efficiency.
2. لماذا نستخدم مدخلين؟
زيادة الإشعاع الشمسي ترفع القدرة المتاحة عادةً، بينما يمكن لارتفاع درجة حرارة الخلايا أن يخفض الكفاءة الكهربائية.
3. Example Dataset
| Sample | Irradiance G [W/m²] | Temperature T [°C] | PV Power [kW] |
|---|---|---|---|
| 1 | 200 | 15 | 18 |
| 2 | 300 | 18 | 27 |
| 3 | 400 | 20 | 36 |
| 4 | 500 | 22 | 44 |
| 5 | 600 | 25 | 52 |
| 6 | 700 | 27 | 60 |
| 7 | 800 | 30 | 67 |
| 8 | 900 | 32 | 74 |
| 9 | 1000 | 35 | 81 |
| 10 | 850 | 38 | 68 |
3. مجموعة البيانات
تحتوي كل عينة على قيمة الإشعاع الشمسي ودرجة الحرارة والقدرة الكهربائية المقاسة للنظام الكهروضوئي.
4. Enter Data in MATLAB
G = [200 300 400 500 600 700 800 900 1000 850]';
T = [15 18 20 22 25 27 30 32 35 38]';
Ppv = [18 27 36 44 52 60 67 74 81 68]';
4. إدخال البيانات في MATLAB
نخزن الإشعاع الشمسي ودرجة الحرارة وقدرة PV في ثلاثة متجهات عمودية.
5. Multiple Linear-Regression Model
We assume:
where:
- β₀ = intercept
- β₁ = irradiance coefficient
- β₂ = temperature coefficient
5. نموذج الانحدار متعدد المتغيرات
يمثل β₁ تأثير الإشعاع الشمسي، بينما يمثل β₂ التأثير المرتبط بدرجة الحرارة.
6. Matrix Form
with:
and:
6. الصيغة المصفوفية
يمكن كتابة جميع عينات التدريب في صيغة مصفوفية واحدة:
حيث يحتوي كل صف من X على ثابت 1 ثم الإشعاع ودرجة الحرارة.
7. Least-Squares Training
We minimize:
The normal equation is:
In MATLAB, use the more numerically stable backslash operator:
X = [ones(size(G)) G T];
beta = X \ Ppv;
7. تدريب النموذج بالمربعات الصغرى
نبحث عن معاملات β التي تجعل مجموع مربعات أخطاء التنبؤ أصغر ما يمكن.
لكن في MATLAB يفضل عدديًا استخدام:
beta = X \ Ppv;
8. Extract Model Parameters
beta0 = beta(1);
beta1 = beta(2);
beta2 = beta(3);
The learned model becomes:
8. استخراج معاملات النموذج
بعد التدريب نحصل على ثلاثة معاملات تحدد النموذج الرياضي المتعلم.
9. Physical Interpretation of β₁
β₁ approximates the sensitivity of PV power to irradiance:
Its approximate unit is:
9. المعنى الفيزيائي للمعامل β₁
أي أنه يعبّر تقريبًا عن تغير قدرة PV عند تغير الإشعاع الشمسي.
10. Physical Interpretation of β₂
β₂ approximates the effect of temperature:
If β₂ is negative, the model indicates that increasing temperature tends to reduce PV electrical output when irradiance is held fixed.
10. المعنى الفيزيائي للمعامل β₂
إذا كانت β₂ سالبة، فهذا يشير إلى أن ارتفاع درجة الحرارة يميل إلى خفض القدرة الكهربائية عند تثبيت الإشعاع الشمسي.
11. Prediction on Training Data
Ppred = X * beta;
The residual error is:
error = Ppv - Ppred;
11. التنبؤ على بيانات التدريب
بعد تعلم معاملات النموذج نحسب القدرة المتوقعة لكل عينة ثم نحسب الفرق بينها وبين القدرة الحقيقية.
12. Performance Indices
MAE = mean(abs(error));
MSE = mean(error.^2);
RMSE = sqrt(MSE);
12. مؤشرات تقييم الأداء
نستخدم MAE وMSE وRMSE لقياس جودة التنبؤ.
13. Forecast a New Weather Condition
Assume:
Then:
Gnew = 750;
Tnew = 28;
Pforecast = beta0 + beta1*Gnew + beta2*Tnew;
fprintf('Forecast PV Power = %.2f kW\n',Pforecast);
13. التنبؤ بحالة جوية جديدة
إذا كان الإشعاع 750 W/m² ودرجة الحرارة 28°C، يستخدم النموذج المتعلم لإعطاء قدرة PV متوقعة.
14. Plot Actual and Predicted PV Power
figure
plot(Ppv,'o-','LineWidth',1.6)
hold on
plot(Ppred,'s-','LineWidth',1.6)
grid on
xlabel('Sample')
ylabel('PV Power [kW]')
legend('Actual PV Power','Predicted PV Power', ...
'Location','best')
title('PV Power Forecasting')
14. رسم القدرة الحقيقية والمتنبأ بها
يقارن الشكل بين القدرة المقاسة وقدرة PV التي تنبأ بها النموذج.
15. Plot Prediction Error
figure
stem(error,'LineWidth',1.5)
grid on
xlabel('Sample')
ylabel('Prediction Error [kW]')
title('PV Forecasting Residuals')
15. رسم أخطاء التنبؤ
يساعد رسم البواقي على معرفة العينات التي يخطئ عندها النموذج أكثر من غيرها.
16. Complete MATLAB Program
clear; clc; close all;
% ------------------------------------------------
% AI-Based PV Power Forecasting
% Multiple Linear Regression
% ------------------------------------------------
% Dataset
G = [200 300 400 500 600 700 800 900 1000 850]';
T = [15 18 20 22 25 27 30 32 35 38]';
Ppv = [18 27 36 44 52 60 67 74 81 68]';
% ------------------------------------------------
% Build regression matrix
% Ppv = beta0 + beta1*G + beta2*T
% ------------------------------------------------
X = [ones(size(G)) G T];
% Train model
beta = X \ Ppv;
beta0 = beta(1);
beta1 = beta(2);
beta2 = beta(3);
% ------------------------------------------------
% Prediction
% ------------------------------------------------
Ppred = X * beta;
error = Ppv - Ppred;
% ------------------------------------------------
% Performance
% ------------------------------------------------
MAE = mean(abs(error));
MSE = mean(error.^2);
RMSE = sqrt(MSE);
% ------------------------------------------------
% Display learned model
% ------------------------------------------------
fprintf('Learned PV model:\n')
fprintf('Ppv = %.4f + %.6f*G + %.4f*T\n\n', ...
beta0,beta1,beta2)
fprintf('MAE = %.4f kW\n',MAE)
fprintf('MSE = %.4f kW^2\n',MSE)
fprintf('RMSE = %.4f kW\n\n',RMSE)
% ------------------------------------------------
% Forecast new weather condition
% ------------------------------------------------
Gnew = 750;
Tnew = 28;
Pforecast = beta0 + beta1*Gnew + beta2*Tnew;
fprintf('New irradiance = %.1f W/m^2\n',Gnew)
fprintf('New temperature = %.1f C\n',Tnew)
fprintf('Forecast PV power = %.2f kW\n',Pforecast)
% ------------------------------------------------
% Plot actual and predicted PV power
% ------------------------------------------------
figure
plot(Ppv,'o-','LineWidth',1.6)
hold on
plot(Ppred,'s-','LineWidth',1.6)
grid on
xlabel('Sample')
ylabel('PV Power [kW]')
legend('Actual PV Power','Predicted PV Power', ...
'Location','best')
title('PV Power Forecasting')
% ------------------------------------------------
% Residual errors
% ------------------------------------------------
figure
stem(error,'LineWidth',1.5)
grid on
xlabel('Sample')
ylabel('Prediction Error [kW]')
title('PV Forecasting Residuals')
16. البرنامج الكامل في MATLAB
ينفذ البرنامج جميع المراحل:
17. Why Multiple Regression?
If we used irradiance alone:
the model would ignore temperature effects.
Adding T allows the model to separate part of the variation caused by temperature:
17. لماذا نستخدم الانحدار متعدد المتغيرات؟
استخدام الإشعاع وحده يهمل تأثير درجة الحرارة.
إضافة T تسمح للنموذج بتمثيل جزء إضافي من السلوك الفيزيائي.
18. Experiment 1 — Remove Temperature
Train a simpler model:
X1 = [ones(size(G)) G];
beta1D = X1 \ Ppv;
Ppred1D = X1 * beta1D;
RMSE1D = sqrt(mean((Ppv-Ppred1D).^2));
Compare RMSE with the two-input model.
18. التجربة 1 — حذف درجة الحرارة
درّب نموذجًا يستخدم الإشعاع فقط ثم قارن RMSE مع النموذج الذي يستخدم الإشعاع ودرجة الحرارة.
19. Experiment 2 — Add Measurement Noise
PpvNoisy = Ppv + 2*randn(size(Ppv));
Train the model using the noisy measurements and compare the learned coefficients.
19. التجربة 2 — إضافة ضجيج إلى قياسات PV
أضف ضجيجًا للقدرة المقاسة، ثم أعد التدريب وراقب تغير معاملات النموذج والخطأ.
20. Experiment 3 — Train/Test Split
Gtrain = G(1:7);
Ttrain = T(1:7);
Ptrain = Ppv(1:7);
Gtest = G(8:10);
Ttest = T(8:10);
Ptest = Ppv(8:10);
Xtrain = [ones(size(Gtrain)) Gtrain Ttrain];
betaTT = Xtrain \ Ptrain;
Xtest = [ones(size(Gtest)) Gtest Ttest];
PtestPred = Xtest * betaTT;
RMSEtest = sqrt(mean((Ptest-PtestPred).^2));
fprintf('Test RMSE = %.4f kW\n',RMSEtest)
20. التجربة 3 — التدريب والاختبار
استخدم بعض العينات للتدريب والباقي للاختبار حتى تقيس قدرة النموذج على التنبؤ ببيانات جديدة.
21. From Linear Regression to Neural Networks
Real PV behavior may be nonlinear:
For example, interactions between irradiance and temperature may not be well represented by a simple linear equation.
21. من الانحدار الخطي إلى الشبكات العصبية
في الواقع قد تكون العلاقة بين الإشعاع والحرارة والقدرة غير خطية.
22. Engineering Caution
A forecasting model should not be judged only by training accuracy.
- Weather conditions may change.
- Sensors may contain errors.
- PV modules may age.
- Shading patterns may change.
- New operating conditions may not exist in the training data.
22. ملاحظة هندسية مهمة
لا يجب تقييم نموذج التنبؤ اعتمادًا على بيانات التدريب فقط.
قد تتغير الظروف الجوية، أو تتدهور الوحدات، أو تظهر ظلال جديدة، أو تتغير خصائص القياسات.
23. Lab Tasks
- Enter the PV dataset in MATLAB.
- Construct matrix X.
- Train the two-input regression model.
- Record β₀, β₁, and β₂.
- Explain the physical meaning of β₁ and β₂.
- Calculate MAE, MSE, and RMSE.
- Forecast PV power at G=750 W/m² and T=28°C.
- Plot actual and predicted PV power.
- Remove temperature and compare RMSE.
- Add measurement noise and retrain.
- Perform the train/test experiment.
23. مهام المختبر
- أدخل بيانات PV في MATLAB.
- أنشئ المصفوفة X.
- درّب نموذج الانحدار ثنائي المدخل.
- سجل β₀ وβ₁ وβ₂.
- اشرح المعنى الفيزيائي للمعاملين β₁ وβ₂.
- احسب MAE وMSE وRMSE.
- تنبأ بقدرة PV عند G=750 W/m² وT=28°C.
- ارسم القدرة الحقيقية والمتنبأ بها.
- احذف درجة الحرارة وقارن RMSE.
- أضف ضجيجًا وأعد التدريب.
- نفذ تجربة التدريب والاختبار.
📝 Review Questions
- Why is irradiance important for PV forecasting?
- Why can temperature influence PV electrical power?
- What is the meaning of β₁?
- What is the meaning of β₂?
- Why do we use multiple regression?
- What does RMSE represent?
- Why can a model perform well on training data but poorly on test data?
- When might a neural network outperform this linear model?
📝 أسئلة المراجعة
- لماذا يعد الإشعاع الشمسي مهمًا في التنبؤ بقدرة PV؟
- لماذا تؤثر درجة الحرارة على القدرة الكهربائية؟
- ماذا يمثل β₁؟
- ماذا يمثل β₂؟
- لماذا نستخدم انحدارًا متعدد المتغيرات؟
- ماذا تمثل RMSE؟
- لماذا قد ينجح النموذج على بيانات التدريب ويفشل على بيانات الاختبار؟
- متى قد تكون الشبكة العصبية أفضل من هذا النموذج الخطي؟