SCIPincludeBranchruleMybranchingrule() دعا مرات عديدة

StackOverflow https://stackoverflow.com//questions/25018191

  •  21-12-2019
  •  | 
  •  

سؤال

انا بما في ذلك بلدي المتفرعة القاعدة على "سكيب" و أنا باستخدام SCIPincludeBranchruleMybranchingrule() وظيفة تهيئة بعض المتفرعة قاعدة البيانات.واحدة من الأشياء التي أقوم به هو الاتصال على SCIPgetNVars() وظيفة.عند تشغيل التعليمات البرمجية, أنا أرى أن يتم استدعاء الدالة عدة مرات (ليس مرة واحدة ، كما اعتقدت ، قبل أن B&B خوارزمية يبدأ) و أحصل على الخطأ التالي سببها SCIPgetNVars() وظيفة:

[src/scip/scip.c:10048] ERROR: invalid SCIP stage <0>

أنا في حيرة حول استخدام SCIPincludeBranchruleMybranchingrule(), لأن الوثائق الأمريكية أن هذه الوظيفة يمكن استخدامها لتهيئة المتفرعة قاعدة البيانات.أود أن تهيئة بعض البيانات التي يمكن استخدامها في كل من B&B عقدة ربما المتفرعة قاعدة البيانات ليست الطريقة الصحيحة للقيام بذلك.

سوف نقدر أي مساعدة!

هل كانت مفيدة؟

المحلول

الشيء المهم أن نلاحظ هنا أنه لا يوجد أي مشكلة متوفرة حتى الآن التي تريد الوصول إلى المتغيرات.

القواعد المتفرعة من "سكيب" توفر العديد من الاسترجاعات البيانات التهيئة.على include- رد هو إلا مرة واحدة عندما "سكيب" يبدأ الملقب في SCIP_STAGE_INIT مرحلة "سكيب".في هذه المرحلة كنت تريد المتفرعة من القاعدة إلى إبلاغ "سكيب" أنه موجود ، واختياريا المستخدم إدخال بعض المعلمات المشكلة مستقلة.

هناك اثنين من أكثر الاستدعاء-الوظائف التي تسمح لتخزين البيانات والتي هي أكثر ملاءمة ما كنت تنوي القيام به ؛ SCIPbranchruleInitsolMybranchingrule وهو ما يسمى قبل (presolved) المشكلة يمكن حلها عن طريق فرع و لا بد ، SCIPbranchruleInitMybranchingrule, وهو ما يسمى بعد حديثا قراءة مشكلة تحول.

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

لمعلوماتك:البيانات التي تم تخصيصها خلال وتشمل-رد يمكن تحريرها SCIPbranchruleFreeMybranchingrule-الاستدعاء الذي يتم تنفيذه مرة واحدة عندما "سكيب" هو على وشك الخروج و مجانا كل اليسرى نظام الذاكرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top