ইনপুট মডেল সমাধান করে এবং একবারে ফলাফল প্রদান করে। যখন আপনার কলব্যাক, ইনক্রিমেন্টালিটি এবং সমাধানের অগ্রগতি ট্র্যাক করার প্রয়োজন নেই তখন এটি ব্যবহার করুন।
HTTP অনুরোধ
POST https://optimization.googleapis.com/v1/mathopt:solveMathOptModel
URL gRPC ট্রান্সকোডিং সিনট্যাক্স ব্যবহার করে।
শরীরের অনুরোধ
অনুরোধের অংশে নিম্নলিখিত কাঠামো সহ ডেটা রয়েছে:
JSON প্রতিনিধিত্ব |
---|
{ "solverType": enum ( |
ক্ষেত্র | |
---|---|
solverType | ঐচ্ছিক। সংখ্যাগতভাবে সমস্যা সমাধানের জন্য সমাধানকারী প্রকার। মনে রাখবেন যে যদি একটি সমাধানকারী মডেলের একটি নির্দিষ্ট বৈশিষ্ট্য সমর্থন না করে, তাহলে অপ্টিমাইজেশন পদ্ধতি সফল হবে না। |
model | প্রয়োজন। সমাধান করার জন্য অপ্টিমাইজেশন সমস্যার একটি গাণিতিক উপস্থাপনা। |
parameters | ঐচ্ছিক। একটি একক সমাধান নিয়ন্ত্রণ করার পরামিতি। enableOutput প্যারামিটারটি বিশেষভাবে পরিচালনা করা হয়। সমাধানকারীদের জন্য যারা বার্তা কলব্যাক সমর্থন করে, এটিকে সত্যে সেট করলে সার্ভার একটি বার্তা কলব্যাক নিবন্ধন করবে। ফলস্বরূপ বার্তাগুলি SolveMathOptModelResponse.messages এ ফেরত দেওয়া হবে। অন্যান্য সমাধানকারীদের জন্য, enableOutput কে সত্যে সেট করার ফলে একটি ত্রুটি দেখা দেবে। |
modelParameters | ঐচ্ছিক। ইনপুট মডেলের জন্য নির্দিষ্ট একটি একক সমাধান নিয়ন্ত্রণ করার পরামিতি (মডেল স্বাধীন প্যারামিটারের জন্য SolveParametersProto দেখুন)। |
প্রতিক্রিয়া শরীর
MathOpt এ একটি unary রিমোট সমাধানের জন্য প্রতিক্রিয়া।
সফল হলে, প্রতিক্রিয়া বডিতে নিম্নলিখিত কাঠামোর সাথে ডেটা থাকে:
JSON প্রতিনিধিত্ব |
---|
{
"result": {
object ( |
ক্ষেত্র | |
---|---|
result | অনুরোধে মডেল সমাধানের আউটপুট বর্ণনা। |
messages[] | যদি SolveParametersProto.enable_output ব্যবহার করা হয়ে থাকে, তাহলে এতে সমাধানকারীদের জন্য লগ বার্তা থাকবে যা বার্তা কলব্যাক সমর্থন করে। |
SolverTypeProto
সমাধানকারী MathOpt দ্বারা সমর্থিত।
Enums | |
---|---|
SOLVER_TYPE_UNSPECIFIED | |
SOLVER_TYPE_GSCIP | সলভিং কনস্ট্রেন্ট ইন্টিজার প্রোগ্রাম (SCIP) সমাধানকারী (তৃতীয় পক্ষ)। LP, MIP, এবং nonconvex পূর্ণসংখ্যা দ্বিঘাত সমস্যা সমর্থন করে। যদিও LP-এর জন্য কোনো দ্বৈত ডেটা ফেরত দেওয়া হয় না। LP-এর জন্য GLOP পছন্দ করুন। |
SOLVER_TYPE_GUROBI | গুরোবি সমাধানকারী (তৃতীয় পক্ষ)। LP, MIP, এবং nonconvex পূর্ণসংখ্যা দ্বিঘাত সমস্যা সমর্থন করে। সাধারণত দ্রুততম বিকল্প, কিন্তু বিশেষ লাইসেন্স আছে. |
SOLVER_TYPE_GLOP | Google এর Glop সমাধানকারী। প্রাথমিক এবং দ্বৈত সিমপ্লেক্স পদ্ধতি সহ LP সমর্থন করে। |
SOLVER_TYPE_CP_SAT | Google এর CP-SAT সমাধানকারী। সমস্যাগুলিকে সমর্থন করে যেখানে সমস্ত ভেরিয়েবল পূর্ণসংখ্যা এবং আবদ্ধ (বা সমাধানের পরে বোঝানো হয়)। ক্রমাগত ভেরিয়েবলের সাথে সমস্যা পুনঃস্কেল এবং বিচ্ছিন্ন করার জন্য পরীক্ষামূলক সমর্থন। |
SOLVER_TYPE_PDLP | Google এর PDLP সমাধানকারী। LP এবং উত্তল তির্যক চতুর্মুখী উদ্দেশ্য সমর্থন করে। সিমপ্লেক্সের পরিবর্তে প্রথম অর্ডার পদ্ধতি ব্যবহার করে। অনেক বড় সমস্যা সমাধান করতে পারে। |
SOLVER_TYPE_GLPK | GNU লিনিয়ার প্রোগ্রামিং কিট (GLPK) (তৃতীয় পক্ষ)। MIP এবং LP সমর্থন করে। থ্রেড-নিরাপত্তা: GLPK মেমরি বরাদ্দের জন্য থ্রেড-স্থানীয় স্টোরেজ ব্যবহার করে। ফলস্বরূপ সমাধানকারী দৃষ্টান্তগুলিকে একই থ্রেডে ধ্বংস করতে হবে যেভাবে সেগুলি তৈরি করা হয়েছে বা GLPK ক্র্যাশ হবে। সলভার তৈরি করতে ব্যবহৃত থ্রেডের চেয়ে অন্য থ্রেড থেকে Solver::Solve() কল করা ঠিক আছে বলে মনে হচ্ছে কিন্তু এটি GLPK দ্বারা নথিভুক্ত নয় এবং এড়িয়ে যাওয়া উচিত। প্রিসলভারের সাথে একটি LP সমাধান করার সময়, একটি সমাধান (এবং অবাউন্ড রশ্মি) শুধুমাত্র তখনই ফেরত দেওয়া হয় যদি একটি সর্বোত্তম সমাধান পাওয়া যায়। অন্যথায় কিছুই ফেরত দেওয়া হয় না। বিস্তারিত জানার জন্য glpk-5.0.tar.gz থেকে উপলব্ধ glpk-5.0/doc/glpk.pdf পৃষ্ঠা #40 দেখুন। |
SOLVER_TYPE_OSQP | অপারেটর স্প্লিটিং কোয়াড্রেটিক প্রোগ্রাম (OSQP) সমাধানকারী (তৃতীয় পক্ষ)। রৈখিক সীমাবদ্ধতা এবং রৈখিক বা উত্তল দ্বিঘাত উদ্দেশ্যগুলির সাথে ক্রমাগত সমস্যাগুলিকে সমর্থন করে। একটি প্রথম অর্ডার পদ্ধতি ব্যবহার করে। |
SOLVER_TYPE_ECOS | এমবেডেড কনিক সলভার (ECOS) (তৃতীয় পক্ষ)। LP এবং SOCP সমস্যা সমর্থন করে। অভ্যন্তরীণ পয়েন্ট পদ্ধতি (বাধা) ব্যবহার করে। |
SOLVER_TYPE_SCS | স্প্লিটিং কনিক সলভার (এসসিএস) (তৃতীয় পক্ষ)। LP এবং SOCP সমস্যা সমর্থন করে। একটি প্রথম অর্ডার পদ্ধতি ব্যবহার করে। |
SOLVER_TYPE_HIGHS | হাইজিএইচএস সমাধানকারী (তৃতীয় পক্ষ)। LP এবং MIP সমস্যাগুলিকে সমর্থন করে (উত্তল QP গুলি বাস্তবায়িত নয়)। |
SOLVER_TYPE_SANTORINI | একটি MIP সমাধানকারীর MathOpt এর রেফারেন্স বাস্তবায়ন। ধীর/উৎপাদনের জন্য প্রস্তাবিত নয়। একটি LP সমাধানকারী নয় (কোন দ্বৈত তথ্য ফেরত দেওয়া হয়নি)। |
মডেলপ্রোটো
একটি অপ্টিমাইজেশান সমস্যা। MathOpt সমর্থন করে: - ঐচ্ছিক সসীম সীমার সাথে ক্রমাগত এবং পূর্ণসংখ্যার সিদ্ধান্তের ভেরিয়েবল। - রৈখিক এবং চতুর্মুখী উদ্দেশ্য (একক বা একাধিক উদ্দেশ্য), হয় ন্যূনতম বা সর্বাধিক। - বিভিন্ন ধরনের সীমাবদ্ধতা, যার মধ্যে রয়েছে: * রৈখিক সীমাবদ্ধতা * চতুর্মুখী সীমাবদ্ধতা * দ্বিতীয় ক্রম শঙ্কু সীমাবদ্ধতা * যৌক্তিক সীমাবদ্ধতা > SOS1 এবং SOS2 সীমাবদ্ধতা > নির্দেশক সীমাবদ্ধতা
ডিফল্টরূপে, সীমাবদ্ধতাগুলি "আইডি-টু-ডেটা" মানচিত্রে উপস্থাপন করা হয়। যাইহোক, আমরা আরও দক্ষ "স্ট্রাকট-অফ-অ্যারে" বিন্যাসে রৈখিক সীমাবদ্ধতার প্রতিনিধিত্ব করি।
JSON প্রতিনিধিত্ব |
---|
{ "name": string, "variables": { object ( |
ক্ষেত্র | |
---|---|
name | |
variables | |
objective | মডেলের প্রাথমিক উদ্দেশ্য। |
auxiliaryObjectives | বহু-উদ্দেশ্য মডেলে ব্যবহারের জন্য সহায়ক উদ্দেশ্য। মানচিত্র কী আইডি অবশ্যই [0, সর্বোচ্চ(int64)) এর মধ্যে থাকতে হবে। প্রতিটি অগ্রাধিকার, এবং প্রতিটি খালি নাম অবশ্যই অনন্য এবং প্রাথমিক |
linearConstraints | |
linearConstraintMatrix | রৈখিক সীমাবদ্ধতার জন্য পরিবর্তনশীল সহগ। যদি এই সীমাবদ্ধতার সাথে জড়িত একটি ভেরিয়েবল মুছে ফেলা হয়, তবে এটিকে শূন্যে সেট করা হিসাবে বিবেচনা করা হয়। প্রয়োজনীয়তা: * linearConstraintMatrix.row_ids হল linearConstraints.ids এর উপাদান। * linearConstraintMatrix.column_ids হল variables.ids এর উপাদান। * ম্যাট্রিক্স এন্ট্রি নির্দিষ্ট নয় শূন্য। * linearConstraintMatrix.values সব সীমিত হতে হবে। |
quadraticConstraints | মডেলে চতুর্মুখী সীমাবদ্ধতা। |
secondOrderConeConstraints | মডেলে দ্বিতীয় ক্রম শঙ্কু সীমাবদ্ধতা. |
sos1Constraints | SOS1 মডেলের সীমাবদ্ধতা, যা সীমাবদ্ধ করে যে সর্বাধিক একটি |
sos2Constraints | SOS2 মডেলের সীমাবদ্ধতা, যা সীমাবদ্ধ করে যে |
indicatorConstraints | মডেলে নির্দেশক সীমাবদ্ধতা, যা প্রয়োগ করে যে, যদি একটি বাইনারি "সূচক পরিবর্তনশীল" একটিতে সেট করা হয়, তাহলে একটি "উহ্য সীমাবদ্ধতা" অবশ্যই ধরে রাখতে হবে। |
ভেরিয়েবল প্রোটো
নীচে ব্যবহৃত হিসাবে, আমরা "#variables" = size(VariablesProto.ids) সংজ্ঞায়িত করি।
JSON প্রতিনিধিত্ব |
---|
{ "ids": [ string ], "lowerBounds": [ number ], "upperBounds": [ number ], "integers": [ boolean ], "names": [ string ] } |
ক্ষেত্র | |
---|---|
ids[] | অ-নেতিবাচক এবং কঠোরভাবে বৃদ্ধি করা আবশ্যক। সর্বোচ্চ(int64) মান ব্যবহার করা যাবে না। |
lowerBounds[] | # ভেরিয়েবলের সমান দৈর্ঘ্য, [-inf, inf-এ মান থাকতে হবে। |
upperBounds[] | # ভেরিয়েবলের সমান দৈর্ঘ্য থাকা উচিত, (-inf, inf] এর মান। |
integers[] | # ভেরিয়েবলের সমান দৈর্ঘ্য থাকা উচিত। ক্রমাগত ভেরিয়েবলের জন্য মান মিথ্যা এবং পূর্ণসংখ্যা ভেরিয়েবলের জন্য সত্য। |
names[] | যদি সেট করা না থাকে, তাহলে ধরে নেওয়া হবে সব খালি স্ট্রিং। অন্যথায়, # ভেরিয়েবলের সমান দৈর্ঘ্য থাকা উচিত। সব খালি নাম আলাদা হতে হবে। |
উদ্দেশ্যপ্রণোদিত
JSON প্রতিনিধিত্ব |
---|
{ "maximize": boolean, "offset": number, "linearCoefficients": { object ( |
ক্ষেত্র | |
---|---|
maximize | মিথ্যা হল মিনিমাইজ, সত্য হল সর্বোচ্চ করা |
offset | সসীম হতে হবে এবং NaN নয়। |
linearCoefficients | উদ্দেশ্যপ্রণোদিত শর্তাবলী যা সিদ্ধান্তের ভেরিয়েবলে রৈখিক। প্রয়োজনীয়তা: * linearCoefficients.ids হল VariablesProto.ids এর উপাদান। * VariablesProto নির্দিষ্ট করা হয়নি শূন্যের সাথে সঙ্গতিপূর্ণ। * linearCoefficients.values সব সীমিত হতে হবে। * linearCoefficients.values শূন্য হতে পারে, কিন্তু এটি শুধু স্থান নষ্ট করে। |
quadraticCoefficients | উদ্দেশ্যমূলক পদ যা সিদ্ধান্তের ভেরিয়েবলে দ্বিঘাতী। SparseDoubleMatrixProto বার্তাগুলি ছাড়াও প্রয়োজনীয়তাগুলি: * quadraticCoefficients.row_ids এর প্রতিটি উপাদান এবং quadraticCoefficients.column_ids এর প্রতিটি উপাদান অবশ্যই VariablesProto.ids এর একটি উপাদান হতে হবে৷ * ম্যাট্রিক্স অবশ্যই উপরের ত্রিভুজাকার হতে হবে: প্রতিটি i, quadraticCoefficients.row_ids[i] <= quadraticCoefficients.column_ids[i] এর জন্য। দ্রষ্টব্য: * স্পষ্টভাবে সংরক্ষিত নয় এমন শর্তগুলির শূন্য সহগ রয়েছে৷ * quadraticCoefficients.coefficient এর উপাদান শূন্য হতে পারে, কিন্তু এটি শুধু স্থান নষ্ট করে। |
name | এই ক্ষেত্রে অভিভাবক বার্তাগুলির স্বতন্ত্রতার প্রয়োজনীয়তা থাকতে পারে; যেমন, ModelProto.objectives এবং AuxiliaryObjectivesUpdatesProto.new_objectives দেখুন। |
priority | মাল্টি-অবজেক্টিভ সমস্যার জন্য, অন্যদের তুলনায় এই উদ্দেশ্যের অগ্রাধিকার (নিম্ন বেশি গুরুত্বপূর্ণ)। এই মান নেতিবাচক হতে হবে. উপরন্তু, মডেলের প্রতিটি উদ্দেশ্য অগ্রাধিকার সমাধানের সময় আলাদা হতে হবে। এই শর্তটি প্রোটো স্তরে বৈধ নয়, তাই মডেলগুলির সাময়িকভাবে একই অগ্রাধিকারের সাথে উদ্দেশ্য থাকতে পারে। |
SparseDoubleVectorProto
দ্বিগুণ ভেক্টরের একটি বিক্ষিপ্ত উপস্থাপনা।
JSON প্রতিনিধিত্ব |
---|
{ "ids": [ string ], "values": [ number ] } |
ক্ষেত্র | |
---|---|
ids[] | সমস্ত উপাদান স্বতন্ত্র সহ (ক্রমবর্ধমান ক্রমানুসারে) বাছাই করা আবশ্যক। |
values[] | আইডির সমান দৈর্ঘ্য থাকতে হবে। NaN নাও থাকতে পারে। |
SparseDoubleMatrixProto
ডাবলের একটি ম্যাট্রিক্সের একটি বিক্ষিপ্ত উপস্থাপনা।
ম্যাট্রিক্সটি সারি আইডি, কলাম আইডি এবং সহগ এর তিনগুণ হিসাবে সংরক্ষণ করা হয়। এই তিনটি ভেক্টর অবশ্যই সমান দৈর্ঘ্যের হতে হবে। সকল i-এর জন্য, tuple (rowIds[i], columnIds[i]) আলাদা হওয়া উচিত। এন্ট্রি প্রধান ক্রম সারি হতে হবে.
JSON প্রতিনিধিত্ব |
---|
{ "rowIds": [ string ], "columnIds": [ string ], "coefficients": [ number ] } |
ক্ষেত্র | |
---|---|
rowIds[] | |
columnIds[] | |
coefficients[] | NaN নাও থাকতে পারে। |
Linear ConstraintsProto
নীচে ব্যবহৃত হিসাবে, আমরা "#লিনিয়ার সীমাবদ্ধতা" = আকার (LinearConstraintsProto.ids) সংজ্ঞায়িত করি।
JSON প্রতিনিধিত্ব |
---|
{ "ids": [ string ], "lowerBounds": [ number ], "upperBounds": [ number ], "names": [ string ] } |
ক্ষেত্র | |
---|---|
ids[] | অ-নেতিবাচক এবং কঠোরভাবে বৃদ্ধি করা আবশ্যক। সর্বোচ্চ(int64) মান ব্যবহার করা যাবে না। |
lowerBounds[] | # রৈখিক সীমাবদ্ধতার সমান দৈর্ঘ্য থাকা উচিত, [-inf, inf) এর মান। |
upperBounds[] | # রৈখিক সীমাবদ্ধতার সমান দৈর্ঘ্য থাকা উচিত, (-inf, inf] এর মান। |
names[] | যদি সেট করা না থাকে, তাহলে ধরে নেওয়া হবে সব খালি স্ট্রিং। অন্যথায়, #রৈখিক সীমাবদ্ধতার সমান দৈর্ঘ্য থাকা উচিত। সব খালি নাম আলাদা হতে হবে। |
Quadratic ConstraintProto
ফর্মের একটি একক দ্বিঘাত সীমাবদ্ধতা: lb <= sum{linearTerms} + sum{quadraticTerms} <= ub.
যদি এই সীমাবদ্ধতার সাথে জড়িত একটি ভেরিয়েবল মুছে ফেলা হয়, তবে এটিকে শূন্যে সেট করা হিসাবে বিবেচনা করা হয়।
JSON প্রতিনিধিত্ব |
---|
{ "linearTerms": { object ( |
ক্ষেত্র | |
---|---|
linearTerms | সিদ্ধান্তের ভেরিয়েবলে রৈখিক শর্তাবলী। SparseDoubleVectorProto বার্তাগুলির প্রয়োজনীয়তাগুলি ছাড়াও আমাদের প্রয়োজন: * linearTerms.ids হল VariablesProto.ids-এর উপাদান। * linearTerms.values অবশ্যই সীমিত হতে হবে এবং না-NaN। দ্রষ্টব্য: * বাদ দেওয়া পরিবর্তনশীল আইডিগুলির একটি সংশ্লিষ্ট সহগ শূন্য রয়েছে। * linearTerms.values শূন্য হতে পারে, কিন্তু এটি শুধু স্থান নষ্ট করে। |
quadraticTerms | সিদ্ধান্তের ভেরিয়েবলের মধ্যে দ্বিঘাতমূলক পদ। SparseDoubleMatrixProto বার্তাগুলির প্রয়োজনীয়তাগুলি ছাড়াও আমাদের প্রয়োজন যে: * quadraticTerms.row_ids-এর প্রতিটি উপাদান এবং quadraticTerms.column_ids-এর প্রতিটি উপাদান অবশ্যই VariablesProto.ids-এর একটি উপাদান হতে হবে। * ম্যাট্রিক্স অবশ্যই উপরের ত্রিভুজাকার হতে হবে: প্রতিটি i, quadraticTerms.row_ids[i] <= quadraticTerms.column_ids[i] এর জন্য। দ্রষ্টব্য: * স্পষ্টভাবে সংরক্ষিত নয় এমন শর্তগুলির শূন্য সহগ রয়েছে৷ * quadraticTerms.coefficient এর উপাদান শূন্য হতে পারে, কিন্তু এটি শুধু স্থান নষ্ট করে। |
lowerBound | [-inf, inf-এ মান থাকতে হবে, এবং |
upperBound | (-inf, inf]-এ মান থাকতে হবে এবং |
name | এই ক্ষেত্রে অভিভাবক বার্তাগুলির স্বতন্ত্রতার প্রয়োজনীয়তা থাকতে পারে; যেমন, ModelProto.quadratic_constraints এবং QuadraticConstraintUpdatesProto.new_constraints দেখুন। |
SecondOrderConeConstraintProto
ফর্মের একটি একক দ্বিতীয়-ক্রম শঙ্কু সীমাবদ্ধতা:
|| argumentsToNorm
||_2 <= upperBound
,
যেখানে upperBound
এবং argumentsToNorm
এর প্রতিটি উপাদান লিনিয়ার এক্সপ্রেশন।
যদি এই সীমাবদ্ধতার সাথে জড়িত একটি ভেরিয়েবল মুছে ফেলা হয়, তবে এটিকে শূন্যে সেট করা হিসাবে বিবেচনা করা হয়।
JSON প্রতিনিধিত্ব |
---|
{ "upperBound": { object ( |
ক্ষেত্র | |
---|---|
upperBound | |
argumentsToNorm[] | |
name | এই ক্ষেত্রে অভিভাবক বার্তাগুলির স্বতন্ত্রতার প্রয়োজনীয়তা থাকতে পারে; যেমন, |
LinearExpressionProto
একটি রৈখিক অভিব্যক্তির একটি বিক্ষিপ্ত উপস্থাপনা (ভেরিয়েবলের একটি ওজনযুক্ত সমষ্টি, এবং একটি ধ্রুবক অফসেট)।
JSON প্রতিনিধিত্ব |
---|
{ "ids": [ string ], "coefficients": [ number ], "offset": number } |
ক্ষেত্র | |
---|---|
ids[] | ভেরিয়েবলের আইডি। সমস্ত উপাদান স্বতন্ত্র সহ (ক্রমবর্ধমান ক্রমানুসারে) বাছাই করা আবশ্যক। |
coefficients[] | আইডির সমান দৈর্ঘ্য থাকতে হবে। মান সীমিত হতে হবে NaN নাও হতে পারে। |
offset | সসীম হতে হবে এবং NaN নাও হতে পারে। |
SosConstraintProto
একটি একক SOS1 বা SOS2 সীমাবদ্ধতা উপস্থাপনের জন্য ডেটা।
যদি এই সীমাবদ্ধতার সাথে জড়িত একটি ভেরিয়েবল মুছে ফেলা হয়, তবে এটিকে শূন্যে সেট করা হিসাবে বিবেচনা করা হয়।
JSON প্রতিনিধিত্ব |
---|
{
"expressions": [
{
object ( |
ক্ষেত্র | |
---|---|
expressions[] | SOS সীমাবদ্ধতা প্রয়োগ করার জন্য অভিব্যক্তি: * SOS1: সর্বাধিক একটি উপাদান একটি অশূন্য মান নেয়। * SOS2: সর্বাধিক দুটি উপাদান অশূন্য মান নেয়, এবং সেগুলি অবশ্যই পুনরাবৃত্তি ক্রমানুসারে সংলগ্ন হতে হবে। |
weights[] | হয় খালি বা অভিব্যক্তির সমান দৈর্ঘ্যের। যদি খালি থাকে, ডিফল্ট ওজন 1, 2, ... উপস্থিত থাকলে, এন্ট্রিগুলি অবশ্যই অনন্য হতে হবে। |
name | এই ক্ষেত্রে অভিভাবক বার্তাগুলির স্বতন্ত্রতার প্রয়োজনীয়তা থাকতে পারে; যেমন, ModelProto.sos1_constraints এবং SosConstraintUpdatesProto.new_constraints দেখুন। |
IndicatorConstraintProto
ফর্মের একটি একক সূচক সীমাবদ্ধতা উপস্থাপনের জন্য ডেটা: পরিবর্তনশীল(সূচক আইডি) = (অ্যাক্টিভেটঅনজিরো? 0 : 1) ⇒ নিম্নবাউন্ড <= অভিব্যক্তি <= উপরেরবাউন্ড।
যদি এই সীমাবদ্ধতার সাথে জড়িত একটি ভেরিয়েবল (হয় নির্দেশক, বা expression
উপস্থিত হয়) মুছে ফেলা হয়, তাহলে এটিকে শূন্যে সেট করার মতো বিবেচনা করা হয়। বিশেষ করে, ইন্ডিকেটর ভেরিয়েবল মুছে ফেলার মানে হল যে যদি activateOnZero
মিথ্যা হয় তাহলে ইন্ডিকেটর সীমাবদ্ধতা শূন্য থাকে এবং activateOnZero
সত্য হলে এটি একটি রৈখিক সীমাবদ্ধতার সমতুল্য।
JSON প্রতিনিধিত্ব |
---|
{
"activateOnZero": boolean,
"expression": {
object ( |
ক্ষেত্র | |
---|---|
activateOnZero | যদি সত্য হয়, তাহলে যদি নির্দেশক ভেরিয়েবলটি 0 মান নেয়, তাহলে অন্তর্নিহিত সীমাবদ্ধতা অবশ্যই ধরে রাখতে হবে। অন্যথায়, যদি সূচক ভেরিয়েবলটি মান 1 নেয়, তাহলে অন্তর্নিহিত সীমাবদ্ধতা অবশ্যই ধরে রাখতে হবে। |
expression | ধারণকৃত মডেলের ক্ষেত্রে একটি বৈধ লিনিয়ার এক্সপ্রেশন হতে হবে: * |
lowerBound | মান থাকতে হবে [-inf, inf); NaN হতে পারে না। |
upperBound | (-inf, inf]-এ মান থাকতে হবে; NaN হতে পারে না। |
name | এই ক্ষেত্রে অভিভাবক বার্তাগুলির স্বতন্ত্রতার প্রয়োজনীয়তা থাকতে পারে; যেমন, |
indicatorId | একটি বাইনারি ভেরিয়েবলের সাথে সম্পর্কিত একটি আইডি বা সেট করা নেই৷ সেট না থাকলে, নির্দেশক সীমাবদ্ধতা উপেক্ষা করা হয়। সেট করা হলে, আমাদের প্রয়োজন: * VariablesProto.integers[indicatorId] = সত্য, * VariablesProto.lower_bounds[indicatorId] >= 0, * VariablesProto.upper_bounds[indicatorId] <= 1. এই শর্তগুলি MathOpt দ্বারা বৈধ নয়, কিন্তু যদি না হয় সন্তুষ্ট হলে সমাধানকারীকে সমাধান করার সময় একটি ত্রুটি ফিরিয়ে দেবে। |
সমাধান প্যারামিটার প্রোটো
একটি একক সমাধান নিয়ন্ত্রণ করার পরামিতি।
সমস্ত সমাধানকারীর জন্য সাধারণ উভয় প্যারামিটার রয়েছে যেমন সময়সীমা, এবং একটি নির্দিষ্ট সমাধানকারীর জন্য পরামিতি, যেমন gscip। যদি একটি মান সাধারণ এবং সমাধানকারী নির্দিষ্ট ক্ষেত্রে সেট করা হয়, তাহলে সমাধানকারী নির্দিষ্ট সেটিং ব্যবহার করা হয়।
সাধারণ পরামিতিগুলি যেগুলি ঐচ্ছিক এবং আনসেট বা অনির্দিষ্ট মান সহ একটি enum নির্দেশ করে যে সমাধানকারী ডিফল্ট ব্যবহার করা হয়েছে।
ব্যবহৃত একটি ছাড়া অন্য সমাধানকারীদের জন্য সমাধানকারী নির্দিষ্ট পরামিতি উপেক্ষা করা হয়।
মডেলের উপর নির্ভর করে এমন প্যারামিটার (যেমন প্রতিটি ভেরিয়েবলের জন্য ব্রাঞ্চিং অগ্রাধিকার সেট করা হয়) ModelSolveParametersProto এ পাস করা হয়।
JSON প্রতিনিধিত্ব |
---|
{ "timeLimit": string, "enableOutput": boolean, "lpAlgorithm": enum ( |
ক্ষেত্র | |
---|---|
timeLimit | একটি সমাধানকারীকে সমস্যার জন্য সর্বাধিক সময় ব্যয় করা উচিত (বা সেট না থাকলে অসীম)। এই মান একটি কঠিন সীমা নয়, সমাধান সময় সামান্য এই মান অতিক্রম করতে পারে. এই প্যারামিটারটি সর্বদা অন্তর্নিহিত সমাধানকারীকে প্রেরণ করা হয়, সমাধানকারী ডিফল্ট ব্যবহার করা হয় না। নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' |
enableOutput | সমাধানকারী বাস্তবায়ন ট্রেস মুদ্রণ সক্ষম করে। এই ট্রেসগুলির অবস্থান সমাধানকারীর উপর নির্ভর করে। SCIP এবং Gurobi-এর জন্য এটি হবে আদর্শ আউটপুট স্ট্রীম। Glop এবং CP-SAT-এর জন্য এটি LOG(INFO) করবে। মনে রাখবেন যে সমাধানকারী যদি বার্তা কলব্যাক সমর্থন করে এবং ব্যবহারকারী এটির জন্য একটি কলব্যাক নিবন্ধন করে, তাহলে এই পরামিতি মান উপেক্ষা করা হয় এবং কোন ট্রেস প্রিন্ট করা হয় না। |
lpAlgorithm | একটি লিনিয়ার প্রোগ্রাম সমাধানের জন্য অ্যালগরিদম। LP_ALGORITHM_UNSPECIFIED হলে, সমাধানকারী ডিফল্ট অ্যালগরিদম ব্যবহার করুন। যে সমস্যাগুলো লিনিয়ার প্রোগ্রাম নয় কিন্তু যেখানে লিনিয়ার প্রোগ্রামিং একটি সাবরুটিন, সমাধানকারীরা এই মান ব্যবহার করতে পারে। যেমন MIP সমাধানকারীরা সাধারণত এটি শুধুমাত্র রুট LP সমাধানের জন্য ব্যবহার করবে (এবং অন্যথায় ডুয়াল সিমপ্লেক্স ব্যবহার করুন)। |
presolve | প্রধান অ্যালগরিদম শুরু করার আগে সমস্যাটি সরল করার প্রচেষ্টা, অথবা EMPHASIS_UNSPECIFIED হলে সমাধানকারী ডিফল্ট প্রচেষ্টা স্তর। |
cuts | একটি শক্তিশালী LP শিথিলকরণ (শুধুমাত্র এমআইপি) পাওয়ার প্রচেষ্টা, অথবা EMPHASIS_UNSPECIFIED হলে সমাধানকারী ডিফল্ট প্রচেষ্টার স্তর। দ্রষ্টব্য: কাটগুলি নিষ্ক্রিয় করা MIP_NODE-এ কাট যোগ করার সুযোগ থেকে কলব্যাকগুলিকে আটকাতে পারে, এই আচরণটি সমাধানকারী নির্দিষ্ট৷ |
heuristics | সম্পূর্ণ অনুসন্ধান পদ্ধতির (কেবলমাত্র এমআইপি), অথবা EMPHASIS_UNSPECIFIED হলে সমাধানকারী ডিফল্ট প্রচেষ্টার স্তরের বাইরে সম্ভাব্য সমাধান খোঁজার প্রচেষ্টা। |
scaling | সংখ্যাসূচক স্থায়িত্ব উন্নত করতে সমস্যা পুনঃস্কেল করার প্রচেষ্টা, অথবা EMPHASIS_UNSPECIFIED হলে সমাধানকারী ডিফল্ট প্রচেষ্টা স্তর। |
iterationLimit | অন্তর্নিহিত অ্যালগরিদমের পুনরাবৃত্তির সীমাবদ্ধতা (যেমন সিমপ্লেক্স পিভট)। নির্দিষ্ট আচরণটি ব্যবহৃত সমাধানকারী এবং অ্যালগরিদমের উপর নির্ভরশীল, তবে প্রায়শই একটি নির্ধারক সমাধান সীমা দিতে পারে (আরও কনফিগারেশন প্রয়োজন হতে পারে, যেমন একটি থ্রেড)। সাধারণত এলপি, কিউপি এবং এমআইপি সমাধানকারীদের দ্বারা সমর্থিত, তবে এমআইপি সমাধানকারীদের জন্য নোডলিমিটও দেখুন। |
nodeLimit | গণনামূলক অনুসন্ধানে সমাধান করা উপ-সমস্যাগুলির সংখ্যার উপর সীমাবদ্ধতা (যেমন শাখা এবং আবদ্ধ)। অনেক সমাধানকারীর জন্য এটি গণনাকে সীমাবদ্ধ করতে ব্যবহার করা যেতে পারে (আরও কনফিগারেশন প্রয়োজন হতে পারে, যেমন একটি থ্রেড)। সাধারণত MIP সমাধানকারীদের জন্য, পুনরাবৃত্তিসীমাও দেখুন। |
cutoffLimit | সমাধানকারীটি তাড়াতাড়ি বন্ধ হয়ে যায় যদি এটি প্রমাণ করতে পারে যে অন্তত কাটঅফের মতো কোনও প্রাথমিক সমাধান নেই। প্রাথমিক স্টপে, সমাধানকারী সমাপ্তির কারণ NO_SOLUTION_FOUND এবং সীমা CUTOFF সহ ফেরত দেয় এবং কোনও অতিরিক্ত সমাধান তথ্য দেওয়ার প্রয়োজন হয় না। কোনো প্রাথমিক স্টপ না থাকলে রিটার্ন মানের উপর কোন প্রভাব নেই। এটা বাঞ্ছনীয় যে আপনি একটি সহনশীলতা ব্যবহার করুন যদি আপনি সঠিকভাবে কাটঅফ ফেরত দেওয়ার সমান উদ্দেশ্য সহ সমাধান চান। আরও বিশদ বিবরণ এবং bestBoundLimit-এর সাথে তুলনার জন্য ব্যবহারকারীর নির্দেশিকা দেখুন। |
objectiveLimit | সমাধানকারী শীঘ্রই থেমে যায় যত তাড়াতাড়ি এটি একটি সমাধান খুঁজে পেতে অন্তত এই ভাল, সমাপ্তি কারণ সম্ভাব্য এবং সীমিত উদ্দেশ্য সঙ্গে. |
bestBoundLimit | সমাধানকারীটি যত তাড়াতাড়ি তা প্রমাণ করে যত তাড়াতাড়ি সম্ভব বন্ধ হয়ে যায়, অন্তত এতটাই ভাল, সমাপ্তির কারণ FEASIBLE বা NO_SOLUTION_FOUND এবং সীমিত উদ্দেশ্য। আরো বিস্তারিত জানার জন্য ব্যবহারকারীর নির্দেশিকা দেখুন এবং কাটঅফ লিমিটের সাথে তুলনা করুন। |
solutionLimit | সমাধানকারী এই অনেকগুলি সম্ভাব্য সমাধান খুঁজে পাওয়ার পরে তাড়াতাড়ি বন্ধ হয়ে যায়, সমাপ্তির সম্ভাব্য কারণ এবং সীমিত সমাধান সহ। সেট করা থাকলে অবশ্যই শূন্যের বেশি হতে হবে। এটি প্রায়ই প্রথম সম্ভাব্য সমাধান পাওয়া সমাধানের উপর থামাতে সলভার পেতে ব্যবহার করা হয়। মনে রাখবেন যে কোনো প্রত্যাবর্তিত সমাধানের জন্য উদ্দেশ্যমূলক মূল্যের কোনো গ্যারান্টি নেই। সমাধানকারীরা সাধারণত সমাধান সীমার চেয়ে বেশি সমাধান ফেরত দেয় না, তবে এটি MathOpt দ্বারা প্রয়োগ করা হয় না, এছাড়াও b/214041169 দেখুন৷ বর্তমানে Gurobi এবং SCIP এর জন্য এবং শুধুমাত্র 1 মান সহ CP-SAT-এর জন্য সমর্থিত। |
threads | যদি সেট করা হয় তবে এটি অবশ্যই >= 1 হতে হবে। |
randomSeed | অন্তর্নিহিত সলভারে ছদ্ম-এলোমেলো নম্বর জেনারেটরের জন্য বীজ। মনে রাখবেন যে সমস্ত সমাধানকারীরা LP অ্যালগরিদমে বিভ্রান্তি, টাই-ব্রেক-আপ নিয়ম এবং হিউরিস্টিক ফিক্সিংয়ের জন্য জিনিসগুলি নির্বাচন করতে ছদ্ম-এলোমেলো সংখ্যা ব্যবহার করে। এটি পরিবর্তিত হওয়া সমাধানকারী আচরণের উপর একটি লক্ষণীয় প্রভাব ফেলতে পারে। যদিও সমস্ত সমাধানকারীর বীজের ধারণা রয়েছে, তবে মনে রাখবেন যে বৈধ মানগুলি প্রকৃত সমাধানকারীর উপর নির্ভর করে। - গুরোবি: [0:GRB_MAXINT] (যা গুরোবি 9.0 অনুযায়ী 2x10^9)। - GSCIP: [0:2147483647] (যা MAX_INT বা kint32max বা 2^31-1)। - GLOP: [0:2147483647] (উপরের মতই) সমস্ত ক্ষেত্রে, সমাধানকারী একটি মান পাবে: MAX(0, MIN(MAX_VALID_VALUE_FOR_SOLVER, randomSeed))। |
absoluteGapTolerance | এমআইপি সমাধানকারীদের জন্য একটি পরম সর্বোত্তম সহনশীলতা (প্রাথমিকভাবে)। পরম GAP হল পার্থক্যের পরম মান: * সর্বোত্তম সম্ভাব্য সমাধানের বস্তুনিষ্ঠ মান, * অনুসন্ধান দ্বারা উত্পাদিত দ্বৈত আবদ্ধ। পরম GAP সর্বোচ্চ পরম GapTolerance (যখন সেট করা হয়) হলে সমাধানকারী থামতে পারে এবং TERMINATION_REASON_OPTIMAL ফেরত দিতে পারে। সেট করা থাকলে অবশ্যই >= 0 হতে হবে। এছাড়াও আপেক্ষিকGapTolerance দেখুন। |
relativeGapTolerance | MIP সমাধানকারীদের জন্য একটি আপেক্ষিক সর্বোত্তমতা সহনশীলতা (প্রাথমিকভাবে)। আপেক্ষিক GAP হল পরম GAP-এর একটি স্বাভাবিক সংস্করণ (পরম গ্যাপটোলারেন্সে সংজ্ঞায়িত), যেখানে স্বাভাবিকীকরণ সমাধান-নির্ভর, যেমন পাওয়া সর্বোত্তম সম্ভাব্য সমাধানের উদ্দেশ্যমূলক মান দ্বারা বিভক্ত পরম GAP। আপেক্ষিক GAP সর্বাধিক আপেক্ষিকGapTolerance (যখন সেট করা হয়) হলে সমাধানকারীটি থামতে পারে এবং TERMINATION_REASON_OPTIMAL ফেরত দিতে পারে। সেট করা থাকলে অবশ্যই >= 0 হতে হবে। এছাড়াও absoluteGapTolerance দেখুন। |
solutionPoolSize | অনুসন্ধান করার সময় |
LPAlgorithmProto
লিনিয়ার প্রোগ্রাম সমাধানের জন্য একটি অ্যালগরিদম নির্বাচন করে।
Enums | |
---|---|
LP_ALGORITHM_UNSPECIFIED | |
LP_ALGORITHM_PRIMAL_SIMPLEX | (প্রাথমিক) সিমপ্লেক্স পদ্ধতি। সাধারণত আদি ও দ্বৈত সমাধান, আদি/দ্বৈত অসীম সমস্যায় আদি/দ্বৈত রশ্মি এবং একটি ভিত্তি প্রদান করতে পারে। |
LP_ALGORITHM_DUAL_SIMPLEX | ডুয়েল সিমপ্লেক্স পদ্ধতি। সাধারণত আদি ও দ্বৈত সমাধান, আদি/দ্বৈত অসীম সমস্যায় আদি/দ্বৈত রশ্মি এবং একটি ভিত্তি প্রদান করতে পারে। |
LP_ALGORITHM_BARRIER | বাধা পদ্ধতি, সাধারণভাবে একটি অভ্যন্তরীণ পয়েন্ট পদ্ধতি (IPM) নামেও পরিচিত। সাধারণত প্রাথমিক এবং দ্বৈত উভয় সমাধান দিতে পারে। কিছু বাস্তবায়ন সীমাহীন/অসম্ভাব্য সমস্যার উপর রশ্মিও তৈরি করতে পারে। একটি ভিত্তি দেওয়া হয় না যদি না অন্তর্নিহিত সমাধানকারী "ক্রসওভার" করে এবং সিমপ্লেক্স দিয়ে শেষ না করে। |
LP_ALGORITHM_FIRST_ORDER | একটি প্রথম-ক্রম পদ্ধতির উপর ভিত্তি করে একটি অ্যালগরিদম। এগুলি সাধারণত প্রাথমিক এবং দ্বৈত উভয় সমাধান এবং সম্ভাব্য প্রাথমিক এবং/অথবা দ্বৈত অসম্ভাব্যতার শংসাপত্র তৈরি করবে। ফার্স্ট-অর্ডার পদ্ধতিগুলি সাধারণত কম নির্ভুলতার সাথে সমাধান প্রদান করে, তাই ব্যবহারকারীদের সমাধানের মানের পরামিতি (যেমন, সহনশীলতা) সেট করার এবং সমাধানগুলিকে যাচাই করার যত্ন নেওয়া উচিত। |
EmphasisProto
সমাধান করার সময় একটি ঐচ্ছিক কাজের জন্য প্রচেষ্টা স্তর প্রয়োগ করা হয় (ব্যবহারের জন্য SolveParametersProto দেখুন)।
নিম্নরূপ একটি সমাধানকারী বৈশিষ্ট্য কনফিগার করার জন্য জোর দেওয়া হয়: * যদি একটি সমাধানকারী বৈশিষ্ট্যটিকে সমর্থন না করে, তবে শুধুমাত্র অনির্দিষ্ট সর্বদা বৈধ হবে, অন্য কোনো সেটিং সাধারণত একটি অবৈধ আর্গুমেন্ট ত্রুটি হবে (কিছু সমাধানকারী বন্ধও স্বীকার করতে পারে)। * যদি সমাধানকারী বৈশিষ্ট্যটিকে সমর্থন করে: - যখন অনির্দিষ্টভাবে সেট করা হয়, তখন অন্তর্নিহিত ডিফল্ট ব্যবহার করা হয়। - যখন বৈশিষ্ট্যটি বন্ধ করা যাবে না, বন্ধ একটি ত্রুটি ফিরিয়ে দেবে। - যদি বৈশিষ্ট্যটি ডিফল্টরূপে সক্ষম করা থাকে, তাহলে সমাধানকারী ডিফল্টটি সাধারণত MEDIUM-এ ম্যাপ করা হয়৷ - যদি বৈশিষ্ট্যটি সমর্থিত হয়, নিম্ন, মাঝারি, উচ্চ এবং খুব উচ্চ কখনই একটি ত্রুটি দেবে না এবং তাদের সেরা ম্যাচের উপর মানচিত্র করবে।
Enums | |
---|---|
EMPHASIS_UNSPECIFIED | |
EMPHASIS_OFF | |
EMPHASIS_LOW | |
EMPHASIS_MEDIUM | |
EMPHASIS_HIGH | |
EMPHASIS_VERY_HIGH |
মডেলসল্ভ প্যারামিটার প্রোটো
JSON প্রতিনিধিত্ব |
---|
{ "variableValuesFilter": { object ( |
ক্ষেত্র | |
---|---|
variableValuesFilter | PrimalSolutionProto এবং PrimalRayProto (PrimalSolutionProto.variable_values, PrimalRayProto.variable_values) ভেরিয়েবল দ্বারা চাবিকৃত সমস্ত রিটার্ন করা স্পার্স কন্টেইনারে ফিল্টার প্রয়োগ করা হয়। প্রয়োজনীয়তা: * filteredIds হল VariablesProto.ids এর উপাদান। |
dualValuesFilter | ফিল্টার যা DualSolutionProto এবং DualRay (DualSolutionProto.dual_values, DualRay.dual_values) তে রৈখিক সীমাবদ্ধতা দ্বারা চাবিকৃত সমস্ত প্রত্যাবর্তিত স্পার্স পাত্রে প্রয়োগ করা হয়। প্রয়োজনীয়তা: * filteredIds হল LinearConstraints.ids এর উপাদান। |
reducedCostsFilter | ফিল্টার যা DualSolutionProto এবং DualRay (DualSolutionProto.reduced_costs, DualRay.reduced_costs) ভেরিয়েবল দ্বারা চাবিকৃত সমস্ত রিটার্ন করা স্পার্স কন্টেনারে প্রয়োগ করা হয়। প্রয়োজনীয়তা: * filteredIds হল VariablesProto.ids এর উপাদান। |
initialBasis | ওয়ার্ম স্টার্টিং সিমপ্লেক্স এলপি সলভারের জন্য ঐচ্ছিক প্রাথমিক ভিত্তি। সেট করা হলে, বর্তমান |
solutionHints[] | ঐচ্ছিক সমাধান ইঙ্গিত. অন্তর্নিহিত সমাধানকারী শুধুমাত্র একটি ইঙ্গিত গ্রহণ করলে, প্রথম ইঙ্গিতটি ব্যবহার করা হয়। |
branchingPriorities | ঐচ্ছিক শাখা অগ্রাধিকার. উচ্চতর মান সহ ভেরিয়েবলগুলি প্রথমে ব্রাঞ্চ করা হবে। যে ভেরিয়েবলগুলির জন্য অগ্রাধিকার সেট করা হয় না সেগুলি সমাধানকারীর ডিফল্ট অগ্রাধিকার পায় (সাধারণত শূন্য)। প্রয়োজনীয়তা: * branchingPriorities.values সীমিত হতে হবে। * branchingPriorities.ids অবশ্যই VariablesProto.ids এর উপাদান হতে হবে। |
SparseVectorFilterProto
এই বার্তাটি একটি SparseXxxxVector এর নির্দিষ্ট অংশ জিজ্ঞাসা/সেট করার অনুমতি দেয়। ডিফল্ট আচরণ কিছু ফিল্টার আউট না. একটি সাধারণ ব্যবহার হল সমাধানের শুধুমাত্র অংশগুলি জিজ্ঞাসা করা (শুধুমাত্র অ-শূন্য মান, এবং/অথবা পরিবর্তনশীল মানগুলির একটি হাতে বাছাই করা সেট)।
JSON প্রতিনিধিত্ব |
---|
{ "skipZeroValues": boolean, "filterByIds": boolean, "filteredIds": [ string ] } |
ক্ষেত্র | |
---|---|
skipZeroValues | SparseBoolVectorProto এর জন্য "শূন্য" |
filterByIds | সত্য হলে, ফিল্টার করা আইডিতে তালিকাভুক্ত আইডিগুলির সাথে সংশ্লিষ্ট মানগুলিই ফেরত দিন। |
filteredIds[] | filterByIds সত্য হলে ব্যবহার করার জন্য আইডিগুলির তালিকা৷ filterByIds মিথ্যা হলে খালি হতে হবে। দ্রষ্টব্য: যদি এটি খালি হয়, এবং filterByIds সত্য হয়, আপনি বলছেন যে আপনি ফলাফলে কোনো তথ্য চান না। |
বেসিসপ্রোটো
একটি লিনিয়ার প্রোগ্রামের সমাধানের জন্য একটি সমন্বিত বৈশিষ্ট্য।
রৈখিক প্রোগ্রামগুলি সমাধানের জন্য সিমপ্লেক্স পদ্ধতি সর্বদা একটি "মৌলিক সম্ভাব্য সমাধান" প্রদান করে যা একটি বেসিস দ্বারা সমন্বিতভাবে বর্ণনা করা যেতে পারে। একটি ভিত্তি প্রতিটি পরিবর্তনশীল এবং রৈখিক সীমাবদ্ধতার জন্য একটি BasisStatusProto বরাদ্দ করে।
যেমন একটি স্ট্যান্ডার্ড ফর্ম LP বিবেচনা করুন: min c * x st A * x = bx >= 0 যাতে সীমাবদ্ধতার চেয়ে বেশি ভেরিয়েবল এবং সম্পূর্ণ সারি র্যাঙ্ক A সহ।
ধরুন n হল চলকের সংখ্যা এবং m হল রৈখিক সীমাবদ্ধতার সংখ্যা। এই সমস্যার জন্য একটি বৈধ ভিত্তি নিম্নরূপ তৈরি করা যেতে পারে: * সমস্ত সীমাবদ্ধতার ভিত্তি স্থিতি থাকবে। * m ভেরিয়েবল বাছাই করুন যাতে A এর কলামগুলি রৈখিকভাবে স্বাধীন হয় এবং বেসিক অবস্থা নির্ধারণ করে। * অবশিষ্ট n - m ভেরিয়েবলের জন্য AT_LOWER স্থিতি বরাদ্দ করুন।
এই ভিত্তির জন্য মৌলিক সমাধান হল A * x = b এর অনন্য সমাধান যাতে AT_LOWER স্ট্যাটাস সহ সমস্ত ভেরিয়েবল তাদের নিম্ন সীমাতে (সমস্ত শূন্য) স্থির থাকে। ফলস্বরূপ সমাধানটিকে একটি মৌলিক সম্ভাব্য সমাধান বলা হয় যদি এটি x >= 0 কেও সন্তুষ্ট করে।
JSON প্রতিনিধিত্ব |
---|
{ "constraintStatus": { object ( |
ক্ষেত্র | |
---|---|
constraintStatus | সীমাবদ্ধতার ভিত্তিতে অবস্থা। প্রয়োজনীয়তা: * constraintStatus.ids সমান LinearConstraints.ids। |
variableStatus | পরিবর্তনশীল ভিত্তি অবস্থা। প্রয়োজনীয়তা: * constraintStatus.ids হল VariablesProto.ids এর সমান। |
basicDualFeasibility | এটি একটি উন্নত বৈশিষ্ট্য যা ম্যাথঅপ্ট দ্বারা সাবঅপ্টিমাল LP সমাধানগুলির সম্ভাব্যতা চিহ্নিত করতে ব্যবহৃত হয় (অনুকূল সমাধানগুলির সর্বদা SOLUTION_STATUS_FEASIBLE স্থিতি থাকবে)৷ একক-পার্শ্বযুক্ত LPগুলির জন্য এটি সংশ্লিষ্ট দ্বৈত সমাধানের সম্ভাব্যতার স্থিতির সমান হওয়া উচিত। দ্বি-পার্শ্বযুক্ত LP-এর ক্ষেত্রে এটি কিছু প্রান্তের ক্ষেত্রে ভিন্ন হতে পারে (যেমন প্রাইমাল সিমপ্লেক্সের সাথে অসম্পূর্ণ সমাধান)। আপনি যদি ModelSolveParametersProto.initial_basis এর মাধ্যমে একটি প্রারম্ভিক ভিত্তি প্রদান করেন, তাহলে এই মানটিকে উপেক্ষা করা হবে। এটি শুধুমাত্র SolutionProto.basis দ্বারা প্রত্যাবর্তিত ভিত্তির জন্য প্রাসঙ্গিক। |
SparseBasisStatusVector
ভিত্তি অবস্থার একটি ভেক্টরের একটি বিক্ষিপ্ত উপস্থাপনা।
JSON প্রতিনিধিত্ব |
---|
{
"ids": [
string
],
"values": [
enum ( |
ক্ষেত্র | |
---|---|
ids[] | সমস্ত উপাদান স্বতন্ত্র সহ (ক্রমবর্ধমান ক্রমানুসারে) বাছাই করা আবশ্যক। |
values[] | আইডির সমান দৈর্ঘ্য থাকতে হবে। |
বেসিস স্ট্যাটাস প্রোটো
LP ভিত্তিতে একটি পরিবর্তনশীল/সীমাবদ্ধতার স্থিতি।
Enums | |
---|---|
BASIS_STATUS_UNSPECIFIED | গার্ড মান কোন অবস্থা প্রতিনিধিত্ব করে. |
BASIS_STATUS_FREE | পরিবর্তনশীল/সীমাবদ্ধতা বিনামূল্যে (এর কোন সীমাবদ্ধ সীমা নেই)। |
BASIS_STATUS_AT_LOWER_BOUND | পরিবর্তনশীল/সীমাবদ্ধতা তার নিম্ন সীমানায় (যা অবশ্যই সসীম হতে হবে)। |
BASIS_STATUS_AT_UPPER_BOUND | পরিবর্তনশীল/সীমাবদ্ধতা তার উপরের সীমানায় (যা অবশ্যই সসীম হতে হবে)। |
BASIS_STATUS_FIXED_VALUE | পরিবর্তনশীল/সীমাবদ্ধতার অভিন্ন সসীম নিম্ন এবং উপরের সীমা রয়েছে। |
BASIS_STATUS_BASIC | পরিবর্তনশীল/সীমাবদ্ধতা মৌলিক। |
সমাধান স্ট্যাটাসপ্রোটো
সমাধানকারীর দাবি অনুযায়ী প্রাথমিক বা দ্বৈত সমাধানের সম্ভাব্যতা।
Enums | |
---|---|
SOLUTION_STATUS_UNSPECIFIED | গার্ড মান কোন অবস্থা প্রতিনিধিত্ব করে. |
SOLUTION_STATUS_UNDETERMINED | সমাধানকারী একটি সম্ভাব্যতা স্থিতি দাবি করে না। |
SOLUTION_STATUS_FEASIBLE | সমাধানকারী দাবি করে যে সমাধানটি সম্ভব। |
SOLUTION_STATUS_INFEASIBLE | সমাধানকারী দাবি করে যে সমাধানটি অসম্ভব। |
সমাধান হিন্টপ্রোটো
সমাধানকারীর জন্য একটি প্রস্তাবিত শুরু সমাধান।
এমআইপি সমাধানকারীরা সাধারণত শুধুমাত্র প্রাথমিক তথ্য চায় ( variableValues
), যখন এলপি সমাধানকারীরা প্রাথমিক এবং দ্বৈত উভয় তথ্য ( dualValues
) চায়।
অনেক এমআইপি সমাধানকারী এর সাথে কাজ করতে পারে: (1) আংশিক সমাধান যা সমস্ত ভেরিয়েবল নির্দিষ্ট করে না বা (2) অসম্ভাব্য সমাধান। এই ক্ষেত্রে, সমাধানকারীরা সাধারণত ইঙ্গিতটি সম্পূর্ণ/শুদ্ধ করার জন্য একটি সাব-এমআইপি সমাধান করে।
কীভাবে ইঙ্গিতটি সমাধানকারী দ্বারা ব্যবহৃত হয়, যদি আদৌ তা সমাধানকারী, সমস্যার ধরন এবং ব্যবহৃত অ্যালগরিদমের উপর অত্যন্ত নির্ভরশীল। আপনার ইঙ্গিতটির প্রভাব রয়েছে তা নিশ্চিত করার সবচেয়ে নির্ভরযোগ্য উপায় হল অন্তর্নিহিত সমাধানকারী লগগুলি ইঙ্গিত সহ এবং ছাড়াই পড়া।
সিমপ্লেক্স-ভিত্তিক LP সমাধানকারীরা সাধারণত একটি সমাধান ইঙ্গিতের জন্য প্রাথমিক ভিত্তি পছন্দ করে (অন্যথায় ইঙ্গিতটিকে একটি মৌলিক সম্ভাব্য সমাধানে রূপান্তর করতে তাদের ক্রসওভার করতে হবে)।
JSON প্রতিনিধিত্ব |
---|
{ "variableValues": { object ( |
ক্ষেত্র | |
---|---|
variableValues | সমস্যার প্রাথমিক ভেরিয়েবলের মানগুলির একটি সম্ভবত আংশিক বরাদ্দ৷ এই উপ-বার্তার জন্য সমাধানকারী-স্বাধীন প্রয়োজনীয়তাগুলি হল: * variableValues.ids হল VariablesProto.ids-এর উপাদান। * variableValues.values সব সীমিত হতে হবে। |
dualValues | সমস্যাটির রৈখিক সীমাবদ্ধতার মানগুলির একটি (সম্ভাব্য আংশিক) বরাদ্দ৷ প্রয়োজনীয়তা: * dualValues.ids হল LinearConstraintsProto.ids এর উপাদান। * dualValues.values সব সীমিত হতে হবে। |
SparseInt32VectorProto
ints এর ভেক্টরের একটি বিক্ষিপ্ত উপস্থাপনা।
JSON প্রতিনিধিত্ব |
---|
{ "ids": [ string ], "values": [ integer ] } |
ক্ষেত্র | |
---|---|
ids[] | সমস্ত উপাদান স্বতন্ত্র সহ (ক্রমবর্ধমান ক্রমানুসারে) সাজানো উচিত। |
values[] | আইডির সমান দৈর্ঘ্য থাকতে হবে। |
SolveResultProto
যখন প্রাথমিক/দ্বৈত সমাধান/রশ্মি জটিল হয় তার চুক্তি, সম্পূর্ণ বিবরণের জন্য termination_reasons.md দেখুন।
একটি সঠিক চুক্তি চূড়ান্ত না হওয়া পর্যন্ত, সমাপ্তির কারণের উপর নির্ভর করার পরিবর্তে একটি সমাধান/রে উপস্থিত আছে কিনা তা পরীক্ষা করা সবচেয়ে নিরাপদ।
JSON প্রতিনিধিত্ব |
---|
{ "termination": { object ( |
ক্ষেত্র | |
---|---|
termination | কারণ সমাধানকারী বন্ধ. |
solutions[] | ভবিষ্যত সমাধানকারীদের যে সমাধানের ক্রম প্রয়োগ করা উচিত তার জন্য সাধারণ চুক্তি হল: 1. একটি প্রাথমিক সম্ভাব্য সমাধান সহ সমাধানগুলি, সর্বোত্তম প্রাথমিক উদ্দেশ্য দ্বারা প্রথমে অর্ডার করা। 2. একটি দ্বৈত সম্ভাব্য সমাধান সহ সমাধান, সর্বোত্তম দ্বৈত উদ্দেশ্য (অজানা দ্বৈত উদ্দেশ্য সবচেয়ে খারাপ) দ্বারা আদেশ 3. বাকি সমস্ত সমাধান যে কোনও ক্রমে ফেরত দেওয়া যেতে পারে। |
primalRays[] | সীমাহীন প্রাথমিক উন্নতির দিকনির্দেশ, বা সমতুল্য, দ্বৈত অসম্ভাব্যতা শংসাপত্র। সাধারণত TerminationReasonProtos UNBOUNDED এবং DUAL_INFEASIBLE এর জন্য প্রদান করা হয় |
dualRays[] | সীমাহীন দ্বৈত উন্নতির দিকনির্দেশ, বা সমতুল্য, প্রাথমিক অসম্ভাব্যতা শংসাপত্র। সাধারণত TerminationReasonProto অসম্ভাব্য জন্য প্রদান করা হয়. |
solveStats | সমাধান প্রক্রিয়ার পরিসংখ্যান, যেমন চলমান সময়, পুনরাবৃত্তি। |
সমাপ্তি প্রোটো
কেন সমাধান () করার জন্য একটি কল বন্ধ করা হয়েছে সে সম্পর্কিত সমস্ত তথ্য।
JSON প্রতিনিধিত্ব |
---|
{ "reason": enum ( |
ক্ষেত্র | |
---|---|
reason | TERMINATION_REASON_FEASIBLE বা TERMINATION_REASON_NO_SOLUTION_FOUND হলে অতিরিক্ত তথ্য |
limit | LIMIT_UNSPECIFIED যদি না কারণ TERMINATION_REASON_FEASIBLE বা TERMINATION_REASON_NO_SOLUTION_FOUND হয়৷ সমস্ত সমাধানকারী সর্বদা সীমা নির্ধারণ করতে পারে না যার কারণে সমাপ্তি ঘটে, LIMIT_UNDETERMINED ব্যবহার করা হয় যখন কারণ নির্ধারণ করা যায় না। |
detail | সমাপ্তি সম্পর্কে অতিরিক্ত সাধারণত সমাধানকারী নির্দিষ্ট তথ্য। |
problemStatus | প্রাথমিক এবং দ্বৈত সমস্যার জন্য সম্ভাব্যতা অবস্থা। 18 জুলাই, 2023 থেকে এই বার্তাটি অনুপস্থিত থাকতে পারে। অনুপস্থিত থাকলে, সমস্যার স্থিতি SolveResultProto.solve_stats-এ পাওয়া যাবে। |
objectiveBounds | সর্বোত্তম উদ্দেশ্য মানের উপর সীমানা। 18 জুলাই, 2023 থেকে এই বার্তাটি অনুপস্থিত থাকতে পারে। অনুপস্থিত থাকলে, objectiveBounds.primal_bound পাওয়া যাবে SolveResultProto.solve.stats.best_primal_bound এবং objectiveBounds.dual_bound পাওয়া যাবে SolveResultProto.solve.stats.best_dual_bound-এ। |
TerminationReasonProto
সমাধান() কল বন্ধ হওয়ার কারণ।
Enums | |
---|---|
TERMINATION_REASON_UNSPECIFIED | |
TERMINATION_REASON_OPTIMAL | একটি সম্ভাব্য সর্বোত্তম সমাধান (সংখ্যাগত সহনশীলতা পর্যন্ত) পাওয়া গেছে। |
TERMINATION_REASON_INFEASIBLE | প্রাথমিক সমস্যার কোন সম্ভাব্য সমাধান নেই। |
TERMINATION_REASON_UNBOUNDED | প্রাথমিক সমস্যাটি সম্ভবপর এবং নির্বিচারে ভাল সমাধান একটি প্রাথমিক রশ্মির সাথে পাওয়া যেতে পারে। |
TERMINATION_REASON_INFEASIBLE_OR_UNBOUNDED | প্রাথমিক সমস্যাটি হয় অসম্ভাব্য বা সীমাহীন। সমস্যার স্থিতির আরও বিশদ বিবরণ solveStats.problem_status এ উপলব্ধ হতে পারে। মনে রাখবেন গুরোবির সীমাহীন অবস্থা এখানে ম্যাপ করা যেতে পারে। |
TERMINATION_REASON_IMPRECISE | সমস্যাটি উপরের মানদণ্ডগুলির একটিতে সমাধান করা হয়েছিল (অনুকূল, অকার্যকর, অবাউন্ডেড, বা ইনফেসিবলঅরআনবাউন্ডেড), কিন্তু এক বা একাধিক সহনশীলতা পূরণ হয়নি। কিছু আদি/দ্বৈত সমাধান/রশ্মি উপস্থিত থাকবে, কিন্তু হয় সেগুলি কিছুটা অসম্ভাব্য হবে, অথবা (যদি সমস্যাটি প্রায় সর্বোত্তম ছিল) তাদের সর্বোত্তম সমাধান উদ্দেশ্য এবং সর্বোত্তম উদ্দেশ্য আবদ্ধের মধ্যে একটি ব্যবধান হতে পারে। ব্যবহারকারীরা এখনও প্রাথমিক/দ্বৈত সমাধান/রশ্মি এবং সমাধান পরিসংখ্যান জিজ্ঞাসা করতে পারে, তবে তারা সংখ্যাগত অপূর্ণতা মোকাবেলার জন্য দায়ী। |
TERMINATION_REASON_FEASIBLE | অপ্টিমাইজার কিছু সীমাতে পৌঁছেছে এবং একটি প্রাথমিক সম্ভাব্য সমাধান ফিরিয়ে দেওয়া হয়েছে। যে ধরনের সীমা পৌঁছেছে তার বিশদ বিবরণের জন্য SolveResultProto.limit_detail দেখুন। |
TERMINATION_REASON_NO_SOLUTION_FOUND | অপ্টিমাইজার কিছু সীমাতে পৌঁছেছে এবং এটি একটি প্রাথমিক সম্ভাব্য সমাধান খুঁজে পায়নি। যে ধরনের সীমা পৌঁছেছে তার বিশদ বিবরণের জন্য SolveResultProto.limit_detail দেখুন। |
TERMINATION_REASON_NUMERICAL_ERROR | অ্যালগরিদমটি বন্ধ হয়ে গেছে কারণ এটি পুনরুদ্ধারযোগ্য সংখ্যাগত ত্রুটির সম্মুখীন হয়েছে৷ কোন সমাধান তথ্য পাওয়া যায় না. |
TERMINATION_REASON_OTHER_ERROR | অ্যালগরিদমটি একটি ত্রুটির কারণে বন্ধ হয়ে গেছে যা উপরে সংজ্ঞায়িত স্থিতিগুলির মধ্যে একটি দ্বারা আচ্ছাদিত হয়নি৷ কোন সমাধান তথ্য পাওয়া যায় না. |
LimitProto
যখন একটি সমাধান() টার্মিনেশন রিজনপ্রোটো FEASIBLE বা NO_SOLUTION_FOUND এর সাথে তাড়াতাড়ি থেমে যায়, তখন নির্দিষ্ট সীমা যা আঘাত করা হয়েছিল৷
Enums | |
---|---|
LIMIT_UNSPECIFIED | একটি শূন্য মান হিসাবে ব্যবহৃত হয় যখন আমরা একটি সীমা থেকে শেষ না করি (যেমন TERMINATION_REASON_OPTIMAL)। |
LIMIT_UNDETERMINED | অন্তর্নিহিত সমাধানকারী কোন সীমায় পৌঁছেছে তা প্রকাশ করে না। |
LIMIT_ITERATION | একটি পুনরাবৃত্তিমূলক অ্যালগরিদম সর্বাধিক সংখ্যক পুনরাবৃত্তি (যেমন সিমপ্লেক্স বা বাধা পুনরাবৃত্তি) পরিচালনা করার পরে বন্ধ হয়ে যায়। |
LIMIT_TIME | ব্যবহারকারী-নির্দিষ্ট গণনার সময় পরে অ্যালগরিদম বন্ধ হয়ে গেছে। |
LIMIT_NODE | একটি শাখা-এবং-বাউন্ড অ্যালগরিদম বন্ধ হয়ে গেছে কারণ এটি শাখা-ও-বাউন্ড ট্রিতে সর্বাধিক সংখ্যক নোড অন্বেষণ করেছে। |
LIMIT_SOLUTION | অ্যালগরিদম বন্ধ হয়ে গেছে কারণ এটি প্রয়োজনীয় সংখ্যক সমাধান খুঁজে পেয়েছে। এটি প্রায়শই এমআইপি-তে ব্যবহৃত হয় যাতে সমাধানকারী প্রথম সম্ভাব্য সমাধানের মুখোমুখি হয়। |
LIMIT_MEMORY | অ্যালগরিদম বন্ধ হয়ে গেছে কারণ এটি স্মৃতিশক্তির বাইরে চলে গেছে। |
LIMIT_CUTOFF | সলভারটি একটি কাটঅফ দিয়ে চালিত হয়েছিল (যেমন সলভেপারামিটারগুলি.কুটফ_লিমিট সেট করা হয়েছিল) উদ্দেশ্যটিতে, এটি ইঙ্গিত করে যে ব্যবহারকারী কাট অফের চেয়ে খারাপ কোনও সমাধান চান না, এবং সলভার এই সিদ্ধান্তে পৌঁছেছেন যে কাট অফের মতো কমপক্ষে কোনও সমাধান নেই। সাধারণত আর কোনও সমাধানের তথ্য সরবরাহ করা হয় না। |
LIMIT_OBJECTIVE | অ্যালগরিদম বন্ধ হয়ে গেছে কারণ এটি ব্যবহারকারীর দ্বারা নির্ধারিত সীমাটির চেয়ে কোনও সমাধান বা একটি আবদ্ধ আরও ভাল খুঁজে পেয়েছে (সলভেপারামিটারগুলি দেখুন ob |
LIMIT_NORM | অ্যালগরিদম বন্ধ হয়ে গেছে কারণ একটি পুনরাবৃত্তির আদর্শটি খুব বড় হয়ে উঠল। |
LIMIT_INTERRUPTED | একটি বিঘ্নিত সংকেত বা ব্যবহারকারীর বিঘ্নিত অনুরোধের কারণে অ্যালগরিদম বন্ধ হয়ে গেছে। |
LIMIT_SLOW_PROGRESS | অ্যালগরিদম বন্ধ হয়ে গেছে কারণ এটি সমাধানের দিকে অগ্রগতি অব্যাহত রাখতে অক্ষম ছিল। |
LIMIT_OTHER | উপরের একটির দ্বারা আচ্ছাদিত সীমাবদ্ধতার কারণে অ্যালগরিদম বন্ধ হয়ে গেছে। নোট করুন যে কারণটি নির্ধারণ করা যায় না তখন সীমাবদ্ধ_অনডেরমিন্ড ব্যবহার করা হয় এবং কারণটি জানা গেলে সীমাবদ্ধ_ অন্য ব্যবহার করা হয় তবে উপরের কোনও বিকল্পের সাথে খাপ খায় না। টার্মিনেশনপ্রোটো.ডেটেইলে সীমা সম্পর্কে অতিরিক্ত তথ্য থাকতে পারে। |
সমস্যা স্ট্যাটাসপ্রোটো
সলভার দ্বারা দাবি করা হিসাবে প্রাথমিক সমস্যা এবং এর দ্বৈত (বা অবিচ্ছিন্ন শিথিলকরণের দ্বৈত) এর সম্ভাব্যতা স্থিতি। সলভারকে দাবির জন্য কোনও শংসাপত্র ফেরত দেওয়ার প্রয়োজন নেই (যেমন সলভার প্রাথমিক সম্ভাব্য সলিউশনটি ফেরত না দিয়ে প্রাথমিক সম্ভাব্যতা দাবি করতে পারে)। এই সম্মিলিত স্থিতি সম্ভাব্যতা এবং সমাধান হওয়া সমস্যার সীমাহীনতা সম্পর্কে একটি সলভারের দাবির একটি বিস্তৃত বিবরণ দেয়। যেমন,
- প্রাথমিক এবং দ্বৈত সমস্যার জন্য একটি সম্ভাব্য অবস্থা নির্দেশ করে যে প্রাথমিকটি সম্ভাব্য এবং আবদ্ধ এবং সম্ভবত একটি সর্বোত্তম সমাধান রয়েছে (অ-রৈখিক সীমাবদ্ধতা ছাড়াই সমস্যার জন্য গ্যারান্টিযুক্ত)।
- একটি প্রাথমিক সম্ভাব্য এবং একটি দ্বৈত অনিবার্য স্থিতি নির্দেশ করে যে প্রাথমিক সমস্যাটি সীমাহীন (যেমন নির্বিচারে ভাল সমাধান রয়েছে)।
নোট করুন যে নিজেই একটি দ্বৈত অক্ষম স্থিতি (যেমন একটি নির্ধারিত প্রাথমিক স্থিতি সহ) বোঝায় না যে প্রাথমিক সমস্যাটি সীমাহীন কারণ আমরা উভয় সমস্যাই অনিবার্য হতে পারি। এছাড়াও, যদিও একটি প্রাথমিক এবং দ্বৈত সম্ভাব্য স্থিতি কোনও অনুকূল সমাধানের অস্তিত্বকে বোঝাতে পারে, এটি সলভারটি আসলে এই জাতীয় অনুকূল সমাধান খুঁজে পেয়েছে এমন গ্যারান্টি দেয় না।
JSON প্রতিনিধিত্ব |
---|
{ "primalStatus": enum ( |
ক্ষেত্র | |
---|---|
primalStatus | প্রাথমিক সমস্যার জন্য স্থিতি। |
dualStatus | দ্বৈত সমস্যার জন্য স্থিতি (বা অবিচ্ছিন্ন শিথিলকরণের দ্বৈত জন্য)। |
primalOrDualInfeasible | যদি সত্য হয়, সলভার দাবি করে যে প্রাথমিক বা দ্বৈত সমস্যাটি অনর্থক, তবে এটি জানে না কোনটি (বা উভয়ই অনিবার্য হয়)। প্রাইমাল_প্রব্লেম_স্ট্যাটাস = দ্বৈত_প্রব্লেম_স্ট্যাটাস = কান্ডেরমিনেড কেবল তখনই সত্য হতে পারে। এই অতিরিক্ত তথ্যের প্রায়শই প্রয়োজন হয় যখন প্রিপ্রোসেসিং নির্ধারণ করে যে সমস্যার কোনও সর্বোত্তম সমাধান নেই (তবে এটি নির্ধারণ করতে পারে না যে এটি অযোগ্যতা, সীমাহীনতা বা উভয়ের কারণে হয়েছে কিনা)। |
সম্ভাব্যতা ট্যাটাসপ্রোটো
সলভার দ্বারা দাবি করা হিসাবে সমস্যা সম্ভাবনার স্থিতি (সলভার দাবির জন্য কোনও শংসাপত্র ফেরত দেওয়ার প্রয়োজন হয় না)।
Enums | |
---|---|
FEASIBILITY_STATUS_UNSPECIFIED | কোনও স্থিতি উপস্থাপন করে গার্ড মান। |
FEASIBILITY_STATUS_UNDETERMINED | সলভার কোনও স্থিতি দাবি করে না। |
FEASIBILITY_STATUS_FEASIBLE | সলভার দাবি করে যে সমস্যাটি সম্ভব। |
FEASIBILITY_STATUS_INFEASIBLE | সলভার দাবি করে যে সমস্যাটি অনর্থক। |
অবজেক্টবাউন্ডসপ্রোটো
অনুকূল উদ্দেশ্য মানের উপর সীমানা।
JSON প্রতিনিধিত্ব |
---|
{ "primalBound": number, "dualBound": number } |
ক্ষেত্র | |
---|---|
primalBound | সলভার দাবি করে যে সর্বোত্তম মানটি সমান বা আরও ভাল (মিনিমাইজেশনের জন্য ছোট এবং সর্বাধিককরণের জন্য বৃহত্তর) সলভারদের প্রাইমালবাউন্ডের চেয়ে প্রাথমিক সম্ভাব্যতা সহনশীলতা (নীচে সতর্কতা দেখুন): * সলভার যখন সলভারটি তুচ্ছ (+আইএনএফ -এর জন্য+ইনফ)) এ জাতীয় আবদ্ধ থাকার দাবি করে না। * প্রাইমালবাউন্ড সেরা প্রাথমিক সম্ভাব্য সমাধানের উদ্দেশ্যটির চেয়ে সর্বোত্তম মানের কাছাকাছি হতে পারে। বিশেষত, কোনও প্রাথমিক সম্ভাব্য সমাধান ফিরে না পাওয়া গেলেও প্রাইমালবাউন্ড অ-তুচ্ছ হতে পারে। সতর্কতা: সুনির্দিষ্ট দাবিটি হ'ল এখানে একটি প্রাথমিক সমাধান রয়েছে যা: * সংখ্যাগতভাবে সম্ভব (যেমন সলভার সহনশীলতা পর্যন্ত সম্ভব), এবং * এর একটি উদ্দেশ্যগত মান প্রাথমিকবোধ রয়েছে। এই সংখ্যাগতভাবে সম্ভাব্য সমাধানটি সামান্য অকার্যকর হতে পারে, সেক্ষেত্রে প্রাইমালবাউন্ডটি সর্বোত্তম মানের চেয়ে কঠোরভাবে আরও ভাল হতে পারে। প্রাইমালবাউন্ডে সহনশীলতার জন্য একটি প্রাথমিক সম্ভাব্যতা সহনশীলতার অনুবাদ করা অ-তুচ্ছ, বিশেষত যখন সম্ভাব্যতা সহনশীলতা তুলনামূলকভাবে বড় হয় (যেমন পিডিএলপি দিয়ে সমাধান করার সময়)। |
dualBound | সলভার দাবি করে যে সর্বোত্তম মান সমান বা খারাপ (মিনিমাইজেশনের জন্য বৃহত্তর এবং সর্বাধিককরণের জন্য ছোট) সলভারগুলির দ্বৈত থেকে দ্বৈত সম্ভাব্যতা সহনশীলতা (নীচের সতর্কতা দেখুন): * ডুয়ালবাউন্ডটি তুচ্ছ (-আইএনএফ) সলভার যখন সলভার এ জাতীয় আবদ্ধ থাকার দাবি করে না। একইভাবে প্রাইমালবাউন্ডে, এটি সর্বোত্তম ফিরে আসার পরেও কিছু সলভারদের জন্য এটি ঘটতে পারে। এমআইপি সলভাররা সাধারণত একটি আবদ্ধ প্রতিবেদন করবে এমনকি যদি এটি অনর্থক হয়। * অবিচ্ছিন্ন সমস্যার জন্য দ্বৈতবাউন্ড সেরা দ্বৈত সম্ভাব্য সমাধানের উদ্দেশ্যটির চেয়ে সর্বোত্তম মানের কাছাকাছি হতে পারে। এমআইপি-র জন্য ডুয়ালবাউন্ডের জন্য প্রথম অ-তুচ্ছ মানগুলির মধ্যে একটি হ'ল এমআইপি-র এলপি শিথিলকরণের সর্বোত্তম মান। * দ্বৈতবাউন্ড সলভার সহনশীলতা পর্যন্ত প্রাথমিকের চেয়ে আরও ভাল (মিনিমাইজেশনের জন্য ছোট এবং সর্বাধিককরণের জন্য বৃহত্তর) হওয়া উচিত (নীচে সতর্কতা দেখুন)। সতর্কতা: * অবিচ্ছিন্ন সমস্যার জন্য, সুনির্দিষ্ট দাবিটি হ'ল একটি দ্বৈত সমাধান রয়েছে যা: * সংখ্যাগতভাবে সম্ভব (যেমন সলভার সহনশীলতা পর্যন্ত সম্ভব), এবং * এর একটি উদ্দেশ্যগত মান দ্বৈতবাউন্ড রয়েছে। এই সংখ্যাগতভাবে সম্ভাব্য সমাধানটি সামান্য অকার্যকর হতে পারে, সেক্ষেত্রে ডুয়ালবাউন্ডটি সর্বোত্তম মান এবং প্রিমালবাউন্ডের চেয়ে কঠোরভাবে খারাপ হতে পারে। প্রাথমিক ক্ষেত্রে অনুরূপ, দ্বৈত সম্ভাব্যতা সহনশীলতার অনুবাদ করা দ্বৈতবাউন্ডে সহনশীলতার অনুবাদ করা অ-তুচ্ছ, বিশেষত যখন সম্ভাব্যতা সহনশীলতা তুলনামূলকভাবে বড় হয়। যাইহোক, কিছু সলভার ডুয়ালবাউন্ডের একটি সংশোধিত সংস্করণ সরবরাহ করে যা সংখ্যাগতভাবে নিরাপদ হতে পারে। এই সংশোধিত সংস্করণটি সলভারের নির্দিষ্ট আউটপুট (যেমন পিডিএলপি, পিডিএলপি_আউটপুট.কনভারজেন্স_ইনফর্মেশন.অরেক্টেড_ডুয়াল_অবজেক্টিভ) এর মাধ্যমে অ্যাক্সেস করা যেতে পারে। * এমআইপি সলভারদের জন্য, ডুয়ালবাউন্ড কিছু অবিচ্ছিন্ন শিথিলকরণের (যেমন এলপি শিথিলকরণ) জন্য দ্বৈত সমাধানের সাথে যুক্ত হতে পারে তবে এটি প্রায়শই সলভার এক্সিকিউশনের একটি জটিল পরিণতি এবং এটি সাধারণত এলপি সলভারদের দ্বারা রিপোর্ট করা সীমানার চেয়ে বেশি পরিমাণে অনর্থক। |
সলিউশনপ্রোটো
সমাধানে যা অন্তর্ভুক্ত রয়েছে তা সমস্যা এবং সমাধানকারী ধরণের উপর নির্ভর করে। বর্তমান সাধারণ নিদর্শনগুলি হ'ল 1. এমআইপি সলভারগুলি কেবলমাত্র একটি প্রাথমিক সমাধান দেয়। ২. সিমপ্লেক্স এলপি সলভারগুলি প্রায়শই একটি ভিত্তি এবং এই ভিত্তিতে সম্পর্কিত প্রাথমিক এবং দ্বৈত সমাধানগুলি ফিরিয়ে দেয়। ৩. অন্যান্য অবিচ্ছিন্ন সলভারগুলি প্রায়শই একটি প্রাথমিক এবং দ্বৈত সমাধান সমাধান দেয় যা সলভার-নির্ভর আকারে সংযুক্ত থাকে।
প্রয়োজনীয়তা: * কমপক্ষে একটি ক্ষেত্র অবশ্যই সেট করা উচিত; একটি সমাধান খালি হতে পারে না।
JSON প্রতিনিধিত্ব |
---|
{ "primalSolution": { object ( |
ক্ষেত্র | |
---|---|
primalSolution | |
dualSolution | |
basis | |
প্রিমালসোলিউশনপ্রোটো
একটি অপ্টিমাইজেশন সমস্যার সমাধান।
যেমন একটি সাধারণ লিনিয়ার প্রোগ্রাম বিবেচনা করুন: মিনিট সি * এক্স এসটি এ * এক্স> = বিএক্স> = 0. একটি প্রাথমিক সমাধান হ'ল এক্সকে অ্যাসাইনমেন্ট মান। এটি যদি উপরে থেকে একটি * x> = b এবং x> = 0 সন্তুষ্ট করে তবে এটি সম্ভব। নীচে নীচে প্রিমালসোলিউশনপ্রোটোতে, ভেরিয়েবলভ্যালুগুলি এক্স এবং উদ্দেশ্যভিত্তিক সি * এক্স।
JSON প্রতিনিধিত্ব |
---|
{ "variableValues": { object ( |
ক্ষেত্র | |
---|---|
variableValues | প্রয়োজনীয়তা: * ভেরিয়েবলভ্যালু.আইডিগুলি ভেরিয়েবেলস্প্রোটো.আইডিগুলির উপাদান। * ভেরিয়েবল ভ্যালু.মেলুগুলি অবশ্যই সীমাবদ্ধ হতে হবে। |
objectiveValue | অন্তর্নিহিত সলভার দ্বারা গণনা করা হিসাবে উদ্দেশ্যমূলক মান। অসীম বা নান হতে পারে না। |
auxiliaryObjectiveValues | অন্তর্নিহিত সলভার দ্বারা গণনা করা হিসাবে সহায়ক উদ্দেশ্যমূলক মান। কীগুলি অবশ্যই বৈধ সহায়ক উদ্দেশ্যমূলক আইডি হতে হবে। মানগুলি অসীম বা ন্যান হতে পারে না। |
feasibilityStatus | অন্তর্নিহিত সলভার অনুযায়ী সমাধানের সম্ভাব্যতা স্থিতি। |
ডুয়েলসোলিউশনপ্রোটো
একটি অপ্টিমাইজেশন সমস্যার দ্বৈত একটি সমাধান।
যেমন প্রাথমিক দ্বৈত জুটি লিনিয়ার প্রোগ্রামের জুটি বিবেচনা করুন: (প্রাথমিক) (দ্বৈত) মিনিট সি * এক্স ম্যাক্স বি * ওয়াই এসটি এ * এক্স> = বি এসটি ওয়াই * এ + আর = সিএক্স> = 0 ওয়াই, আর> = 0. দ্বৈত সমাধান হ'ল জুটি (ওয়াই, আর)। এটি যদি উপরের (দ্বৈত) থেকে সীমাবদ্ধতাগুলি পূরণ করে তবে এটি সম্ভব।
নীচের বার্তায়, y হ'ল ডুয়ালভ্যালুগুলি, আর হ্রাসকোস্টগুলি এবং বি * ওয়াই উদ্দেশ্যমূলক মান।
JSON প্রতিনিধিত্ব |
---|
{ "dualValues": { object ( |
ক্ষেত্র | |
---|---|
dualValues | প্রয়োজনীয়তা: * ডুয়ালভ্যালু.আইডিগুলি লিনিয়ারকন্ট্রেন্টস.আইডিএসের উপাদান। * দ্বৈতভ্যালু। মূল্যগুলি অবশ্যই সীমাবদ্ধ হতে হবে। |
reducedCosts | প্রয়োজনীয়তা: * হ্রাসকস্টস.আইডিগুলি ভেরিয়েবলসপ্রোটো.আইডিগুলির উপাদান। * হ্রাসকস্টস. মূল্যগুলি অবশ্যই সীমাবদ্ধ হতে হবে। |
feasibilityStatus | অন্তর্নিহিত সলভার অনুযায়ী সমাধানের সম্ভাব্যতা স্থিতি। |
objectiveValue | |
প্রিমালরেপ্রোটো
একটি অপ্টিমাইজেশন সমস্যার উপর সীমাহীন উন্নতির একটি দিক; সমতুল্যভাবে, অপ্টিমাইজেশন সমস্যার দ্বৈততার জন্য অযোগ্যতার একটি শংসাপত্র।
যেমন একটি সাধারণ লিনিয়ার প্রোগ্রাম বিবেচনা করুন: মিনিট সি * এক্স এসটি এ * এক্স> = বিএক্স> = 0 একটি প্রাথমিক রশ্মি একটি এক্স যা সন্তুষ্ট হয়: সি * এক্স <0 এ * এক্স> = 0 এক্স> = 0 এটি একটি সম্ভাব্য প্রদত্ত পর্যবেক্ষণ করুন সমাধান, প্রাথমিক রশ্মির যে কোনও ইতিবাচক একাধিক প্লাস সেই সমাধানটি এখনও সম্ভব এবং আরও ভাল উদ্দেশ্যমূলক মান দেয়। একটি প্রাথমিক রশ্মি দ্বৈত অপ্টিমাইজেশান সমস্যাটি অনিবার্য প্রমাণ করে।
নীচে প্রাইমালরে বার্তায়, পরিবর্তনশীলভ্যালুগুলি x।
JSON প্রতিনিধিত্ব |
---|
{
"variableValues": {
object ( |
ক্ষেত্র | |
---|---|
variableValues | প্রয়োজনীয়তা: * ভেরিয়েবলভ্যালু.আইডিগুলি ভেরিয়েবেলস্প্রোটো.আইডিগুলির উপাদান। * ভেরিয়েবল ভ্যালু.মেলুগুলি অবশ্যই সীমাবদ্ধ হতে হবে। |
ডুয়ালরেপ্রোটো
একটি অপ্টিমাইজেশন, সমস্যার দ্বৈত উন্নতির একটি দিক; সমানভাবে, প্রাথমিক অযোগ্যতার একটি শংসাপত্র।
যেমন প্রাথমিক দ্বৈত জুটি লিনিয়ার প্রোগ্রামের জুটি বিবেচনা করুন: (প্রাথমিক) (দ্বৈত) মিনিট সি * এক্স ম্যাক্স বি * ওয়াই এসটি এ * এক্স> = বি এসটি ওয়াই * এ + আর = সিএক্স> = 0 ওয়াই, আর> = 0. দ্বৈত রশ্মি হ'ল জুটি (y, r) সন্তোষজনক: b * y> 0 y * a + r = 0 y, r> = 0 পর্যবেক্ষণ করুন যে দ্বৈত সম্ভাব্য দ্রবণে একটি ইতিবাচক একাধিক (y, r) যুক্ত করা দ্বৈত সম্ভাব্যতা বজায় রাখে এবং উদ্দেশ্যকে উন্নত করে (দ্বৈত প্রমাণ করা সীমাহীন)। দ্বৈত রশ্মি প্রমাণ করে যে প্রাথমিক সমস্যাটি অনিবার্য।
নীচের ডুয়ালরে বার্তায়, y দ্বৈত ভ্যালু এবং আর হ্রাসকোস্টগুলি।
JSON প্রতিনিধিত্ব |
---|
{ "dualValues": { object ( |
ক্ষেত্র | |
---|---|
dualValues | প্রয়োজনীয়তা: * ডুয়ালভ্যালু.আইডিগুলি লিনিয়ারকন্ট্রেন্টস.আইডিএসের উপাদান। * দ্বৈতভ্যালু। মূল্যগুলি অবশ্যই সীমাবদ্ধ হতে হবে। |
reducedCosts | প্রয়োজনীয়তা: * হ্রাসকস্টস.আইডিগুলি ভেরিয়েবলসপ্রোটো.আইডিগুলির উপাদান। * হ্রাসকস্টস. মূল্যগুলি অবশ্যই সীমাবদ্ধ হতে হবে। |
সলভেস্ট্যাটসপ্রোটো
JSON প্রতিনিধিত্ব |
---|
{
"solveTime": string,
"problemStatus": {
object ( |
ক্ষেত্র | |
---|---|
solveTime | ম্যাথ_ওপটি দ্বারা পরিমাপ করা হিসাবে ওয়াল ঘড়ির সময় অতিবাহিত, প্রায় সলভারের ভিতরে সময় :: সমাধান ()। দ্রষ্টব্য: এর মধ্যে মডেল তৈরির কাজ অন্তর্ভুক্ত নয়। ' |
problemStatus | প্রাথমিক এবং দ্বৈত সমস্যার জন্য সম্ভাব্যতা স্থিতি। |
simplexIterations | |
barrierIterations | |
firstOrderIterations | |
nodeCount | |