Imp trong trăn

Cốt lõi của IMP là thư viện C++/Python, cung cấp tất cả các thành phần cần thiết, như một tập hợp các lớp và mô-đun, để cho phép các nhà phát triển phương pháp xây dựng một giao thức mô hình tích hợp từ đầu. Hầu hết người dùng IMP sẽ sử dụng một trong các giao diện cấp cao hơn được mô tả trong các phần sau của hướng dẫn này;

Thư viện IMP được thiết kế dưới dạng một tập hợp các mô-đun. Mô-đun 'hạt nhân' là một tập hợp nhỏ các lớp xác định việc lưu trữ thông tin về hệ thống và các giao diện chính được sử dụng để tương tác với thông tin đó. Thông tin được lưu trữ trong một tập hợp các đối tượng Particle; . Ví dụ: một Hạt nhất định có thể được gán các thuộc tính x, y và z để lưu tọa độ điểm, một hạt khác có thể được gán x, y, z và bán kính để biểu diễn một hình cầu và một hạt khác có thể chứa hai con trỏ tới các Hạt khác để biểu diễn . Nhân chỉ định nghĩa các giao diện trừu tượng để thao tác dữ liệu trong Hạt, nhưng không cung cấp các triển khai; . Ví dụ: nó chỉ định nghĩa Hạn chế là bất kỳ đối tượng nào, được cung cấp một tập hợp Hạt, trả về điểm và Trình tối ưu hóa là đối tượng thay đổi thuộc tính của tất cả các Hạt để mang lại điểm tối ưu cho tất cả các hạn chế. Đây là mô-đun cốt lõi cung cấp, ví dụ, một Hạn chế cụ thể hoạt động giống như một 'lò xo' điều hòa giữa hai Hạt giống như điểm, Trình tối ưu hóa sử dụng phương pháp giảm thiểu độ dốc liên hợp và nhiều chức năng khác

Một số mô-đun IMP khác cung cấp các khối xây dựng cơ bản cần thiết để xây dựng một giao thức, chẳng hạn như mô-đun lõi cung cấp chức năng bao gồm các giới hạn sóng hài, các hạt giống như điểm và hình cầu, và các trình tối ưu hóa cơ bản, và mô-đun nguyên tử cung cấp các hạt giống như nguyên tử, một . Các mô-đun khác cung cấp hỗ trợ cho các loại dữ liệu thử nghiệm cụ thể hoặc trình tối ưu hóa chuyên dụng, chẳng hạn như mô-đun em hỗ trợ dữ liệu kính hiển vi điện tử và mô-đun domino cung cấp trình tối ưu hóa phân chia và chinh phục dựa trên suy luận. IMP được thiết kế để dễ dàng thêm một mô-đun mới;

IMP chủ yếu được triển khai bằng C++ để tăng tốc độ; . Do đó, một giao thức có thể được phát triển từ đầu bằng cách viết một tập lệnh Python. Để làm ví dụ, trước tiên chúng ta sẽ xem kịch bản simple.py

16 d1 = IMP. cốt lõi. XYZ. setup_particle[p1]

17 d2 = IMP. cốt lõi. XYZ. setup_particle[p2]

37 d1. set_coords_are_optimized[Đúng]

38 d2. set_coords_are_optimized[Đúng]

Trong phần đầu tiên của tập lệnh, nhân IMP và các mô-đun đại số và lõi được tải, giống như các mô-đun Python thông thường. Sau đó, chúng tôi tiến hành thiết lập biểu diễn của hệ thống, sử dụng các lớp Model và Particle được xác định trong kernel. Lớp Mô hình đại diện cho toàn bộ hệ thống và theo dõi tất cả các Hạt, Hạn chế và liên kết giữa chúng. Như đã đề cập trước đó, lớp Hạt là một bộ chứa linh hoạt, nhưng ở đây chúng tôi cung cấp hai thuộc tính giống như điểm của Hạt [p1 và p2] bằng cách sử dụng lớp XYZ được xác định trong mô-đun lõi. Lớp XYZ này được gọi là 'trang trí'; . [Nhiều bộ trang trí có thể được áp dụng cho một Hạt duy nhất; ví dụ: một Hạt giống nguyên tử có thể được coi như một điểm, một quả cầu, một hạt tích điện hoặc một nguyên tử. ] Sau đó, chúng ta có thể coi mỗi Hạt giống như một điểm bằng cách sử dụng các phương thức trong lớp XYZ, ở đây đặt tọa độ x, y và z thành một vectơ được cung cấp

Trong phần thứ hai, chúng tôi thiết lập tính điểm của hệ thống. Chúng tôi thêm hai hạn chế vào Mô hình, một trong số đó hạn chế hài hòa p1 với gốc và cái còn lại hạn chế p1 và p2 ở khoảng cách 5. cách nhau 0. [IMP không thực thi bất kỳ đơn vị khoảng cách nào; tuy nhiên, một số trình tối ưu hóa vật lý, chẳng hạn như động lực học phân tử, mong đợi khoảng cách ở dạng angstrom. ] Lưu ý rằng mô-đun lõi cung cấp các hạn chế khối xây dựng phù hợp cho mục đích này. Trong trường hợp đầu tiên, chúng tôi sử dụng lớp Hạn chế Singleton tạo ra một hạn chế trên một hạt đơn lẻ [p1]. Tuy nhiên, nó ủy thác nhiệm vụ thực sự cho điểm hạt cho một lớp khác gọi là SingletonScore, lớp này chỉ đơn giản đưa cho Hạt và yêu cầu điểm của nó. Trong ví dụ này, chúng tôi sử dụng một loại SingletonScore được gọi là a tính toán khoảng cách Descartes giữa Hạt giống như điểm và một điểm cố định [trong trường hợp này là điểm gốc] và một lần nữa ủy thác nhiệm vụ tính khoảng cách cho một lớp khác, một UnaryFunction. Trong trường hợp này, UnaryFunction là một hàm điều hòa đơn giản với giá trị trung bình bằng không. Do đó, Hạt p1 bị hạn chế hài hòa ở gốc tọa độ. Hạn chế thứ hai được thiết lập tương tự; . Chức năng khối xây dựng này giúp dễ dàng thêm một loại hạn chế mới;

Cuối cùng, trong phần thứ ba của kịch bản, chúng tôi nói với IMP rằng nó có thể di chuyển hai hạt giống như điểm và xây dựng cấu hình hệ thống phù hợp với tất cả các hạn chế. Trong ví dụ này, một tối ưu hóa gradient liên hợp đơn giản được sử dụng

Tập lệnh là một tập lệnh Python thông thường. Do đó, với điều kiện là cả IMP và Python đều được cài đặt, nó có thể chạy trên bất kỳ máy nào, bằng cách nhập vào một dòng lệnh, trong cùng thư mục với tập lệnh

python simple.py

Tập lệnh sẽ chạy quá trình tối ưu hóa, in thông báo nhật ký IMP khi chạy và cuối cùng in tọa độ của các phần tử được tối ưu hóa

IMP được thiết kế sao cho giao diện C++ và Python tương tự nhau để sử dụng. Do đó, các ứng dụng hoặc giao thức IMP có thể được xây dựng bằng C++ hoặc Python và chức năng IMP mới [ví dụ: các loại Hạn chế mới] có thể được triển khai bằng cả hai ngôn ngữ. Để so sánh, vui lòng kiểm tra tệp simple.cpp bên dưới. Tệp này thực hiện cùng một giao thức như phần đầu tiên của simple.py nhưng sử dụng các lớp IMP C++ thay vì các lớp Python tương đương của chúng. Hai chương trình rất giống nhau; . căn cứ. lớp con trỏ hoặc macro, bổ sung tính năng đếm tham chiếu để tự động dọn sạch sau các đối tượng IMP khi chúng không còn được sử dụng]

Làm cách nào để cài đặt Python imp?

Quy trình cơ bản như sau. .
Cài đặt Microsoft Visual Studio Express [miễn phí nhưng phải đăng ký với Microsoft]
Nhận và cài đặt cmake
Tải Python 2 [không phải Python 3] [đảm bảo bạn tải phiên bản 32 bit nếu bạn định xây dựng IMP cho Windows 32 bit]

IMP Load_source trả về cái gì?

imp. load_source[tên, tên đường dẫn[, tập tin]]. Tải và khởi tạo một mô-đun được triển khai dưới dạng tệp nguồn Python và trả về đối tượng mô-đun của nó . Nếu mô-đun đã được khởi tạo, nó sẽ được khởi tạo lại.

Chủ Đề