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

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

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

پروژه آرنا 89540

دو روز پیش منتشر شده

تعداد بازدید: 22

کد پروژه: 543054


شرح پروژه




سلام وقتتون بخیر باشه من یک پروژه ی شبیه سازی دارم که از روی یک مقاله قراره انجام بشه تو بخش نرم افزار arena میخواستم ازتون کمک بگیرم که برام انجامش بدین اگر مایل هستید مقاله را براتون بفرستم


import random
import math

# -----------------------
# تعریف پارامترهای مسئله
# -----------------------
resources = {"doctors": 4, "paramedics": 4, "drivers": 4, "ambulances": 4, "medical_cars": 4, "telemedicine": 4}

# اولویت‌ها با وزن‌دهی بیشتر برای اولویت‌های خاص
priorities = {
    1: 0.02,   # 40% درخواست‌ها در اولویت 1
    2: 0.15,   # 10% درخواست‌ها در اولویت 2
    3: 0.25,   # 10% درخواست‌ها در اولویت 3
    4: 0.25,   # 20% درخواست‌ها در اولویت 4
    5: 0.25,   # 10% درخواست‌ها در اولویت 5
    6: 0.08    # 10% درخواست‌ها در اولویت 6 (بیماران Telemedicine)
}

# مناطق جغرافیایی و زمان حمل و نقل (به دقیقه)
areas = {1: 15, 2: 20, 3: 25, 4: 30}

# تعداد شیفت‌ها
shifts = 2

# -----------------------
# تابع هزینه
# -----------------------
def calculate_cost(solution):
    """
    محاسبه تخصیص منابع و زمان انتظار برای هر بیمار به صورت جداگانه.
    :param solution: تخصیص منابع به درخواست‌ها.
    :return: مجموع زمان انتظار برای هر بیمار.
    """
    patient_times = {}  # ذخیره اطلاعات تخصیص منابع و زمان انتظار برای هر بیمار

    for priority, percentage in priorities.items():
        # تعداد درخواست‌های تصادفی از هر اولویت برای هر شیفت
        num_requests = random.randint(5, 15) * shifts  # تعداد درخواست‌های فرضی از هر اولویت
        patient_times[priority] = []

        for _ in range(num_requests):
            # منابع تخصیص‌یافته به این بیمار
            allocated_resource = solution[f"priority_{priority}"]

            # زمان خدمات و زمان انتظار برای این بیمار
            if priority == 6:  # بیماران Telemedicine فقط به یک پزشک نیاز دارند
                service_time = 10 if allocated_resource == 1 else float('inf')
            elif allocated_resource > 0:
                # بیماران اولویت بالاتر زمان انتظار کمتری دارند (بیشترین به کمترین)
                service_time = (1 / allocated_resource * 10) * (6 - priority)
            else:
                service_time = float('inf')  # جریمه برای تخصیص صفر منابع

            # زمان حمل‌ونقل تصادفی از مناطق (برای اولویت 6 نیازی به حمل و نقل نیست)
            transport_time = 0 if priority == 6 else random.choice(list(areas.values()))

            # زمان انتظار کل
            waiting_time = service_time + transport_time
            patient_times[priority].append(waiting_time)

    return patient_times

# -----------------------
# الگوریتم Simulated Annealing
# -----------------------
def simulated_annealing():
    # پارامترهای الگوریتم
    initial_temperature = 10       # دمای اولیه
    final_temperature = 0.5        # دمای نهایی
    alpha = 0.99995                # نرخ کاهش دما
    total_iterations = 38000       # تعداد کل تکرارها

    # مقداردهی اولیه
    current_solution = {f"priority_{p}": random.randint(1, 10) for p in priorities.keys()}
    current_solution["priority_6"] = 1  # بیماران Telemedicine فقط به یک پزشک نیاز دارند
    best_solution = current_solution.copy()
    best_cost = calculate_cost(current_solution)

    temperature = initial_temperature
    iterations = 0

    while temperature > final_temperature and iterations < total_iterations:
        # تولید یک جواب همسایه
        neighbor_solution = current_solution.copy()

        # ایجاد تغییرات تصادفی در چند اولویت
        for _ in range(random.randint(1, 3)):
            priority_to_change = random.choice(list(priorities.keys()))
            if priority_to_change == 6:
                continue  # اولویت 6 تغییر نمی‌کند و ثابت می‌ماند
            neighbor_solution[f"priority_{priority_to_change}"] = max(
                1, neighbor_solution[f"priority_{priority_to_change}"] + random.randint(-3, 3)
            )

        # محاسبه هزینه همسایه
        neighbor_cost = calculate_cost(neighbor_solution)


# قانون پذیرش
        if sum([sum(times) for times in neighbor_cost.values()]) < sum([sum(times) for times in best_cost.values()]) or random.random() < math.exp((sum([sum(times) for times in best_cost.values()]) - sum([sum(times) for times in neighbor_cost.values()])) / temperature):
            current_solution = neighbor_solution
            best_cost = neighbor_cost

Salmasadat, [1/7/2025 3:48 PM]
# به‌روزرسانی بهترین جواب
            best_solution = current_solution

        # کاهش دما
        temperature *= alpha
        iterations += 1

        # نمایش جزئیات پیشرفت
        if iterations % 1000 == 0:
            print(f"Iteration: {iterations}, Temperature: {temperature:.5f}, Current Best Cost: {sum([sum(times) for times in best_cost.values()]):.2f}")

    return best_solution, best_cost

# -----------------------
# اجرای الگوریتم
# -----------------------
if name == "main":
    best_solution, best_cost = simulated_annealing()
    print("Best Solution (Resource Allocation):", best_solution)
    for priority, times in best_cost.items():
        print(f"Priority {priority}: Total Requests = {len(times)}, Average Waiting Time = {sum(times)/len(times):.2f} minutes")

یک هفته مناسبه؟

این پروژه شامل 3 فایل مهم است، لطفا قبل از ارسال پیشنهاد حتما نسبت به بررسی این فایل اقدام فرمایید.

مهارت ها و تخصص های مورد نیاز


بودجه

300,000 تومان تا 750,000 تومان

مهلت برای انجام

5روز

وضعیت مناقصه

باز (آماده دریافت پیشنهاد)


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

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

18563 پروژه ثبت شده ،
29 پروژه در حال انجام ،
451 پروژه آماده دریافت پیشنهاد ،
نرخ پذیرش پیشنهاد 15%

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

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

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

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

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

ارسال پیشنهاد قیمت

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

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

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

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

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

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

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

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

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

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


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

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

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