本文整理汇总了C++中Timing::Stop方法的典型用法代码示例。如果您正苦于以下问题:C++ Timing::Stop方法的具体用法?C++ Timing::Stop怎么用?C++ Timing::Stop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Timing
的用法示例。
在下文中一共展示了Timing::Stop方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SoftPrint
void
SolveTheBGIP(BGIP_sharedPtr bgip)
{
// Specify the solution method.
// (See above and in BGIP_SolverType.h)
BGIP_SolverType::BGIP_Solver_t method = BGIP_SolverType::AM;
try {
Timing timer;
timer.Start( SoftPrint(method) );
BayesianGameIdenticalPayoffSolver * bgip_solver = NewBGIPSolver(bgip, method);
cout << "running " << SoftPrint(method) << "..."<<endl;
cout << "...value is " << bgip_solver->Solve() << endl;
timer.Stop( SoftPrint(method) );
delete bgip_solver;
}
catch(E& e)
{
e.Print();
}
}
示例2: main
//.........这里部分代码省略.........
while(meas->GetNextDataBulk() > 0) {
for(i=0; i<PICOSCOPE_N_CHANNELS; i++) {
if(ch[i]->IsEnabled()) {
if(x.IsTextOutput()) {
meas->WriteDataTxt(ft[i], i); // zero for channel A
}
if(x.IsBinaryOutput()) {
meas->WriteDataBin(fb[i], i); // zero for channel A
}
}
}
}
}
if(run>1) {
fprintf(f, "repeats: %u\n", run);
}
// tmp_dbl = meas->GetRatePerSecond();
// fprintf(f, "\nrate: \n");
// if(fabs(tmp_dbl) > 1e6) {
// fprintf(f, "%.3f MS/s\n", tmp_dbl*1e-6);
// } else if(fabs(tmp_dbl) > 1e3) {
// fprintf(f, "%.3f kS/s\n", tmp_dbl*1e-3);
// } else {
// fprintf(f, "%f S/s\n", tmp_dbl);
// }
} else {
unsigned int run=0;
for(run=0; run<x.GetNRepeats() && !_kbhit(); run++) {
if(run>0) {
cerr << "\nRepeat #" << run+1 << endl;
meas->RunBlock();
}
while(meas->GetNextData() > 0) {
for(i=0; i<PICOSCOPE_N_CHANNELS; i++) {
if(ch[i]->IsEnabled()) {
if(x.IsTextOutput()) {
meas->WriteDataTxt(ft[i], i); // zero for channel A
}
if(x.IsBinaryOutput()) {
meas->WriteDataBin(fb[i], i); // zero for channel A
}
}
}
}
}
if(run>1) {
fprintf(f, "repeats: %u\n", run);
}
}
fclose(f);
for(i=0; i<PICOSCOPE_N_CHANNELS; i++) {
if(ft[i] != NULL) {
fclose(ft[i]);
}
if(fb[i] != NULL) {
fclose(fb[i]);
}
}
// apparently this doesn't work for some weird reason
// meas->RunBlock(); meas->GetNextData();
// meas->RunBlock(); meas->GetNextData();
// meas->RunBlock(); meas->GetNextData();
// meas->RunBlock(); meas->GetNextData();
pico->Close();
t.Stop();
cerr << "Timing: " << t.GetSecondsDouble() << "s\n";
}
delete pico; pico = NULL;
delete meas; meas = NULL;
} catch(Picoscope::PicoscopeException& ex) {
cerr << "Some picoscope exception:" << endl
<< "Error number " << ex.GetErrorNumber() << ": " << ex.GetErrorMessage() << endl
<< '(' << ex.GetVerboseErrorMessage() << ')' << endl;
try {
// pico.Close();
} catch(...) {}
} catch(Picoscope::PicoscopeUserException& ex) {
cerr << "Some exception:" << endl
<< ex.GetErrorMessage() << endl;
// catch any exceptions
} catch(const char* s) {
cerr << "Some exception has occurred:\n" << s << endl;
} catch (std::bad_alloc& ba) {
std::cerr << "Exception: bad_alloc: " << ba.what() << endl;
} catch (const std::exception &exc) {
// catch anything thrown within try block that derives from std::exception
std::cerr << "Exception: " << exc.what() << endl;
} catch(...) {
cerr << "Some exception has occurred" << endl;
}
return 0;
}
示例3: main
int main(int argc, char **argv)
{
DecPOMDPDiscreteInterface* decpomdp;
try {
ArgumentHandlers::Arguments args;
argp_parse (&ArgumentHandlers::theArgpStruc, argc, argv, 0, 0, &args);
Timing times;
times.Start("Parsing");
//DecPOMDPDiscreteInterface*
decpomdp = GetDecPOMDPDiscreteInterfaceFromArgs(args);
TransitionObservationIndependentMADPDiscrete *toi=0;
if((toi=dynamic_cast<TransitionObservationIndependentMADPDiscrete*>(decpomdp)) &&
args.qheur==eQMDP &&
!args.cache_flat_models /* otherwise
* GetDecPOMDPDiscreteInterfaceFromArgs
* already caches the flat
* models */)
{
// we don't need a centralized obs model
toi->CreateCentralizedSparseTransitionModel();
}
times.Stop("Parsing");
if(!args.dryrun)
directories::MADPCreateResultsDir("GMAA",*decpomdp);
size_t horizon;
if(args.infiniteHorizon)
horizon=MAXHORIZON;
else
horizon=args.horizon;
times.Start("Overall");
PlanningUnitMADPDiscreteParameters params;
#if 0 // Caching doesn't seem worth the trouble if we're computing
// just one thing (not to mention the memory savings)
if(Qheur==eQMDP) // don't need any of this for solving the MDP
params.SetComputeAll(false);
else
{
params.SetComputeAll(true);
params.SetUseSparseJointBeliefs(true);
}
#else
params.SetComputeAll(false);
if(args.sparse)
params.SetUseSparseJointBeliefs(true);
#endif
times.Start("PlanningUnit");
NullPlanner np(params,horizon,decpomdp);
times.Stop("PlanningUnit");
struct timeval tvStart, tvEnd;
gettimeofday (&tvStart, NULL);
QFunctionJAOHInterface* q=0;
for(int restartI = 0; restartI < args.nrRestarts; restartI++)
{
// with hybrid heuristics already some computation is done
// before Compute(), so start timing now
times.Start("ComputeQ");
q = GetQheuristicFromArgs(&np, args);
q->Compute();
times.Stop("ComputeQ");
// we want to keep the last q computed
if(restartI<(args.nrRestarts-1))
delete q;
}
gettimeofday (&tvEnd, NULL);
clock_t wallclockTime =
static_cast<clock_t>(((tvEnd.tv_sec - tvStart.tv_sec) +
static_cast<double>(tvEnd.tv_usec-tvStart.tv_usec)/1e6) * sysconf(_SC_CLK_TCK));
cout << "Wallclock: from "
<< tvStart.tv_sec << "." << tvStart.tv_usec
<< " until "
<< tvEnd.tv_sec << "." << tvEnd.tv_usec
<< " which took " << wallclockTime << " clock ticks"
<< endl;
times.AddEvent("WallclockTime", wallclockTime);
if(!args.dryrun)
{
times.Start("Save");
q->Save();
times.Stop("Save");
if(args.verbose >= 0)
cout << "Q saved to " << q->GetCacheFilename() << endl;
}
times.Stop("Overall");
if(args.verbose >= 0)
//.........这里部分代码省略.........
示例4: GetNextDataBulk
unsigned long Measurement::GetNextDataBulk()
{
FILE_LOG(logDEBUG3) << "Measurement::GetNextDataBulk";
unsigned long i, j, index;
short *overflow;
uint32_t traces_asked_for, length_of_trace_fetched;
// unsigned long length_of_trace_askedfor, length_of_trace_fetched;
Timing t;
// std::cerr << "(GetNextDataBulk: " << GetNextIndex() << ", " << GetMaxTracesToFetch() << ")\n";
// it makes no sense to read any further: we are already at the end
if(GetNextIndex() >= GetNTraces()) {
std::cerr << "Stop fetching data from ociloscope." << std::endl;
return 0UL;
}
/*
try {
for(i=0; i<GetNumberOfChannels(); i++) {
if(GetChannel(i)->IsEnabled()) {
delete [] data[i];
data[i] = new short[GetMaxTracesToFetch()*GetLength()];
}
}
} catch(...) {
std::cerr << "Unable to allocate memory in Measurement::AllocateMemoryBlock." << std::endl;
throw;
}
/**/
traces_asked_for = GetMaxTracesToFetch();
if(GetNextIndex() + traces_asked_for > GetNTraces()) {
traces_asked_for = GetNTraces() - GetNextIndex();
}
// allocate buffers
for(i=0; i<GetNumberOfChannels(); i++) {
if(GetChannel(i)->IsEnabled()) {
FILE_LOG(logDEBUG4) << "Measurement::GetNextDataBulk - memset data[i]" << GetLength()*traces_asked_for*sizeof(short);
memset(data[i], 0, GetLength()*traces_asked_for*sizeof(short));
FILE_LOG(logDEBUG4) << "done";
}
for(j=0; j<traces_asked_for; j++) {
index = j+GetNextIndex();
if(GetChannel(i)->IsEnabled()) {
if(data_allocated[i] == false) {
throw "Unable to get data. Memory is not allocated.";
}
if(GetSeries() == PICO_4000) {
// GetPicoscope()->SetStatus(ps4000SetDataBufferBulk(
// GetHandle(), // handle
// (PS4000_CHANNEL)i, // channel
// data[i], // *buffer
// GetMaxTraceLengthToFetch())); // bufferLength
GetPicoscope()->SetStatus(ps4000SetDataBufferBulk(
GetHandle(), // handle
(PS4000_CHANNEL)i, // channel
&data[i][j*GetLength()], // *buffer
GetLength(), // bufferLength
index)); // waveform
} else {
// unsigned long dj = (j+GetNextIndex()/GetMaxTracesToFetch())%traces_asked_for;
// std::cerr << "-- (set data buffer bulk: [" << i << "][" << dj
// << "], len:" << GetLength() << ", index:" << index
// << ", from:" << GetNextIndex()
// << ", to:" << GetNextIndex()+traces_asked_for-1 << "\n";
GetPicoscope()->SetStatus(ps6000SetDataBufferBulk(
GetHandle(), // handle
(PS6000_CHANNEL)i, // channel
&data[i][j*GetLength()], // *buffer
GetLength(), // bufferLength
index, // waveform
PS6000_RATIO_MODE_NONE)); // downSampleRatioMode
}
if(GetPicoscope()->GetStatus() != PICO_OK) {
std::cerr << "Unable to set memory for channel." << std::endl;
throw Picoscope::PicoscopeException(GetPicoscope()->GetStatus());
}
}
}
}
// fetch data
// length_of_trace_fetched = length_of_trace_askedfor;
std::cerr << "Get data for traces " << GetNextIndex() << "-" << GetNextIndex()+traces_asked_for << " (" << 100.0*(GetNextIndex()+traces_asked_for)/GetNTraces() << "%) ... ";
overflow = new short[traces_asked_for];
memset(overflow, 0, traces_asked_for*sizeof(short));
// std::cerr << "-- x1\n";
t.Start();
// std::cerr << "length of buffer: " << data_length[0] << ", length of requested trace: " << length_of_trace_askedfor << " ... ";
if(GetSeries() == PICO_4000) {
length_of_trace_fetched = GetLength();
GetPicoscope()->SetStatus(ps4000GetValuesBulk(
GetHandle(), // handle
&length_of_trace_fetched, // *noOfSamples
// TODO: start index
GetNextIndex(), // fromSegmentIndex
GetNextIndex()+traces_asked_for-1, // toSegmentIndex
// this could also be min(GetMaxTraceLengthToFetch(),wholeLength-startindex)
overflow)); // *overflow
//.........这里部分代码省略.........
示例5: GetNextData
// TODO: we might want to use multiple buffers at the same time
// returns the length of data
// TODO: the first part only needs to be called once; so we should move the code at the end of RunBlock
// unless we want to alternate between allocated memory (to enable parallel readouts)
unsigned long Measurement::GetNextData()
{
FILE_LOG(logDEBUG3) << "Measurement::GetNextData";
int i;
short overflow=0;
uint32_t length_of_trace_askedfor, length_of_trace_fetched;
Timing t;
// it makes no sense to read any further: we are already at the end
if(GetNextIndex() >= GetLength()) {
std::cerr << "Stop fetching data from osciloscope." << std::endl;
return 0UL;
}
length_of_trace_askedfor = GetMaxTraceLengthToFetch();
if(GetNextIndex() + length_of_trace_askedfor > GetLength()) {
length_of_trace_askedfor = GetLength() - GetNextIndex();
}
// allocate buffers
for(i=0; i<GetNumberOfChannels(); i++) {
if(GetChannel(i)->IsEnabled()) {
if(data_allocated[i] == false) {
throw "Unable to get data. Memory is not allocated.";
}
if(GetSeries() == PICO_4000) {
FILE_LOG(logDEBUG2) << "ps4000SetDataBuffer(handle=" << GetHandle() << ", channel=" << i << ", *buffer=<data[i]>, bufferLength=" << GetMaxTraceLengthToFetch() << ")";
GetPicoscope()->SetStatus(ps4000SetDataBuffer(
GetHandle(), // handle
(PS4000_CHANNEL)i, // channel
data[i], // *buffer
GetMaxTraceLengthToFetch())); // bufferLength
} else {
FILE_LOG(logDEBUG2) << "ps6000SetDataBuffer(handle=" << GetHandle() << ", channel=" << i << ", *buffer=<data[i]>, bufferLength=" << GetMaxTraceLengthToFetch() << ", downSampleRatioMode=PS6000_RATIO_MODE_NONE)";
GetPicoscope()->SetStatus(ps6000SetDataBuffer(
GetHandle(), // handle
(PS6000_CHANNEL)i, // channel
data[i], // *buffer
GetMaxTraceLengthToFetch(), // bufferLength
PS6000_RATIO_MODE_NONE)); // downSampleRatioMode
}
if(GetPicoscope()->GetStatus() != PICO_OK) {
std::cerr << "Unable to set memory for channel." << std::endl;
throw Picoscope::PicoscopeException(GetPicoscope()->GetStatus());
}
}
}
// fetch data
length_of_trace_fetched = length_of_trace_askedfor;
std::cerr << "Get data for points " << GetNextIndex() << "-" << GetNextIndex()+length_of_trace_askedfor << " (" << 100.0*(GetNextIndex()+length_of_trace_askedfor)/GetLength() << "%) ... ";
t.Start();
// std::cerr << "length of buffer: " << data_length[0] << ", length of requested trace: " << length_of_trace_askedfor << " ... ";
if(GetSeries() == PICO_4000) {
FILE_LOG(logDEBUG2) << "ps4000GetValues(handle=" << GetHandle() << ", startIndex=" << GetNextIndex() << ", *noOfSamples=" << length_of_trace_fetched << ", downSampleRatio=1, downSampleRatioMode=PS4000_RATIO_MODE_NONE, segmentIndex=0, *overflow)";
GetPicoscope()->SetStatus(ps4000GetValues(
GetHandle(), // handle
// TODO: start index
GetNextIndex(), // startIndex
// this could also be min(GetMaxTraceLengthToFetch(),wholeLength-startindex)
&length_of_trace_fetched, // *noOfSamples
1, // downSampleRatio
PS4000_RATIO_MODE_NONE, // downSampleRatioMode
0, // segmentIndex
&overflow)); // *overflow
FILE_LOG(logDEBUG2) << "-> length_of_trace_fetched=" << length_of_trace_fetched << "\n";
} else {
FILE_LOG(logDEBUG2) << "ps6000GetValues(handle=" << GetHandle() << ", startIndex=" << GetNextIndex() << ", *noOfSamples=" << length_of_trace_fetched << ", downSampleRatio=1, downSampleRatioMode=PS6000_RATIO_MODE_NONE, segmentIndex=0, *overflow)";
GetPicoscope()->SetStatus(ps6000GetValues(
GetHandle(), // handle
// TODO: start index
GetNextIndex(), // startIndex
// this could also be min(GetMaxTraceLengthToFetch(),wholeLength-startindex)
&length_of_trace_fetched, // *noOfSamples
1, // downSampleRatio
PS6000_RATIO_MODE_NONE, // downSampleRatioMode
0, // segmentIndex
&overflow)); // *overflow
FILE_LOG(logDEBUG2) << "-> length_of_trace_fetched=" << length_of_trace_fetched << "\n";
}
t.Stop();
if(GetPicoscope()->GetStatus() != PICO_OK) {
std::cerr << "Unable to set memory for channel." << std::endl;
throw Picoscope::PicoscopeException(GetPicoscope()->GetStatus());
}
if(overflow) {
for(i=0; i<GetNumberOfChannels(); i++) {
if(overflow & (1<<i)) {
std::cerr << "Warning: Overflow on channel " << (char)('A'+i) << ".\n";
}
}
}
if(length_of_trace_fetched != length_of_trace_askedfor) {
std::cerr << "Warning: The number of read samples was smaller than requested.\n";
}
std::cerr << "OK ("<< t.GetSecondsDouble() <<"s)\n";
SetLengthFetched(length_of_trace_fetched);
//.........这里部分代码省略.........
示例6: RunBlock
//.........这里部分代码省略.........
} else {
FILE_LOG(logDEBUG2) << "ps6000SetNoOfCaptures(handle=" << GetHandle() << ", nCaptures=" << GetNTraces() << ")";
GetPicoscope()->SetStatus(ps6000SetNoOfCaptures(
GetHandle(), // handle
GetNTraces())); // nCaptures
}
if(GetPicoscope()->GetStatus() != PICO_OK) {
std::cerr << "Unable to set number of captures to " << GetNTraces() << std::endl;
throw Picoscope::PicoscopeException(GetPicoscope()->GetStatus());
}
if(GetSeries() == PICO_4000) {
FILE_LOG(logDEBUG2) << "ps4000MemorySegments(handle=" << GetHandle() << ", nSegments=" << GetNTraces() << ", &max_length=" << max_length << ")";
GetPicoscope()->SetStatus(ps4000MemorySegments(
GetHandle(), // handle
GetNTraces(), // nSegments
&max_length));
FILE_LOG(logDEBUG2) << "->ps4000MemorySegments(... max_length=" << max_length << ")";
} else {
FILE_LOG(logDEBUG2) << "ps6000MemorySegments(handle=" << GetHandle() << ", nSegments=" << GetNTraces() << ", &max_length=" << max_length << ")";
GetPicoscope()->SetStatus(ps6000MemorySegments(
GetHandle(), // handle
GetNTraces(), // nSegments
&max_length));
FILE_LOG(logDEBUG2) << "->ps6000MemorySegments(... max_length=" << max_length << ")";
}
if(GetPicoscope()->GetStatus() != PICO_OK) {
std::cerr << "Unable to set number of segments to " << GetNTraces() << std::endl;
throw Picoscope::PicoscopeException(GetPicoscope()->GetStatus());
}
if(max_length < GetLength()) { // TODO: times number of enabled channels
std::cerr << "The maximum length of trace you can get with " << GetNTraces()
<< " traces is " << max_length << ", but you requested " << GetLength() << "\n";
throw;
}
if(GetSeries() == PICO_4000) {
FILE_LOG(logDEBUG2) << "ps4000SetNoOfCaptures(handle=" << GetHandle() << ", nCaptures=" << GetNTraces() << ")";
GetPicoscope()->SetStatus(ps4000SetNoOfCaptures(
GetHandle(), // handle
GetNTraces())); // nCaptures
} else {
FILE_LOG(logDEBUG2) << "ps6000SetNoOfCaptures(handle=" << GetHandle() << ", nCaptures=" << GetNTraces() << ")";
GetPicoscope()->SetStatus(ps6000SetNoOfCaptures(
GetHandle(), // handle
GetNTraces())); // nCaptures
}
if(GetPicoscope()->GetStatus() != PICO_OK) {
std::cerr << "Unable to set number of captures to " << GetNTraces() << std::endl;
throw Picoscope::PicoscopeException(GetPicoscope()->GetStatus());
}
}
//std::cerr << "\nPress a key to start fetching the data ...\n";
//_getch();
t.Start();
GetPicoscope()->SetReady(false);
if(GetSeries() == PICO_4000) {
FILE_LOG(logDEBUG2) << "ps4000RunBlock(handle=" << GetHandle() << ", noOfPreTriggerSamples=" << GetLengthBeforeTrigger() << ", noOfPostTriggerSamples=" << GetLengthAfterTrigger() << ", timebase=" << timebase << ", oversample=1, *timeIndisposedMs=NULL, segmentIndex=0, lpReady=CallBackBlock, *pParameter=NULL)";
GetPicoscope()->SetStatus(ps4000RunBlock(
GetHandle(), // handle
GetLengthBeforeTrigger(), // noOfPreTriggerSamples
GetLengthAfterTrigger(), // noOfPostTriggerSamples
timebase, // timebase
1, // ovesample
NULL, // *timeIndisposedMs
0, // segmentIndex
CallBackBlock, // lpReady
NULL)); // *pParameter
} else {
FILE_LOG(logDEBUG2) << "ps6000RunBlock(handle=" << GetHandle() << ", noOfPreTriggerSamples=" << GetLengthBeforeTrigger() << ", noOfPostTriggerSamples=" << GetLengthAfterTrigger() << ", timebase=" << timebase << ", oversample=1, *timeIndisposedMs=NULL, segmentIndex=0, lpReady=CallBackBlock, *pParameter=NULL)";
GetPicoscope()->SetStatus(ps6000RunBlock(
GetHandle(), // handle
GetLengthBeforeTrigger(), // noOfPreTriggerSamples
GetLengthAfterTrigger(), // noOfPostTriggerSamples
timebase, // timebase
1, // ovesample
NULL, // *timeIndisposedMs
0, // segmentIndex
CallBackBlock, // lpReady
NULL)); // *pParameter
}
if(GetPicoscope()->GetStatus() != PICO_OK) {
std::cerr << "Unable to start collecting samples" << std::endl;
throw Picoscope::PicoscopeException(GetPicoscope()->GetStatus());
} else {
std::cerr << "Start collecting samples in "
<< ((GetNTraces() > 1) ? "rapid " : "") << "block mode ... ";
}
// TODO: maybe we want it to be asynchronous
// TODO: catch the _kbhit event!!!
// while (!Picoscope::IsReady() && !_kbhit()) {
while (!Picoscope::IsReady()) {
Sleep(200);
}
t.Stop();
std::cerr << "OK (" << t.GetSecondsDouble() << "s)\n";
// sets the index from where we want to start reading data to zero
SetNextIndex(0UL);
}
示例7: main
int main(int argc, char **argv)
{
ArgumentHandlers::Arguments args;
argp_parse (&ArgumentHandlers::theArgpStruc, argc, argv, 0, 0, &args);
int restarts = args.nrRestarts;
srand(time(0));
int horizon=args.horizon;
try {
//start timers
Timing Time;
Time.Start("Overall");
DecPOMDPDiscreteInterface & decpomdp = * GetDecPOMDPDiscreteInterfaceFromArgs(args);
//set the filename etc.
string filename="/dev/null",timingsFilename="/dev/null";
ofstream of;
stringstream ss;
ss << directories::MADPGetResultsFilename("JESP",decpomdp,args)
<< SoftPrint(args.jesp) //the jesp type
<< "_h" << horizon
<< "_JESPrestarts"<< restarts;
//check the method specific arguments and add them to file name
switch(args.jesp)
{
case JESPtype::JESPExhaustive:
break;
case JESPtype::JESPDP:
break;
}
if(!args.dryrun)
{
filename=ss.str();
timingsFilename=filename + "_Timings";
of.open(filename.c_str());
if(!of)
{
cout << "JESP: could not open " << filename << endl;
cout << "Results will not be stored to disk." << endl;
args.dryrun=true;
}
if(!args.dryrun)
{
cout << "Computing " << ss.str() << endl;
//write headers
of << "#horiz."<<"\t";
of << "value " <<"\t";
of << "ticks"<< "\t";
of << "utime" <<"\t";
of << "found jpol index\t(1tick=1/"<<sysconf(_SC_CLK_TCK)<<"s)\n";
of.flush();
}
}
//Initialization of the planner with typical options for JESP:
Time.Start("PlanningUnit");
PlanningUnitMADPDiscreteParameters params;
params.SetComputeAll(true);
params.SetComputeJointActionObservationHistories(false);
params.SetComputeJointObservationHistories(false);
params.SetComputeJointBeliefs(false);
if(args.sparse)
params.SetUseSparseJointBeliefs(true);
else
params.SetUseSparseJointBeliefs(false);
PlanningUnitDecPOMDPDiscrete* jesp = 0;
if(args.jesp == JESPtype::JESPExhaustive)
{
jesp = new JESPExhaustivePlanner (params,horizon,&decpomdp);
cout << "JESPExhaustivePlanner initialized" << endl;
}
else if(args.jesp == JESPtype::JESPDP)
{
jesp = new JESPDynamicProgrammingPlanner (params,horizon,&decpomdp);
cout << "JESPDynamicProgrammingPlanner initialized" << endl;
}
Time.Stop("PlanningUnit");
cout << "JESP Planner initialized" << endl;
for(int restartI = 0; restartI < restarts; restartI++)
{
//start all timers:
Time.Start("Plan");
tms ts_before, ts_after;
clock_t ticks_before, ticks_after;
ticks_before = times(&ts_before);
jesp->Plan();
double V = jesp->GetExpectedReward();
if(args.verbose >= 0)
{
cout << "value="<< V << endl;
if(args.verbose) {
jesp->GetJointPolicyPureVector()->Print();
cout << endl;
//.........这里部分代码省略.........
示例8: main
int main(int argc, char **argv)
{
cout << "DICE: direct CE Policy Search"<<endl;
cout << "-----------------------------"<<endl;
// parse the command line arguments
ArgumentHandlers::Arguments args;
argp_parse (&ArgumentHandlers::theArgpStruc, argc, argv, 0, 0, &args);
int restarts = args.nrCERestarts;
srand(time(0));
int horizon = args.horizon;
cout << "Horizon = " << horizon << endl;
try {
//start timers
Timing Time;
Time.Start("Overall");
DecPOMDPDiscreteInterface & decpomdp = * GetDecPOMDPDiscreteInterfaceFromArgs(args);
// setup the output file stream
string filename="/dev/null",timingsFilename="/dev/null";
ofstream of;
stringstream ss;
ss << directories::MADPGetResultsFilename("DICEPS",decpomdp,args)
<< "h" << horizon;
// add the CE parameters into the output file name
ss << "_CEr" << args.nrCERestarts
<< "_i" << args.nrCEIterations
<< "_s" << args.nrCESamples
<< "_sfu" << args.nrCESamplesForUpdate
<< "_a" << args.CE_alpha
<< "_ht" << args.CE_use_hard_threshold
<< "_evals" << args.nrCEEvalutionRuns;
if(!args.dryrun)
{
directories::MADPCreateResultsDir("DICEPS",decpomdp);
filename=ss.str();
timingsFilename=filename + "_Timings";
}
of.open(filename.c_str());
if(!of)
{
cerr << "could not open " << filename << endl;
return(1);
}
cout << "Computing " << ss.str() << endl;
//write headers
of << "#horiz."<<"\t";
of << "value " <<"\t";
of << "wctime"<< "\t";
of << "utime " <<"\t";
of << "stime " <<"\t";
of << "found jpol index\t(1tick=1/"<<sysconf(_SC_CLK_TCK)<<"s)\n";
of.flush();
//Initialization of the planner with typical options for JESP:
Time.Start("PlanningUnit");
PlanningUnitMADPDiscreteParameters params;
params.SetComputeAll(true);
params.SetComputeJointActionObservationHistories(false);
params.SetComputeJointActionHistories(false);
params.SetComputeIndividualActionObservationHistories(false);
params.SetComputeIndividualActionHistories(false);
//params.SetComputeIndividualObservationHistories(false);
// joint observations histories are needed for
// efficient computation of joint actions
params.SetComputeJointObservationHistories(true);
params.SetComputeJointBeliefs(false);
if(args.sparse)
params.SetUseSparseJointBeliefs(true);
else
params.SetUseSparseJointBeliefs(false);
DICEPSPlanner* planner;
planner = new DICEPSPlanner (params, &decpomdp,
horizon,
//CE params
args.nrCERestarts,
args.nrCEIterations,
args.nrCESamples,
args.nrCESamplesForUpdate,
args.CE_use_hard_threshold, //(gamma in CE papers)
args.CE_alpha, //the learning rate
args.nrCEEvalutionRuns //the number of evaluation runs
, args.verbose
);
Time.Stop("PlanningUnit");
cout << "DICEPSPlanner initialized" << endl;
clock_t total_utime_diceps=0;
double total_value=0;
for(int restartI = 0; restartI < restarts; restartI++)
{
//start all timers:
tms ts_before, ts_after;
clock_t ticks_before, ticks_after;
Time.Start("Plan");
//.........这里部分代码省略.........
示例9: main
int main(int argc, char **argv)
{
ArgumentHandlers::Arguments args;
argp_parse (&ArgumentHandlers::theArgpStruc, argc, argv, 0, 0, &args);
try
{
Timing Time;
cout << "Instantiating the problem..."<<endl;
DecPOMDPDiscreteInterface* decpomdp = GetDecPOMDPDiscreteInterfaceFromArgs(args);
cout << "...done."<<endl;
//set up output files
string filename="/dev/null", timingsFilename="/dev/null";
if(!args.dryrun)
{
stringstream ss;
ss << directories::MADPGetResultsFilename("VI", *decpomdp, args)
<< "_h" << args.horizon;
filename=ss.str();
timingsFilename=filename + "_Timings";
if(!file_exists(filename))
{
cout << "VI: could not open " << filename <<endl;
cout << "Results will not be stored to disk." <<endl;
args.dryrun = true;
}
}
//start VI
PlanningUnitDecPOMDPDiscrete *np = new NullPlanner(args.horizon, decpomdp);
MDPValueIteration vi(*np);
cout << "Running value iteration..."<<endl;
Time.Start("Plan");
vi.Plan();
Time.Stop("Plan");
cout << "...done."<<endl;
QTable q = vi.GetQTable(0); //<- infinite horizon, so get 1 value function of stage 0
int nrRuns = args.nrRuns; //defaults to 1000, see argumentHandlers.h
int seed = args.randomSeed; //defaults to 42
cout << "Simulating policy with nrRuns: "
<< nrRuns << " and seed: " << seed <<endl;
SimulationDecPOMDPDiscrete sim(*np, nrRuns, seed);
//write intermediate simulation results to file
if(!args.dryrun)
sim.SaveIntermediateResults(filename);
vector<double> avgRewards;
double r = runOneSimulation(q, np, sim);
cout << "...done"<<endl;
avgRewards.push_back(r);
cout << "Avg rewards: " << SoftPrintVector(avgRewards) << endl;
//write VI timing information to file
if(!args.dryrun)
Time.Save(timingsFilename);
}
catch(E& e){ e.Print(); }
return(0);
}