از پارسکدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.
شش ماه پیش منتشر شده
تعداد بازدید: 102
کد پروژه: 550378
شرح پروژه
کارشناسی ارشد مهندسی فناوری اطلاعات
من یک پایان نامه با مشخصات زیر دارم ،میخواستم ببینید هزینه اینکه کد من درست کار میکند یا خیر چقدر است ؟ (ضمیمه کردم)
پروژه پایتون:
Station')
plt.title("Loyal LEACH - WSN Simulation")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.legend()
plt.grid()
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# Parameters
NUM_NODES = 100 # Number of nodes
FIELD_SIZE = (100, 100) # Area of the network (100x100 units)
INITIAL_ENERGY = 0.5 # Initial energy for each node (in Joules)
BASE_STATION = (50, 50) # Location of the base station
TRANSMIT_COST = 50e-9 # Energy to transmit (per bit)
RECEIVE_COST = 50e-9 # Energy to receive (per bit)
AMPLIFICATION_COST = 10e-12 # Energy for amplification (per bit per meter^2)
DATA_PACKET_SIZE = 4000 # Packet size in bits
LOYALITY_THRESHOLD = 5 # Number of rounds a node avoids being a cluster head
# Node Class
class Node:
def _init_(self, x, y):
self.x = x
self.y = y
self.energy = INITIAL_ENERGY
self.is_cluster_head = False
self.cluster = None
self.rounds_since_ch = 0 # Tracks rounds since last CH status
def distance_to(self, x, y):
return np.sqrt((self.x - x)*2 + (self.y - y)*2)
# Initialize nodes
nodes = [Node(np.random.uniform(0, FIELD_SIZE[0]), np.random.uniform(0, FIELD_SIZE[1])) for _ in range(NUM_NODES)]
# Loyal LEACH Algorithm
def select_cluster_heads(nodes, p=0.1):
"""Select cluster heads based on energy and loyalty constraints."""
for node in nodes:
if (
node.energy > 0 and
node.rounds_since_ch >= LOYALITY_THRESHOLD and
np.random.rand() < p and
node.energy > np.mean([n.energy for n in nodes if n.energy > 0])
):
node.is_cluster_head = True
node.rounds_since_ch = 0
else:
node.is_cluster_head = False
node.rounds_since_ch += 1
def assign_clusters(nodes):
"""Assign nodes to the nearest cluster head."""
for node in nodes:
if not node.is_cluster_head and node.energy > 0:
min_dist = float('inf')
for ch in [n for n in nodes if n.is_cluster_head and n.energy > 0]:
dist = node.distance_to(ch.x, ch.y)
if dist < min_dist:
min_dist = dist
node.cluster = ch
# Energy Consumption
def transmit(node, distance):
"""Calculate energy consumption for transmission."""
return TRANSMIT_COST * DATA_PACKET_SIZE + AMPLIFICATION_COST * DATA_PACKET_SIZE * distance**2
def receive():
"""Calculate energy consumption for receiving."""
return RECEIVE_COST * DATA_PACKET_SIZE
# Simulation
NUM_ROUNDS = 100
total_energy_consumed = 0
packets_to_base_station = 0
for round_num in range(NUM_ROUNDS):
print(f"Round {round_num + 1}")
# Select cluster heads
select_cluster_heads(nodes)
# Assign clusters
assign_clusters(nodes)
# Energy consumption for cluster communication
for node in nodes:
if node.energy > 0:
if node.is_cluster_head:
# Cluster heads receive and transmit
total_receive_cost = sum(receive() for n in nodes if n.cluster == node)
distance_to_bs = node.distance_to(*BASE_STATION)
transmit_cost = transmit(node, distance_to_bs)
node.energy -= total_receive_cost + transmit_cost
total_energy_consumed += total_receive_cost + transmit_cost
packets_to_base_station += 1
elif node.cluster:
# Regular nodes transmit to cluster head
distance_to_ch = node.distance_to(node.cluster.x, node.cluster.y)
transmit_cost = transmit(node, distance_to_ch)
node.energy -= transmit_cost
total_energy_consumed += transmit_cost
# Remove nodes with no energy
alive_nodes = sum(1 for node in nodes if node.energy > 0)
print(f"Alive nodes: {alive_nodes}")
# Plot
plt.figure(figsize=(8, 8))
for node in nodes:
if node.energy > 0:
color = 'red' if node.is_cluster_head else 'blue'
plt.scatter(node.x, node.y, color=color)
else:
plt.scatter(node.x, node.y, color='black')
plt.scatter(BASE_STATION[0], BASE_STATION[1], color='green', marker='x', label='Base
داده ها همینقدر است
این پروژه شامل 1 فایل مهم است، لطفا قبل از ارسال پیشنهاد حتما نسبت به بررسی این فایل اقدام فرمایید.
مهارت ها و تخصص های مورد نیاز
مهلت برای انجام
3روز
وضعیت مناقصه
بسته
درباره کارفرما
عضویت هشت سال پیش
نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟
قادر به انجام این پروژه هستید؟
متأسفانه مهلت ارسال پیشنهاد این پروژه به پایان رسیده و پروژه بسته شده است؛ اما فرصتهای متعددی در سایت موجود میباشد.
به رایگان یک حساب کاربری بسازید
مهارتها و تخصصهای خود را ثبت کنید، رزومه و نمونهکارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.
به شیوهای که دوست دارید کار کنید
برای پروژههای دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصتهای شغلی منحصر به فرد دسترسی پیدا کنید.
با اطمینان دستمزد دریافت کنید
از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.
میخواهید شروع به کار کنید؟
یک حساب کاربری بسازید
بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارتهای شما
است.
پیدا کردن کار (پروژه)
تماشای دمو روش کار