Hi to you all dear Oz users,
after about 1 year of good testing on field with a jobshop scheduler written in Oz and VisualBasic, I started a 2nd iteration of the project, which can be identified as "Objective Scheduler": an attempt to objectify the functional interface of a programming module, oriented to the solution of industrial processes scheduling.
A starting point of the problem could be ILOG Scheduler, a well known set of tools often cited as one of the best in order to model the scheduling problems.
So I started with the programmer's interface with some examples of use:
%Activities are entities with an ID a START an END and a DURATION
%an activity with duration of 5
A = {Object.new Activity init(id:'A' d:5)}
%an activity with duration of 5
B = {Object.new Activity init(id:'B' d:10)}
%we can post a precedence constraint
{A precedes(B)}
%and inspect the activities' bounds
other examples are:
%extending time intervals algebra
{A endsWith(B)}
{A startsWith(B)}
...
%resources
R1={Object.new UnaryResource init(id:'Crane')}
{A uses(R1)}
T1={Object.new DiscreteResource init(id:'A-Team' capacity: 5)}
{B uses(T1)}
...
%materials
Nut={Object.new Material init(id:'Nut')}
Screw={Object.new Material init(id:'Screw')}
{A consumes([10#Nut 10#Screw])}
I understand that to "objectify" we must fight with many drawbacks concerning efficiency, model "impedence" due to the fact that we can't use stateful entities inside computation spaces, and so on; but what I can say is that the main target of the project is not efficiency but "brain resources" that is programmer's brain.
I would like to read some opinions from you and, eventually share coding experiences.
Bye,
Adriano
-
Please send submissions to users@mozart-oz.org
and administriva mail to users-request@mozart-oz.org.
The Mozart Oz web site is at http://www.mozart-oz.org/.