[Os-project-managers] Updates to OSoL schema
Horand Gassmann
Horand.Gassmann at Dal.Ca
Thu Jul 26 22:05:07 EDT 2012
Hi guys,
to follow up on the conversation Jun and I had this afternoon, I
attach for your enjoyment a proposed new version of the OSoL schema.
(I checked, and it seems to be valid.) I summarize below the main
features.
1. There is a new element added to the <job> element, <outputOptions>.
<outputOptions> consists of an optional <stdout> element, followed by
zero or more <outputStream> elements.
2. <stdout> has an optional attribute "defaultPrintLevel" as well as
an optional boolean attribute "returnFromRemoteSolver", which will
replace the <other> mechanism we implemented recently. I hope this is
not too much work, and I hope that the current approach is more
unified and therefore better. <stdout> also has an optional sequence
of zero or more <special> elements, where special print levels can be
set for different areas/components of the code. Unlike Ipopt we can
add this customization feature at little extra cost, and I think it
will be worth it.
3. The intent of the "returnFromRemoteSolver" is to return the stdout
capture to the local machine. For a local serve I think it should do
nothing (although I can be convinced otherwise, if that turns out to
be easier to implement).
4. If the <stdout> element is missing, there should be a suitable
global default print level, just so that we have covered all the angles.
5. The <outputStream> element is similar to the <stdout> element,
except that it has a mandatory attribute "fileName" instead of
"returnFromRemoteSolver". This underscores that we do not return
files. In fact, the desired behavior is to intercept the presence of
this element in the java servlet and to throw an error if encountered,
as suggested by Kipp this afternoon. For a local solve, on the other
hand, the user is king and can do pretty much whatever makes sense at
the time. There can be as many files as necessary, with as much detail
as needed, and customized as to the area/component that writes the
output.
6. As for the implementation, I envision proceeding along the lines of
Andreas Waechter's code in ipopt. There is an array of output streams,
each with an array of print levels (one print level for each
area/component of the code). This array is populated by the OSoL parser.
7. Every piece of output is sent to a global output handler that
checks each of the output streams to see if the print level and
area/component allow the item to be printed to that stream.
8. I still think that we should have a two-tiered print level
hierarchy, with only the first layer accessible to production code,
and both layers available to a code compiled in Debug mode. The
distinction can be made by defining a global variable _DEBUG (in fact,
I believe this variable is defined already), and hiding each debug
print behind an #ifdef _DEBUG ... #endif construct.
9. If we can get agreement on these basic design features, then we
should move on to defining the areas/components as well as the print
levels we want to make available --- here we can again look to Ipopt
for guidance.
10. And finally we will have to classify each of the 2000 or so print
statements by area/component (easy) and print level (deadly boring and
tedious).
So that's it. Please comment on the schema changes if you get a chance.
Cheers
gus
-------------------------------------------------------
Horand I. Gassmann, Professor
School of Business Administration, 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/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OSoL2.xsd
Type: application/xml
Size: 26144 bytes
Desc: not available
URL: <http://list.coin-or.org/pipermail/os-project-managers/attachments/20120726/866f2f06/attachment-0001.wsdl>
More information about the Os-project-managers
mailing list