[ library(ic_probing_for_scheduling) | The ECLiPSe Libraries | Reference Manual | Alphabetic Index ]

# probe_sched(+Starts, +Durations, +Resources, +MaxResource, ?CostFun)

Find a resource-feasible schedule that minimises the cost function

Starts
  a list of (n) task start times (integers or finite domain variables)
Durations
  a list of (n) task durations (integers or finite domain variables)
Resources
  a list of (n) task resource needs (integers or finite domain variables)
MaxResource
  The available resource, not to be exceeded (integer)
CostFun
  An expression involving start times and durations to be minimised

## Description

This predicate finds start times for a set of tasks, which minimise the value of a given cost function.

The cost function is the only information the search algorithm can use to focus on the optimum. It cannot guide the search if the cost is a variable, only linked to the tasks start times by constraints. For this reason the cost function admits the special functions abs and maxlist.

The syntax for cost functions is:

    CostFunction ::- PosExpr | PosExpr + PosExpr | Integer * PosExpr
    PosExpr ::- abs(LinearExpr) | maxlist([LinearExpr]) | LinearExpr.

The algorithm is described in more detail in the documentation of probe_cstr_sched/7.

### Resatisfiable

no

## Examples

    probe_schedule(Starts,CostFun) :-
    	Starts=[X,Y,Z],
            ic:(Starts::1..10),
            Durations=[10,5,5],
            Resources=[R1,R2,R3],
            ic:(R1::1..2), R2=2, R3=1,
            MaxResource=2,
            [OldX,OldY,OldZ]=[1,5,5],
            CostFun= abs(X-OldX)+abs(Y-OldY)+abs(Z-OldZ),
    	probe_sched(Starts,Durations,Resources,MaxResource,CostFun).

## See Also

probe_cstr_sched / 7, fd : min_max / 2, ic_probe : set_up_probe / 5, probe : set_up_probe / 5, ic_make_overlap_bivs : make_overlap_bivs / 5, make_overlap_bivs : make_overlap_bivs / 5, probe_search : probe_search / 5, ic_probe_search : probe_search / 5, ic_global : maxlist / 2, ic : maxlist / 2, fd_global : maxlist / 2