پارس‌کدرز چگونه کار می‌کند؟

از پارس‌کدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.

پارس‌کدرز خریداران یا کارفرمایان را به مجری‌ها /فریلنسرهای خبره‌ای متصل می‌کند که برای انجام پروژه آماده هستند.

45408 - پروژه پایتون (فناوری اطلاعات)

شش ماه پیش منتشر شده

تعداد بازدید: 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روز

وضعیت مناقصه

بسته


درباره کارفرما

عضویت هشت سال پیش

15262 پروژه ثبت شده ،
31 پروژه در حال انجام ،
98 پروژه آماده دریافت پیشنهاد ،
نرخ پذیرش پیشنهاد 34%

برای پیدا کردن پروژه‌های مشابه ثبت نام کنید و پروفایل خود را بسازید.

ورود با گوگل
یا
نام نباید خالی باشد.
نام خانوادگی نباید خالی باشد.

نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟

سفارش پروژه مشابه

نیاز به استخدام فریلنسر یا سفارش پروژه مشابه دارید؟

سفارش پروژه مشابه

قادر به انجام این پروژه هستید؟

ثبت نام کنید

متأسفانه مهلت ارسال پیشنهاد این پروژه به پایان رسیده و پروژه بسته شده است؛ اما فرصت‌های متعددی در سایت موجود می‌باشد.

سری به پروژه‌های مشابه بزنید

روش کار در پارس‌کدرز

به رایگان یک حساب کاربری بسازید

مهارت‌ها و تخصص‌های خود را ثبت کنید، رزومه و نمونه‌کارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.

به شیوه‌ای که دوست دارید کار کنید

برای پروژه‌های دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصت‌های شغلی منحصر به فرد دسترسی پیدا کنید.

با اطمینان دستمزد دریافت کنید

از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.

می‌خواهید شروع به کار کنید؟

یک حساب کاربری بسازید


بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارت‌های شما است.

پیدا کردن کار (پروژه)

تماشای دمو روش کار