예제 #1
0
   //---------------------------------------------------------------------------
   double *GetDerivativesForState(double epoch, double state[], 
         int stateDim, double dt, int order, int *pdim)
   {
      double *retval = NULL;
      static double *deriv = NULL;
      int modelIndex = *pdim;

      if (modelIndex > 0)
         if (odeTable.find(*pdim) != odeTable.end())
         {
            ode = odeTable[modelIndex];
            pSetup = setupTable[modelIndex];
         }

      if (ode != NULL)
      {
         if (SetState(epoch, state, stateDim) == 0)
         {
            double *dvState = GetState();
            *pdim = GetStateSize();
            if (deriv == NULL)
               deriv = new double[*pdim];
            ode->GetDerivatives(dvState, dt, order);
            const double *ddt = ode->GetDerivativeArray();
            memcpy(deriv, ddt, *pdim * sizeof(double));
            retval = deriv;
         }
      }
      return retval;
   }
예제 #2
0
void cScenarioBallRL::InitTupleBuffer()
{
	mTupleBuffer.resize(gTupleBufferSize);
	for (int i = 0; i < gTupleBufferSize; ++i)
	{
		mTupleBuffer[i] = tExpTuple(GetStateSize(), GetActionSize());
	}
}
예제 #3
0
void cScenarioBallRL::Init()
{
	SetupController();
	mCurrTuple = tExpTuple(GetStateSize(), GetActionSize());
	InitTupleBuffer();
	InitTrainer();
	InitLearner();

	InitGround();
	Reset();
}
예제 #4
0
int CCodecBase::InternalSetStateWrapper(const void *pState, size_t cb)
{
	if (IsLogWriterInitializedOrDebugBuild())
	{
		char buf[256];
		FormatBinary(buf, pState, cb, GetStateSize());
		LOGPRINTF("%p CCodecBase::InternalSetStateWrapper(pState=%s, cb=%" PRIuSZT ")", this, buf, cb);
	}

	int ret = InternalSetState(pState, cb);
	LOGPRINTF("%p CCodecBase::InternalSetStateWrapper return %d", this, ret);
	return ret;
}
예제 #5
0
파일: VCM.cpp 프로젝트: MindFy/camstudio
bool CHIC::getState()
{
	bool bResult = isOpen();
	if (!bResult) {
		TRACE("CHIC::getState: %s Not open\n", bResult ? "OK" : "FAIL");
		return bResult;
	}
	try
	{
		if (m_pState) {
			ASSERT(0 < m_ulStateSize);
			delete [] m_pState;
			m_ulStateSize = 0L;
		}
		ASSERT(0L == m_ulStateSize);
		m_ulStateSize = GetStateSize();
		bResult = (0 < m_ulStateSize);
		if (!bResult) {
			TRACE("CHIC::getState: %s bad size\n", bResult ? "OK" : "FAIL");
			return bResult;
		}

		// TODO, Possible memory leak, where is the delete operation of the new below done although there is a delete in catch
		m_pState = new char[m_ulStateSize];
		LRESULT lResult = ::ICGetState(m_hIC, m_pState, m_ulStateSize);
		// bResult = (lResult == m_ulStateSize );  ==> C4389 Warning, type mismatch
		bResult = ( lResult - m_ulStateSize == 0 );  // Save 
		if (!bResult)
			throw "ICGetState failed";
	}
	catch(...)
	{
		bResult = false;
		if (m_pState) {
			ASSERT(0 < m_ulStateSize);
			delete [] m_pState, m_pState = 0;
			m_ulStateSize = 0L;
		}
		ASSERT(0L == m_ulStateSize);
	}
	TRACE("CHIC::getState: %s\n", bResult ? "OK" : "FAIL");
	return bResult;
}
예제 #6
0
   //---------------------------------------------------------------------------
   double *GetDerivatives(double dt, int order, int *pdim)
   {
      double *retval = NULL;
      static double *deriv = NULL;
      int modelIndex = *pdim;

      char dvData[1024];
      sprintf(dvData, "ODE Model index: %d\n", modelIndex);
      lastMsg = dvData;

      if (modelIndex > 0)
         if (odeTable.find(*pdim) != odeTable.end())
         {
            ode = odeTable[modelIndex];
            pSetup = setupTable[modelIndex];
         }

      if (ode != NULL)
      {
         double *state = GetState();
         int dim = GetStateSize();
         *pdim = dim;
         if (deriv == NULL)
            deriv = new double[dim];
         ode->GetDerivatives(state, dt, order);
         const double *ddt = ode->GetDerivativeArray();


         sprintf(dvData, "   %lf\n   %lf\n   %lf\n   %le\n   %le\n   %le\n   "
               "%le\n   %le\n   %le\n   %le\n   %le\n   %le\n",
               state[0], state[1], state[2], state[3], state[4], state[5],
               ddt[0], ddt[1], ddt[2], ddt[3], ddt[4], ddt[5]);
         lastMsg += dvData;

         memcpy(deriv, ddt, dim * sizeof(double));
         retval = deriv;

         lastMsg += ode->GetGeneratingString(Gmat::NO_COMMENTS);
      }
      return retval;
   }
예제 #7
0
int CCodecBase::SaveConfig(void)
{
#ifdef _WIN32
	HKEY hkUtVideo;
	DWORD dwSaveConfig;
	DWORD cb;
	DWORD dwType;
	char buf[16];
	char szValueName[16];

	if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Ut Video Codec Suite", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hkUtVideo, NULL) != ERROR_SUCCESS)
		return -1;

	cb = sizeof(DWORD);
	if (RegQueryValueEx(hkUtVideo, "SaveConfig", NULL, &dwType, (uint8_t *)&dwSaveConfig, &cb) != ERROR_SUCCESS)
		goto notsaved;
	if (!dwSaveConfig)
		goto notsaved;

	wsprintf(szValueName, "Config%s", GetTinyName());
	cb = (DWORD)GetStateSize();
	_ASSERT(cb <= sizeof(buf));
	GetState(buf, cb);
	if (RegSetValueEx(hkUtVideo, szValueName, 0, REG_BINARY, (const BYTE *)buf, cb) != ERROR_SUCCESS)
		goto notsaved;

	RegCloseKey(hkUtVideo);
	return 0;

notsaved:
	RegCloseKey(hkUtVideo);
	return -1;
#endif
#if defined(__APPLE__) || defined (__unix__)
	return 0;
#endif
}