حل مسألة تقسيم السوق باستخدام محسِّن Iskay الكمومي من Kipu Quantum
وظائف Qiskit ميزةٌ تجريبية متاحة فقط لمستخدمي خطط IBM Quantum® Premium Plan وFlex Plan وOn-Prem (عبر IBM Quantum Platform API). وهي في مرحلة إصدار أولي وعرضةٌ للتغيير.
تقدير الاستخدام: 20 ثانية على معالج Heron r2. (ملاحظة: هذا تقدير فحسب. قد يختلف وقت التشغيل الفعلي.)
الخلفية النظرية
يُوضِّح هذا البرنامج التعليمي كيفية حل مسألة تقسيم السوق باستخدام محسِّن Iskay الكمومي من Kipu Quantum [1]. تُمثِّل مسألة تقسيم السوق تحدياً واقعياً في تخصيص الموارد، إذ يجب تقسيم الأسواق إلى مناطق مبيعات متوازنة لتلبية أهداف الطلب بدقة.
تحدي تقسيم السوق
تطرح مسألة تقسيم السوق تحدياً خادعاً في بساطته الظاهرة لكنه بالغ التعقيد حسابياً في مجال تخصيص الموارد. تخيَّل شركةً لديها منتج يُباع عبر سوقاً مختلفة، حيث يشتري كل سوق حزمة محددة من المنتجات (تمثَّل بأعمدة المصفوفة ). يتمثَّل الهدف التجاري في تقسيم هذه الأسواق إلى منطقتَي مبيعات متوازنتين بحيث تحصل كل منطقة على نصف إجمالي الطلب لكل منتج تماماً.
الصياغة الرياضية:
نسعى إلى إيجاد متجه تعيين ثنائي ، حيث:
- يعني تعيين السوق إلى المنطقة A
- يعني تعيين السوق إلى المنطقة B
- يجب أن يتحقق القيد ، حيث يمثِّل أهداف المبيعات (عادةً نصف إجمالي الطلب لكل منتج)
دالة التكلفة:
لحل هذه المسألة، نُقلِّل مربع انتهاك القيد:
حيث:
- يمثِّل مبيعات المنتج في السوق
- هو التعيين الثنائي للسوق
- هو هدف المبيعات للمنتج في كل منطقة
- تساوي التكلفة صفراً تماماً عند تحقُّق جميع القيود
يمثِّل كل حد في المجموع الانحراف التربيعي عن هدف المبيعات لمنتج معين. عند توسيع دالة التكلفة هذه، نحصل على:
بما أن ثابت، فإن تقليل يكافئ تقليل الدالة التربيعية ، وهي تماماً مسألة QUBO (التحسين الثنائي التربيعي غير المقيَّد).
التعقيد الحسابي:
على الرغم من بساطة تفسيرها التجاري، تُظهر هذه المسألة تعقيداً حسابياً لافتاً:
- الإخفاق في الحالات الصغيرة: تفشل حلَّالات البرمجة الصحيحة المختلطة التقليدية في الحالات التي لا تتجاوز سبعة منتجات ضمن مهلة زمنية ساعة واحدة [4]
- النمو الأسي: يتزايد فضاء الحلول بصورة أسية ( تعيين محتمل)، مما يجعل نهج القوة الغاشمة غير مجدٍ
يجعل هذا الحاجز الحسابي الشديد، إلى جانب الأهمية العملية لتخطيط المناطق وتخصيص الموارد، من مسألة تقسيم السوق معياراً مثالياً لخوارزميات التحسين الكمومي [4].
ما الذي يُميِّز نهج Iskay؟
يستخدم محسِّن Iskay خوارزمية bf-DCQO (التحسين الكمومي الرقمي المضاد للحث المتحيِّز بالحقل) [1]، التي تمثِّل تقدماً ملحوظاً في التحسين الكمومي:
كفاءة الدائرة: تُحقِّق خوارزمية bf-DCQO تقليصاً ملحوظاً في عدد البوابات [1]:
- حتى 10 أضعاف أقل من البوابات المتشابكة مقارنةً بالتلدين الكمومي الرقمي (DQA)
- تُتيح الدوائر الأكثر ضحالة بشكل ملحوظ:
- تراكم أخطاء أقل أثناء التنفيذ الكمومي
- القدرة على معالجة مسائل أكبر على الأجهزة الكمومية الحالية
- عدم الحاجة إلى تقنيات تخفيف الأخطاء
التصميم غير التغايري: على عكس الخوارزميات التغايرية التي تتطلب نحو 100 تكرار، تحتاج خوارزمية bf-DCQO عادةً إلى نحو 10 تكرارات فقط [1]. يتحقق ذلك من خلال:
- حسابات ذكية للحقل المتحيِّز من توزيعات الحالة المقيسة
- بدء كل تكرار من حالة طاقة قريبة من الحل السابق
- معالجة كلاسيكية متكاملة مع البحث المحلي
البروتوكولات المضادة للحث: تدمج الخوارزمية حدوداً مضادة للحث تُثبِّط الإثارات الكمومية غير المرغوبة أثناء أوقات التطور القصيرة، مما يُمكِّن النظام من البقاء قرب الحالة الأساسية حتى في ظل الانتقالات السريعة [1].
المتطلبات
قبل البدء بهذا البرنامج التعليمي، تأكَّد من تثبيت ما يلي:
- Qiskit IBM Runtime (
pip install qiskit-ibm-runtime) - Qiskit Functions (
pip install qiskit-ibm-catalog) - NumPy (
pip install numpy) - Requests (
pip install requests) - Opt Mapper Qiskit addon (
pip install qiskit-addon-opt-mapper)
ستحتاج أيضاً إلى الحصول على صلاحية الوصول إلى وظيفة محسِّن Iskay الكمومي من كتالوج وظائف Qiskit.
الإعداد
أولاً، استورِد جميع الحزم المطلوبة لهذا البرنامج التعليمي.
# Added by doQumentation — installs packages not in the Binder environment
%pip install -q qiskit-addon-opt-mapper
import os
import tempfile
import time
from typing import Tuple, Optional
import numpy as np
import requests
from qiskit_ibm_catalog import QiskitFunctionsCatalog
from qiskit_addon_opt_mapper import OptimizationProblem
from qiskit_addon_opt_mapper.converters import OptimizationProblemToQubo
print("All required libraries imported successfully")
تهيئة بيانات اعتماد IBM Quantum
حدِّد بيانات اعتماد منصة IBM Quantum®. ستحتاج إلى:
- رمز API: مفتاح API المكوَّن من 44 حرفاً من منصة IBM Quantum
- Instance CRN: معرِّف نسختك على IBM Cloud®
token = "<YOUR_API_KEY>"
instance = "<YOUR_INSTANCE_CRN>"
الخطوة 1: تعيين المدخلات الكلاسيكية إلى مسألة كمومية
نبدأ بتعيين مسألتنا الكلاسيكية إلى تمثيل متوافق مع الحوسبة الكمومية. تشمل هذه الخطوة:
- الاتصال بمحسِّن Iskay الكمومي
- تحميل مسألة تقسيم السوق وصياغتها
- فهم خوارزمية bf-DCQO التي ستحل المسألة
الاتصال بمحسِّن Iskay الكم ومي
نبدأ بإنشاء اتصال بكتالوج وظائف Qiskit وتحميل محسِّن Iskay الكمومي. محسِّن Iskay هو وظيفة كمومية مقدَّمة من Kipu Quantum تُنفِّذ خوارزمية bf-DCQO لحل مسائل التحسين على الأجهزة الكمومية.
catalog = QiskitFunctionsCatalog(token=token, instance=instance)
iskay_solver = catalog.load("kipu-quantum/iskay-quantum-optimizer")
print("Iskay optimizer loaded successfully")
print("Ready to solve optimization problems using bf-DCQO algorithm")