शेड्यूलिंग समस्याओं के कई परिवार हैं। मुझे एक समस्या है जहां मेरे पास नौकरियों/कार्यों के परिवार हैं जहां एक परिवार से दूसरे परिवार में संक्रमण मशीन (सेटअप समय) को पुन: कॉन्फ़िगर करने की आवश्यकता है।संचयी के साथ सेटअप समय अभिव्यक्त
मैं इस समस्या को हल करने के लिए cumulatives[2/3]
का उपयोग कर रहा हूं, लेकिन मुझे यह सुनिश्चित नहीं है कि सेटअप समय व्यक्त किया जा सकता है।
इस छोटे से उदाहरण में मेरे पास 3 अलग-अलग परिवारों के 10 कार्य हैं। कोई भी कार्य किसी भी मशीन पर चलाया जा सकता है, लेकिन एक परिवार में एक कार्य से दूसरे परिवार में किसी अन्य कार्य में एक स्विच को एक सेटअप-समय जोड़ने की आवश्यकता होती है।
:- use_module(library(clpfd)).
:- use_module(library(lists)).
go(Ss, Es, Ms, Tm, Lab) :-
Ss = [S1, S2, S3, S4,S5,S6,S7,S8,S9,S10], %Starttimes
Es = [E1, E2, E3, E4,E5,E6,E7,E8,E9,E10], %Endtimeds
Ms = [M1, M2, M3, M4,M5,M6,M7,M8,M9,M10], %MachineIds
domain(Ss, 1, 30),
domain(Es, 1, 30),
domain(Ms, 1, 3),
Tasks = [
%Family 1: Setuptime, Su1 = 4,
task( S1, 6, E1, 1, M1), %Task T1
task( S2, 6, E2, 1, M2), %Task T2
task( S3, 3, E3, 1, M3), %Task T3
task( S4, 7, E4, 1, M4), %Task T4
%Family 2: Setuptime, Su2 = 3
task( S5, 5, E5, 1, M5), %Task T5
task( S6, 8, E6, 1, M6), %Task T6
task( S7, 4, E7, 1, M7), %Task T7
%Family 3: Setuptime, Su3 = 5
task( S8, 4, E8, 1, M8), %Task T8
task( S9, 4, E9, 1, M9), %Task T9
task(S10, 5, E10, 1, M10) %Task T10
],
%All machines has resource capacity = 1
Machines = [
machine( 1, 1), %M1
machine( 2, 1), %M2
machine( 3, 1) %M3
],
cumulatives(Tasks, Machines, [bound(upper),task_intervals(true)]),
maximum(MaxEndTime, Es),
%Make the list of options to pass to the labeling predicate
append([ [minimize(MaxEndTime)], [time_out(Tm, _)], Lab ], LabOpt),
Vars=[S1,M1,S2,M2,S3,M3,S4,M4,S5,M5,S6,M6,S7,M7,S8,M8,S9,M9,S10,M10],
labeling(LabOpt, Vars).
एक वैध अनुसूची (लेकिन इष्टतम नहीं) हो सकता है:
M1: Su1,T1,T2,Su3,T10
M2: Su2,T5,T6,Su3,T8
M3: Su1,T3,T4,Su2,T7,Su3,T9
कैसे है cumulatives[2/3]
के उपयोग के साथ एक साथ इस व्यक्त करने के लिए सबसे अच्छा तरीका है? प्रत्येक कार्य की अवधि को एक डोमेन वैरिएबल बनाकर और इसमें अतिरिक्त बाधाएं जोड़कर?