Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

QuillBot

Scanned on: 20:5 November 20, 2023 UTC

4.6% 3 2855

Overall similarity score Results found Total words in text

Word count
Identical 33
Minor Changes 12
Paraphrased 87
Omitted 0

Powered by
QuillBot Scanned on: 20:5 November 20, 2023 UTC

Results
The results include any sources we have found in your submitted document that includes the
following: identical text, minor changed text, paraphrased text.

Commitment of Power Plants Based on Efficiency and Least … IDENTICAL


https://steemit.com/stemng/@kaydee/commitment-of-power-plants-based…
3%

Text that is exactly the


thesis.pdf same.

https://research.library.mun.ca/13872/1/thesis.pdf 1%
thesis.pdf

71674752.pdf MINOR CHANGES


https://core.ac.uk/download/pdf/71674752.pdf 1%
71674752.pdf
Text that is nearly
identical, yet a
different form of the
word is used. (i.e 'slow'
becomes 'slowly')

PARAPHRASED

Text that has similar


meaning, yet different
words are used to
convey the same
message.

Unsure about your report?

The results have been found after


comparing your submitted text to
online sources, open databases
and the Copyleaks internal
database. If you have any
questions or concerns, please feel
free to contact us
atsupport@copyleaks.com

Click here to learn more about


different types of plagiarism

Powered by
BTP Assessment Report

“Cloud-based application for Economic Load Dispatch ”

For the period


August 2023 to November 2023
by

Rawal Gaurav Kaushikkumar


B20EE049

Under the supervision of Dr. Ravi Yadav

Department of Electrical Engineering

Indian Institute of Technology Jodhpur


NH 62, Nagaur Road, Karwar,
Jodhpur 342030 INDIA
This page is left blank, intentionally.
Index

S.No. Page
1. Introduction 2
2. Problem statement and proposed solution 2
3. Economic Dispatch Neglecting Losses and No Generator Limits 3
4. Economic Dispatch Neglecting Losses and including Generator Limits 9
5. Deploying on cloud services(AWS) 13
6. Remaining part of the project 14

i
Abstract

Conventional economic load dispatch systems encounter challenges such as computa-


tional intensity, data storage limitations, slow real-time responsiveness, difficulty in col-
laborative optimization, security concerns, insufficient scalability for changing power sys-
tem capacities, and high upfront costs. We present a cloud computing-based solution
powered by Amazon Web Services for tackling these challenges. Cloud computing ad-
dresses these issues by providing scalable resources, efficient data management, real-time
processing, secure collaboration, and cost-effective solutions. Our framework includes
two systems: ”Economic dispatch without constraints” and ”Economic dispatch consider-
ing Generator Limits.” We converted these systems into Python code and deployed them
on AWS Lambda by creating two different Lambda functions, along with other dependen-
cies. And analyzed their performances. The real-time data were also stored in a database
called DynamoDB.

1
1 Introduction

A crucial part of operational economics in power generation and delivery is the concept of
economic dispatch, which aims to achieve the minimum cost of power production. Under
specified load conditions, economic dispatch plays an important role in determining the
power output for each plant, including individual generating units within those plants. The
primary objective is to minimize the overall cost of fuel required, to meet the system load.
In essence, economic dispatch involves the coordination of production costs across all power
plants operational within the system.

Given the fluctuating total load of the power system throughout the day, coordinated control
of power plant outputs becomes imperative to maintain generation-to-load balance. This en-
sures that the system frequency remains as close as possible to the nominal operating value,
typically 50 or 60 Hz. Consequently, the issue of automatic generation control (AGC) is for-
mulated with a focus on the steady-state perspective.

Furthermore, due to the daily variations in load, the utility faces the task of economically
determining which generators to initiate, which ones to shut down, and in what sequence.
The computational process used to make these decisions is known as unit commitment. This
implies a strategic approach to optimize the startup and shutdown of generators based on
economic considerations in response to the evolving daily load patterns.

2 Problem statement and proposed solution

Conventional economic load dispatch in power systems struggling with several challenges,
ranging from computational intensity to real-time decision-making constraints. The com-
plexity of optimization problems and the vast amounts of data generated by power systems
often strain the computational capabilities of traditional setups, leading to prolonged pro-
cessing times. Additionally, issues related to data storage, management, and security pose
significant hurdles.

Cloud computing emerges as a transformative solution, offering scalable and on-demand


computational resources to accelerate the optimisation procedure. The cloud’s robust data
storage and management capabilities address concerns related to the efficient handling of
large datasets. Real-time decision-making is enhanced through the cloud’s ability to process
data swiftly. Moreover, cloud platforms facilitate collaborative optimization among multiple
stakeholders, overcoming geographical and infrastructural barriers. Security and reliability
concerns are mitigated by the substantial investments made by cloud providers in safeguard-
ing data. The scalability of cloud computing ensures adaptability to changing power system

2
constraint.
A common strategy involves incorporating the constraints into the objective function
through the utilization of Lagrange multipliers:
n
X
L = Ct + λ(PD − Pi ) (2.3)
i=1

The conditions for optimal dispatch are given by:


∂L
• ∂Pi
= 0 (for each generator)
∂L
• ∂λ
=0

where:

Ct is the total cost of generation


Ci is the cost of generation of unit i
n is the number of generating units
Pi is the power generated by unit i
PD is the total load demand
αi , βi , and γi are the cost coefficients of unit i
λ is the Lagrange multiplier

The Lagrange multipliers ensure that the power generation constraints are met. The equa-
tions can be solved through the following steps:

1. Set the gradient of the Lagrangian to zero to find the optimal power generation levels.

2. Check the second-order conditions to ensure that the optimal solution is a minimum.

The optimal power generation levels are calculated using the equation:

∂Ci

∂Pi

βi + 2γi Pi = λ

λ − βi
Pi =
2γi

4
ng
X λ − βi
= PD
i=1
2γ i

λ − βi
Pi = (2.4)
2γi

The obtained equation is known as a coordination equation.


subject to the constraint:

Ng
X λ − βi
= PD (2.5)
i=1
2γi

PNg βi
PD + i=1 2γi
⇒λ= PNg 1 (2.6)
i=1 2γi

The value of λ obtained from (2.6) can be substituted in the coordination equation (2.4)
for obtaining the power for each generating unit.

3.1 Gradient Method

The gradient method is an iterative algorithm for finding the minimum of a function.

An analytical solution was established for economic dispatch neglecting losses. In the ear-
lier method, the resulting equations become nonlinear and require iterative solutions when
losses are taken into account. Thus, here we present an iterative approach and solve for P ii
iteratively. Using an iterative search strategy, a better value for λ is acquired by extrapolating
from the first two values of λ. This process is repeated until AP is within a predetermined ac-
curacy. However, as was already mentioned, applying the gradient approach yields a quick
solution. For this reason, (2.5) is expressed as

The gradient method is described by the following equation:

f (λ) = P0

Expanding the left-hand side of the above equation in Taylor’s series about an operating
point λ(k) , and neglecting the higher-order terms results in

5
(k )
df(λ)

(k)
f (λ) + ∗ ∆λ(k) = PD

∆P (k)
∆λ(k) =  (k)
df(λ)

(k) ∆P (k)
∆λ = P  (k)
Pi

∆P (k)
∆λ(k) = P 1 (2.1.1)
2γi

λ(k+1) = λ(k) + ∆λ(k) (2.1.2)

where:
ng
(k )
X
(k)
∆P = PD − Pi (2.1.3)
i=1

Here we have to initialize λ with a certain value and repeat the process until ∆P (k) is less
than a specified accuracy.

3.2 Python program for computing Economic dispatch without constraints.

alpha = []
beta = []
gamma = []

n = int(input('Enter the size of lists: '))

print('Enter values for alpha:')


for i in range(n):
val = float(input())

6
alpha.append(val)

print('Enter values for beta:')


for i in range(n):
val = float(input())
beta.append(val)

print('Enter values for gamma:')


for i in range(n):
val = float(input())
gamma.append(val)

PD = 800 # demanded load


Delp = 10

# Error in Delp is set to a high value

lambda_val = float(input('Enter estimated value of Lambda = '))

print('')

print(' Lambda P1 P3 DP...grad Delambda')

iter = 0
DelP = 1 # Initialize DelP

while abs(DelP) > 0.001:


iter += 1
P = (lambda_val - np.array(beta)) / (2 * np.array(gamma))
DelP = PD - np.sum(P)
J = np.sum(1 / (2 * np.array(gamma)))
Delambda = DelP / J
print([lambda_val, P[0], P[1], P[2], DelP, J, Delambda])
lambda_val += Delambda

totalcost = np.sum(np.array(alpha)+np.array(beta) * P+ np.array(gamma) * Pˆ2


print(f'Total fuel cost will be consumed: {totalcost} $/hour')

7
3.2.1 Explanation of Economic Load Dispatch (ELD) Algorithm

1. Initialization of Lists (alpha, beta, gamma):

• Three input lists (alpha, beta, and gamma) are initialized to store coefficients
associated with the cost function of each generator.

2. User Input for Generator Characteristics:

• The user is prompted to enter the size of the lists, and then asked to input values
for alpha, beta, and gamma coefficients for each generator.

3. Constants Initialization:

• PD is the demanded load, set to 800.


• DelP is the error in the demanded load, set to 10.

4. User Input for Estimated Lambda:

• The user is prompted to enter the estimated value of lambda.

5. Optimization Loop:

• The code enters a while loop that continues until the absolute value of DP (differ-
ence between demanded load and actual load) is less than 0.001.
• Inside the loop, the power output (P) of each generator is calculated using the
lambda value, beta, and gamma coefficients, using equation (2.1.3).
• The difference between the demanded load (PD) and the sum of the power outputs
(DP) is calculated.
• The gradient (J) is computed as the sum of the reciprocals of twice the gamma
coefficients.
• The change in lambda (Delambda) is calculated using the formula: Delambda =
DelP / J, using equation (2.1.2) and (2.1.1)
• The values of lambda, power outputs for each generator, DP, J, and Delambda are
printed in each iteration.
• Lambda is updated by adding Delambda.

6. Total Cost Calculation:

• After the optimization loop, the total cost of power generation is calculated using
the optimized lambda and the coefficients.

7. Print Total Cost:

8
• The total fuel cost is printed, which represents the cost of generating power from
all generators.

4 Economic Dispatch Neglecting Losses and including Generator Limits

The generator’s power output must remain within its specified rating and should not fall
below the level required for stable boiler operation. Consequently, power generation is con-
strained to predefined minimum and maximum limits. The objective is to determine the
actual power generation for each plant, minimizing the defined objective function (i.e., total
production cost) in accordance with (2.1), while adhering to the constraints outlined in (2.2)
and the provided inequality constraints.

Pimin ≤ Pi ≤ Pimax ∀i ∈ {1, . . . , ng} (2.1)

where Pimin and Pimax are minimum and maximum generating limits respectively for plant
i.

The Kuhn-Tucker conditions augment the Lagrangian conditions by incorporating the


inequality constraints as supplementary terms. The essential conditions for optimal dispatch
without considering losses are expressed as:

∂Ci
= λ f or Pimin < Pi < Pimax
∂Pi

∂Ci
≤ λ for Pi = P max
i (2.2)
∂Pi

∂Ci
≥ λ for Pi = P imin
∂Pi

The numerical solution remains unchanged. Specifically, for a given estimate λ, P ii are
determined using the coordination Equation (2.4), and the iteration process persists until the
PNg
i=1 Pi = PD . Once any plant reaches its maximum or minimum limit, it is constrained at
that limit. Consequently, the plant’s output becomes constant, and only the unaffected plants
need to operate at equal incremental cost.

9
4.1 Python program for computing Economic dispatch considering Generator Limits

import numpy as np
alpha = []
beta = []
gamma = []
lower_bound = []
upper_bound = []

n = int(input('Enter the size of lists: '))

print('Enter values for alpha:')


for i in range(n):
val = float(input())
alpha.append(val)

print('Enter values for beta:')


for i in range(n):
val = float(input())
beta.append(val)

print('Enter values for gamma:')


for i in range(n):
val = float(input())
gamma.append(val)

print('Enter values for lower bound:')


lower_sum = 0

for i in range(n):
val = float(input())
lower_sum += val
lower_bound.append(val)

print('Enter values for upper bound:')


for i in range(n):
val = float(input())
upper_bound.append(val)

10
PD = 975
Delp = 10

lambda_val = float(input('Enter estimated value of Lambda = '))

print(' Lambda P1 P3 DP...grad Delambda')

iter = 0
DelP = 1 # Initialize DelP
P = np.array(lower_bound) + 1

def calculate_dispatch():
global iter, DelP, P, lambda_val
while abs(DelP) > 0.001 or(all(lower_bound >= P)orall(P >= upper_bound))
iter += 1

P = (lambda_val - np.array(beta)) / (2 * np.array(gamma))

# Clip P values to be within the bounds

for i in range(len(P)):
if P[i] > upper_bound[i]:
P[i] = upper_bound[i]

for i in range(len(P)):
if P[i] < lower_bound[i]:
P[i] = lower_bound[i]

DelP = PD - np.sum(P)

J = np.sum(1 / (2 * np.array(gamma)))

Delambda = DelP / J

if DelP <= 0.001:


print([lambda_val, P[0], P[1], P[2], DelP, J, Delambda])

lambda_val += Delambda

11
totalcost =np.sum(np.array(alpha)+np.array(beta)*P+np.array(gamma)
*Pˆ2)
print('Total fuel cost will be consumed :', totalcost, '$/hour')

lower_Bound_sum = np.sum(np.array(lower_bound))
if lower_Bound_sum >= PD:
print("Bounding not possible")
else:
calculate_dispatch()

4.1.1 Explanation of Economic Dispatch Considering Generator Limits

1. Initialization of Lists (alpha, beta, gamma, lower bound, upper bound):

• Five lists (alpha, beta, gamma, lower bound, and upper bound) are initialized
to store coefficients associated with the cost function of each generator and the
lower and upper bounds for power generation.

2. User Input for Generator Characteristics:

• The user is prompted to enter the size of the lists, and then asked to input values
for alpha, beta, gamma coefficients for each generator, lower bounds, and upper
bounds for power generation.

3. Constants Initialization:

• PD is the demanded load, set to 975.


• Delp is the error in the demanded load, set to 10.

4. User Input for Estimated Lambda:

• The user is prompted to enter the estimated value of Lambda.

5. Optimization Loop:

• The code enters a while loop that continues until the absolute value of DelP (dif-
ference between demanded load and actual load) is less than 0.001 or all generators
are operating within their bounds.
• Inside the loop, the power output (P) of each generator is calculated using the
lambda value, beta, and gamma coefficients.
• The power values are then clipped to be within the specified lower and upper
bounds.

12
• The difference between the demanded load (PD) and the sum of the power outputs
(DelP) is calculated.
• The gradient (J) is computed as the sum of the reciprocals of twice the gamma
coefficients.
• The change in lambda (Delambda) is calculated using the formula: Delambda =
DelP / J using equation (2.1.2) and (2.1.2).
• If DelP is below the threshold (0.001), the values of lambda, power outputs for
each generator, DelP, J, and Delambda are printed.
• Lambda is updated by adding Delambda.

6. Total Cost Calculation:

• After the optimization loop, the total cost of power generation is calculated using
the optimized lambda and the coefficients.

7. Print Total Cost:

• The total fuel cost is printed, which represents the cost of generating power from
all generators.

8. Bounding Check:

• It checks if the sum of lower bounds is greater than or equal to the demanded load
(PD). If true, it prints ”Bounding not possible.”

5 Deploying on cloud services(AWS)

Amazon Web Services (AWS) provides a wide range of cloud computing services that of-
fer various benefits for both enterprises and individuals. The platform provides scalability,
enabling customers to efficiently adjust the allocation of resources in response to demand
fluctuations, hence optimising cost efficiency. It offers a comprehensive suite of services that
encompass several domains such as computing power, storage, databases, machine learn-
ing, and analytics, effectively addressing a wide array of user requirements. The platform
places a strong emphasis on security, implementing comprehensive steps to safeguard data
and applications. It additionally supports innovation via its serverless computing solutions,
which empower developers to concentrate on coding tasks without the need to oversee in-
frastructure management. Furthermore, it employs a pay-as-you-go pricing structure, which
guarantees both cost-effectiveness and adaptability. The combination of these characteristics
positions AWS as a prominent option for enterprises in need of dependable, adaptable, and
economically viable cloud solutions.

13
In this project, the implementation of AWS Lambda, a serverless computing technology of-
fered by Amazon Web Services (AWS), was utilised. The Lambda platform offers the Boto3
library, which facilitates the integration of Python applications, scripts, or tools with AWS
services. This library provides a user-friendly interface for interacting with a wide range of
AWS resources and services. Nevertheless, we have employed NumPy and other libraries
that lack support from the Boto3 library.

We have manually integrated the NumPy library into the Lambda. NumPy may be included
into AWS Lambda by utilising layers. This involves generating a Lambda layer that includes
the NumPy package and subsequently associating this layer with the Lambda function. The
desired outcome can be accomplished through the process of establishing a new directory,
performing the installation of NumPy, and subsequently compressing the included elements.
Subsequently, proceed to generate a unique Lambda layer via the AWS Management Console,
wherein the runtime is specified and the compressed NumPy package is uploaded. After the
creation of the layer, it can be linked to our Lambda function by including the layer in the
function settings.

6 Remaining part of the project

Till now we have worked on the economic dispatch neglecting transmission losses and no
generator limits secondly economic dispatch considering generator limits and neglecting
transmission losses. Currently, we are working on economic dispatch considering both con-
straints.

For the deployment of the economic dispatch algorithm on AWS we have added all the de-
pendencies, We are now left with creating functions in AWS Lambda, using a Python envi-
ronment, for computing Economic dispatch without constraints. And then also have to create
another function for computing Economic dispatch considering Generator Limits. And have
to analyse its performance on the cloud platform as well as on our laptop. The real-time data
will be also stored in a database known as DynamoDB, which is provided by AWS.

14

You might also like