Я пытаюсь реализовать механизм для перечисления, если конкретное ограничение было нарушено или нет.Я использую Gurobi, пожалуйста, помогите мне здесь
1) Свести ограничение к минимуму
2) Ограничение законности (ShiftCodelegality_A_Constraint, ShiftCodelegality_B_Constraint)
3) Ограничение порога (ShiftCodelegality_stra__link__tra__B_L__B_L_B_S_T_L_B)1007 *
Мне нужно выяснить это, добавив дополнительные переменные, такие как Extra_A, Extra_B, Extra_A_Legality, Extra_B_Legality.Чтобы я мог использовать значения этих переменных, чтобы понять, нарушено ли ограничение.
Неизмененный файл LP Может быть неправильным, нужны идеи для реализации
\ Model Shift Processing
\ LP format - for model browsing. Use MPS format to capture full model detail.
Minimize
0.4 Person_593800_ShiftA + 0.2 Person_593800_ShiftB
Subject To
Person_593800_Constraint: Person_593800_ShiftA + Person_593800_ShiftB + UNCOV_593800 = 1
Person_862998_Constraint: Person_862998_ShiftA + Person_862998_ShiftB + UNCOV_862998 = 1
ShiftCodelegality_A_Constraint: Person_593800_ShiftA + Person_862998_ShiftA
<= 2
ShiftCodelegality_B_Constraint: Person_593800_ShiftB + Person_862998_ShiftB
<= 2
ShiftCodelegality_A__Threshold_Constraint: Person_593800_ShiftA + Person_862998_ShiftA + UNCOV_ShiftAPOS_0
= 1
ShiftCodelegality_B__Threshold_Constraint: Person_593800_ShiftB + Person_862998_ShiftB + UNCOV_ShiftBPOS_0
= 0
MinimizedUncoverageConstraint: UNCOV_ShiftAPOS_0
= 0
PersonWiseAllocationConstraint: = 0
Bounds
Binaries
Person_593800_ShiftA Person_593800_ShiftB Person_862998_ShiftA Person_862998_ShiftB UNCOV_593800
UNCOV_862998 UNCOV_ShiftAPOS_0 UNCOV_ShiftBPOS_0
End
Ниже приведен файл измененного LP
\ Model Shift Processing
\ LP format - for model browsing. Use MPS format to capture full model detail.
Minimize
0.4 Person_593800_ShiftA + 0.2 Person_593800_ShiftB + 50 Extra_A
Subject To
Person_593800_Constraint: Person_593800_ShiftA + Person_593800_ShiftB + UNCOV_593800 = 1
Person_862998_Constraint: Person_862998_ShiftA + Person_862998_ShiftB + UNCOV_862998 = 1
ShiftCodelegality_A_Constraint: Person_593800_ShiftA + Person_862998_ShiftA + Extra_A
<= 2
ShiftCodelegality_B_Constraint: Person_593800_ShiftB + Person_862998_ShiftB + Extra_B
<= 2
ShiftCodelegality_A__Threshold_Constraint: Person_593800_ShiftA + Person_862998_ShiftA + UNCOV_ShiftAPOS_0
- Extra_A_Legality = 1
ShiftCodelegality_B__Threshold_Constraint: Person_593800_ShiftB + Person_862998_ShiftB + UNCOV_ShiftBPOS_0
- Extra_B_Legality = 0
MinimizedUncoverageConstraint: UNCOV_ShiftAPOS_0 + UNCOV_ShiftBPOS_0
= 0
PersonWiseAllocationConstraint: = 0
Bounds
Binaries
Person_593800_ShiftA Person_593800_ShiftB Person_862998_ShiftA Person_862998_ShiftB UNCOV_593800
UNCOV_862998 UNCOV_ShiftAPOS_0 UNCOV_ShiftBPOS_0
End