ฉันจะเปลี่ยนประเภทตัวแปรการตัดสินใจใน Concert Technologies (ด้วย Java) ได้อย่างไร

Aug 20 2020

ฉันมีแบบจำลอง MILP ที่มีตัวแปรต่อเนื่อง ($y_{ij}$) และไบนารี ($x_{ij}$). ฉันใช้ Java และ cplex 12.8 สำหรับการนำไปใช้งาน

มีวิธีใดบ้างที่ - โดยใช้ Java-cplex API - ฉันจะสามารถเขียนโมเดลเดียวที่สามารถแก้ไขได้ก่อนด้วยไบนารี $x_{ij}$แล้วสำหรับตัวแปรต่อเนื่อง ($0 \leq x_{ij} \leq 1$)? ฉันต้องการเห็นช่องว่างระหว่าง LP-R และ MIP ในทันที - และไม่ต้องการสร้าง LP และ MILP สองรุ่นที่แตกต่างกัน

คำตอบ

2 AlexFleischer Aug 20 2020 at 21:53

ไม่สามารถเปลี่ยนประเภทของตัวแปรได้ อย่างไรก็ตามสามารถเขียนทับสำหรับโมเดลเฉพาะได้โดยการเพิ่มอ็อบเจ็กต์ IloConversion ซึ่งช่วยให้คุณระบุประเภทใหม่สำหรับตัวแปรภายในโมเดลนั้น เมื่อ ILOG CPLEX พบออบเจ็กต์การแปลงในโมเดลที่ใช้งานอยู่จะใช้ประเภทตัวแปรที่ระบุในออบเจ็กต์การแปลงแทนประเภทดั้งเดิมที่ระบุสำหรับการเพิ่มประสิทธิภาพ ตัวอย่างเช่นในโมเดลที่ประกอบด้วย:

IloNumVar x = cplex.numVar(0.0, 1.0);   
cplex.add(cplex.conversion(x, IloNumVarType.Int));