LAB 04 | المختبر 04

AI-Based PV Power Forecasting

التنبؤ بقدرة الأنظمة الكهروضوئية باستخدام الذكاء الاصطناعي
Solar Irradiance, Temperature, Multiple Regression, and 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.

PPV = f(G,T,...)

where:

  • G = solar irradiance [W/m²]
  • T = temperature [°C]
  • PPV = PV electrical power [kW]

1. مسألة التنبؤ بقدرة PV

تعتمد قدرة النظام الكهروضوئي بصورة أساسية على الإشعاع الشمسي، كما تتأثر بدرجة الحرارة وعوامل أخرى.

PPV = f(G,T,...)

2. Why Use Two Inputs?

Solar Irradiance G

Higher irradiance generally increases available PV power.

Temperature T

Higher cell temperature often reduces PV conversion efficiency.

This makes PV forecasting a good example of a multivariable machine-learning problem.

2. لماذا نستخدم مدخلين؟

زيادة الإشعاع الشمسي ترفع القدرة المتاحة عادةً، بينما يمكن لارتفاع درجة حرارة الخلايا أن يخفض الكفاءة الكهربائية.

لذلك تعد هذه المسألة مثالًا جيدًا على تعلم آلي متعدد المدخلات.

3. Example Dataset

Sample Irradiance G [W/m²] Temperature T [°C] PV Power [kW]
12001518
23001827
34002036
45002244
56002552
67002760
78003067
89003274
910003581
108503868

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:

P̂PV = β₀ + β₁G + β₂T

where:

  • β₀ = intercept
  • β₁ = irradiance coefficient
  • β₂ = temperature coefficient

5. نموذج الانحدار متعدد المتغيرات

P̂PV = β₀ + β₁G + β₂T

يمثل β₁ تأثير الإشعاع الشمسي، بينما يمثل β₂ التأثير المرتبط بدرجة الحرارة.

6. Matrix Form

P̂ = Xβ

with:

β = [β₀ β₁ β₂]ᵀ

and:

X = [1 G₁ T₁; 1 G₂ T₂; ... 1 Gₙ Tₙ]

6. الصيغة المصفوفية

يمكن كتابة جميع عينات التدريب في صيغة مصفوفية واحدة:

P̂ = Xβ

حيث يحتوي كل صف من X على ثابت 1 ثم الإشعاع ودرجة الحرارة.

7. Least-Squares Training

We minimize:

J(β)=Σ(PPV,i - P̂PV,i)²

The normal equation is:

β=(XᵀX)⁻¹XᵀP

In MATLAB, use the more numerically stable backslash operator:

X = [ones(size(G)) G T];

beta = X \ Ppv;

7. تدريب النموذج بالمربعات الصغرى

نبحث عن معاملات β التي تجعل مجموع مربعات أخطاء التنبؤ أصغر ما يمكن.

β=(XᵀX)⁻¹XᵀP

لكن في MATLAB يفضل عدديًا استخدام:

beta = X \ Ppv;

8. Extract Model Parameters

beta0 = beta(1);
beta1 = beta(2);
beta2 = beta(3);

The learned model becomes:

P̂PV = β₀ + β₁G + β₂T

8. استخراج معاملات النموذج

بعد التدريب نحصل على ثلاثة معاملات تحدد النموذج الرياضي المتعلم.

9. Physical Interpretation of β₁

β₁ approximates the sensitivity of PV power to irradiance:

β₁ ≈ ΔPPV / ΔG

Its approximate unit is:

kW / (W/m²)

9. المعنى الفيزيائي للمعامل β₁

β₁ ≈ ΔPPV / ΔG

أي أنه يعبّر تقريبًا عن تغير قدرة PV عند تغير الإشعاع الشمسي.

10. Physical Interpretation of β₂

β₂ approximates the effect of temperature:

β₂ ≈ ∂PPV / ∂T

If β₂ is negative, the model indicates that increasing temperature tends to reduce PV electrical output when irradiance is held fixed.

10. المعنى الفيزيائي للمعامل β₂

β₂ ≈ ∂PPV / ∂T

إذا كانت β₂ سالبة، فهذا يشير إلى أن ارتفاع درجة الحرارة يميل إلى خفض القدرة الكهربائية عند تثبيت الإشعاع الشمسي.

وهنا نربط معامل التعلم الآلي بتأثير فيزيائي حقيقي للنظام الكهروضوئي.

11. Prediction on Training Data

Ppred = X * beta;

The residual error is:

e = PPV - P̂PV
error = Ppv - Ppred;

11. التنبؤ على بيانات التدريب

بعد تعلم معاملات النموذج نحسب القدرة المتوقعة لكل عينة ثم نحسب الفرق بينها وبين القدرة الحقيقية.

12. Performance Indices

MAE = (1/n)Σ|eᵢ|
MSE = (1/n)Σeᵢ²
RMSE = √MSE
MAE = mean(abs(error));

MSE = mean(error.^2);

RMSE = sqrt(MSE);

12. مؤشرات تقييم الأداء

نستخدم MAE وMSE وRMSE لقياس جودة التنبؤ.

تكون وحدة MAE وRMSE في هذا المثال kW، ولذلك يسهل تفسيرهما هندسيًا.

13. Forecast a New Weather Condition

Assume:

Gnew = 750 W/m²
Tnew = 28°C

Then:

P̂new = β₀ + β₁Gnew + β₂Tnew
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 متوقعة.

P̂new = β₀ + β₁(750) + β₂(28)

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

ينفذ البرنامج جميع المراحل:

Weather Data
Training
PV Model
Forecast
Evaluation

17. Why Multiple Regression?

If we used irradiance alone:

P̂PV = β₀ + β₁G

the model would ignore temperature effects.

Adding T allows the model to separate part of the variation caused by temperature:

P̂PV = β₀ + β₁G + β₂T

17. لماذا نستخدم الانحدار متعدد المتغيرات؟

استخدام الإشعاع وحده يهمل تأثير درجة الحرارة.

P̂PV = β₀ + β₁G + β₂T

إضافة 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 مع النموذج الذي يستخدم الإشعاع ودرجة الحرارة.

هذه تجربة بسيطة لفهم قيمة إضافة Feature جديد.

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:

PPV = f(G,T,Clouds,History,...)

For example, interactions between irradiance and temperature may not be well represented by a simple linear equation.

This motivates nonlinear regression, neural networks, and deep-learning models.

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.
Always evaluate the model on unseen and realistic operating conditions.

22. ملاحظة هندسية مهمة

لا يجب تقييم نموذج التنبؤ اعتمادًا على بيانات التدريب فقط.

قد تتغير الظروف الجوية، أو تتدهور الوحدات، أو تظهر ظلال جديدة، أو تتغير خصائص القياسات.

23. Lab Tasks

  1. Enter the PV dataset in MATLAB.
  2. Construct matrix X.
  3. Train the two-input regression model.
  4. Record β₀, β₁, and β₂.
  5. Explain the physical meaning of β₁ and β₂.
  6. Calculate MAE, MSE, and RMSE.
  7. Forecast PV power at G=750 W/m² and T=28°C.
  8. Plot actual and predicted PV power.
  9. Remove temperature and compare RMSE.
  10. Add measurement noise and retrain.
  11. Perform the train/test experiment.

23. مهام المختبر

  1. أدخل بيانات PV في MATLAB.
  2. أنشئ المصفوفة X.
  3. درّب نموذج الانحدار ثنائي المدخل.
  4. سجل β₀ وβ₁ وβ₂.
  5. اشرح المعنى الفيزيائي للمعاملين β₁ وβ₂.
  6. احسب MAE وMSE وRMSE.
  7. تنبأ بقدرة PV عند G=750 W/m² وT=28°C.
  8. ارسم القدرة الحقيقية والمتنبأ بها.
  9. احذف درجة الحرارة وقارن RMSE.
  10. أضف ضجيجًا وأعد التدريب.
  11. نفذ تجربة التدريب والاختبار.

📝 Review Questions

  1. Why is irradiance important for PV forecasting?
  2. Why can temperature influence PV electrical power?
  3. What is the meaning of β₁?
  4. What is the meaning of β₂?
  5. Why do we use multiple regression?
  6. What does RMSE represent?
  7. Why can a model perform well on training data but poorly on test data?
  8. When might a neural network outperform this linear model?

📝 أسئلة المراجعة

  1. لماذا يعد الإشعاع الشمسي مهمًا في التنبؤ بقدرة PV؟
  2. لماذا تؤثر درجة الحرارة على القدرة الكهربائية؟
  3. ماذا يمثل β₁؟
  4. ماذا يمثل β₂؟
  5. لماذا نستخدم انحدارًا متعدد المتغيرات؟
  6. ماذا تمثل RMSE؟
  7. لماذا قد ينجح النموذج على بيانات التدريب ويفشل على بيانات الاختبار؟
  8. متى قد تكون الشبكة العصبية أفضل من هذا النموذج الخطي؟