আমি এমন একটি ল্যাবে কাজ করি যা মিশ্র-পূর্ণসংখ্যা এবং নন-উত্তল সমস্যার বিশ্বব্যাপী অনুকূলিতকরণ করে। ওপেন সোর্স অপ্টিমাইজেশন সলভারগুলির সাথে আমার অভিজ্ঞতাটি হ'ল উন্নততরগুলি সাধারণত একটি সংকলিত ভাষায় রচিত হয় এবং বাণিজ্যিক অপ্টিমাইজেশান প্যাকেজগুলির তুলনায় এগুলি ভালভাবে ভাড়া নেয়।
যদি আপনি আপনার সমস্যাটিকে একটি সুস্পষ্ট সমীকরণের সিস্টেম হিসাবে তৈরি করতে পারেন এবং একটি নিখরচায়কের প্রয়োজন হয় তবে অরন যেমন বলেছিলেন, আপনার সেরা বেটটি সম্ভবত আইপোপটি। অন্যান্য ফ্রি সলভারগুলি COIN-OR ওয়েব সাইটে পাওয়া যাবে। আমার জানা মতে, অ-লাইনার সলভারগুলির বিকাশকারীদের দ্বারা পাইথন বাইন্ডিং সরবরাহ করা হয় না; আপনি যে কোনও বাঁধাই খুঁজে পান তা তৃতীয় পক্ষ হতে পারে। ভাল সমাধানগুলি পেতে, আপনাকে উপযুক্ত স্টোকাস্টিক গ্লোবাল অপটিমাইজেশন হিউরিস্টিক্সে, বা শাখা-ও-আবদ্ধের মতো একটি নির্বিচারবাদী গ্লোবাল অপ্টিমাইজেশন অ্যালগরিদমে খুঁজে পাওয়া কোনও ননলাইনার, উত্তল সল্ভারও মুড়ে ফেলতে হবে। অন্যথা, আপনি Bonmin বা Couenne, এই দুই ধরনের নির্ণায়ক অ উত্তল অপ্টিমাইজেশান solvers সঞ্চালন যে serviceably ভাল রাষ্ট্রীয় অত্যাধুনিক সমাধানকারী, এর তুলনায় ব্যবহার করতে পারে ব্যারন ।
আপনি যদি বাণিজ্যিক অপ্টিমাইজেশন সলভার ক্রয় করতে পারেন তবে আপনি গ্যাম মডেলিংয়ের ভাষাটি বিবেচনা করতে পারেন , যার মধ্যে বেশ কয়েকটি ননলাইনার অপ্টিমাইজেশন সলভার রয়েছে। বিশেষ উল্লেখটির মধ্যে রয়েছে সলভারস কনফট, এসএনওপিটি এবং বারোন ইন্টারফেস। (কনপট এবং এসএনওপিটি উত্তল দ্রাবক)) অতীতে আমি যে কলডেজী সমাধানটি ব্যবহার করেছি তা হ'ল গ্যামস ফাইলটি লেখার জন্য ফোর্টরান (বা মতলব) ভাষার বাইন্ডিং ব্যবহার করা এবং ফোর্টরান (বা মতলব) থেকে জিএএমএস কল করতে গণনা করা একটি অপ্টিমাইজেশান সমস্যার সমাধান। গ্যামের পাইথন ভাষার বাইন্ডিং রয়েছে এবং খুব প্রতিক্রিয়াশীল সাপোর্ট স্টাফ যদি কোনও সমস্যা হয় তবে সাহায্য করতে ইচ্ছুক। (অস্বীকৃতি: GAMS এর সাথে আমার কোনও সম্পর্ক নেই, তবে আমার ল্যাবটির একটি গ্যাম লাইসেন্সের মালিকানা রয়েছে sol) বাণিজ্যিক সমাধানকারীদের চেয়ে খারাপ কিছু হওয়া উচিত নয়fmincon
; আসলে, আমি যদি তারা আরও ভাল না হতবাক হতবাক। যদি আপনার সমস্যাগুলি আকারে পর্যাপ্ত পরিমাণে ছোট হয়, তবে আপনাকে এমনকি জিএএমএস লাইসেন্স এবং সলভারদের লাইসেন্স কেনার দরকারও পড়তে পারে না, কারণ জিএএমএসের একটি মূল্যায়ন অনুলিপি তাদের ওয়েবসাইট থেকে ডাউনলোড করা যেতে পারে। অন্যথায়, আপনি সম্ভবত সিদ্ধান্ত নিতে চাইবেন কোনও গ্যামস লাইসেন্সের সাথে একত্রে কোন সমাধানকারী ক্রয় করবেন। এটি লক্ষণীয় যে বারোনকে একটি মিশ্র-পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামিং সলভার প্রয়োজন হয় এবং দুটি সেরা মিশ্র-পূর্ণসংখ্যার লিনিয়ার প্রোগ্রামিং সলভার সিপিএলএক্স এবং গুরোবি জন্য লাইসেন্সগুলি একাডেমিকদের জন্য বিনামূল্যে, সুতরাং আপনি কেবল গ্যামস ইন্টারফেস কিনে পালিয়ে যেতে সক্ষম হতে পারেন ইন্টারফেস এবং সলভার লাইসেন্সের চেয়ে, যা আপনাকে বেশ কিছুটা অর্থ সাশ্রয় করতে পারে।
এই পয়েন্টটি পুনরাবৃত্তি বহন করে: আমি উপরে উল্লিখিত যে কোনও ডিস্ট্রিমেন্টিক নন-কনভেক্স অপটিমাইজেশন সলভারগুলির জন্য, আপনাকে মডেলটি সুস্পষ্ট সমীকরণের সেট হিসাবে তৈরি করতে সক্ষম হতে হবে। অন্যথায়, নন-উত্তল অপ্টিমাইজেশান অ্যালগরিদমগুলি কাজ করবে না, কারণ তাদের সমস্ত শাখা-এবং-সীমাবদ্ধ-মতো অ্যালগরিদমগুলির জন্য উত্তল শিথিলকরণের জন্য প্রতীকী বিশ্লেষণের উপর নির্ভর করে।
আপডেট: এক এই ভেবে যে প্রথমে আমার ঘটেছে নি ছিল যে এছাড়াও উন্নত অপ্টিমাইজেশান (জন্য টুলকিট পেরেছিলাম টিএও ) এবং PETSc ব্যবহার tao4py এবং petsc4py PETSc সঙ্গে, যা সহজ parallelization সম্ভাব্য যোগ সুবিধা হবে, এবং ওঠানামা পরিচিত এবং ACTS সরঞ্জামগুলি।
আপডেট # 2: আপনার উল্লিখিত অতিরিক্ত তথ্যের উপর ভিত্তি করে সিক্যুয়ালিয়াল কোয়াড্র্যাটিক প্রোগ্রামিং (এসকিউপি) পদ্ধতিগুলি আপনার সেরা বাজি হতে চলেছে। এসকিউপি পদ্ধতিগুলি সাধারণত অভ্যন্তরীণ পয়েন্ট পদ্ধতির তুলনায় আরও শক্তিশালী হিসাবে বিবেচিত হয় তবে ঘন লিনিয়ার দ্রাবকগুলির প্রয়োজনীয়তার একটি কমতি রয়েছে। যেহেতু আপনি গতির চেয়ে দৃust়তার বিষয়ে বেশি যত্নশীল তাই এসকিউপি আপনার সেরা বাজি হতে চলেছে। পাইথনে লিখিত কোনও ভাল এসকিউপি সলভার খুঁজে পাচ্ছি না (এবং স্পষ্টতই, এই প্রযুক্তিগত প্রতিবেদনে আরগন-এ সুইভেন লেফারও পারেনি )। আমি অনুমান করছি যে সায়পি ও ওপেনঅ্যাপের মতো প্যাকেজগুলিতে প্রয়োগ করা অ্যালগরিদমগুলিতে কিছু এসকিউপি অ্যালগরিদমের বাস্তব কঙ্কাল রয়েছে, তবে অভিযোজিত সমস্যাগুলি কাটিয়ে উঠতে আরও উন্নত কোড ব্যবহার করে এমন বিশেষায়িত হিউরিস্টিক্স ছাড়া। আপনি NLopt চেষ্টা করতে পারেন, এমআইটিতে স্টিভেন জনসন লিখেছেন। আমার এটি নিয়ে উচ্চ প্রত্যাশা নেই কারণ আমার পরিচিতিটির কোনও খ্যাতি নেই, তবে স্টিভেন জনসন একজন উজ্জ্বল লোক যিনি ভাল সফ্টওয়্যার লেখেন (সর্বোপরি তিনি এফএফটিডব্লু সহ-লেখেন)। এটি এসকিউপি-র একটি সংস্করণ বাস্তবায়ন করে; যদি এটি ভাল সফ্টওয়্যার, আমাকে জানাবেন।
আমি আশা করছিলাম যে টিএওর একটি সীমিত অপ্টিমাইজেশন সলভারের পথে কিছু থাকবে তবে তা হয় না। তাদের অবশ্যই এটি তৈরি করতে আপনি যা ব্যবহার করতে পারেন; তাদের সেখানে অনেকগুলি উপাদান রয়েছে। আপনি যেমন উল্লেখ করেছেন, যদিও এটি করা আপনার পক্ষে আরও অনেক বেশি কাজ হবে এবং আপনি যদি এই ধরণের সমস্যায় চলে যান তবে আপনি সম্ভবত একটি টিওও বিকাশকারী হতে পারেন।
সেই অতিরিক্ত তথ্যের সাথে, আপনি পাইথন থেকে জিএএমএসে কল করার আরও ভাল ফলাফল পাওয়ার সম্ভাবনা বেশি (যদি এটি কোনও বিকল্পই হয়), বা আইপিওপিটি পাইথন ইন্টারফেসটি প্যাচ করার চেষ্টা করছেন। আইপিওপিটি যেহেতু একটি অভ্যন্তর বিন্দু পদ্ধতি ব্যবহার করে, এটি ততটা শক্তিশালী হবে না তবে ম্যান্টাবের এসকিউপি প্রয়োগের চেয়ে অ্যান্ড্রিয়াসের একটি অভ্যন্তরীণ পয়েন্ট পদ্ধতির প্রয়োগ যথেষ্ট ভাল, এক্ষেত্রে আপনি সম্ভবত দৃust়তার ত্যাগ করছেন না। নিশ্চিতভাবে জানতে আপনাকে কিছু কেস স্টাডি চালাতে হবে।
বহুবর্ষীয় বৈষম্য সীমাবদ্ধতা হিসাবে যুক্তিযুক্ত বৈষম্য সীমাবদ্ধতাগুলি সংস্কার করার কৌশল সম্পর্কে আপনি ইতিমধ্যে অবগত আছেন (এটি আপনার বইতে রয়েছে); এটি বারোন এবং কিছু অন্যান্য নন-কনভেক্স সলভারকে সহায়তা করবে এর কারণ হ'ল এটি অতিরিক্ত বৈধ অসমতা তৈরি করতে শব্দ বিশ্লেষণ ব্যবহার করতে পারে যা এটি সলভার রূপান্তরকে উন্নতি করতে এবং গতি বাড়ানোর জন্য কাট হিসাবে ব্যবহার করতে পারে।
আইপিপটি-তে গ্যামস পাইথন বাইন্ডিংস এবং পাইথন ইন্টারফেস বাদ দিয়ে উত্তরটি নেই, পাইথনের জন্য এখনও কোনও উচ্চ মানের ননলাইনার প্রোগ্রামিং সলভার নেই। হতে পারে @ ডোমিনিক এনএলপাই দিয়ে এটি পরিবর্তন করবে।
আপডেট # 3: পাইথন ভিত্তিক দ্রাবকটি পাইগএমও পেয়েছে এমন আরও বুনো ছুরিকা , যা পাইগমোর সাথে পাইথন বাইন্ডিংয়ের একটি সেট, একটি সি ++ ভিত্তিক গ্লোবাল মাল্টিবাজেক্টিভ অপটিমাইজেশন সলভার। যদিও এটি বহুমুখী অপ্টিমাইজেশনের জন্য তৈরি করা হয়েছিল, এটি একক উদ্দেশ্যমূলক ননলাইনার প্রোগ্রামিংয়েও ব্যবহৃত হতে পারে এবং অন্যান্য সলভারগুলির মধ্যে আইপিওপিটি এবং এসএনওপিটি-তে পাইথন ইন্টারফেস রয়েছে। এটি ইউরোপীয় মহাকাশ সংস্থার মধ্যে তৈরি করা হয়েছিল , সুতরাং আশা করি এর পিছনে একটি সম্প্রদায় রয়েছে। এটি তুলনামূলকভাবে সম্প্রতি প্রকাশিত হয়েছিল (24 নভেম্বর, 2011)।