35 char *filename = NULL;
36 int validate(1), validate_only(0);
37 PyObject *userexit = NULL;
38 int ok = PyArg_ParseTuple(args,
"|siiO:readXMLfile",
39 &filename, &validate, &validate_only, &userexit);
43 Py_BEGIN_ALLOW_THREADS
49 xercesc::StdInInputSource in;
54 p.
parse(in, NULL,
true);
73 PythonType::evalException();
77 return Py_BuildValue(
"");
90 int validate(1), validate_only(0);
91 PyObject *userexit = NULL;
92 int ok = PyArg_ParseTuple(args,
"s|iiO:readXMLdata",
93 &data, &validate, &validate_only, &userexit);
97 Py_BEGIN_ALLOW_THREADS
105 if (validate_only!=0)
113 PythonType::evalException();
117 return Py_BuildValue(
"");
130 char *content = NULL;
131 int ok = PyArg_ParseTuple(args,
"s|s:save", &filename, &content);
132 if (!ok)
return NULL;
135 Py_BEGIN_ALLOW_THREADS
141 if (!strcmp(content,
"STANDARD"))
143 else if (!strcmp(content,
"PLAN"))
145 else if (!strcmp(content,
"PLANDETAIL"))
148 throw DataException(
"Invalid content type '" +
string(content) +
"'");
155 PythonType::evalException();
159 return Py_BuildValue(
"");
171 const char *filename =
"plan.out";
172 int ok = PyArg_ParseTuple(args,
"s:saveplan", &filename);
173 if (!ok)
return NULL;
176 Py_BEGIN_ALLOW_THREADS
183 textoutput.open(filename, ios::out);
189 if (!gbuf->getHidden())
190 for (Buffer::flowplanlist::const_iterator
191 oo=gbuf->getFlowPlans().begin();
192 oo!=gbuf->getFlowPlans().end();
194 if (oo->getType() == 1 && oo->getQuantity() != 0.0)
196 textoutput <<
"BUFFER\t" << *gbuf <<
'\t'
197 << oo->getDate() <<
'\t'
198 << oo->getQuantity() <<
'\t'
199 << oo->getOnhand() << endl;
207 if (!gdem->getHidden())
209 for (Demand::OperationPlan_list::const_iterator
210 pp = gdem->getDelivery().begin();
211 pp != gdem->getDelivery().end();
213 textoutput <<
"DEMAND\t" << (*gdem) <<
'\t'
214 << (*pp)->getDates().getEnd() <<
'\t'
215 << (*pp)->getQuantity() << endl;
223 if (!gres->getHidden())
224 for (Resource::loadplanlist::const_iterator
225 qq=gres->getLoadPlans().begin();
226 qq!=gres->getLoadPlans().end();
228 if (qq->getType() == 1 && qq->getQuantity() != 0.0)
230 textoutput <<
"RESOURCE\t" << *gres <<
'\t'
231 << qq->getDate() <<
'\t'
232 << qq->getQuantity() <<
'\t'
233 << qq->getOnhand() << endl;
241 if (rr->getOperation()->getHidden())
continue;
242 textoutput <<
"OPERATION\t" << rr->getOperation() <<
'\t'
243 << rr->getDates().getStart() <<
'\t'
244 << rr->getDates().getEnd() <<
'\t'
245 << rr->getQuantity() << endl;
252 textoutput <<
"PROBLEM\t" << gprob->getType().type <<
'\t'
253 << gprob->getDescription() <<
'\t'
254 << gprob->getDates() << endl;
261 if (!gdem->getHidden())
264 i != gdem->getConstraints().
end();
266 textoutput <<
"DEMAND CONSTRAINT\t" << (*gdem) <<
'\t'
267 << i->getDescription() <<
'\t'
268 << i->getDates() <<
'\t' << endl;
277 if (textoutput.is_open())
280 PythonType::evalException();
284 return Py_BuildValue(
"");
300 originalqty = opplan->getQuantity();
301 originaldates = opplan->getDates();
311 n->next = firstCommand;
312 firstCommand->prev = n;
321 : opplan(o), firstCommand(NULL)
326 originalqty = opplan->getQuantity();
327 if (newQty == -1.0) newQty = originalqty;
328 originaldates = opplan->getDates();
331 assert(opplan->getOperation());
332 opplan->getOperation()->setOperationPlanParameters(
333 opplan, newQty, newstart, newend
344 n->next = firstCommand;
345 firstCommand->prev = n;
360 for (
Command *c = firstCommand; c; )
371 opplan, originalqty, originaldates.
getStart(), originaldates.
getEnd()
406 PyObject *obj = NULL;
407 int ok = PyArg_ParseTuple(args,
"|O:erase", &obj);
408 if (!ok)
return NULL;
411 bool deleteStaticModel =
false;
415 Py_BEGIN_ALLOW_THREADS
418 if (deleteStaticModel)
441 gop->deleteOperationPlans();
446 PythonType::evalException();
450 return Py_BuildValue(
"");
462 Py_BEGIN_ALLOW_THREADS
465 size_t count, memsize;
471 <<
" (" << __DATE__ <<
")" << endl << endl;
474 #if defined(HAVE_SETLOCALE) || defined(_MSC_VER)
475 logger <<
"Locale: " << setlocale(LC_ALL,NULL) << endl << endl;
481 Environment::printModules();
489 logger <<
"Memory usage:" << endl;
490 logger <<
"Model \tNumber\tMemory" << endl;
491 logger <<
"----- \t------\t------" << endl;
500 memsize += l->getSize();
507 memsize += c->getSize();
514 memsize += b->getSize();
521 memsize += s->getSize();
528 memsize += r->getSize();
533 size_t countResourceSkills(0), memResourceSkills(0);
537 memsize += sk->getSize();
538 for (Skill::resourcelist::const_iterator rs = sk->getResources().begin();
539 rs != sk->getResources().end(); ++rs)
541 ++countResourceSkills;
542 memResourceSkills += rs->getSize();
546 logger <<
"ResourceSkill \t" << countResourceSkills <<
"\t" << memResourceSkills << endl;
550 size_t countFlows(0), memFlows(0), countLoads(0), memLoads(0);
556 fl != o->getFlows().
end(); ++ fl)
559 memFlows += fl->getSize();
561 for (Operation::loadlist::const_iterator ld = o->getLoads().
begin();
562 ld != o->getLoads().
end(); ++ ld)
565 memLoads += ld->getSize();
569 logger <<
"Flow \t" << countFlows <<
"\t" << memFlows << endl;
570 logger <<
"Load \t" << countLoads <<
"\t" << memLoads << endl;
571 total += memsize + memFlows + memLoads;
576 memsize += cl->getSize();
583 memsize += i->getSize();
589 size_t c_count = 0, c_memsize = 0;
592 memsize += dm->getSize();
594 cstrnt != dm->getConstraints().
end(); ++cstrnt)
597 c_memsize += cstrnt->getSize();
601 logger <<
"Constraints \t" << c_count <<
"\t" << c_memsize << endl;
602 total += memsize + c_memsize;
605 size_t countloadplans(0), countflowplans(0);
611 memsize +=
sizeof(*j);
612 countloadplans += j->sizeLoadPlans();
613 countflowplans += j->sizeFlowPlans();
616 logger <<
"OperationPlan\t" << count <<
"\t" << memsize << endl;
619 memsize = countflowplans *
sizeof(
FlowPlan);
621 logger <<
"FlowPlan \t" << countflowplans <<
"\t" << memsize << endl;
624 memsize = countloadplans *
sizeof(
LoadPlan);
626 logger <<
"LoadPlan \t" << countloadplans <<
"\t" << memsize << endl;
633 memsize += pr->getSize();
636 logger <<
"Problem \t" << count <<
"\t" << memsize << endl;
639 logger <<
"Total \t\t" << total << endl << endl;
644 PythonType::evalException();
648 return Py_BuildValue(
"");