از پارسکدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.
دو روز پیش منتشر شده
تعداد بازدید: 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روز
وضعیت مناقصه
باز (آماده دریافت پیشنهاد)
درباره کارفرما
عضویت دو سال پیش
قادر به انجام این پروژه هستید؟
به رایگان یک حساب کاربری بسازید
مهارتها و تخصصهای خود را ثبت کنید، رزومه و نمونهکارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.
به شیوهای که دوست دارید کار کنید
برای پروژههای دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصتهای شغلی منحصر به فرد دسترسی پیدا کنید.
با اطمینان دستمزد دریافت کنید
از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.
میخواهید شروع به کار کنید؟
یک حساب کاربری بسازید
بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارتهای شما
است.
پیدا کردن کار (پروژه)
تماشای دمو روش کار