سؤال

هل من الممكن استخدام واجهة برمجة تطبيقات MSF لتحديد متغير مثل Semi-teger (V = 0, ، أو a <= V <= b)?

فيما يلي مثال في LP_Solve يستخدم الكلمات الرئيسية "SEC" و "int" للإشارة إلى أن المتغيرات شبه مستمرة ومكثفة.

max: 0.5 Q1 + 0.55 Q2 ;

Q1 >= 5;
Q1 <= 10 ;
Q2 >= 5;
Q2 <= 10;
Q1 + Q2 <= 10;

sec Q1,Q2 ;
int Q1,Q2 ;

شيء مشابه في منظمة أطباء بلا حدود سيكون لطيفًا. ألاحظ أنه من الممكن استدعاء مكون إضافي لـ GUROBI ضمن منظمة أطباء بلا حدود ، لكن لا يمكنني العثور على أي مكان في واجهة برمجة التطبيقات لتكون قادرًا على تعيين نوع المتغير بشكل صحيح (أعتقد أن GUROBI يسميه VTYPE) ، لذلك أفترض أنه أيضًا لا تتعرض في API .NET أو غير متوفر في إصدار Gurobi الذي يستخدمه منظمة أطباء بلا حدود؟ بدلاً من ذلك ، هل هناك طريقة لطيفة للاتصال بـ LP_Solve من .NET؟

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

المحلول

يمكنك القيام بذلك مع Solver Foundation ولكن لا يوجد أي معادل للكلمة الرئيسية "SEC". بدلاً من ذلك ، يمكنك إضافة قرار دمية 0-1 لكل متغير شبه عام. للحصول على مثالك الأصلي الذي يتضمن "V" ، إليك كيفية القيام بذلك في OML:

Model[
  Decisions[
    Integers[0, 1],
    VPositive
  ],
  Decisions[
    Reals,
    V
  ],
  Constraints[
    constraint -> 10 * VPositive<= V <= 20 * VPositive
  ]
]

إذا كنت تستخدم واجهة برمجة تطبيقات Foundation Solver ، فستضيف القرارات التماثلية والقيود والأهداف باستخدام نموذج الكائن. طريقة تحديد نوع القرار هي استخدام مجال ، المقدم في CTOR.

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