48 std::ostringstream osolStr, outStr;
50 const char dirsep=
'\\';
52 const char dirsep=
'/';
56 xsltDir = dirsep ==
'/' ?
"../stylesheets/" :
"..\\stylesheets\\";
58 xsltDir =
"http://www.coin-or.org/OS/stylesheets/";
60 bool generalTagPrinted;
66 osolStr <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ;
67 osolStr <<
"<?xml-stylesheet type=\"text/xsl\" href=\"";
69 osolStr <<
"OSoL.xslt\"?>";
71 osolStr <<
"<osol xmlns=\"os.optimizationservices.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
72 osolStr <<
"xsi:schemaLocation=\"os.optimizationservices.org http://www.optimizationservices.org/schemas/";
74 osolStr <<
"/OSoL.xsd\" >" ;
82 osolStr <<
"<optionHeader>" << endl;
84 osolStr <<
"</optionHeader>" << endl;
92 generalTagPrinted =
false;
95 if (generalTagPrinted ==
false)
97 osolStr <<
"<general>" << endl;
98 generalTagPrinted =
true;
100 osolStr <<
"<serviceURI>" <<
m_OSOption->general->serviceURI <<
"</serviceURI>" << endl;
104 if (generalTagPrinted ==
false)
106 osolStr <<
"<general>" << endl;
107 generalTagPrinted =
true;
109 osolStr <<
"<serviceName>" <<
m_OSOption->general->serviceName <<
"</serviceName>" << endl;
113 if (generalTagPrinted ==
false)
115 osolStr <<
"<general>" << endl;
116 generalTagPrinted =
true;
118 osolStr <<
"<instanceName>" <<
m_OSOption->general->instanceName <<
"</instanceName>" << endl;
120 if (
m_OSOption->general->instanceLocation != NULL)
122 if (generalTagPrinted ==
false)
124 osolStr <<
"<general>" << endl;
125 generalTagPrinted =
true;
127 if (
m_OSOption->general->instanceLocation->locationType ==
"")
129 osolStr <<
"<instanceLocation>";
133 osolStr <<
"<instanceLocation locationType=\"" <<
m_OSOption->general->instanceLocation->locationType <<
"\">";
135 osolStr <<
m_OSOption->general->instanceLocation->value <<
"</instanceLocation>" << endl;
139 if (generalTagPrinted ==
false)
141 osolStr <<
"<general>" << endl;
142 generalTagPrinted =
true;
144 osolStr <<
"<jobID>" <<
m_OSOption->general->jobID <<
"</jobID>" << endl;
146 if (
m_OSOption->general->solverToInvoke !=
"")
148 if (generalTagPrinted ==
false)
150 osolStr <<
"<general>" << endl;
151 generalTagPrinted =
true;
153 osolStr <<
"<solverToInvoke>" <<
m_OSOption->general->solverToInvoke <<
"</solverToInvoke>" << endl;
157 if (generalTagPrinted ==
false)
159 osolStr <<
"<general>" << endl;
160 generalTagPrinted =
true;
162 osolStr <<
"<license>" <<
m_OSOption->general->license <<
"</license>" << endl;
166 if (generalTagPrinted ==
false)
168 osolStr <<
"<general>" << endl;
169 generalTagPrinted =
true;
171 osolStr <<
"<userName>" <<
m_OSOption->general->userName <<
"</userName>" << endl;
175 if (generalTagPrinted ==
false)
177 osolStr <<
"<general>" << endl;
178 generalTagPrinted =
true;
180 osolStr <<
"<password>" <<
m_OSOption->general->password <<
"</password>" << endl;
184 if (generalTagPrinted ==
false)
186 osolStr <<
"<general>" << endl;
187 generalTagPrinted =
true;
189 if (
m_OSOption->general->contact->transportType ==
"")
191 osolStr <<
"<contact>";
195 osolStr <<
"<contact transportType=\"" <<
m_OSOption->general->contact->transportType <<
"\">";
197 osolStr <<
m_OSOption->general->contact->value <<
"</contact>" << endl;
199 if (
m_OSOption->general->otherOptions != NULL)
201 if (generalTagPrinted ==
false)
203 osolStr <<
"<general>" << endl;
204 generalTagPrinted =
true;
206 osolStr <<
"<otherOptions numberOfOtherOptions=\"";
207 osolStr <<
m_OSOption->general->otherOptions->numberOfOtherOptions <<
"\">" << endl;
208 for (
int i=0; i <
m_OSOption->general->otherOptions->numberOfOtherOptions; i++)
210 osolStr <<
"<other name=\"" <<
m_OSOption->general->otherOptions->other[i]->name <<
"\"";
211 if (
m_OSOption->general->otherOptions->other[i]->value !=
"")
212 osolStr <<
" value=\"" <<
m_OSOption->general->otherOptions->other[i]->value <<
"\"";
213 if (
m_OSOption->general->otherOptions->other[i]->description !=
"")
215 osolStr <<
"/>" << endl;
217 osolStr <<
"</otherOptions>" << endl;
219 if (generalTagPrinted ==
false)
220 osolStr <<
"<general>" << endl;
222 osolStr <<
"</general>" << endl;
234 osolStr <<
"<system>" << endl;
237 osolStr <<
"<minDiskSpace";
238 if (
m_OSOption->system->minDiskSpace->unit !=
"byte")
239 osolStr <<
" unit=\"" <<
m_OSOption->system->minDiskSpace->unit <<
"\"";
240 if (
m_OSOption->system->minDiskSpace->description !=
"")
247 osolStr <<
"</minDiskSpace>" << endl;
249 if (
m_OSOption->system->minMemorySize != NULL)
251 osolStr <<
"<minMemorySize";
252 if (
m_OSOption->system->minMemorySize->unit !=
"byte")
253 osolStr <<
" unit=\"" <<
m_OSOption->system->minMemorySize->unit <<
"\"";
254 if (
m_OSOption->system->minMemorySize->description !=
"")
261 osolStr <<
"</minMemorySize>" << endl;
265 osolStr <<
"<minCPUSpeed";
266 if (
m_OSOption->system->minCPUSpeed->unit !=
"hertz")
267 osolStr <<
" unit=\"" <<
m_OSOption->system->minCPUSpeed->unit <<
"\"";
268 if (
m_OSOption->system->minCPUSpeed->description !=
"")
275 osolStr <<
"</minCPUSpeed>" << endl;
279 osolStr <<
"<minCPUNumber";
280 if (
m_OSOption->system->minCPUNumber->description !=
"")
283 osolStr <<
m_OSOption->system->minCPUNumber->value <<
"</minCPUNumber>" << endl;
287 osolStr <<
"<otherOptions numberOfOtherOptions=\"";
288 osolStr <<
m_OSOption->system->otherOptions->numberOfOtherOptions <<
"\">" << endl;
289 for (
int i=0; i <
m_OSOption->system->otherOptions->numberOfOtherOptions; i++)
291 osolStr <<
"<other name=\"" <<
m_OSOption->system->otherOptions->other[i]->name <<
"\"";
292 if (
m_OSOption->system->otherOptions->other[i]->value !=
"")
293 osolStr <<
" value=\"" <<
m_OSOption->system->otherOptions->other[i]->value <<
"\"";
294 if (
m_OSOption->system->otherOptions->other[i]->description !=
"")
296 osolStr <<
"/>" << endl;
298 osolStr <<
"</otherOptions>" << endl;
300 osolStr <<
"</system>" << endl;
311 osolStr <<
"<service>" << endl;
314 osolStr <<
"<type>" <<
m_OSOption->service->type <<
"</type>" << endl;
316 if (
m_OSOption->service->otherOptions != NULL)
318 osolStr <<
"<otherOptions numberOfOtherOptions=\"";
319 osolStr <<
m_OSOption->service->otherOptions->numberOfOtherOptions <<
"\">" << endl;
320 for (
int i=0; i <
m_OSOption->service->otherOptions->numberOfOtherOptions; i++)
322 osolStr <<
"<other name=\"" <<
m_OSOption->service->otherOptions->other[i]->name <<
"\"";
323 if (
m_OSOption->service->otherOptions->other[i]->value !=
"")
324 osolStr <<
" value=\"" <<
m_OSOption->service->otherOptions->other[i]->value <<
"\"";
325 if (
m_OSOption->service->otherOptions->other[i]->description !=
"")
327 osolStr <<
"/>" << endl;
329 osolStr <<
"</otherOptions>" << endl;
331 osolStr <<
"</service>" << endl;
342 osolStr <<
"<job>" << endl;
347 osolStr <<
"<maxTime unit=\"" <<
m_OSOption->job->maxTime->unit <<
"\">";
352 osolStr <<
"</maxTime>" << endl;
354 if (
m_OSOption->job->requestedStartTime !=
"")
355 osolStr <<
"<requestedStartTime>" <<
m_OSOption->job->requestedStartTime <<
"</requestedStartTime>" << endl;
358 osolStr <<
"<dependencies numberOfJobIDs=\"";
359 osolStr <<
m_OSOption->job->dependencies->numberOfJobIDs <<
"\">" << endl;
360 for (
int i=0; i <
m_OSOption->job->dependencies->numberOfJobIDs; i++)
361 osolStr <<
"<jobID>" <<
m_OSOption->job->dependencies->jobID[i] <<
"</jobID>" << endl;
362 osolStr <<
"</dependencies>" << endl;
364 if (
m_OSOption->job->requiredDirectories != NULL)
366 osolStr <<
"<requiredDirectories numberOfPaths=\"";
367 osolStr <<
m_OSOption->job->requiredDirectories->numberOfPaths <<
"\">" << endl;
368 for (
int i=0; i <
m_OSOption->job->requiredDirectories->numberOfPaths; i++)
369 osolStr <<
"<path>" <<
m_OSOption->job->requiredDirectories->path[i] <<
"</path>" << endl;
370 osolStr <<
"</requiredDirectories>" << endl;
374 osolStr <<
"<requiredFiles numberOfPaths=\"";
375 osolStr <<
m_OSOption->job->requiredFiles->numberOfPaths <<
"\">" << endl;
376 for (
int i=0; i <
m_OSOption->job->requiredFiles->numberOfPaths; i++)
377 osolStr <<
"<path>" <<
m_OSOption->job->requiredFiles->path[i] <<
"</path>" << endl;
378 osolStr <<
"</requiredFiles>" << endl;
380 if (
m_OSOption->job->directoriesToMake != NULL)
382 osolStr <<
"<directoriesToMake numberOfPaths=\"";
383 osolStr <<
m_OSOption->job->directoriesToMake->numberOfPaths <<
"\">" << endl;
384 for (
int i=0; i <
m_OSOption->job->directoriesToMake->numberOfPaths; i++)
385 osolStr <<
"<path>" <<
m_OSOption->job->directoriesToMake->path[i] <<
"</path>" << endl;
387 osolStr <<
"</directoriesToMake>" << endl;
391 osolStr <<
"<filesToMake numberOfPaths=\"";
392 osolStr <<
m_OSOption->job->filesToMake->numberOfPaths <<
"\">" << endl;
393 for (
int i=0; i <
m_OSOption->job->filesToMake->numberOfPaths; i++)
394 osolStr <<
"<path>" <<
m_OSOption->job->filesToMake->path[i] <<
"</path>" << endl;
395 osolStr <<
"</filesToMake>" << endl;
397 if (
m_OSOption->job->inputDirectoriesToMove != NULL)
399 osolStr <<
"<inputDirectoriesToMove numberOfPathPairs=\"";
400 osolStr <<
m_OSOption->job->inputDirectoriesToMove->numberOfPathPairs <<
"\">" << endl;
401 for (
int i=0; i <
m_OSOption->job->inputDirectoriesToMove->numberOfPathPairs; i++)
403 osolStr <<
"<pathPair";
404 osolStr <<
" from=\"" <<
m_OSOption->job->inputDirectoriesToMove->pathPair[i]->from <<
"\"";
405 osolStr <<
" to=\"" <<
m_OSOption->job->inputDirectoriesToMove->pathPair[i]->to <<
"\"";
406 if (
m_OSOption->job->inputDirectoriesToMove->pathPair[i]->makeCopy)
407 osolStr <<
" makeCopy=\"true\"";
408 osolStr <<
"/>" << endl;
410 osolStr <<
"</inputDirectoriesToMove>" << endl;
412 if (
m_OSOption->job->inputFilesToMove != NULL)
414 osolStr <<
"<inputFilesToMove numberOfPathPairs=\"";
415 osolStr <<
m_OSOption->job->inputFilesToMove->numberOfPathPairs <<
"\">" << endl;
416 for (
int i=0; i <
m_OSOption->job->inputFilesToMove->numberOfPathPairs; i++)
418 osolStr <<
"<pathPair";
419 osolStr <<
" from=\"" <<
m_OSOption->job->inputFilesToMove->pathPair[i]->from <<
"\"";
420 osolStr <<
" to=\"" <<
m_OSOption->job->inputFilesToMove->pathPair[i]->to <<
"\"";
421 if (
m_OSOption->job->inputFilesToMove->pathPair[i]->makeCopy)
422 osolStr <<
" makeCopy=\"true\"";
423 osolStr <<
"/>" << endl;
425 osolStr <<
"</inputFilesToMove>" << endl;
427 if (
m_OSOption->job->outputFilesToMove != NULL)
429 osolStr <<
"<outputFilesToMove numberOfPathPairs=\"";
430 osolStr <<
m_OSOption->job->outputFilesToMove->numberOfPathPairs <<
"\">" << endl;
431 for (
int i=0; i <
m_OSOption->job->outputFilesToMove->numberOfPathPairs; i++)
433 osolStr <<
"<pathPair";
434 osolStr <<
" from=\"" <<
m_OSOption->job->outputFilesToMove->pathPair[i]->from <<
"\"";
435 osolStr <<
" to=\"" <<
m_OSOption->job->outputFilesToMove->pathPair[i]->to <<
"\"";
436 if (
m_OSOption->job->outputFilesToMove->pathPair[i]->makeCopy)
437 osolStr <<
" makeCopy=\"true\"";
438 osolStr <<
"/>" << endl;
440 osolStr <<
"</outputFilesToMove>" << endl;
442 if (
m_OSOption->job->outputDirectoriesToMove != NULL)
444 osolStr <<
"<outputDirectoriesToMove numberOfPathPairs=\"";
445 osolStr <<
m_OSOption->job->outputDirectoriesToMove->numberOfPathPairs <<
"\">" << endl;
446 for (
int i=0; i <
m_OSOption->job->outputDirectoriesToMove->numberOfPathPairs; i++)
448 osolStr <<
"<pathPair";
449 osolStr <<
" from=\"" <<
m_OSOption->job->outputDirectoriesToMove->pathPair[i]->from <<
"\"";
450 osolStr <<
" to=\"" <<
m_OSOption->job->outputDirectoriesToMove->pathPair[i]->to <<
"\"";
451 if (
m_OSOption->job->outputDirectoriesToMove->pathPair[i]->makeCopy)
452 osolStr <<
" makeCopy=\"true\"";
453 osolStr <<
"/>" << endl;
455 osolStr <<
"</outputDirectoriesToMove>" << endl;
459 osolStr <<
"<filesToDelete numberOfPaths=\"";
460 osolStr <<
m_OSOption->job->filesToDelete->numberOfPaths <<
"\">" << endl;
461 for (
int i=0; i <
m_OSOption->job->filesToDelete->numberOfPaths; i++)
462 osolStr <<
"<path>" <<
m_OSOption->job->filesToDelete->path[i] <<
"</path>" << endl;
463 osolStr <<
"</filesToDelete>" << endl;
465 if (
m_OSOption->job->directoriesToDelete != NULL)
467 osolStr <<
"<directoriesToDelete numberOfPaths=\"";
468 osolStr <<
m_OSOption->job->directoriesToDelete->numberOfPaths <<
"\">" << endl;
469 for (
int i=0; i <
m_OSOption->job->directoriesToDelete->numberOfPaths; i++)
470 osolStr <<
"<path>" <<
m_OSOption->job->directoriesToDelete->path[i] <<
"</path>" << endl;
471 osolStr <<
"</directoriesToDelete>" << endl;
475 osolStr <<
"<processesToKill numberOfProcesses=\"";
476 osolStr <<
m_OSOption->job->processesToKill->numberOfProcesses <<
"\">" << endl;
477 for (
int i=0; i <
m_OSOption->job->processesToKill->numberOfProcesses; i++)
478 osolStr <<
"<process>" <<
m_OSOption->job->processesToKill->process[i] <<
"</process>" << endl;
479 osolStr <<
"</processesToKill>" << endl;
483 osolStr <<
"<otherOptions numberOfOtherOptions=\"";
484 osolStr <<
m_OSOption->job->otherOptions->numberOfOtherOptions <<
"\">" << endl;
485 for (
int i=0; i <
m_OSOption->job->otherOptions->numberOfOtherOptions; i++)
487 osolStr <<
"<other name=\"" <<
m_OSOption->job->otherOptions->other[i]->name <<
"\"";
488 if (
m_OSOption->job->otherOptions->other[i]->value !=
"")
489 osolStr <<
" value=\"" <<
m_OSOption->job->otherOptions->other[i]->value <<
"\"";
490 if (
m_OSOption->job->otherOptions->other[i]->description !=
"")
492 osolStr <<
"/>" << endl;
494 osolStr <<
"</otherOptions>" << endl;
496 osolStr <<
"</job>" << endl;
507 osolStr <<
"<optimization";
508 if (
m_OSOption->optimization->numberOfVariables >= 0)
509 osolStr <<
" numberOfVariables=\"" <<
m_OSOption->optimization->numberOfVariables <<
"\" ";
510 if (
m_OSOption->optimization->numberOfObjectives >= 0)
511 osolStr <<
" numberOfObjectives=\"" <<
m_OSOption->optimization->numberOfObjectives <<
"\" ";
512 if (
m_OSOption->optimization->numberOfConstraints >= 0)
513 osolStr <<
" numberOfConstraints=\"" <<
m_OSOption->optimization->numberOfConstraints <<
"\" ";
514 osolStr <<
">" << endl;
515 if (
m_OSOption->optimization->variables != NULL)
517 osolStr <<
"<variables";
518 if (
m_OSOption->optimization->variables->numberOfOtherVariableOptions > 0)
519 osolStr <<
" numberOfOtherVariableOptions=\"" <<
m_OSOption->optimization->variables->numberOfOtherVariableOptions <<
"\"";
520 osolStr <<
">" << endl;
524 outStr <<
"initialVariableValues: "
525 << (
m_OSOption->optimization->variables->initialVariableValues != NULL) << endl;
528 if (
m_OSOption->optimization->variables->initialVariableValues != NULL)
530 osolStr <<
"<initialVariableValues numberOfVar=\"";
531 osolStr <<
m_OSOption->optimization->variables->initialVariableValues->numberOfVar <<
"\">" << endl;
532 for (
int i=0; i <
m_OSOption->optimization->variables->initialVariableValues->numberOfVar; i++)
535 osolStr <<
" idx=\"" <<
m_OSOption->optimization->variables->initialVariableValues->var[i]->idx <<
"\"";
536 if (
m_OSOption->optimization->variables->initialVariableValues->var[i]->name !=
"")
538 if (!
OSIsnan(
m_OSOption->optimization->variables->initialVariableValues->var[i]->value))
540 osolStr <<
" value=\"";
544 osolStr <<
"/>" << endl;
546 osolStr <<
"</initialVariableValues>" << endl;
551 outStr <<
"initialVariableValuesString: "
552 << (
m_OSOption->optimization->variables->initialVariableValuesString != NULL) << endl;
555 if (
m_OSOption->optimization->variables->initialVariableValuesString != NULL)
557 osolStr <<
"<initialVariableValuesString numberOfVar=\"";
558 osolStr <<
m_OSOption->optimization->variables->initialVariableValuesString->numberOfVar <<
"\">" << endl;
559 for (
int i=0; i <
m_OSOption->optimization->variables->initialVariableValuesString->numberOfVar; i++)
562 osolStr <<
" idx=\"" <<
m_OSOption->optimization->variables->initialVariableValuesString->var[i]->idx <<
"\"";
563 if (
m_OSOption->optimization->variables->initialVariableValuesString->var[i]->name !=
"")
565 osolStr <<
" value=\"" <<
m_OSOption->optimization->variables->initialVariableValuesString->var[i]->value <<
"\"";
566 osolStr <<
"/>" << endl;
568 osolStr <<
"</initialVariableValuesString>" << endl;
571 if (
m_OSOption->optimization->variables->initialBasisStatus != NULL)
575 "output <variables> <basisStatus>");
577 osolStr <<
"<initialBasisStatus>" << endl;
579 osolStr <<
"</initialBasisStatus>" << endl;
585 outStr <<
"integerVariableBranchingWeights: "
586 << (
m_OSOption->optimization->variables->integerVariableBranchingWeights != NULL) << endl;
589 if (
m_OSOption->optimization->variables->integerVariableBranchingWeights != NULL)
591 osolStr <<
"<integerVariableBranchingWeights numberOfVar=\"";
592 osolStr <<
m_OSOption->optimization->variables->integerVariableBranchingWeights->numberOfVar <<
"\">" << endl;
593 for (
int i=0; i <
m_OSOption->optimization->variables->integerVariableBranchingWeights->numberOfVar; i++)
596 osolStr <<
" idx=\"" <<
m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->idx <<
"\"";
597 if (
m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->name !=
"")
598 osolStr <<
" name=" <<
writeStringData(
m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->name);
599 if (!
OSIsnan(
m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->value))
601 osolStr <<
" value=\"";
605 osolStr <<
"/>" << endl;
607 osolStr <<
"</integerVariableBranchingWeights>" << endl;
612 outStr <<
"sosVariableBranchingWeights: "
613 << (
m_OSOption->optimization->variables->sosVariableBranchingWeights != NULL) << endl;
616 if (
m_OSOption->optimization->variables->sosVariableBranchingWeights != NULL)
618 osolStr <<
"<sosVariableBranchingWeights numberOfSOS=\"";
622 osolStr <<
m_OSOption->optimization->variables->sosVariableBranchingWeights->numberOfSOS <<
"\">" << endl;
623 for (
int i=0; i <
m_OSOption->optimization->variables->sosVariableBranchingWeights->numberOfSOS; i++)
629 outStr <<
"sosIdx - nvar: "
630 <<
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar
634 osolStr <<
" sosIdx=\"" <<
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->sosIdx <<
"\"";
635 osolStr <<
" numberOfVar=\"" <<
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar <<
"\"";
636 if (!
OSIsnan(
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->groupWeight))
638 osolStr <<
" groupWeight=\"";
640 osolStr <<
"\">" << endl;
642 for (
int j=0; j <
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar; j++)
648 osolStr <<
" idx=\"" <<
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->idx <<
"\"";
649 if (
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->name !=
"")
650 osolStr <<
" name=" <<
writeStringData(
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->name);
651 if (!
OSIsnan(
m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->value))
653 osolStr <<
" value=\"";
657 osolStr <<
"/>" << endl;
659 osolStr <<
"</sos>" << endl;
661 osolStr <<
"</sosVariableBranchingWeights>" << endl;
666 outStr <<
"Number of other variable options: "
667 <<
m_OSOption->optimization->variables->numberOfOtherVariableOptions
672 for (
int i=0; i <
m_OSOption->optimization->variables->numberOfOtherVariableOptions; i++)
674 osolStr <<
"<other name=\"" <<
m_OSOption->optimization->variables->other[i]->name <<
"\"";
676 osolStr <<
" numberOfVar=\"" <<
m_OSOption->optimization->variables->other[i]->numberOfVar <<
"\"";
678 osolStr <<
" numberOfEnumerations=\"" <<
m_OSOption->optimization->variables->other[i]->numberOfEnumerations <<
"\"";
679 if (
m_OSOption->optimization->variables->other[i]->value !=
"")
680 osolStr <<
" value=\"" <<
m_OSOption->optimization->variables->other[i]->value <<
"\"";
681 if (
m_OSOption->optimization->variables->other[i]->solver !=
"")
682 osolStr <<
" solver=\"" <<
m_OSOption->optimization->variables->other[i]->solver <<
"\"";
683 if (
m_OSOption->optimization->variables->other[i]->category !=
"")
684 osolStr <<
" category=\"" <<
m_OSOption->optimization->variables->other[i]->category <<
"\"";
685 if (
m_OSOption->optimization->variables->other[i]->type !=
"")
686 osolStr <<
" type=\"" <<
m_OSOption->optimization->variables->other[i]->type <<
"\"";
687 if (
m_OSOption->optimization->variables->other[i]->description !=
"")
689 if (
m_OSOption->optimization->variables->other[i]->varType !=
"")
690 osolStr <<
" varType=\"" <<
m_OSOption->optimization->variables->other[i]->varType <<
"\"";
691 if (
m_OSOption->optimization->variables->other[i]->enumType !=
"")
692 osolStr <<
" enumType=\"" <<
m_OSOption->optimization->variables->other[i]->enumType <<
"\"";
693 osolStr <<
">" << endl;
695 for (
int j=0; j <
m_OSOption->optimization->variables->other[i]->numberOfVar; j++)
697 osolStr <<
"<var idx=\"" <<
m_OSOption->optimization->variables->other[i]->var[j]->idx <<
"\"";
698 if (
m_OSOption->optimization->variables->other[i]->var[j]->name !=
"")
700 if (
m_OSOption->optimization->variables->other[i]->var[j]->value !=
"")
701 osolStr <<
" value=\"" <<
m_OSOption->optimization->variables->other[i]->var[j]->value <<
"\"";
702 if (
m_OSOption->optimization->variables->other[i]->var[j]->lbValue !=
"")
703 osolStr <<
" lbValue=\"" <<
m_OSOption->optimization->variables->other[i]->var[j]->lbValue <<
"\"";
704 if (
m_OSOption->optimization->variables->other[i]->var[j]->ubValue !=
"")
705 osolStr <<
" ubValue=\"" <<
m_OSOption->optimization->variables->other[i]->var[j]->ubValue <<
"\"";
706 osolStr <<
"/>" << endl;
711 for (
int j=0; j <
m_OSOption->optimization->variables->other[i]->numberOfEnumerations; j++)
714 osolStr <<
"</other>" << endl;
716 osolStr <<
"</variables>" << endl;
718 if (
m_OSOption->optimization->objectives != NULL)
720 osolStr <<
"<objectives";
722 osolStr <<
" numberOfOtherObjectiveOptions=\"" <<
m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions <<
"\"";
723 osolStr <<
">" << endl;
724 if (
m_OSOption->optimization->objectives->initialObjectiveValues != NULL)
726 osolStr <<
"<initialObjectiveValues numberOfObj=\"";
727 osolStr <<
m_OSOption->optimization->objectives->initialObjectiveValues->numberOfObj <<
"\">" << endl;
728 for (
int i=0; i <
m_OSOption->optimization->objectives->initialObjectiveValues->numberOfObj; i++)
731 osolStr <<
" idx=\"" <<
m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->idx <<
"\"";
732 if (
m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->name !=
"")
734 if (!
OSIsnan(
m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value))
736 osolStr <<
" value=\"";
740 osolStr <<
"/>" << endl;
742 osolStr <<
"</initialObjectiveValues>" << endl;
744 if (
m_OSOption->optimization->objectives->initialObjectiveBounds != NULL)
746 osolStr <<
"<initialObjectiveBounds numberOfObj=\"";
747 osolStr <<
m_OSOption->optimization->objectives->initialObjectiveBounds->numberOfObj <<
"\">" << endl;
748 for (
int i=0; i <
m_OSOption->optimization->objectives->initialObjectiveBounds->numberOfObj; i++)
751 osolStr <<
" idx=\"" <<
m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->idx <<
"\"";
752 if (
m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->name !=
"")
754 if (!
OSIsnan(
m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->lbValue))
756 osolStr <<
" lbValue=\"";
760 if (!
OSIsnan(
m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->ubValue))
762 osolStr <<
" ubValue=\"";
766 osolStr <<
"/>" << endl;
768 osolStr <<
"</initialObjectiveBounds>" << endl;
771 if (
m_OSOption->optimization->objectives->initialBasisStatus != NULL)
775 "output <objectives> <basisStatus>");
777 osolStr <<
"<initialBasisStatus>" << endl;
779 osolStr <<
"</initialBasisStatus>" << endl;
785 outStr <<
"Number of other objective options: "
786 <<
m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions << std::endl;
790 for (
int i=0; i <
m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions; i++)
792 osolStr <<
"<other name=\"" <<
m_OSOption->optimization->objectives->other[i]->name <<
"\"";
794 osolStr <<
" numberOfObj=\"" <<
m_OSOption->optimization->objectives->other[i]->numberOfObj <<
"\"";
796 osolStr <<
" numberOfEnumerations=\"" <<
m_OSOption->optimization->objectives->other[i]->numberOfEnumerations <<
"\"";
797 if (
m_OSOption->optimization->objectives->other[i]->value !=
"")
798 osolStr <<
" value=\"" <<
m_OSOption->optimization->objectives->other[i]->value <<
"\"";
799 if (
m_OSOption->optimization->objectives->other[i]->solver !=
"")
800 osolStr <<
" solver=\"" <<
m_OSOption->optimization->objectives->other[i]->solver <<
"\"";
801 if (
m_OSOption->optimization->objectives->other[i]->category !=
"")
802 osolStr <<
" category=\"" <<
m_OSOption->optimization->objectives->other[i]->category <<
"\"";
803 if (
m_OSOption->optimization->objectives->other[i]->type !=
"")
804 osolStr <<
" type=\"" <<
m_OSOption->optimization->objectives->other[i]->type <<
"\"";
805 if (
m_OSOption->optimization->objectives->other[i]->description !=
"")
807 if (
m_OSOption->optimization->objectives->other[i]->objType !=
"")
808 osolStr <<
" objType=\"" <<
m_OSOption->optimization->objectives->other[i]->objType <<
"\"";
809 if (
m_OSOption->optimization->objectives->other[i]->enumType !=
"")
810 osolStr <<
" enumType=\"" <<
m_OSOption->optimization->objectives->other[i]->enumType <<
"\"";
811 osolStr <<
">" << endl;
813 for (
int j=0; j <
m_OSOption->optimization->objectives->other[i]->numberOfObj; j++)
815 osolStr <<
"<obj idx=\"" <<
m_OSOption->optimization->objectives->other[i]->obj[j]->idx <<
"\"";
816 if (
m_OSOption->optimization->objectives->other[i]->obj[j]->name !=
"")
818 if (
m_OSOption->optimization->objectives->other[i]->obj[j]->value !=
"")
819 osolStr <<
" value=\"" <<
m_OSOption->optimization->objectives->other[i]->obj[j]->value <<
"\"";
820 osolStr <<
"/>" << endl;
823 for (
int j=0; j <
m_OSOption->optimization->objectives->other[i]->numberOfEnumerations; j++)
826 osolStr <<
"</other>" << endl;
828 osolStr <<
"</objectives>" << endl;
833 if (
m_OSOption->optimization->constraints != NULL)
835 osolStr <<
"<constraints";
837 osolStr <<
" numberOfOtherConstraintOptions=\"" <<
m_OSOption->optimization->constraints->numberOfOtherConstraintOptions <<
"\"";
838 osolStr <<
">" << endl;
839 if (
m_OSOption->optimization->constraints->initialConstraintValues != NULL)
841 osolStr <<
"<initialConstraintValues numberOfCon=\"";
842 osolStr <<
m_OSOption->optimization->constraints->initialConstraintValues->numberOfCon <<
"\">" << endl;
843 for (
int i=0; i <
m_OSOption->optimization->constraints->initialConstraintValues->numberOfCon; i++)
846 osolStr <<
" idx=\"" <<
m_OSOption->optimization->constraints->initialConstraintValues->con[i]->idx <<
"\"";
847 if (
m_OSOption->optimization->constraints->initialConstraintValues->con[i]->name !=
"")
849 if (!
OSIsnan(
m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value))
851 osolStr <<
" value=\"";
855 osolStr <<
"/>" << endl;
857 osolStr <<
"</initialConstraintValues>" << endl;
860 if (
m_OSOption->optimization->constraints->initialDualValues != NULL)
862 osolStr <<
"<initialDualValues numberOfCon=\"";
863 osolStr <<
m_OSOption->optimization->constraints->initialDualValues->numberOfCon <<
"\">" << endl;
864 for (
int i=0; i <
m_OSOption->optimization->constraints->initialDualValues->numberOfCon; i++)
867 osolStr <<
" idx=\"" <<
m_OSOption->optimization->constraints->initialDualValues->con[i]->idx <<
"\"";
868 if (
m_OSOption->optimization->constraints->initialDualValues->con[i]->name !=
"")
870 if (!
OSIsnan(
m_OSOption->optimization->constraints->initialDualValues->con[i]->lbDualValue))
872 osolStr <<
" lbDualValue=\"";
876 if (!
OSIsnan(
m_OSOption->optimization->constraints->initialDualValues->con[i]->ubDualValue))
878 osolStr <<
" ubDualValue=\"";
882 osolStr <<
"/>" << endl;
884 osolStr <<
"</initialDualValues>" << endl;
887 if (
m_OSOption->optimization->constraints->initialBasisStatus != NULL)
891 "output <constraints> <basisStatus>");
893 osolStr <<
"<initialBasisStatus>" << endl;
895 osolStr <<
"</initialBasisStatus>" << endl;
901 outStr <<
"Number of other constraint options: "
902 <<
m_OSOption->optimization->constraints->numberOfOtherConstraintOptions
907 for (
int i=0; i <
m_OSOption->optimization->constraints->numberOfOtherConstraintOptions; i++)
909 osolStr <<
"<other name=\"" <<
m_OSOption->optimization->constraints->other[i]->name <<
"\"";
912 osolStr <<
" numberOfCon=\"" <<
m_OSOption->optimization->constraints->other[i]->numberOfCon <<
"\"";
914 osolStr <<
" numberOfEnumerations=\"" <<
m_OSOption->optimization->constraints->other[i]->numberOfEnumerations <<
"\"";
915 if (
m_OSOption->optimization->constraints->other[i]->value !=
"")
916 osolStr <<
" value=\"" <<
m_OSOption->optimization->constraints->other[i]->value <<
"\"";
917 if (
m_OSOption->optimization->constraints->other[i]->solver !=
"")
918 osolStr <<
" solver=\"" <<
m_OSOption->optimization->constraints->other[i]->solver <<
"\"";
919 if (
m_OSOption->optimization->constraints->other[i]->category !=
"")
920 osolStr <<
" category=\"" <<
m_OSOption->optimization->constraints->other[i]->category <<
"\"";
921 if (
m_OSOption->optimization->constraints->other[i]->type !=
"")
922 osolStr <<
" type=\"" <<
m_OSOption->optimization->constraints->other[i]->type <<
"\"";
923 if (
m_OSOption->optimization->constraints->other[i]->description !=
"")
925 if (
m_OSOption->optimization->constraints->other[i]->conType !=
"")
926 osolStr <<
" conType=\"" <<
m_OSOption->optimization->constraints->other[i]->conType <<
"\"";
927 if (
m_OSOption->optimization->constraints->other[i]->enumType !=
"")
928 osolStr <<
" enumType=\"" <<
m_OSOption->optimization->constraints->other[i]->enumType <<
"\"";
929 osolStr <<
">" << endl;
931 for (
int j=0; j <
m_OSOption->optimization->constraints->other[i]->numberOfCon; j++)
933 osolStr <<
"<con idx=\"" <<
m_OSOption->optimization->constraints->other[i]->con[j]->idx <<
"\"";
934 if (
m_OSOption->optimization->constraints->other[i]->con[j]->name !=
"")
936 if (
m_OSOption->optimization->constraints->other[i]->con[j]->value !=
"")
937 osolStr <<
" value=\"" <<
m_OSOption->optimization->constraints->other[i]->con[j]->value <<
"\"";
938 if (
m_OSOption->optimization->constraints->other[i]->con[j]->lbValue !=
"")
939 osolStr <<
" lbValue=\"" <<
m_OSOption->optimization->constraints->other[i]->con[j]->lbValue <<
"\"";
940 if (
m_OSOption->optimization->constraints->other[i]->con[j]->ubValue !=
"")
941 osolStr <<
" ubValue=\"" <<
m_OSOption->optimization->constraints->other[i]->con[j]->ubValue <<
"\"";
942 osolStr <<
"/>" << endl;
945 for (
int j=0; j <
m_OSOption->optimization->constraints->other[i]->numberOfEnumerations; j++)
948 osolStr <<
"</other>" << endl;
950 osolStr <<
"</constraints>" << endl;
955 if (
m_OSOption->optimization->solverOptions != NULL)
959 osolStr <<
"<solverOptions numberOfSolverOptions=\"";
960 osolStr <<
m_OSOption->optimization->solverOptions->numberOfSolverOptions <<
"\">" << endl;
961 for (
int i=0; i <
m_OSOption->optimization->solverOptions->numberOfSolverOptions; i++)
963 osolStr <<
"<solverOption name=\"" <<
m_OSOption->optimization->solverOptions->solverOption[i]->name <<
"\"";
964 if (
m_OSOption->optimization->solverOptions->solverOption[i]->value !=
"")
965 osolStr <<
" value=\"" <<
m_OSOption->optimization->solverOptions->solverOption[i]->value <<
"\"";
966 if (
m_OSOption->optimization->solverOptions->solverOption[i]->solver !=
"")
967 osolStr <<
" solver=\"" <<
m_OSOption->optimization->solverOptions->solverOption[i]->solver <<
"\"";
968 if (
m_OSOption->optimization->solverOptions->solverOption[i]->category !=
"")
969 osolStr <<
" category=\"" <<
m_OSOption->optimization->solverOptions->solverOption[i]->category <<
"\"";
970 if (
m_OSOption->optimization->solverOptions->solverOption[i]->type !=
"")
971 osolStr <<
" type=\"" <<
m_OSOption->optimization->solverOptions->solverOption[i]->type <<
"\"";
972 if (
m_OSOption->optimization->solverOptions->solverOption[i]->description !=
"")
974 if (
m_OSOption->optimization->solverOptions->solverOption[i]->numberOfItems == 0)
975 osolStr <<
"/>" << endl;
978 osolStr <<
" numberOfItems=\"" <<
m_OSOption->optimization->solverOptions->solverOption[i]->numberOfItems <<
"\">";
979 for (
int k=0; k<
m_OSOption->optimization->solverOptions->solverOption[i]->numberOfItems; k++)
980 osolStr <<
"<item>" <<
m_OSOption->optimization->solverOptions->solverOption[i]->item[k] <<
"</item>" << endl;
981 osolStr <<
"</solverOption>" << endl;
984 osolStr <<
"</solverOptions>" << endl;
987 osolStr <<
"</optimization>" << endl;
989 osolStr <<
"</osol>" << endl;
993 return osolStr.str();