Trong bài viết này, tôi chỉ cho bạn cách tạo một lớp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412498 đơn giản trong Python. Mục đích của lớp là chạy mô phỏng nhiều lần và sau đó trả về số liệu thống kê [e. g. , trung bình, trung bình, v.v. ] trên kết quả mô phỏng
Hãy bắt đầu với một lớp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412499 đơn giản có phương thức
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412400 trả về một số nguyên trong khoảng từ 1 đến 6 [đã bao gồm]
import random
class Die:
def __init__[self, sides=6]:
self.sides = sides
def roll[self]:
return random.randint[1, self.sides]
Chúng tôi muốn lớp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412498 của chúng tôi nhận hai đối số. một chức năng để chạy và số lần để chạy nó [
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241240] và sau đó để chạy chức năng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241240 lần và trả về một báo cáo như thế này
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
Đây là lớp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412498 thực hiện điều này
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
Lớp này sẽ hoạt động tốt với một hàm trả về một số
Lưu ý rằng lý do
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241243 được viết dưới dạng thuộc tính là không phải tất cả các tập kết quả đều có chế độ. Ví dụ: nếu hai số được cuộn cùng một số lần và cả hai số đó được cuộn thường xuyên hơn bất kỳ số nào khác, thì sẽ không có chế độ. Trong trường hợp đó,
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241244 sẽ báo lỗi. Mã của chúng tôi bắt lỗi đó và trả về
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241245 cho chế độ trong trường hợp đó
Thế giới thực có rất nhiều hệ thống, như sân bay và đường cao tốc, thường xuyên bị tắc nghẽn và chậm trễ. Khi các hệ thống này không được tối ưu hóa, sự kém hiệu quả của chúng có thể dẫn đến vô số khách hàng không hài lòng và lãng phí thời gian. Trong hướng dẫn này, bạn sẽ học cách sử dụng khung công tác
import simpy
import random
import statistics
8 của Python để tạo các mô phỏng ảo giúp bạn giải quyết các vấn đề như thế nàyTrong hướng dẫn này, bạn sẽ học cách
- Sử dụng mô phỏng để mô hình hóa một quy trình trong thế giới thực
- Tạo thuật toán từng bước để tính gần đúng một hệ thống phức tạp
- Thiết kế và chạy mô phỏng thế giới thực bằng Python với
8import simpy import random import statistics
Trong hướng dẫn này, bạn sẽ tạo mô phỏng cho một rạp chiếu phim địa phương. Mục tiêu của bạn là cung cấp cho người quản lý một tập lệnh để giúp tìm ra số lượng nhân viên tối ưu cần có trong đội ngũ nhân viên. Bạn có thể tải xuống mã nguồn cho tập lệnh này bằng cách nhấp vào liên kết bên dưới
Tải xuống mã. Nhấp vào đây để tải xuống mã mà bạn sẽ sử dụng để tìm hiểu về SimPy trong hướng dẫn này
Mô phỏng là gì
Một mô phỏng là một đại diện của một hệ thống trong thế giới thực. Người ta có thể sử dụng các mô hình toán học hoặc tính toán của hệ thống này để nghiên cứu cách thức hoạt động của nó hoặc điều gì sẽ xảy ra khi các bộ phận của nó bị thay đổi. Mô phỏng được sử dụng trong sân bay, nhà hàng, cơ khí, cơ quan chính phủ và nhiều hệ thống khác, nơi phân bổ nguồn lực kém có thể dẫn đến tắc nghẽn, sự không hài lòng của khách hàng và sự chậm trễ nghiêm trọng trong vận chuyển
Một hệ thống có thể là bất kỳ môi trường nào mà mọi thứ xảy ra. Ví dụ về các hệ thống trong thế giới thực bao gồm rửa xe, ngân hàng, nhà máy sản xuất, sân bay, bưu điện, trung tâm cuộc gọi, v.v. Các hệ thống này có các tác nhân trải qua các quy trình bên trong chúng. Ví dụ
- Một tiệm rửa xe sẽ có những chiếc xe trải qua quá trình rửa
- Một sân bay sẽ có hành khách đi qua quá trình kiểm tra an ninh
- Một trung tâm cuộc gọi sẽ yêu cầu khách hàng trải qua quá trình nói chuyện với một nhân viên tiếp thị qua điện thoại
Mối quan hệ này được tóm tắt trong bảng dưới đây
Hệ thống Đại lýQuy trìnhRửa xeRửa xeSân bayHành kháchKiểm tra an ninhTrung tâm cuộc gọiKhách hàngNói chuyện với nhân viên tiếp thị qua điện thoại
Hiểu các quy trình mà các tác nhân trải qua trong một hệ thống là một thành phần quan trọng của việc lập kế hoạch hậu cần, đặc biệt đối với các tổ chức quy mô lớn. Ví dụ: một sân bay có thể thấy thời gian chờ đợi của hành khách tại điểm kiểm tra an ninh tăng vọt nếu không có đủ nhân viên vào ngày hôm đó. Tương tự như vậy, thư nhạy cảm với thời gian có thể bị trì hoãn hàng ngày [hoặc thậm chí hàng tuần] nếu nó không được định tuyến đúng cách
Những trường hợp tắc nghẽn này có thể gây ra hậu quả thực tế về thời gian và tiền bạc, vì vậy, điều quan trọng là có thể mô hình hóa các quy trình này trước. Điều này cung cấp cho bạn ý tưởng về nơi hệ thống có thể gặp sự cố và cách phân bổ tài nguyên trước thời hạn để giải quyết những vấn đề đó theo cách hiệu quả nhất có thể
Loại bỏ các quảng cáoMô phỏng hoạt động như thế nào
Trong Python, bạn có thể sử dụng khung công tác
import simpy
import random
import statistics
8 để mô phỏng sự kiện. Trước tiên, hãy xem nhanh quy trình mô phỏng sẽ chạy như thế nào trong Python. Dưới đây là đoạn mã từ mô phỏng hệ thống điểm kiểm tra an ninh. Ba dòng mã sau thiết lập môi trường, chuyển tất cả các chức năng cần thiết và chạy mô phỏngNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241241
Dòng mã đầu tiên ở trên thiết lập môi trường. Bạn sẽ làm điều này bằng cách gán
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412421 cho biến mong muốn. Ở đây, nó được đặt tên đơn giản là
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412422. Điều này yêu cầu
import simpy
import random
import statistics
8 tạo một đối tượng môi trường có tên là Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412422 sẽ quản lý thời gian mô phỏng và di chuyển mô phỏng qua từng bước thời gian tiếp theo
Khi bạn đã thiết lập môi trường của mình, bạn sẽ chuyển vào tất cả các biến sẽ đóng vai trò là tham số của bạn. Đây là những điều bạn có thể thay đổi để xem hệ thống sẽ phản ứng thế nào với những thay đổi. Đối với hệ thống điểm kiểm tra bảo mật này, bạn đang sử dụng các thông số sau
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
22. đối tượng môi trường để lên lịch và xử lý các sự kiệnNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
26. số lượng gian hàng kiểm tra IDNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
27 khoảng thời gian cần thiết để kiểm tra ID của hành kháchNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
28. tốc độ mà hành khách đến hàng đợi
Sau đó, đã đến lúc chạy mô phỏng. Bạn có thể làm điều này bằng cách gọi
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412429 và chỉ định thời gian bạn muốn mô phỏng chạy trong bao lâu. Mô phỏng chạy trong vài phút, vì vậy mã mẫu này sẽ chạy mô phỏng trong 10 phút thời gian thực
Ghi chú. Đừng lo. Bạn sẽ không phải đợi 10 phút thực tế để quá trình mô phỏng kết thúc. Vì mô phỏng cung cấp cho bạn cái nhìn ảo về quy trình thời gian thực, nên 10 phút đó sẽ trôi qua chỉ trong vài giây trên máy tính
Tóm lại, đây là ba bước để chạy mô phỏng trong Python
- Thiết lập môi trường
- Truyền tham số
- Chạy mô phỏng
Nhưng còn nhiều điều nữa đang diễn ra bên dưới mui xe. Bạn sẽ cần hiểu cách chọn các tham số đó và bạn sẽ phải xác định tất cả các chức năng sẽ được gọi khi chạy mô phỏng
Bắt đầu nào
Làm thế nào để bắt đầu với import simpy
import random
import statistics
8
import simpy
import random
import statistics
Có một số việc cần làm bạn nên đánh dấu khỏi danh sách của mình trước khi tạo mô phỏng bằng Python. Điều đầu tiên bạn cần làm là đảm bảo rằng bạn có hiểu biết cơ bản về Python. Cụ thể, bạn sẽ cần nắm vững các lớp và trình tạo
Ghi chú. Nếu bạn cần làm mới các chủ đề này, thì hãy xem Giới thiệu về Lập trình hướng đối tượng [OOP] trong Python và Giới thiệu về Trình tạo Python. Đây là những phần quan trọng của quá trình mô phỏng, vì vậy bạn sẽ cần hiểu chúng trước khi tiếp tục
Điều tiếp theo bạn muốn làm là cài đặt gói cần thiết. Khung chính bạn sẽ sử dụng là
import simpy
import random
import statistics
8. Đây là gói cốt lõi sẽ tạo, quản lý và chạy mô phỏng của bạn. Bạn có thể cài đặt nó với Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412432
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241244
Bạn cũng sẽ cần một vài mô-đun Python tích hợp. Bạn sẽ sử dụng mô-đun
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412433 để tính thời gian chờ trung bình và mô-đun
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412434 để tạo số ngẫu nhiên. Chúng là một phần của thư viện chuẩn Python, vì vậy bạn không cần phải cài đặt bất kỳ thứ gì mới
Cuối cùng, bạn sẽ cần chọn cách bạn muốn chạy mô phỏng của mình. Nói chung, bạn có thể chọn một trong hai tùy chọn
- Chạy nó một cách tương tác. Sử dụng Máy tính xách tay Jupyter, trong đó mỗi khối mã sẽ chứa định nghĩa chức năng hoặc lớp riêng của nó. Đầu ra sẽ được hiển thị ở cuối sổ ghi chép
- Chạy nó trong vỏ. Lưu mô phỏng của bạn dưới dạng tệp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
35 và yêu cầu Python chạy nó trong thiết bị đầu cuối của bạn. Đầu ra sẽ được in trực tiếp ra bàn điều khiển
Chọn bất kỳ phương pháp nào bạn cảm thấy thoải mái nhất. Kết quả phải giống nhau
Trong suốt hướng dẫn này, bạn sẽ thấy các tham chiếu đến một tệp độc lập có tên
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412436. Khi bạn xem qua phần hướng dẫn này, các khối mã sẽ tham chiếu đến
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412436 để giúp bạn theo dõi xem tất cả các phần khớp với nhau như thế nào. Để tham khảo, bạn có thể truy cập mã đầy đủ cho
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412436 tại liên kết bên dưới
Tải xuống mã. Nhấp vào đây để tải xuống mã mà bạn sẽ sử dụng để tìm hiểu về SimPy trong hướng dẫn này
Vui lòng lưu tệp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412436 và theo dõi trong trình chỉnh sửa yêu thích của bạnLoại bỏ các quảng cáo
Cách mô phỏng với gói import simpy
import random
import statistics
8
import simpy
import random
import statistics
Bước đầu tiên để chạy mô phỏng trong
import simpy
import random
import statistics
8 là chọn một quy trình để mô hình hóa. Mô phỏng là tất cả về việc tạo ra một môi trường ảo để phản ánh một hệ thống trong thế giới thực. Cũng với tinh thần đó, bạn sẽ “mô phỏng” một tình huống cho mô phỏng của mìnhHãy tưởng tượng bạn được thuê để giúp người quản lý cho một rạp chiếu phim nhỏ ở địa phương. Nhà hát đã nhận được đánh giá kém do thời gian chờ đợi lâu. Người quản lý, người vừa quan tâm đến chi phí vừa quan tâm đến sự hài lòng của khách hàng, chỉ có thể đủ khả năng để giữ chân rất nhiều nhân viên
Người quản lý đặc biệt lo lắng về sự hỗn loạn có thể xảy ra khi những bộ phim bom tấn đó bắt đầu ra mắt. hàng người xếp hàng quanh rạp, nhân viên căng hết cỡ, khán giả tức giận bỏ lỡ cảnh mở đầu… Đây chắc chắn là tình huống cần tránh
Sau khi kiểm tra các bài đánh giá, người quản lý có thể xác định rằng một khán giả nhất định đến rạp của họ sẵn sàng dành tối đa 10 phút kể từ khi họ đến cho đến khi họ đặt mông vào ghế. Nói cách khác, thời gian chờ đợi trung bình cho một đêm tại rạp chiếu phim cần từ 10 phút trở xuống. Người quản lý đã yêu cầu sự giúp đỡ của bạn để tìm ra giải pháp giúp khách hàng có được thời gian chờ đợi theo yêu cầu 10 phút này
Động não một thuật toán mô phỏng
Trước khi bạn viết ra một dòng mã, điều quan trọng trước tiên là bạn phải hình dung quy trình của bạn sẽ chạy như thế nào trong cuộc sống thực. Điều này nhằm đảm bảo rằng, khi bạn chuyển nó vào máy, quy trình sẽ phản ánh chính xác những gì khách hàng sẽ thực sự trải nghiệm. Đây là cách bạn có thể nghĩ về các bước mà một người xem phim có thể thực hiện để viết ra thuật toán của bạn
- Đến rạp, xếp hàng chờ mua vé
- Mua vé từ phòng vé
- Xếp hàng chờ kiểm tra vé
- Nhận vé kiểm tra bởi một usher
- Chọn có xếp hàng vào gian hàng nhượng quyền hay không
- Nếu họ xếp hàng, thì họ mua thức ăn
- Nếu họ không xếp hàng, thì họ bỏ qua bước cuối cùng
- Đi tìm chỗ ngồi của họ
Đây là bước lặp lại từng bước dành cho khán giả mua vé tại phòng vé của nhà hát. Bạn đã có thể thấy phần nào của quy trình này có thể được kiểm soát. Bạn có thể ảnh hưởng đến thời gian chờ đợi của khách hàng bằng cách có nhiều nhân viên thu ngân hơn tại phòng vé
Cũng có những phần của quy trình không thể kiểm soát được, chẳng hạn như bước đầu tiên. Bạn không thể kiểm soát số lượng khách hàng sẽ đến hoặc họ sẽ đến nhanh như thế nào. Bạn có thể đoán, nhưng bạn không thể chỉ chọn một con số, vì đó sẽ phản ánh thực tế kém. Đối với tham số này, điều tốt nhất bạn có thể làm là sử dụng dữ liệu có sẵn để xác định thời gian đến phù hợp
Ghi chú. Sử dụng dữ liệu lịch sử đảm bảo rằng giải pháp bạn tìm thấy sẽ phản ánh chính xác những gì bạn có thể thấy trong cuộc sống thực
Với những điều này trong tâm trí, đã đến lúc xây dựng mô phỏng của bạn
Thiết lập môi trường
Trước khi bắt đầu xây dựng mô phỏng của mình, bạn cần đảm bảo rằng môi trường phát triển của mình được định cấu hình đúng cách. Điều đầu tiên bạn muốn làm là nhập các gói cần thiết. Bạn có thể làm điều này bằng cách khai báo các câu lệnh
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412442 ở đầu tệp của bạn
________số 8
Đây là những thư viện chính mà bạn sẽ sử dụng để xây dựng kịch bản cho người quản lý rạp hát. Hãy nhớ rằng, mục tiêu là tìm số lượng nhân viên tối ưu để thời gian chờ đợi trung bình dưới 10 phút. Để làm điều này, bạn sẽ cần thu thập khoảng thời gian cần thiết để mỗi khán giả đến chỗ ngồi của họ. Bước tiếp theo là khai báo một danh sách để giữ những thời điểm này
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241242
Danh sách này sẽ chứa tổng thời gian mà mỗi khán giả dành để di chuyển trong rạp chiếu phim, từ khi đến cho đến khi ngồi vào chỗ của họ. Bạn khai báo danh sách này ở đầu tệp để bạn có thể sử dụng nó bên trong bất kỳ chức năng nào bạn xác định sau này
Tạo môi trường. Định nghĩa lớp
Phần đầu tiên của mô phỏng mà bạn muốn xây dựng là bản thiết kế cho hệ thống. Đây sẽ là môi trường tổng thể bên trong nơi mọi thứ diễn ra và con người hoặc đồ vật di chuyển từ nơi này sang nơi khác. Hãy nhớ rằng, một môi trường có thể là một trong nhiều hệ thống khác nhau, chẳng hạn như ngân hàng, tiệm rửa xe hoặc trạm kiểm soát an ninh. Trong trường hợp này, môi trường là một rạp chiếu phim, vì vậy đó sẽ là tên lớp học của bạn
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241243
Bây giờ là lúc để suy nghĩ về các bộ phận của rạp chiếu phim. Tất nhiên, có chính rạp hát, đó là cái mà bạn gọi là môi trường của mình. Sau đó, bạn sẽ khai báo rõ ràng rạp hát là một
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412443 thực tế bằng cách sử dụng một trong các hàm
import simpy
import random
import statistics
8. Hiện tại, gọi tắt là Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412422 và thêm nó vào định nghĩa lớp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241244
Được rồi, còn gì khác có thể có trong một nhà hát? . Khi một khán giả đến xem phim, họ sẽ phải xếp hàng tại phòng vé, nơi một nhân viên thu ngân sẽ chờ sẵn để giúp họ. Bây giờ bạn đã khám phá ra hai điều về môi trường sân khấu
- Có thu ngân
- Khán giả xem phim có thể mua vé từ họ
Nhân viên thu ngân là một nguồn tài nguyên mà rạp chiếu cung cấp cho khách hàng của mình và họ giúp khán giả xem phim trong quá trình mua vé. Ngay bây giờ, bạn không biết có bao nhiêu nhân viên thu ngân có sẵn trong nhà hát mô phỏng. Trên thực tế, đó chính là vấn đề mà bạn đang cố gắng giải quyết. Thời gian chờ đợi thay đổi như thế nào, tùy thuộc vào số lượng nhân viên thu ngân làm việc trong một đêm nhất định?
Bạn có thể tiếp tục và gọi biến chưa biết này là
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412446. Giá trị chính xác mà biến này sẽ lấy có thể được sắp xếp sau. Còn bây giờ, chỉ biết nó là một phần không thể thiếu của môi trường sân khấu. Thêm nó vào định nghĩa lớp
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
3Tại đây, bạn thêm tham số mới
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412446 vào định nghĩa
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412448 của mình. Sau đó, bạn tạo một tài nguyên
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412449 và sử dụng
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
30 để khai báo số lượng có thể có trong môi trường này tại bất kỳ thời điểm nàoGhi chú. Trong
import simpy
import random
import statistics
8, tài nguyên là một phần của môi trường [Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412422] có số lượng hạn chế. Sử dụng một trong số chúng cần có thời gian và chỉ có rất nhiều [
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412446] có sẵn để sử dụng cùng một lúc
Còn một bước nữa mà bạn cần thực hiện. Một nhân viên thu ngân sẽ không mua vé cho chính họ, phải không? . Một lần nữa, bạn biết rằng quá trình mua vé này sẽ mất một khoảng thời gian nhất định. Nhưng chỉ cần bao nhiêu thời gian?
Giả sử bạn đã yêu cầu người quản lý cung cấp dữ liệu lịch sử về rạp hát, chẳng hạn như đánh giá hiệu suất của nhân viên hoặc biên lai mua vé. Dựa trên dữ liệu này, bạn đã biết được rằng trung bình mất từ 1 đến 2 phút để xuất vé tại phòng vé. Làm cách nào để bạn khiến
import simpy
import random
import statistics
8 bắt chước hành vi này? Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241242
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
35 yêu cầu import simpy
import random
import statistics
8 kích hoạt một sự kiện sau một khoảng thời gian nhất định đã trôi qua. Trong trường hợp này, sự kiện là một vé đã được muaThời gian này có thể là một phút, hai phút hoặc ba phút. Bạn muốn mỗi người xem phim dành một khoảng thời gian khác nhau tại quầy thu ngân. Để làm điều này, bạn sử dụng
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
37 để chọn một số ngẫu nhiên giữa các giá trị thấp và cao nhất định. Sau đó, đối với mỗi người xem phim, mô phỏng sẽ đợi trong khoảng thời gian đã chọnHãy gói nó trong một hàm gọn gàng và thêm nó vào định nghĩa lớp
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241246
Người bắt đầu sự kiện trong
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
38 là import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39, vì vậy chúng phải được chuyển thành đối số bắt buộcGhi chú. Bạn sẽ thấy khán giả thực sự mua vé như thế nào trong phần tiếp theo
Đó là nó. Bạn đã chọn một tài nguyên có giới hạn thời gian, xác định quy trình liên quan của nó và hệ thống hóa điều này trong định nghĩa lớp của bạn. Đối với hướng dẫn này, có thêm hai tài nguyên bạn sẽ cần khai báo
- Nhân viên kiểm tra vé
- Máy chủ để bán thực phẩm
Sau khi kiểm tra dữ liệu mà người quản lý gửi đến, bạn xác định rằng các máy chủ mất khoảng từ 1 đến 5 phút để hoàn thành một đơn đặt hàng. Ngoài ra, người mở cửa rất nhanh trong việc kiểm tra vé, với tốc độ trung bình là 3 giây
Bạn sẽ cần thêm các tài nguyên này vào lớp của mình và xác định các hàm tương ứng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412420 và
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412421. Bạn có thể tìm ra mã sẽ trông như thế nào không?
mô phỏng. pyHiện/Ẩn
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.89641241241241241
Xem kỹ các tài nguyên và chức năng mới. Lưu ý cách chúng tuân theo cùng một định dạng như được mô tả ở trên.
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412421 sử dụng
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
37 để tạo một số ngẫu nhiên trong khoảng thời gian từ 1 đến 5 phút, thể hiện thời gian một người xem phim đặt hàng và nhận đồ ăn của họThời gian trễ của
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412420 hơi khác một chút vì người mở cửa chỉ mất 3 giây. Vì
import simpy
import random
import statistics
8 hoạt động trong vài phút, nên giá trị này cần được chuyển dưới dạng một phần nhỏ của phút hoặc Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412426Loại bỏ các quảng cáo
Di chuyển qua môi trường. Định nghĩa hàm
Được rồi, bạn đã thiết lập môi trường bằng cách định nghĩa một lớp. Bạn có tài nguyên và quy trình. Bây giờ bạn cần một
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 để sử dụng chúng. Khi một import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 đến rạp chiếu phim, họ sẽ yêu cầu một tài nguyên, đợi quá trình của nó hoàn tất rồi rời đi. Bạn sẽ tạo một hàm, gọi là Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412429, để theo dõi điều này
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412440
Có ba đối số được truyền cho hàm này
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
22.
39 sẽ được kiểm soát bởi môi trường, vì vậy bạn sẽ chuyển điều này làm đối số đầu tiênimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
39. Biến này theo dõi từng người khi họ di chuyển qua hệ thốngimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
63. Tham số này cung cấp cho bạn quyền truy cập vào các quy trình bạn đã xác định trong định nghĩa lớp tổng thể
Bạn cũng khai báo một biến
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412464 để giữ thời gian mà mỗi
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 đến rạp hát. Bạn có thể nhận được thời gian này bằng cách sử dụng cuộc gọi import simpy
import random
import statistics
8 tới Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412467
Bạn sẽ muốn mỗi quy trình từ
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412463 của mình có các yêu cầu tương ứng trong
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412429. Ví dụ: quy trình đầu tiên trong lớp là
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
38, sử dụng tài nguyên Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412411.
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 sẽ cần đưa ra yêu cầu đối với tài nguyên Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412411 để giúp họ thông qua quy trình
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
38. Đây là một bảng để tóm tắt điều nàyXử lý trong
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412463Yêu cầu trong
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412429
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
38Yêu cầu một Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412411
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412420Yêu cầu một
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124400
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412421Yêu cầu một
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124402
Thu ngân là một tài nguyên được chia sẻ, có nghĩa là nhiều khán giả sẽ sử dụng cùng một thu ngân. Tuy nhiên, nhân viên thu ngân chỉ có thể giúp một người xem phim tại một thời điểm, vì vậy bạn sẽ cần đưa một số hành vi chờ đợi vào mã của mình. Đây là cách nó hoạt động
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412441
Đây là cách mã này hoạt động
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
403.
39 tạo yêu cầu sử dụngimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
11Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
406.
39 đợi mộtimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
11 trở nên khả dụng nếu tất cả hiện đang được sử dụng. Để tìm hiểu thêm về từ khóaNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
409, hãy xem Cách sử dụng Trình tạo và năng suất trong PythonNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
410.
39 sử dụng mộtimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
11 có sẵn để hoàn thành quy trình đã cho. Trong trường hợp này, đó là mua vé bằng cách gọi tới sốNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
413
Sau khi một tài nguyên được sử dụng, nó phải được giải phóng để tác nhân tiếp theo sử dụng. Bạn có thể làm điều này một cách rõ ràng với
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124414, nhưng trong đoạn mã trên, bạn sử dụng câu lệnh
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124415 để thay thế. Phím tắt này yêu cầu mô phỏng tự động giải phóng tài nguyên sau khi quá trình hoàn tất. Nói cách khác, sau khi vé được mua,
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 sẽ rời đi và nhân viên thu ngân sẽ tự động sẵn sàng đón khách hàng tiếp theoKhi nhân viên thu ngân rảnh rỗi,
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 sẽ dành thời gian mua vé của họ. Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124418 yêu cầu mô phỏng chuyển đến phiên bản
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124419 và chạy quy trình
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
38 trên import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 này. import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 sẽ lặp lại yêu cầu này, sử dụng, chu kỳ phát hành để kiểm tra vé của họNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412442
Ở đây, cấu trúc cho mã là như nhau
Sau đó, có một bước tùy chọn là mua thực phẩm từ quầy giảm giá. Bạn không thể biết liệu một người xem phim có muốn mua đồ ăn nhẹ và đồ uống hay không. Một cách để đối phó với sự không chắc chắn này là đưa một chút tính ngẫu nhiên vào hàm
Mỗi
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 sẽ hoặc sẽ không muốn mua thực phẩm mà bạn có thể lưu trữ dưới dạng các giá trị Boolean Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124424 hoặc
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124425. Sau đó, sử dụng mô-đun
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412434 để mô phỏng quyết định ngẫu nhiên liệu
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 cụ thể này có tiếp tục đứng ở vị trí nhượng quyền hay khôngNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412443
Câu lệnh điều kiện này sẽ trả về một trong hai kết quả
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
424.
39 sẽ yêu cầu người phục vụ và gọi đồ ănimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
425. Thay vào đó,
39 sẽ đi tìm chỗ ngồi của họ mà không mua bất kỳ đồ ăn nhẹ nàoimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
Bây giờ, hãy nhớ rằng mục tiêu của mô phỏng này là xác định số lượng nhân viên thu ngân, người phục vụ và người phục vụ nên có trong đội ngũ nhân viên để giữ thời gian chờ dưới 10 phút. Để làm được điều này, bạn cần biết một số
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 nhất định đã mất bao lâu để đến được chỗ ngồi của họ. Bạn sử dụng Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412467 ở đầu chức năng để theo dõi
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412464 và một lần nữa ở cuối khi mỗi
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 hoàn thành tất cả các quy trình và đi vào rạp chiếu phimNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412444
Bạn sử dụng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412467 để biết thời gian mà
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 đã hoàn thành tất cả các quy trình và đến chỗ ngồi của họ. Bạn trừ đi Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412464 của người xem phim từ thời gian khởi hành này và thêm chênh lệch múi giờ vào danh sách chờ của bạn,
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124439
Ghi chú. Bạn có thể lưu trữ thời gian khởi hành trong một biến riêng biệt như
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124440, nhưng điều này sẽ làm cho mã của bạn rất lặp lại, điều này vi phạm D. R. Y. nguyên tắc
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 này đã sẵn sàng để xem một số bản xem trướcLoại bỏ các quảng cáoLàm cho mọi việc xảy ra. Định nghĩa hàm
Bây giờ bạn sẽ cần xác định một chức năng để chạy mô phỏng.
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124442 sẽ chịu trách nhiệm tạo phiên bản rạp chiếu phim và tạo người xem phim cho đến khi quá trình mô phỏng dừng lại. Điều đầu tiên chức năng này nên làm là tạo một thể hiện của rạp hát
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412445
Vì đây là quá trình chính, bạn sẽ cần phải vượt qua tất cả các ẩn số mà bạn đã khai báo cho đến nay
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
46Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
444Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
445
Đây là tất cả các biến mà mô phỏng cần để tạo và kiểm soát môi trường, do đó, điều tối quan trọng là phải vượt qua tất cả. Sau đó, bạn xác định một biến
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412463 và yêu cầu mô phỏng thiết lập rạp hát với một số nhân viên thu ngân, người phục vụ và người hướng dẫn nhất định
Bạn cũng có thể muốn bắt đầu mô phỏng của mình với một vài khán giả đang đợi ở rạp chiếu phim. Có lẽ sẽ có một vài người sẵn sàng đi ngay khi cánh cửa mở ra. Người quản lý nói rằng sẽ có khoảng 3 khán giả xếp hàng sẵn sàng mua vé ngay khi phòng vé mở cửa. Bạn có thể yêu cầu mô phỏng tiếp tục và di chuyển qua nhóm ban đầu này như vậy
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412446
Bạn sử dụng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124447 để đưa 3 khán giả vào rạp. Sau đó, bạn sử dụng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124418 để báo cho mô phỏng chuẩn bị di chuyển chúng qua rạp hát. Những khán giả còn lại sẽ đến rạp vào thời gian riêng của họ. Vì vậy, chức năng sẽ tiếp tục đưa khách hàng mới vào rạp chiếu phim miễn là mô phỏng đang chạy
Bạn không biết sẽ mất bao lâu để khán giả mới đến rạp, vì vậy bạn quyết định xem xét dữ liệu trong quá khứ. Sử dụng biên lai được đánh dấu thời gian từ phòng vé, bạn biết rằng khán giả xem phim có xu hướng đến rạp trung bình cứ sau 12 giây. Bây giờ tất cả những gì bạn phải làm là yêu cầu chức năng đợi lâu như vậy trước khi tạo một người mới
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412447
Lưu ý rằng bạn sử dụng số thập phân
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124449 để biểu thị 12 giây. Để có được con số này, bạn chỉ cần chia 12 giây cho 60 giây, là số giây trong một phút
Sau khi chờ đợi, hàm sẽ tăng
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 lên 1 và tạo người tiếp theo. Chức năng tạo giống như chức năng bạn đã sử dụng để khởi tạo 3 người xem phim đầu tiênNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412448
Đó là nó. Khi bạn gọi chức năng này, mô phỏng sẽ tạo ra 3 người xem phim bắt đầu và bắt đầu di chuyển họ qua rạp chiếu phim với
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412429. Sau đó, khán giả mới sẽ đến rạp cách nhau 12 giây và di chuyển qua rạp theo thời gian của họ.
Tính toán thời gian chờ đợi. Định nghĩa hàm
Tại thời điểm này, bạn nên có một danh sách
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124439 chứa tổng thời gian mỗi khán giả đi xem phim để đến chỗ ngồi của họ. Bây giờ, bạn sẽ muốn xác định một hàm để giúp tính toán thời gian trung bình mà một
import statistics as stats
class SimulationNumeric:
"""Runs a function that returns a number n times and prints stats
Args:
fnct_to_run [function]: The function to run
iterations [integer]: The number of times to run it"""
def __init__[self, fnct_to_run, iterations]:
self._fnct_to_run = fnct_to_run
self._iterations = iterations
self._results = []
self.run[]
@property
def mode[self]:
try:
return stats.mode[self._results]
except:
return None
def run[self]:
for i in range[self._iterations]:
result = self._fnct_to_run[]
self._results.append[result]
self.report[]
def report[self]:
max_num = max[self._results]
min_num = min[self._results]
mean = stats.mean[self._results]
median = stats.median[self._results]
mode = self.mode
std_dev = stats.stdev[self._results]
variance = stats.variance[self._results]
print[
f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
]
die = Die[]
sim = SimulationNumeric[die.roll, 1000]
39 sử dụng từ khi họ đến cho đến khi họ kiểm tra xong vé của mình. Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124454 chỉ làm điều này
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412449
Hàm này lấy danh sách
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124439 của bạn làm đối số và sử dụng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124456 để tính thời gian chờ trung bình
Vì bạn đang tạo một tập lệnh sẽ được sử dụng bởi người quản lý rạp chiếu phim, nên bạn sẽ muốn đảm bảo rằng người dùng có thể đọc được đầu ra một cách dễ dàng. Bạn có thể thêm một chức năng gọi là
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124457 để làm điều này
import simpy
import random
import statistics
0Phần cuối của hàm sử dụng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124458 để trả về kết quả theo phút giây nên người quản lý dễ dàng hiểu được kết quả của chương trìnhLoại bỏ các quảng cáo
Lựa chọn thông số. Định nghĩa chức năng nhập của người dùng
Khi bạn xây dựng các hàm này, bạn đã gặp phải một số biến số chưa được xác định rõ ràng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
46Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
444Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
445
Các biến này là các tham số mà bạn có thể thay đổi để xem mô phỏng thay đổi như thế nào. Nếu một bộ phim bom tấn có khách hàng xếp hàng quanh khu nhà, thì nên có bao nhiêu nhân viên thu ngân làm việc?
Ghi chú. Đó là vẻ đẹp của mô phỏng. Nó cho phép bạn thử những điều này để bạn có thể đưa ra quyết định tốt nhất có thể trong cuộc sống thực
Bất kỳ ai đang sử dụng mô phỏng của bạn đều cần có khả năng thay đổi giá trị của các tham số này để thử các kịch bản khác nhau. Cuối cùng, bạn sẽ tạo một hàm trợ giúp để nhận các giá trị này từ người dùng
import simpy
import random
import statistics
1Hàm này chỉ đơn giản gọi hàm
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124463 của Python để lấy dữ liệu từ người dùng. Vì đầu vào của người dùng có nguy cơ bị lộn xộn, nên bạn có thể bao gồm mệnh đề
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124464 để phát hiện bất kỳ điều gì không hợp lệ. Nếu người dùng nhập dữ liệu sai, thì mô phỏng sẽ chạy với các giá trị mặc định
Hoàn thiện thiết lập. Định nghĩa chức năng chính
Chức năng cuối cùng bạn muốn tạo là
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124465. Điều này sẽ đảm bảo tập lệnh của bạn chạy theo đúng thứ tự khi bạn thực thi nó trên dòng lệnh. Bạn có thể đọc thêm về
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124465 trong Xác định hàm chính trong Python. Đây là giao diện của
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124465 của bạn
import simpy
import random
import statistics
2Đây là cách hoạt động của
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124465
- Thiết lập môi trường của bạn bằng cách khai báo một hạt giống ngẫu nhiên. Điều này đảm bảo đầu ra của bạn sẽ giống như những gì bạn thấy trong hướng dẫn này
- Truy vấn người dùng chương trình của bạn cho một số đầu vào
- Tạo môi trường và lưu nó dưới dạng biến
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
22, sẽ di chuyển mô phỏng qua từng bước thời gian - Yêu cầu
8 chạy quy trìnhimport simpy import random import statistics
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
442, quy trình này tạo ra môi trường rạp chiếu phim và khiến khán giả di chuyển qua đó - Xác định thời gian bạn muốn mô phỏng chạy. Là một giá trị mặc định, mô phỏng được thiết lập để chạy trong 90 phút
- Lưu trữ đầu ra của
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
454 trong hai biến,Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
473 vàNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
474 - Sử dụng
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
475 để hiển thị kết quả cho người dùng
Với điều này, thiết lập đã hoàn tất
Cách chạy mô phỏng
Chỉ với một vài dòng mã nữa, bạn sẽ có thể xem mô phỏng của mình trở nên sống động. Nhưng trước tiên, đây là tổng quan về các hàm và lớp mà bạn đã định nghĩa cho đến nay
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
419. Định nghĩa lớp này phục vụ như một kế hoạch chi tiết cho môi trường mà bạn muốn mô phỏng. Nó xác định một số thông tin về môi trường đó, chẳng hạn như loại tài nguyên nào có sẵn và quy trình nào được liên kết với chúngNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
29. Chức năng này đưa ra các yêu cầu rõ ràng để sử dụng tài nguyên, thực hiện quy trình liên quan và sau đó phát hành tài nguyên đó cho người xem phim tiếp theoNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
442. Chức năng này điều khiển mô phỏng. Nó sử dụng bản thiết kế lớpNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
419 để tạo một thể hiện của rạp hát, sau đó gọiNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
29 để tạo và di chuyển mọi người qua rạp hátNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
454. Hàm này tìm thời gian trung bình để một
39 đi hết rạpimport statistics as stats class SimulationNumeric: """Runs a function that returns a number n times and prints stats Args: fnct_to_run [function]: The function to run iterations [integer]: The number of times to run it""" def __init__[self, fnct_to_run, iterations]: self._fnct_to_run = fnct_to_run self._iterations = iterations self._results = [] self.run[] @property def mode[self]: try: return stats.mode[self._results] except: return None def run[self]: for i in range[self._iterations]: result = self._fnct_to_run[] self._results.append[result] self.report[] def report[self]: max_num = max[self._results] min_num = min[self._results] mean = stats.mean[self._results] median = stats.median[self._results] mode = self.mode std_dev = stats.stdev[self._results] variance = stats.variance[self._results] print[ f"""Number of Simulations: {self._iterations:,} Max: {max_num} Min: {min_num} Mean: {mean} Median: {median} Mode: {mode} Standard Deviation: {std_dev} Variance: {variance}""" ] die = Die[] sim = SimulationNumeric[die.roll, 1000]
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
457. Chức năng này đảm bảo đầu ra cuối cùng dễ đọc cho người dùngNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
484. Chức năng này cho phép người dùng xác định một số thông số, chẳng hạn như có bao nhiêu nhân viên thu ngânNumber of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.8964124124124124
465. Chức năng này đảm bảo rằng tập lệnh của bạn chạy đúng trong dòng lệnh
Bây giờ, bạn chỉ cần thêm hai dòng mã để gọi chức năng chính của mình
import simpy
import random
import statistics
3Cùng với đó, tập lệnh của bạn đã sẵn sàng để chạy. Mở thiết bị đầu cuối của bạn, điều hướng đến nơi bạn đã lưu trữ
Number of Simulations: 1,000 Max: 6 Min: 1 Mean: 3.522 Median: 4.0 Mode: 4 Standard Deviation: 1.7018849586304041 Variance: 2.896412412412412436 và chạy lệnh sau
import simpy
import random
import statistics
4Bạn sẽ được nhắc chọn các tham số bạn muốn cho mô phỏng của mình. Đây là kết quả đầu ra trông như thế nào với các tham số mặc định
import simpy
import random
import statistics
5Ái chà. Đó là một thời gian dài để chờ đợi xung quanh
Loại bỏ các quảng cáoKhi nào cần thay đổi mọi thứ
Hãy nhớ rằng, mục tiêu của bạn là tiếp cận người quản lý với giải pháp về số lượng nhân viên mà anh ta sẽ cần trong đội ngũ nhân viên để giữ thời gian chờ đợi dưới 10 phút. Để đạt được mục tiêu này, bạn sẽ muốn xem xét các tham số của mình để xem những con số nào đưa ra giải pháp tối ưu
Đầu tiên, hãy thử một cái gì đó hoàn toàn điên rồ và sử dụng tối đa tài nguyên. Giả sử có 100 nhân viên thu ngân, 100 người phục vụ và 100 người dẫn đường làm việc trong nhà hát này. Tất nhiên, điều này là không thể, nhưng sử dụng các số cực cao sẽ nhanh chóng cho bạn biết giới hạn của hệ thống là bao nhiêu. Thử ngay bây giờ
import simpy
import random
import statistics
6Ngay cả khi bạn sử dụng tối đa tài nguyên, bạn sẽ chỉ nhận được thời gian chờ đợi xuống còn 3 phút rưỡi. Bây giờ hãy thử thay đổi các con số để xem liệu bạn có thể giảm thời gian chờ xuống còn 10 phút như người quản lý đã yêu cầu không. Bạn đã đưa ra giải pháp gì?
mô phỏng. pyHiện/Ẩn
import simpy
import random
import statistics
7Lúc này, bạn sẽ trình bày kết quả của mình với người quản lý và đưa ra đề xuất giúp cải thiện nhà hát. Chẳng hạn, để cắt giảm chi phí, anh ta có thể muốn lắp đặt 10 ki-ốt bán vé ở phía trước nhà hát thay vì giữ 10 nhân viên thu ngân túc trực mỗi đêm
Sự kết luận
Trong hướng dẫn này, bạn đã học cách xây dựng và chạy mô phỏng bằng Python bằng khung công tác
import simpy
import random
import statistics
8. Bạn đã hiểu cách các hệ thống có các tác nhân trải qua các quy trình và cách bạn có thể tạo các biểu diễn ảo của các hệ thống đó để củng cố chúng chống tắc nghẽn và chậm trễ. Mặc dù loại mô phỏng có thể khác nhau, nhưng việc thực hiện tổng thể là như nhau. Bạn sẽ có thể áp dụng những gì bạn đã học ở đây vào nhiều tình huống khác nhauBây giờ bạn có thể
- Động não một thuật toán mô phỏng từng bước
- Tạo môi trường ảo trong Python với
8import simpy import random import statistics
- Xác định các chức năng đại diện cho các tác nhân và quy trình
- Thay đổi các tham số mô phỏng của bạn để tìm ra giải pháp tối ưu
Có rất nhiều thứ bạn có thể làm với
import simpy
import random
import statistics
8, vì vậy đừng để quá trình khám phá của bạn dừng lại ở đây. Lấy những gì bạn đã học và áp dụng nó vào các tình huống mới. Các giải pháp của bạn có thể giúp mọi người tiết kiệm thời gian và tiền bạc quý báu, vì vậy hãy tìm hiểu kỹ và xem bạn có thể tối ưu hóa những quy trình nào khác. Bạn có thể tải xuống mã nguồn cho tập lệnh bạn đã tạo trong hướng dẫn này bằng cách nhấp vào liên kết bên dướiTải xuống mã. Nhấp vào đây để tải xuống mã mà bạn sẽ sử dụng để tìm hiểu về SimPy trong hướng dẫn này
Đánh dấu là đã hoàn thành
Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Mô phỏng các quy trình trong thế giới thực bằng Python với SimPy
🐍 Thủ thuật Python 💌
Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python
Gửi cho tôi thủ thuật Python »
Giới thiệu về Jaya Zhane
Jaya là một Pythonista cuồng nhiệt và viết cho Real Python. Cô ấy là sinh viên Thạc sĩ tại Georgia Tech và quan tâm đến khoa học dữ liệu, AI, học máy và xử lý ngôn ngữ tự nhiên
» Thông tin thêm về JayaMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là
Aldren
Geir Arne
Jim
Joanna
Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonista chuyên gia
Nâng cao kỹ năng Python của bạn »
Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng các chuyên gia Pythonistas
Nâng cao kỹ năng Python của bạn »
Bạn nghĩ sao?
Đánh giá bài viết này
Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?
Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi