Пример #1
0
int CMSaveSimulation::ReliabilitySeries(const CMString& fname)
{
	unsigned i;

	if (!open_file(fname))
   	return -1;
	wchar_t buffer[128];
	get_data_from_simulation();
	int oldformat = CMTime::SetOutputFormat(simincunits);

	long row=0;

   long nrows = 1 + relseries_records;

	for (i=0;i<reliability->Targets();i++) {
		const wchar_t* tname = reliability->Target(i)->GetString().c_str();
		for (CMTime tm=outbeg;tm<=outend;tm.inc(simincsteps,simincunits),row++) {
		   output_item(OutReliabilitySeries,tname,row,0,maxtargetlength,0);
		   output_item(OutReliabilitySeries,_wtof(tm.GetString(buffer, 128)),row,1,fieldwidth,0);
		   output_item(OutReliabilitySeries,reliability->FailPct(tm,i),row,2,fieldwidth,1);
         output_record_end(row);
      }
   }

	output_footer(OutReliabilitySeries);

	CMTime::SetOutputFormat(oldformat);
   delete fout;
   fout=0;
   return 0;
}
Пример #2
0
int CMSaveSimulation::Outcomes(const CMString& fname)
{
	if (!open_file(fname))
		return -1;

	if (_aggresults) delete[] _aggresults;
	if (_aggindex) 	 delete[] _aggindex;

	_aggresults = new float[arrayindex.Count()];
	_aggindex = new unsigned[arrayindex.Count()];

	get_data_from_simulation();

	output_item(OutRealizations, L"Trial", 0, 0, fieldwidth, 0);
	output_item(OutRealizations, L"Period", 0, 1, fieldwidth, 0);

	long row = 0;

	for (unsigned i = 0; i < arrayindex.Count(); i++) {
		_aggindex[i] = arrayindex[i]->GetIndex();
		output_item(OutRealizations, array->GetVariableName(arrayindex[i]->GetIndex()).c_str(), 0, i + 2, fieldwidth, arrayindex[i]->IsCostVariable() ? _costPrecision : _precision);
	}

	output_record_end(row++);

	int oldformat = CMTime::SetOutputFormat(outincunits);

	long nrows = 1 + realization_records;

	long trialno;

	CMTime tm;

	if (state & rSortByTrial) {
		for (trialno = trialbeg; trialno <= trialend; trialno++) {
			for (tm = outbeg; tm <= outend; tm.inc(outincsteps, outincunits))
				output_realizations_record(tm, trialno, row++);
		}
	}
	else {
		for (tm = outbeg; tm <= outend; tm.inc(outincsteps, outincunits)) {
			for (trialno = trialbeg; trialno <= trialend; trialno++)
				output_realizations_record(tm, trialno, row++);
		}
	}

	output_footer(OutRealizations);

	delete[] _aggresults;
	delete[] _aggindex;
	_aggresults = 0;
	_aggindex = 0;
	delete fout;
	fout = 0;
	CMNotifier::Notify(CMNotifier::INFO, L"");
	CMTime::SetOutputFormat(oldformat);
	return 0;
}
Пример #3
0
void CMSaveSimulation::output_realizations_record(const CMTime& t,long trialno,long row)
{
	wchar_t buffer[128];

	CMTime tm = get_realizations(t,trialno);
    output_item(OutRealizations,trialno+1,row,0,fieldwidth,0);
    output_item(OutRealizations,_wtof(tm.GetString(buffer, 128)),row,1,fieldwidth,0);

	for (unsigned i = 0; i < arrayindex.Count(); i++)
		output_item(OutRealizations, arrayindex[i]->GetValue(), row, i + 2, fieldwidth, arrayindex[i]->IsCostVariable() ? _costPrecision : _precision);   //arrayindex[i]->units->Precision()); ***TODO Change how precision is obtained

   output_record_end(row);
}
Пример #4
0
Файл: cat.cpp Проект: Tyilo/tpie
static int read_files(const std::vector<std::string> & files, const parameter_parser<T> & params) {
	if (!files.size()) {
		std::cerr << "No input files specified" << std::endl;
		usage(1);
		return 1;
	}
	int result = 0;
	for (std::vector<std::string>::const_iterator i = files.begin(); i != files.end(); ++i) {
		std::string path = *i;
		tpie::stream_header_t header = get_stream_header(path);
		if (params.m_verbose) {
			std::clog
				<< "Path:           " << path << '\n'
				<< "Header version: " << header.version << '\n'
				<< "Item size:      " << header.itemSize << '\n'
				<< "User data size: " << header.userDataSize << '\n'
				<< "Size:           " << header.size << '\n'
				<< std::flush;
		}
		tpie::file_stream<T> fs;
		try {
			fs.open(path, tpie::access_read, static_cast<tpie::memory_size_type>(header.userDataSize));
		} catch (const tpie::stream_exception & e) {
			std::cerr << "Couldn't open " << path << ": " << e.what() << std::endl;
			result = 1;
			continue;
		}
		while (fs.can_read()) {
			output_item(fs.read());
		}
		fs.close();
	}
	return result;
}
Пример #5
0
void CMSaveSimulationAscii::output_item(int which,double val,long row,long col,int width,int prec)
{
	wchar_t buffer[128];
	swprintf_s(buffer, 128, L"%.*f",prec,val);
	roundstring(buffer, prec);
	output_item(which, buffer, row, col, width, prec);
    //swprintf_s(buffer, 128, L"%.*f",prec,val);
    //output_item(which,buffer,row,col,width,prec);
}
Пример #6
0
static void
output_list( fields *info, FILE *outptr, convert *c, int nc )
{
        int i, n;
        for ( i=0; i<nc; ++i ) {
                n = fields_find( info, c[i].oldtag, c[i].code );
                if ( n!=-1 ) output_item( info, outptr, c[i].newtag, c[i].prefix, n, 0 );
        }

}
Пример #7
0
int CMSaveSimulation::Summary(const CMString& fname)
{
	unsigned i;

	if (!open_file(fname))
		return -1;
	wchar_t buffer[128];
	get_data_from_simulation();

	long row = 0;

	int oldformat = CMTime::SetOutputFormat(simincunits);
	long nrows = 1 + summary_records;

	for (i = 0; i < accumindex.Count(); i++) {
		double val;
		unsigned varindex = accumindex[i]->GetIndex();
		const wchar_t* vname = _accum->GetVariableName(varindex).c_str();
		for (CMTime tm = outbeg; tm <= outend; tm.inc(simincsteps, simincunits), row++) {
			output_item(OutSummary, vname, row, 0, maxnamelength, 0);
			output_item(OutSummary, _wtof(tm.GetString(buffer, 128)), row, 1, fieldwidth, 0);
			for (int j = 0; j < 4; j++) {
				switch (j) {
				case 0: val = _accum->Mean(tm, varindex); break;
				case 1: val = _accum->StdDev(tm, varindex); break;
				case 2: val = _accum->Min(tm, varindex); break;
				case 3: val = _accum->Max(tm, varindex); break;
				}
				output_item(OutSummary, val, row, j + 2, fieldwidth, accumindex[i]->IsCostVariable() ? _costPrecision : _precision);
			}
			output_record_end(row);
		}
	}

	output_footer(OutSummary);

	CMTime::SetOutputFormat(oldformat);
	delete fout;
	fout = 0;
	return 0;
}
Пример #8
0
static void
output_thesisdetails( fields *info, FILE *outptr, int type )
{
	char *tag;
	int i, n;

	if ( type==TYPE_PHDTHESIS )
		output_fixed( outptr, "b:ThesisType", "Ph.D. Thesis", 0 );
	else if ( type==TYPE_MASTERSTHESIS ) 
		output_fixed( outptr, "b:ThesisType", "Masters Thesis", 0 );

	n = fields_num( info );
	for ( i=0; i<n; ++i ) {
		tag = fields_tag( info, i, FIELDS_CHRP );
		if ( strcasecmp( tag, "DEGREEGRANTOR" ) &&
			strcasecmp( tag, "DEGREEGRANTOR:ASIS") &
			strcasecmp( tag, "DEGREEGRANTOR:CORP"))
				continue;
		output_item( info, outptr, "b:Institution", "", i, 0 );
	}
}
Пример #9
0
int CMSaveSimulation::ReliabilityDetail(const CMString& fname)
{
	if (!open_file(fname))
   	return -1;
	get_data_from_simulation();
	int oldformat = CMTime::SetOutputFormat(outincunits);

   int i,j;
   int step;

	if (!reldetailtargets)
		return 0;

   long row = 0;
   CMTime tm;

	long** bins = new long*[reldetailtargets*outtimesteps];
	for (i=0;i<outtimesteps;i++)
   	bins[i] = new long[20];
	double* expected = new double[reldetailtargets*outtimesteps];
 	double* maxshortage = new double[reldetailtargets*outtimesteps];

	for (i=0;i<(int)reldetailtargets*outtimesteps;i++) {
	  	expected[i]=0;
   	maxshortage[i]=100;
      for (j=0;j<20;j++)
			bins[i][j] = 0;
	}

   step = 0;

	for (tm=outbeg;tm<=outend;tm.inc(outincsteps,outincunits),step++) {
		for (long trial=trialbeg;trial<=trialend;trial++) {
			for (i=0;i<(int)reldetailtargets;i++) {
				CMReliabilityTarget* target = reliability->Target(reldetailindex[i]);
				unsigned sindex = array->VariableIndex(target->ShortageVariable());
				unsigned pindex = array->VariableIndex(target->PercentageVariable());
				int ispercent = (target->IsPercent() && pindex<array->Variables());
				double sval;
				if (!ispercent && sindex<array->Variables()) {
					maxshortage[step*reldetailtargets+i]=0;
					for (long tr=trialbeg;tr<=trialend;tr++) {
						sval = target->ShortageSign() * get_realization(tm,sindex,tr);
            	   if (sval > maxshortage[step*reldetailtargets+i]) maxshortage[step*reldetailtargets+i] = sval;
	            }
   	      }
      	   sval=0;
				if (sindex<array->Variables()) {
					sval = target->ShortageSign() * get_realization(tm,sindex,trial);
					double pval = (ispercent) ? (target->PercentSign()*get_realization(tm,pindex,trial)) : 0;
					if (pval != 0) sval *= (100/pval);
				}
				if (sval>1e-9) {
					expected[step*reldetailtargets+i] += sval;
					int binno = ispercent ? (int)(sval/5) : (int)(20*sval/maxshortage[step*reldetailtargets+i]);
					if (binno>=20) binno=19;
					bins[step*reldetailtargets+i][binno]++;
				}
			}
      }
	}

   for (step=0;step<(int)outtimesteps;step++)
		for (i=0;i<(int)reldetailtargets;i++)
			for (j=18;j>=0;j--)
				bins[step*reldetailtargets+i][j] += bins[step*reldetailtargets+i][j+1];

	step = 0;
	for (tm=outbeg;tm<=outend;tm.inc(outincsteps,outincunits),step++) {
		for (i=0;i<(int)reldetailtargets;i++,row++) {
   		long col = 0;
		   output_item(OutReliabilityDetail,reliability->Target(reldetailindex[i])->GetString().c_str(),row,col++,maxtargetlength,0);
		   output_item(OutReliabilityDetail,last_timestep_in_interval(tm),row,col++,fieldwidth,0);
         for (j=0;j<20;j++)
				output_item(OutReliabilityDetail,100*(double)bins[step*reldetailtargets+i][j]/_outtrials,row,col++,fieldwidth,1);
			output_item(OutReliabilityDetail,100*(double)bins[step*reldetailtargets+i][0]/_outtrials,row,col++,fieldwidth,1);
			output_item(OutReliabilityDetail,expected[step*reldetailtargets+i]/_outtrials,row,col++,fieldwidth,1);
         output_record_end(row);
      }
   }

	output_footer(OutReliabilityDetail);

	delete [] expected;
	delete [] maxshortage;
	for (i=0;i<outtimesteps;i++)
   	delete [] bins[i];
	delete [] bins;
   delete fout;
   fout = 0;

   CMTime::SetOutputFormat(oldformat);
   return 0;
}
Пример #10
0
		// Note that bind() takes ownership of the object. The reason it takes a
		// pointer instead of using a copy constructor is that most of the output
		// methods may be singletons of sorts. This makes it easier to write the
		// plugin objects because they don't have to mess with copy constructors.
		// This is perhaps subject to change, however.
		void bind(reportbase_type *obj, log_type log = log_all)
		{
			// add the output object here.
			mOutput.push_back( output_item(log, obj) );
		}