[Os-project-managers] Painted into a corner

Horand Gassmann Horand.Gassmann at dal.ca
Thu Feb 7 19:11:33 EST 2013


Hi guys,

this is going to be a rather long message, but for Jun's benefit it is  
best to recap the discussion that Kipp and I had on the subject.

1. Prior to today, the user's manual read (in the section on the  
send() command --- 4.4.2 or 5.4.2, depending on the configuration),  
second paragraph: "The send method requires a jobID.[...] When no  
JobID is specified, the OSSolverService method first invokes the  
getJobID service method [and] puts this into an OSoL file..."

There also was an element oscommandline->jobID in the OSCommandLine  
object, and the implementation of the send() method checked whether  
oscommandline->jobID is empty, in which case a call to getJobID() was  
initiated. However, we neglected (I think by way of an oversight) to  
implement looking for jobID in the command line parser.

In addition, there was a problem in that the jobID once created had to  
be put into an OSoL file, and since we never read any existing OSoL  
file, whatever was there would have been clobbered.

2. Today Kipp and I discussed the situation and decided to do the following:

(i) make the OSoL file mandatory, containing at least  a <jobID> element;
(ii) eliminate oscommandline->jobID;
(iii) put all of this into the user's manual.

3. However, I have had a change of heart since then. The problem, as I  
see it now, is that we preclude any possibility of reusing an OSoL  
file, and in particular make it nearly impossible to create automatic  
loops that solve a problem repeatedly.

4. My current thinking is that the idea of an oscommandline->jobID was  
not a bad one, since the jobID could be supplied on a command line  
that could be generated automatically. We needed, however, to  
implement the jobID properly as part of the command line parser. If  
there was no jobID specified, then the generation of an automatic one  
also has lots to recommend it.

In addition, we need to make sure that any information contained in an  
OSoL file does not get lost. This would mean that any OSoL file would  
have to be read and parsed, checked for the presence of a <jobID>  
element, and the information of the <jobID> element would have to be  
replaced by the command line information, if a jobID was specified  
there, or by the return value of a call to getJobID() if there was no  
jobID on either the command line or in the OSoL file.

The big disadvantage of this approach seems to be that it violates a  
principle we set out at one point, which states that we will neither  
read nor write an OSoL file locally for a remote job. On the other  
hand, we already violate that principle when we parse an AMPL .nl file  
that contains array-valued options. If an OSoL file is also present,  
both files /must/ be combined in order to retain all the information,  
and that is how I did implement things in OSnl2OS.cpp.

Just thought we should all be aware of this. I invite your comments, as usual.

Cheers

gus

-------------------------------------------------------

Horand I. Gassmann, Professor

Kenneth C. Rowe School of Business, Dalhousie University
6100 University Avenue, PO Box 15000
Halifax, Nova Scotia, Canada, B3H 4R2
ph. (902) 494-1844
fax (902) 494-1107

http://myweb.dal.ca/gassmann/



More information about the Os-project-managers mailing list