انتقل إلى المحتوى الرئيسي

HI-VQE Chemistry - دالة Qiskit من Qunova Computing

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-catalog qiskit-ibm-runtime
# This cell is hidden from users
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
instance = service.active_account()["instance"]
backend_name = service.least_busy(operational=True, min_num_qubits=16).name
ملاحظة

دوال Qiskit ميزة تجريبية متاحة فقط لمستخدمي خطط IBM Quantum® Premium وFlex وOn-Prem (عبر IBM Quantum Platform API). هي في مرحلة إصدار معاينة وقابلة للتغيير.

نظرة عامة

في الكيمياء الكمومية، تتمحور مسألة البنية الإلكترونية حول إيجاد حلول معادلة شرودنغر الإلكترونية — دوال الموجة الكمومية التي تصف سلوك إلكترونات النظام. هذه الدوال عبارة عن متجهات من السعات المركبة، حيث تقابل كل سعة مساهمة إحدى التهيئات الإلكترونية الممكنة.

الحالة الأرضية هي دالة الموجة ذات أدنى طاقة في النظام، وتحتل مكانة خاصة في دراسة الأنظمة الجزيئية. يأخذ النهج الأدق لحساب الحالة الأرضية بعين الاعتبار جميع التهيئات الإلكترونية الممكنة، إلا أن ذلك يصبح غير قابل للتطبيق على الأنظمة الأكبر إذ يتزايد عدد التهيئات بشكل أسي مع حجم النظام.

يُعدّ الـ HI-VQE (Handover Iterative Variational Quantum Eigensolver) منهجًا هجينًا مبتكرًا بين الحوسبة الكمومية والكلاسيكية، يهدف إلى تقدير دقيق للحالة الأرضية للأنظمة الجزيئية. يدمج المعالجات الكمومية مع الحوسبة الكلاسيكية، مستعينًا بالمعالجات الكمومية لاستكشاف التهيئات الإلكترونية المرشحة بكفاءة، ثم يحسب دالة الموجة الناتجة على الحواسيب الكلاسيكية. من خلال توليد دوال موجة مضغوطة وذات دقة كيميائية عالية، يُعزّز HI-VQE البحث والاكتشاف في كيمياء الكم وعلم المواد.

صورة توضح نظرة عامة على خوارزمية HI-VQE من Qunova

يُقلّل HI-VQE من التعقيد الحسابي لمسألة البنية الإلكترونية من خلال تقدير الحالة الأرضية بدقة عالية وكفاءة. يركّز على مجموعة فرعية مختارة بعناية من أبرز التهيئات الإلكترونية، محقّقًا توازنًا مثاليًا بين الدقة والكفاءة.

يجمع HI-VQE بين إمكانيات الحواسيب الكلاسيكية والكمومية، ويُحسّن تقدير دالة الموجة الحالية تدريجيًا وبصورة متكررة. تُسهم تقنياته الفريدة لبناء الفضاء الجزئي في رفع كفاءة اختيار التهيئات، مما يمنح المستخدمين تحكّمًا حسابيًا أكبر ودقة محسّنة في محاكاة كيمياء الكم.

إن كنت تودّ التعمق في فهم الخوارزمية، يمكنك قراءة الورقة البحثية المرتبطة.

الوصف

يتزايد عدد التهيئات الإلكترونية لنظام جزيئي بشكل أسي مع حجمه. غير أنه في حالات إلكترونية معينة، كالحالة الأرضية، يشيع أن نسبة صغيرة فقط من التهيئات تُسهم بشكل ملحوظ في طاقة الحالة. تستغل أساليب التفاعل التشكيلي المنتقى (SCI) هذه الندرة لتقليل التكاليف الحسابية عبر تحديد التهيئات الأكثر صلة والتركيز عليها. تُسمّى هذه المجموعة الفرعية من التهيئات بالفضاء الجزئي.

يستثمر HI-VQE الكفاءة الجوهرية للحواسيب الكمومية في تمثيل الأنظمة الجزيئية للمساعدة في البحث عن الفضاء الجزئي. يدمج الروتينات الكلاسيكية والكمومية لحل مسألة البنية الإلكترونية بدقة عالية. على خلاف أساليب SCI الكمومية الموجودة، يجمع HI-VQE بين التدريب التغايري والبناء التكراري للفضاء الجزئي وفرز التهيئات قبل التقطير، لتعزيز الكفاءة عبر تقليل القياسات الكمومية والتكرارات وتكاليف التقطير الكلاسيكية. وبالتالي يمكن تطبيق HI-VQE على أنظمة جزيئية أكبر تحتاج إلى مزيد من qubits، مع تقليل تكلفة حل مسألة بحجم معين بالدقة ذاتها.

صورة توضح وصفًا تفصيليًا لكل خطوة في خوارزمية HI-VQE من Qunova.

لحساب الحالة الأرضية لنظام ما، يبدأ HI-VQE بالاستعانة بحزمة الكيمياء الكلاسيكية PySCF لتوليد تمثيل جزيئي من المدخلات التي يوفّرها المستخدم، كالهندسة الجزيئية وبيانات أخرى عن الجزيء. ثم يدخل في حلقة تحسين هجينة كمومية-كلاسيكية، يُحسّن فيها تدريجيًا فضاءً جزئيًا لتمثيل الحالة الأرضية بشكل أمثل مع تقليل عدد التهيئات المضمّنة. تستمر الحلقة حتى تتحقق معايير التقارب كحجم الفضاء الجزئي أو استقرار الطاقة، ثم يُخرج الخوارزم دالة موجة الحالة الأرضية المحسوبة وطاقتها. يمكن استخدام هذه النتائج لبناء أسطح طاقة الوضع الدقيقة وإجراء مزيد من التحليل للنظام.

تتمحور حلقة التحسين حول ضبط معاملات دائرة كمومية لتوليد فضاء جزئي عالي الجودة. يوفّر HI-VQE ثلاثة خيارات للدائرة الكمومية: excitation_preserving وefficient_su2 وLUCJ. يُهيّأ التحسين قريبًا من حالة مرجعية Hartree-Fock لملاءمتها العامة. تُنفَّذ الدائرة بعد ذلك على جهاز كمومي وتُؤخذ عيّنات من التهيئات من الحالة الكمومية الناتجة وتُعاد كسلاسل ثنائية. نتيجةً لضوضاء الجهاز الكمومي، قد تكون بعض التهيئات المُعيَّنة غير صالحة فيزيائيًا، إذ لا تحفظ عدد الإلكترونات أو الدوران. يتعامل HI-VQE مع هذا باستخدام عملية استرداد التهيئة من حزمة qiskit-addon-sqd، ليتمكن المستخدمون إما من تصحيح التهيئات غير الصالحة أو تجاهلها.

تخضع التهيئات الصالحة بعد ذلك لخطوة فرز اختيارية لإزالة تلك المتوقع أن تُسهم بالحد الأدنى. يُقلّل ذلك من بُعد الفضاء الجزئي وبالتالي يخفض تكلفة خطوة التقطير. في حال تفعيل الفرز، يُبنى Hamiltonian فضاء جزئي أوّلي من التهيئات الصالحة ويُجرى تقطير بمعايير إنهاء فضفاضة جدًا. رغم أن دقة السعات الناتجة لكل تهيئة منخفضة، إلا أنها فعّالة في التنبؤ بالتهيئات التي ينبغي استبعادها من الفضاء الجزئي في هذه الجولة، وتُحسب بسرعة.

تُضاف التهيئات المختارة إلى الفضاء الجزئي ويُسقَط Hamiltonian النظام في هذا الفضاء. يتحدث الفضاء الجزئي تكراريًا محافظًا على أبرز التهيئات عبر الجولات. يتميز هذا النهج عن البدائل بأن الدائرة الكمومية لا تحتاج إلى تقريب الحالة الأرضية الكاملة في كل خطوة.

بعد ذلك، يُقطَّر Hamiltonian الفضاء الجزئي كلاسيكيًا للحصول على أدنى قيمة ذاتية ومتجهها الذاتي المقابل، وهما تقريب للحالة الأرضية وطاقتها. مع تحسّن جودة الفضاء الجزئي عبر الجولات، يقترب حساب الحالة الأرضية من الحالة الحقيقية. يمكن إجراء خطوة فرز إضافية في هذه المرحلة لإزالة التهيئات ذات المساهمة غير الجوهرية في الحالة الأرضية المحسوبة. تضمن هذه الخطوة أن الفضاء الجزئي الذي يُنقل للجولة التالية يكون بالحجم الأمثل. ويُقيَّم ذلك بناءً على السعات التي تُعيدها عملية التقطير، إذ تمثّل أهمية مساهمة كل تهيئة في الحالة الأرضية المحسوبة.

ثم يُجرى فحص تقارب لتحديد ما إذا كانت التكرارات الإضافية ستحسّن النتائج. إن كان الأمر كذلك، تُجرى خطوة توسيع كلاسيكية اختيارية، تُحدَّث معاملات الدائرة الكمومية لمزيد من تقليل الطاقة المحسوبة، وتتكرر العملية. تُولّد خطوة التوسيع الكلاسيكية تهيئات إضافية للفضاء الجزئي تكمّل ما أُخذ عيّنات منه من الجهاز الكمومي. تُحدّد أولًا التهيئة ذات أكبر سعة في نتائج التقطير، ثم تُولّد تهيئات جديدة بإثارات أحادية وثنائية من التهيئة المحدّدة، وتُضاف العدد المطلوب من هذه التهيئات إلى الفضاء الجزئي.

بمجرد التحقق من تقارب الجولات، يُعيد HI-VQE الحالة الأرضية المحسوبة (على شكل الحالات في الفضاء الجزئي وسعاتها في دالة الموجة)، وطاقتها، ومقياس تباين الطاقة الذي يشير إلى ما إذا كانت الحالة المحسوبة تُشكّل حالة ذاتية لـ Hamiltonian النظام.

يستطيع المستخدمون تحديد الدائرة الكمومية المستخدمة وعدد اللقطات لكل دائرة، إضافةً إلى التحكم في حجم الفضاء الجزئي أو تفعيل التوليد الكلاسيكي لتهيئات إضافية لدعم تلك المولّدة كميًا. بهذه الطريقة، يمكن للمستخدمين تكييف سلوك HI-VQE لتناسب تطبيقاتهم المطلوبة.

البدء

أولًا، اطلب الوصول إلى الدالة. ثم قم بالمصادقة باستخدام مفتاح IBM Quantum® API الخاص بك، وبافتراض أنك حفظت حسابك في بيئتك المحلية، اختر دالة Qiskit كما يلي:

import reprlib
from qiskit_ibm_catalog import QiskitFunctionsCatalog

catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")

function = catalog.load("qunova/hivqe-chemistry")

المدخلات

انظر الجدول التالي لجميع معاملات المدخلات التي تقبلها الدالة. يُفصّل قسما خيارات الجزيء وخيارات HI-VQE هذه الوسيطات بمزيد من التفاصيل.

الاسمالنوعالوصفمطلوبالافتراضيمثال
geometryUnion[List[List[Union[str, Tuple[float, float, float]]]], str]يمكن أن تكون سلسلة نصية أو قوائم منظّمة تحتوي على أزواج من الذرة والإحداثيات. إذا كانت سلسلة نصية، فيجب أن تكون هندسة جزيئية بصيغة إحداثيات ديكارتية. إذا كانت قائمة، فيجب أن تكون قائمة من القوائم تحتوي كل منها على سلسلة ذرة وزوج إحداثيات.نعمN/A[['O', (0, 0, 0)], ['H', (0, 1, 0)], ['H', (0, 0, 1)]] أو "O 0 0 0; H 0 1 0; H 0 0 1"
backend_namestrاسم الـ Backend لتنفيذ الاستعلام عليه.نعمN/Aibm_fez
max_statesintأقصى بُعد للفضاء الجزئي في التقطير. سيُستخدم عدد أقل من الحالات إذا لم يكن الرقم مربعًا تامًا.نعمN/A100
max_expansion_statesintأقصى عدد لحالات CI المولّدة كلاسيكيًا لتضمينها في كل جولة.نعمN/A10
molecule_optionsdictخيارات متعلقة بالجزيء المستخدم كمدخل لـ HI-VQE. انظر قسم خيارات الجزيء لمزيد من التفاصيل.لاانظر قسم خيارات الجزيء للتفاصيل.{"basis": "sto3g", "unit": "angstrom" }
hivqe_optionsdictخيارات تتحكم في سلوك خوارزمية HI-VQE. انظر قسم خيارات HI-VQE لمزيد من التفاصيل.لاانظر قسم خيارات HI-VQE للتفاصيل.{"shots": 10_000, "max_iter": 10 }

خيارات الجزيء

يوضّح الجدول التالي جميع المفاتيح والقيم التي يمكن ضبطها في قاموس molecule_options، إضافةً إلى أنواع بياناتها وقيمها الافتراضية. جميع المفاتيح اختيارية.

المفتاحنوع القيمةالقيمة الافتراضيةالنطاق الصالحالشرح
"charge"int0متنوععدد صحيح يحدد الشحنة الكلية للنظام الجزيئي. القيمة الافتراضية هي 0، غير أنه يمكن أن يكون أي عدد صحيح.
"basis"str'sto-3g'متنوعسلسلة نصية تحدد نوع الأساس؛ تُمرَّر إلى pyscf. (مثال: "sto-3g", "3-21g", "6-31g", "cc-pvdz")
"active_orbitals"List[int]كل مؤشرات المدارات.مؤشرات المدارات الفضائية الصالحة للمسألة.قائمة بمؤشرات المدارات النشطة في النطاق [0, n) حيث n هو عدد الـ qubits المستخدمة في المسألة. إذا تم تحديده، يجب تحديد وسيطة frozen_orbitals أيضًا.
"frozen_orbitals"List[int]لا مؤشرات.مؤشرات المدارات الفضائية الصالحة للمسألة، باستثناء المدارات النشطة.قائمة بمؤشرات المدارات المجمّدة في النطاق ذاته كـ active_orbitals. إذا تم تحديده، يجب تحديد active_orbitals أيضًا. لاحظ أنه يجب تجميد المدارات المشغولة فقط إذ ينخفض عدد الإلكترونات النشطة بمقدار 2 لكل مدار مشغول مجمّد.
"orbital_coeffs"List[List[float]]المدارات الجزيئية Hartree-Fock.متنوع.معاملات المدارات الفضائية المستخدمة في حساب تكاملات الطرد الإلكتروني للنظام. بعض الأمثلة الصالحة هي مدارات Hartree-Fock الجزيئية والمدارات الطبيعية ومدارات AVAS.
"symmetry"Union[str, bool]FalseTrue أو Falseيُستخدم لاستدعاء تماثل المجموعة النقطية في الحسابات الجزيئية الأولية لبناء أساس المدارات المتكيّفة مع التماثل. تُستخدم هذه المدارات كدوال أساسية لحسابات SCF التالية. القيمة الافتراضية False؛ إذا ضُبطت على True، سيُستدعى تلقائيًا وستُكتشف مجموعات النقاط التعسفية وتُستخدم. إذا حُدّد تماثل معين، مثلًا symmetry = "Dooh"، فسيُطلق خطأ إذا لم تكن الهندسة الجزيئية خاضعة لهذا التماثل المطلوب.
"symmetry_subgroup"Optional[str]Noneانظر توثيق pyscf.يمكن استخدامه لتوليد مجموعة فرعية من التماثل المكتشف. لا تأثير له عند تحديد التماثل باستخدام وسيطة الكلمة المفتاحية symmetry.
"unit"str"angstrom"انظر توثيق pyscf.يحدد وحدة القياس المستخدمة للإحداثيات والمسافات الذرية. الافتراضي هو وحدة أنغستروم.
"nucmod"Optional[Union[dict, str]]Noneانظر توثيق pyscf.يحدد النموذج النووي المستخدم. افتراضيًا يستخدم النموذج النووي النقطي، والقيم الأخرى تتيح النموذج النووي الغاوسي. إذا أُعطيت دالة، ستُستخدم مع النموذج النووي الغاوسي لتوليد قيمة توزيع الشحنة النووية 'zeta'.
"pseudo"Optional[Union[dict, str]]Noneانظر توثيق pyscf.يحدد الكمون الزائف للذرات في الجزيء. القيمة الافتراضية None تشير إلى عدم تطبيق أي كمونات زائفة وأن جميع الإلكترونات مضمّنة صراحةً في الحسابات.
"cart"boolFalseانظر توثيق pyscf.يحدد ما إذا كان يجب استخدام GTO ديكارتية كدوال أساسية للزخم الزاوي في الحساب. القيمة الافتراضية False ستستخدم GTO كروية.
"magmom"Optional[List[Union[int, float]]]Noneانظر توثيق pyscf.يضبط العزم المغناطيسي الدوراني الخطي لكل ذرة. افتراضيًا هو None ويُهيّأ كل ذرة بدوران صفري.
"avas_aolabels"Optional[List[str]]Noneمثال: ["H 1s", "O 2p"] لـ H2Oيحدد المدارات الذرية لتضمينها في مخطط AVAS. انظر توثيق AVAS.
"avas_threshold"float0.2بين 0.0 و2.0يحدد قيمة القطع المستخدمة لتحديد المدارات الذرية (AOs) التي تُحتفظ في الفضاء النشط.
"noons_level"Optional[str]None"mp2" أو "ccsd"يحدد النهج النظري لتحضير المدارات الطبيعية واختيار المدارات النشطة استنادًا إلى مخطط أعداد إشغال المدارات الطبيعية (NOONs). انظر توثيق NOONs. يجب توفير مؤشرات المدارات النشطة والمجمّدة للتحكم في عدد المدارات (وعدد الـ qubits).

خيارات HI-VQE

يوضّح الجدول التالي جميع المفاتيح والقيم التي يمكن ضبطها في قاموس hivqe_options، إضافةً إلى أنواع بياناتها وقيمها الافتراضية. جميع المفاتيح اختيارية.

المفتاحنوع القيمةالقيمة الافتراضيةالنطاق الصالحالشرح
"shots"int1_000بين 1 و10,000.عدد اللقطات لاستخدامها على الجهاز الكمومي لكل جولة.
"max_iter"int25بين 1 و50.الحد الأقصى لعدد الجولات لتحسين الـ ansatz. قد يستخدم الخوارزم عددًا أقل من الجولات إذا تحقق التقارب مبكرًا.
"initial_basis_states"List[str]حالة Hartree-Fock.سلاسل ثنائية يتطابق عدد بتاتها مع عدد الـ qubits المطلوبة للمسألة.يمكن استخدامه لإعادة تشغيل الخوارزم بحالات كلاسيكية من نتيجة سابقة.
"ansatz"str"epa""epa" أو "hea" أو "lucj"يحدد الـ ansatz الكمومي المُحسَّن لتوليد حالات جديدة. "epa" يختار ansatz حافظ الإثارة. "hea" يختار ansatz كفء مع الأجهزة. "lucj" يختار ansatz مجموعة Jastrow الموحّدة المحلية.
"convergence_count"int32 على الأقل.عدد الجولات بدون تغيير ملحوظ في الطاقة المحسوبة التي يجب أن تمر قبل اعتبار الخوارزم متقاربًا.
"convergence_abstol"float1e-4أكبر من 0 وأقل من أو يساوي 1.مقدار التغيير في الطاقة المحسوبة الذي يُعدّ ملحوظًا لأغراض فحوصات التقارب.
"reset_convergence_count"boolTrueTrue أو Falseإذا كانت True، يجب أن تحدث جولات convergence_count بدون تغيير ملحوظ يقطعها للتأهل كتقارب. إذا كانت False، فسيتوقف الخوارزم بعد convergence_count إذا حدثت تغييرات غير ملحوظة في أي جولات خلال عملية التحسين.
"configuration_recovery"boolTrueTrue أو False.ما إذا كان يجب استخدام استرداد التهيئة من حزمة qiskit-addon-sqd. إذا كانت True، تُصحَّح الحالات غير الصالحة المأخوذة عيّنات من الجهاز الكمومي كلاسيكيًا. إذا كانت False، تُتجاهل.
"ansatz_entanglement"str"circular"أي من "linear" أو "reverse_linear" أو "pairwise" أو "circular" أو "full" أو "sca". عند استخدام الـ "lucj" ansatz، يتوفر أيضًا "lucj_default".يحدد مخطط التشابك الذي يجب استخدامه داخل الدائرة الكمومية، وفق اتفاقيات Qiskit الشائعة واتفاقيات ffsim للـ LUCJ ansatz.
"ansatz_reps"int2أكبر من 0.عدد تكرارات كل طبقة في الدائرة الكمومية.
"amplitude_screening_tolerance"Union[float,int]00 على الأقل، وأقل من 1.الحد المتسامح لتقرير أي حالات يجب فرزها من الفضاء الجزئي بعد التقطير. يحدد عتبة الإدراج لحالات الفضاء الجزئي بناءً على سعاتها المحسوبة.
"overlap_screening_tolerance"float1e-2بين 1e-4 و1e-1، شاملًا.الحد المتسامح للتنبؤ بأي حالات يجب فرزها من الفضاء الجزئي قبل التقطير. يتحكم في دقة السعات المتنبأ بها لكل حالة، مع نتيجة قيمة أصغر في تنبؤات أكثر دقة.

المخرجات

تُعيد الدالة قاموسًا بأربعة مفاتيح وقيم. المفاتيح والقيم موثّقة في الجدول التالي:

المفتاحنوع القيمةالشرح
"energy"floatطاقة الحالة الأرضية التقريبية للجزيء.
"states"List[str]المحدِّدات المختارة التي تشكّل الفضاء الجزئي المستخدم لحل الطاقة. بصيغة ألفا-بيتا المتناوبة.
"eigenvector"List[float]المتجه الذاتي المقابل للحالة الأرضية للفضاء الجزئي المكوّن من "states".
"energy_variance"floatتباين طاقة الحالة الأرضية للفضاء الجزئي المكوّن من "states"، يُشير إلى جودة الحل. هذه القيمة غير سلبية والقيمة الأقل تعني أن الحالة الأرضية للفضاء الجزئي تقترب أكثر من الحالة الذاتية لـ Hamiltonian النظام.
"energy_history"List[float]الطاقات المحسوبة في كل جولة خلال عملية التحسين الهجين، بالترتيب الذي حُسبت فيه. تُحسب طاقتان لكل جولة كجزء من عملية التحسين SPSA.

مثال

المثال الأول يوضح كيفية حساب طاقة الحالة الأرضية لجزيء NH3 باستخدام خوارزمية HI-VQE.

تحديد الهندسة الجزيئية والخيارات

تُوفَّر الهندسة الجزيئية لـ NH3 بإحداثيات ديكارتية مفصولة بـ ";" لكل ذرة.

# Define the molecule geometry
geometry = """
N -0.85188 -0.02741 0.03141;
H 0.16545 0.00593 -0.01648;
H -1.16348 -0.39357 -0.86702;
H -1.16348 0.94228 0.06281;
"""

يمكن تعريف خيارات إضافية وتوفيرها للنظام الجزيئي بصيغة القاموس التالية.

# Configure some options for the job.
molecule_options = {"basis": "sto3g"}
hivqe_options = {"shots": 100, "max_iter": 20}

نفّذ الدالة مع مدخلات الهندسة والخيارات.

# Run HI-VQE
job = function.run(
geometry=geometry,
# `backend_name` is the name of a backend with at least 16 qubits, for example, "ibm_marrakesh".
backend_name=backend_name,
max_states=2000,
max_expansion_states=10,
molecule_options=molecule_options,
hivqe_options=hivqe_options,
)

من المفيد طباعة معرّف مهمة الدالة حتى يمكن تقديمه في طلبات الدعم إذا حدث خطأ ما.

print("Job ID:", job.job_id)
Job ID: 128ee399-7cfc-4be2-91e9-c4abd22b97c7

يستخدم هذا المثال 16 qubit مع 8 مدارات من أساس sto3g لجزيء NH3. تحقق من الحالة أو استرجع النتائج لعمل Qiskit Function الخاص بك على النحو التالي:

print(job.status())
QUEUED

بعد اكتمال المهمة، يمكن الحصول على النتائج باستخدام نسخة result().

result = job.result()

# Output can be long, so we display a shortened representation
shortened_result = reprlib.repr(result)
print(shortened_result)
{'eigenvector': [0.9824200343205695, 0.009520846167419264, 6.365368845740147e-08, 3.6832123006425615e-07, 0.0012869941182066654, 2.3403891050875465e-05, ...], 'energy': -55.521146537970466, 'energy_history': [-55.52091922342852, -55.52113695367561, -55.521146537970466, -55.52114653864798, -55.521146537970466, -55.521146537970466, ...], 'energy_variance': 9.788555455342562e-12, ...}

للوصول إلى طاقة الحالة الأرضية، استخدم مفتاح "energy". يوفّر مفتاح "eigenvector" معاملات CI مع تدوين السلسلة الثنائية المقابلة للتهيئة الإلكترونية المخزّنة في "states" من النتائج.

fci_energy = -55.521148034704126  # the exact energy using FCI method
hivqe_energy = result["energy"]
print(
f"|Exact Energy - HI-VQE Energy|: {abs(fci_energy - hivqe_energy) * 1000} mHa"
)
print(f"Sampled Number of States: {len(result['states'])}")
|Exact Energy - HI-VQE Energy|: 0.0014967336596782843 mHa
Sampled Number of States: 1936

المخرجات:

|Exact Energy - HI-VQE Energy|: 0.077237504 mHa Sampled Number of States: 1936

الأداء

يعرض هذا القسم حسابات المعايير التوضيحية لـ HI-VQE مع حالة بـ 24 qubit لجزيء Li2S، وحالة بـ 40 qubit لجزيء N2، وحالة بـ 44 qubit لنظام FeP-NO.

منحنى سطح طاقة الوضع للتفكك لجزيء Li2S بـ 24 qubit

يُعرض منحنى PES مع مرجع FCI والتخمين الأوّلي من RHF، إضافةً إلى خطأ الطاقة من مرجع FCI.

صورة توضح أن HI-VQE ينتج حلولًا ضمن الدقة الكيميائية لمنحنى PES المرجعي الكلاسيكي لنظام Li2S.

أُجريت الحسابات بالهندسات والخيارات التالية.

# This cell is hidden from users
backend_name = service.least_busy(operational=True, min_num_qubits=38).name
# Define Li2S geometries
Li2S_geoms = {
"Li2S_1.51": "S -1.239044 0.671232 -0.030374;Li -1.506327 0.432403 -1.498949;Li -0.899996 0.973348 1.826768;",
"Li2S_2.40": "S -1.741432 0.680397 0.346702;Li -0.529307 0.488006 -1.729343;Li -1.284307 0.989409 2.177209;",
"Li2S_3.80": "S -2.707255 0.674298 0.909161;Li 0.079218 0.552012 -1.671656;Li -0.927010 0.931502 1.557063;",
}

# Configure some options for the job.
molecule_options = {
"basis": "sto3g",
}
hivqe_options = {
"shots": 100,
"max_iter": 20,
}

results = []
for geom in ["Li2S_1.51", "Li2S_2.40", "Li2S_3.80"]:
# Run HI-VQE
job = function.run(
geometry=Li2S_geoms[geom],
backend_name=backend_name, # can use any device with at least 38 qubits
max_states=2000,
max_expansion_states=10,
molecule_options=molecule_options,
hivqe_options=hivqe_options,
)
results.append(job.result())

تمثّل النقاط الحمراء نتائج حسابات HI-VQE لستة هندسات مختلفة، وثلاث هندسات تتوافق مع 1.51 و2.40 و3.80 أنغستروم مُقدَّمة كمدخلات في الخلية أعلاه.

منحنى PES للتفكك لجزيء N2 بـ 40 qubit

تم التعرف على جزيء النيتروجين كنظام متعدد المراجع مع مساهمات طاقة ارتباط كبيرة تتجاوز حالة Hartree-Fock. أجرينا حسابًا معياريًا لجزيء N2 مع أساس cc-pvdz، (20o,14e) باستخدام اختيار المدار النشط homo-lumo. رقم الفضاء النشط الكامل (CAS) لتمثيل هذه المسألة هو 6,009,350,400. من غير الممكن الحصول على حل مسألة القيم الذاتية (للطاقة والبنية الإلكترونية) بهذا العدد من الحالات باستخدام حاسوب مكتبي قوي (16cpu/64GB). مع HI-VQE، يستطيع المستخدمون البحث بكفاءة في الفضاء الجزئي لحالات CAS للحصول على نتائج دقيقة كيميائيًا مع توفير موارد الحوسبة بشكل ملحوظ. تُظهر الرسوم البيانية التالية منحنى PES لحساب HI-VQE بـ 40 qubit لتفكك جزيء N2.

صورة توضح أن HI-VQE ينتج حلولًا ضمن الدقة الكيميائية لمنحنى PES المرجعي الكلاسيكي لنظام N2.

منحنى PES للتفكك لـ iron(II)-porphyrin خماسي التنسيق مع نظام NO بـ 44 qubit

نظام كيميائي مثير للاهتمام آخر هو مركّب iron(II)-porphyrin (FeP) مع ليغاند nitric oxide (NO) منسّق، وهو نظام metalloporphyrin ذو صلة بيولوجية يؤدي أدوارًا محورية في عمليات فسيولوجية متعددة. في هذا المثال، استُخدم HI-VQE لتقدير منحنى سطح طاقة الوضع الدقيق للتفاعل بين جزيئيّ FeP وNO (طاقة الحالة الأرضية لهندسات بمسافات مختلفة). يحتوي النظام المدمج على 450 مدارًا و202 إلكترونًا (450o,202e) مع أساس 6-31g(d) إجمالًا. اُستخدم اختيار المدار النشط homo-lumo لحساب الحالة الأصغر من الحالة الحقيقية بـ (22o,22e). من نتائج المعايير التالية، تمكّنا من تحقيق الدقة الكيميائية (> 1.6 mHa) مع حساب كيمياء الحاسوب الكلاسيكي المتقدم CASCI(DMRG) (22o,22e) كمرجع.

صورة توضح أن HI-VQE ينتج حلولًا ضمن الدقة الكيميائية لمنحنى PES المرجعي الكلاسيكي لنظام FeP-NO.

المعايير

  • حجم المصفوفة الدقيق هو عدد المحدِّدات للحل الدقيق، مثل FCI وCASCI.
  • يأخذ حساب HI-VQE عيّنات من الفضاء الجزئي ويحسبه (أي حجم مصفوفة HI-VQE).
  • الوقت الإجمالي يشمل وقت تشغيل QPU وتشغيلات Qiskit Function مع CPU.
  • تُقدَّر الدقة من فارق الطاقة عن الحل الدقيق.
النظام الكيميائيعدد الـ qubitsحجم المصفوفة الدقيقحجم مصفوفة HI-VQEE(diff) من الدقيق (mHa)عدد الجولاتالوقت الإجمالياستخدام وقت تشغيل QPU
NH3NH_3 (8o,10e)16313619360.08637 s34 s
Li2SLi_2S (10o,10e)206350439690.605250 s50 s
NH3NH_3 (15o,10e)309018009497290.905354 s54 s
N2N_2 (16o,14e)3213087360017982811.1096531 s121 s
3H2O3H_2O (18o,24e)363446220963994240.90245174 s130 s
N2N_2 (20o,14e)40600935040090120041.202146547 s258 s

استرجاع رسائل الخطأ

إذا فشل عملك، ستكون الحالة ERROR واستدعاء job.result() سيُطلق استثناء:

job = function.run(
geometry="invalid-geometry", # This will cause an error
backend_name=backend_name,
max_states=2000,
max_expansion_states=15,
molecule_options=molecule_options,
hivqe_options=hivqe_options,
)

job.result()
job.status()
'ERROR'

الحصول على الدعم

يمكنك إرسال بريد إلكتروني إلى qiskit.support@qunovacomputing.com للحصول على مساعدة بشأن هذه الدالة.

إذا كنت تريد مساعدة في استكشاف خطأ محدد وإصلاحه، يُرجى تقديم معرّف مهمة الدالة للمهمة التي واجهت الخطأ.

الخطوات التالية