示例#1
0
 /// <summary>
 ///     starter for real calcs
 /// </summary>
 public CalcStartParameterSet(
     [NotNull] Func <bool, string, ObservableCollection <ResultFileEntry>, bool>
     reportFinishFuncForHouseAndSettlement,
     [NotNull] Func <bool, string, string, bool> reportFinishFuncForHousehold,
     [NotNull] Func <object, bool> openTabFunc, [CanBeNull] ILPGDispatcher dispatcher,
     [NotNull] GeographicLocation geographicLocation,
     [NotNull] TemperatureProfile temperatureProfile,
     [NotNull] ICalcObject calcTarget,
     EnergyIntensityType energyIntensity, [NotNull] Func <bool> reportCancelFunc, bool resumeSettlement,
     [CanBeNull] DeviceSelection deviceSelection, LoadTypePriority loadTypePriority,
     [CanBeNull] TransportationDeviceSet transportationDeviceSet, [CanBeNull] TravelRouteSet travelRouteSet,
     [NotNull] List <CalcOption> calcOptions,
     DateTime officialSimulationStartTime,
     DateTime officialSimulationEndTime,
     TimeSpan internalTimeResolution,
     [NotNull] string csvCharacter,
     int selectedRandomSeed,
     TimeSpan externalTimeResolution, bool deleteDatFiles, bool writeExcelColumn, bool showSettlingPeriod,
     int settlingDays, int affordanceRepetitionCount, [NotNull] CalculationProfiler calculationProfiler,
     [CanBeNull] ChargingStationSet chargingStationSet,
     [CanBeNull][ItemNotNull] List <string> loadTypesToProcess,
     DeviceProfileHeaderMode deviceProfileHeaderMode,
     bool ignorePreviousActivitiesWhenNeeded, string resultPath, bool transportationEnabled)
 {
     IgnorePreviousActivitiesWhenNeeded = ignorePreviousActivitiesWhenNeeded;
     ResultPath                            = resultPath;
     LoadTypesToProcess                    = loadTypesToProcess;
     ExternalTimeResolution                = externalTimeResolution;
     DeleteDatFiles                        = deleteDatFiles;
     WriteExcelColumn                      = writeExcelColumn;
     ShowSettlingPeriod                    = showSettlingPeriod;
     SettlingDays                          = settlingDays;
     AffordanceRepetitionCount             = affordanceRepetitionCount;
     CalculationProfiler                   = calculationProfiler;
     SelectedRandomSeed                    = selectedRandomSeed;
     OfficialSimulationStartTime           = officialSimulationStartTime;
     OfficialSimulationEndTime             = officialSimulationEndTime;
     InternalTimeResolution                = internalTimeResolution;
     CsvCharacter                          = csvCharacter;
     ReportFinishFuncForHouseAndSettlement = reportFinishFuncForHouseAndSettlement;
     ReportFinishFuncForHousehold          = reportFinishFuncForHousehold;
     OpenTabFunc                           = openTabFunc;
     Dispatcher                            = dispatcher;
     GeographicLocation                    = geographicLocation;
     TemperatureProfile                    = temperatureProfile;
     CalcTarget                            = calcTarget;
     EnergyIntensity                       = energyIntensity;
     ReportCancelFunc                      = reportCancelFunc;
     ResumeSettlement                      = resumeSettlement;
     LPGVersion                            = Utili.GetCurrentAssemblyVersion();
     DeviceSelection                       = deviceSelection;
     LoadTypePriority                      = loadTypePriority;
     TransportationDeviceSet               = transportationDeviceSet;
     TravelRouteSet                        = travelRouteSet;
     CalcOptions                           = calcOptions;
     ChargingStationSet                    = chargingStationSet;
     DeviceProfileHeaderMode               = deviceProfileHeaderMode;
     CalculationStartTime                  = DateTime.Now;
     TransportationEnabled                 = transportationEnabled;
 }
示例#2
0
        private static HouseHousehold AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                   [NotNull] AllItemCollections aic)
        {
            var id          = dr.GetIntFromLong("ID");
            var houseID     = dr.GetIntFromLong("HouseID");
            var householdID = dr.GetNullableIntFromLong("HouseholdID", false);

            ICalcObject calcObject    = aic.ModularHouseholds.FirstOrDefault(hh1 => hh1.ID == householdID);
            var         householdname = string.Empty;

            if (calcObject != null)
            {
                householdname = calcObject.Name;
            }
            var guid            = GetGuid(dr, ignoreMissingFields);
            int chargingSetID   = dr.GetIntFromLong("ChargingSetID", false, ignoreMissingFields);
            var chargingStation = aic.ChargingStationSets.FirstOrDefault(x => x.ID == chargingSetID);

            int transportationDeviceSetID = dr.GetIntFromLong("TransportationDeviceSetID", false, ignoreMissingFields);
            var transportationDeviceSet   = aic.TransportationDeviceSets.FirstOrDefault(x => x.ID == transportationDeviceSetID);

            int travelrouteSetID = dr.GetIntFromLong("TravelRouteSetID", false, ignoreMissingFields);
            var travelrouteSet   = aic.TravelRouteSets.FirstOrDefault(x => x.ID == travelrouteSetID);

            return(new HouseHousehold(id, houseID, calcObject,
                                      connectionString, householdname, guid,
                                      transportationDeviceSet, chargingStation, travelrouteSet));
        }
 public SettlementHH([CanBeNull] int?pID, [CanBeNull] ICalcObject pHH, int count, [CanBeNull] int?settlementID,
                     [NotNull] string connectionString, [NotNull] string householdName, StrGuid guid)
     : base(householdName, TableName, connectionString, guid)
 {
     TypeDescription = "Settlement Household";
     ID            = pID;
     Count         = count;
     _settlementID = settlementID;
     _calcObject   = pHH;
 }
示例#4
0
 public HouseHousehold([CanBeNull] int?pID, int houseID, [CanBeNull] ICalcObject household, [NotNull] string connectionString,
                       [NotNull] string householdName, StrGuid guid, [CanBeNull] TransportationDeviceSet transportationDeviceSet, [CanBeNull] ChargingStationSet chargingStationSet, [CanBeNull] TravelRouteSet travelRouteSet) : base(householdName, TableName, connectionString, guid)
 {
     ID         = pID;
     HouseID    = houseID;
     _household = household;
     TransportationDeviceSet = transportationDeviceSet;
     ChargingStationSet      = chargingStationSet;
     TravelRouteSet          = travelRouteSet;
     TypeDescription         = "House Household";
 }
 public HouseholdPlan([NotNull] string name, [CanBeNull] AffordanceTaggingSet taggingSet,
                      [CanBeNull] ICalcObject calcObject,
                      [NotNull] string description,
                      [NotNull] string connectionString, StrGuid guid,
                      [CanBeNull] int?pID = null) : base(
         name, TableName, connectionString, guid)
 {
     _entries        = new ObservableCollection <HouseholdPlanEntry>();
     ID              = pID;
     TypeDescription = "Household Plan";
     _description    = description;
     _taggingSet     = taggingSet;
     _calcObject     = calcObject;
 }
 public bool ItemExists([NotNull] ICalcObject mycalcObject, [NotNull] GeographicLocation geoloc,
                        [NotNull] TemperatureProfile temperatureProfile,
                        EnergyIntensityType intensity, [NotNull] string lpgVersion)
 {
     foreach (var co in MyItems)
     {
         if (co.HouseholdName == mycalcObject.Name && co.GeographicLocationName == geoloc.Name &&
             co.TemperatureProfile == temperatureProfile.Name && co.EnergyIntensity == intensity.ToString() &&
             co.LPGVersion == lpgVersion)
         {
             return(true);
         }
     }
     return(false);
 }
示例#7
0
        //public const string TableName = "CalcStartParameterSet";

        /// <summary>
        ///     starter for unit tests
        /// </summary>
        public CalcStartParameterSet(
            [NotNull] GeographicLocation geographicLocation,
            [NotNull] TemperatureProfile temperatureProfile,
            [NotNull] ICalcObject calcTarget,
            EnergyIntensityType energyIntensity,
            bool resumeSettlement,
            [CanBeNull] DeviceSelection deviceSelection,
            LoadTypePriority loadTypePriority,
            [CanBeNull] TransportationDeviceSet transportationDeviceSet, [CanBeNull] ChargingStationSet chargingStationSet,
            [CanBeNull] TravelRouteSet travelRouteSet, [NotNull] List <CalcOption> calcOptions,
            DateTime officialSimulationStartTime,
            DateTime officialSimulationEndTime,
            TimeSpan internalTimeResolution,
            [NotNull] string csvCharacter,
            int selectedRandomSeed,
            TimeSpan externalTimeResolution, bool deleteDatFiles, bool writeExcelColumn, bool showSettlingPeriod,
            int settlingDays, int affordanceRepetitionCount, [NotNull] CalculationProfiler calculationProfiler, string resultPath, bool transportationEnabled)
        {
            OfficialSimulationStartTime = officialSimulationStartTime;
            OfficialSimulationEndTime   = officialSimulationEndTime;
            InternalTimeResolution      = internalTimeResolution;
            CsvCharacter              = csvCharacter;
            SelectedRandomSeed        = selectedRandomSeed;
            ExternalTimeResolution    = externalTimeResolution;
            DeleteDatFiles            = deleteDatFiles;
            WriteExcelColumn          = writeExcelColumn;
            ShowSettlingPeriod        = showSettlingPeriod;
            SettlingDays              = settlingDays;
            AffordanceRepetitionCount = affordanceRepetitionCount;
            CalculationProfiler       = calculationProfiler;
            GeographicLocation        = geographicLocation;
            TemperatureProfile        = temperatureProfile;
            CalcTarget              = calcTarget;
            EnergyIntensity         = energyIntensity;
            ResumeSettlement        = resumeSettlement;
            LPGVersion              = Utili.GetCurrentAssemblyVersion();
            DeviceSelection         = deviceSelection;
            LoadTypePriority        = loadTypePriority;
            TransportationDeviceSet = transportationDeviceSet;
            TravelRouteSet          = travelRouteSet;
            CalcOptions             = calcOptions;
            ChargingStationSet      = chargingStationSet;
            DeviceProfileHeaderMode = DeviceProfileHeaderMode.Standard;
            ResultPath              = resultPath;
            CalculationStartTime    = DateTime.Now;
            TransportationEnabled   = transportationEnabled;
        }
        private void RegisterEverything([NotNull] Simulator sim, [NotNull] string resultpath, [NotNull] CalcStartParameterSet csps, [NotNull] ICalcObject hh,
                                        [NotNull] ContainerBuilder builder, [NotNull] string sqlFileName, [NotNull] CalcParameters calcParameters,
                                        [CanBeNull] DeviceSelection ds)
        {
            builder.Register(c => new SqlResultLoggingService(sqlFileName)).As <SqlResultLoggingService>()
            .SingleInstance();
            builder.Register(c => calcParameters).As <CalcParameters>().SingleInstance();
            Random rnd = new Random(calcParameters.ActualRandomSeed);

            builder.Register(c => rnd).As <Random>().SingleInstance();
            builder.Register(c => csps.CalculationProfiler).As <CalculationProfiler>().SingleInstance();
            builder.Register(c => new NormalRandom(0, 0.1, rnd)).As <NormalRandom>().SingleInstance();
            builder.RegisterType <OnlineDeviceActivationProcessor>().As <IOnlineDeviceActivationProcessor>()
            .SingleInstance();
            builder.RegisterType <CalcHouseFactory>().As <CalcHouseFactory>().SingleInstance();
            builder.RegisterType <CalcManager>().As <CalcManager>().SingleInstance();
            builder.RegisterType <AffordanceTaggingSetFactory>().As <AffordanceTaggingSetFactory>().SingleInstance();
            builder.Register(x =>
                             CalcLoadTypeDtoFactory.MakeLoadTypes(sim.LoadTypes.It, calcParameters.InternalStepsize,
                                                                  csps.LoadTypePriority))
            .As <CalcLoadTypeDtoDictionary>().SingleInstance();
            builder.Register(x => CalcLoadTypeFactory.MakeLoadTypes(x.Resolve <CalcLoadTypeDtoDictionary>()))
            .As <CalcLoadTypeDictionary>().SingleInstance();
            //builder.Register(x =>ds).As<DeviceSelection>().SingleInstance();
            builder.Register(x => {
                CalcDeviceTaggingSetFactory ctsf =
                    new CalcDeviceTaggingSetFactory(x.Resolve <CalcParameters>(), x.Resolve <CalcLoadTypeDtoDictionary>());
                return(ctsf.GetDeviceTaggingSets(sim, hh.CalculatePersonCount()));
            }).As <CalcDeviceTaggingSets>().SingleInstance();
            builder.Register(x => new DeviceCategoryPicker(rnd, ds)).As <IDeviceCategoryPicker>().SingleInstance();
            builder.RegisterType <CalcModularHouseholdFactory>().As <CalcModularHouseholdFactory>().SingleInstance();
            builder.RegisterType <CalcHouseFactory>().As <CalcHouseFactory>().SingleInstance();
            builder.RegisterType <CalcLocationFactory>().As <CalcLocationFactory>().SingleInstance();
            builder.RegisterType <CalcPersonFactory>().As <CalcPersonFactory>().SingleInstance();
            builder.RegisterType <CalcDeviceFactory>().As <CalcDeviceFactory>().SingleInstance();
            builder.RegisterType <CalcRepo>().As <CalcRepo>().SingleInstance();
            builder.RegisterType <CalcAffordanceFactory>().As <CalcAffordanceFactory>().SingleInstance();
            builder.RegisterType <CalcTransportationFactory>().As <CalcTransportationFactory>().SingleInstance();

            builder.RegisterType <CalcVariableDtoFactory>().As <CalcVariableDtoFactory>().SingleInstance();

            builder.RegisterType <VacationDtoFactory>().As <VacationDtoFactory>().SingleInstance();
            builder.RegisterType <CalcVariableRepository>().As <CalcVariableRepository>().SingleInstance();
            builder.RegisterType <TemperatureDataLogger>().As <TemperatureDataLogger>().SingleInstance();
            builder.Register(x => new FileFactoryAndTracker(resultpath, hh.Name, x.Resolve <IInputDataLogger>()))
            .As <FileFactoryAndTracker>().SingleInstance();
            builder.Register(_ => new SqlResultLoggingService(resultpath)).As <SqlResultLoggingService>().SingleInstance();
            builder.Register(x => new DateStampCreator(x.Resolve <CalcParameters>())).As <DateStampCreator>().SingleInstance();
            builder.Register(c => new OnlineLoggingData(c.Resolve <DateStampCreator>(), c.Resolve <IInputDataLogger>(),
                                                        c.Resolve <CalcParameters>()))
            .As <OnlineLoggingData>().As <IOnlineLoggingData>().SingleInstance();
            builder.Register(x => new LogFile(calcParameters, x.Resolve <FileFactoryAndTracker>())).As <ILogFile>().SingleInstance();
            builder.RegisterType <AffordanceTaggingSetFactory>().As <AffordanceTaggingSetFactory>();
            builder.RegisterType <CalcPersonDtoFactory>().As <CalcPersonDtoFactory>();
            builder.RegisterType <CalcDeviceDtoFactory>().As <CalcDeviceDtoFactory>();
            builder.RegisterType <CalcLocationDtoFactory>().As <CalcLocationDtoFactory>();
            builder.RegisterType <CalcAffordanceDtoFactory>().As <CalcAffordanceDtoFactory>();
            builder.RegisterType <CalcHouseDtoFactory>().As <CalcHouseDtoFactory>();
            builder.RegisterType <CalcModularHouseholdDtoFactory>().As <CalcModularHouseholdDtoFactory>();
            builder.RegisterType <AvailabilityDtoRepository>().As <AvailabilityDtoRepository>().SingleInstance();
            builder.RegisterType <CalcTransportationDtoFactory>().As <CalcTransportationDtoFactory>();
            //data save loggers + input data loggers
            builder.RegisterType <InputDataLogger>().As <IInputDataLogger>().SingleInstance();
            builder.RegisterType <CalcParameterLogger>().As <IDataSaverBase>();
            builder.RegisterType <DeviceTaggingSetLogger>().As <IDataSaverBase>();
            builder.RegisterType <HouseholdDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <DaylightTimesLogger>().As <IDataSaverBase>();
            builder.RegisterType <TemperatureDataLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcStartParameterSetLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcLoadTypeDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <ActionEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcPersonDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcDeviceDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcAutoDevDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcVariableDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <HouseholdKeyLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcObjectInformationLogger>().As <IDataSaverBase>();
            builder.RegisterType <BodilyActivityLevelStatisticsLogger>().As <IDataSaverBase>();
            builder.RegisterType <ResultFileEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcAffordanceDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcAffordanceTaggingSetDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <DeviceActivationEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <ColumnEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <BridgeDayEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <HouseDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <LocationEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcSiteDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcTransportationDeviceDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <CalcTravelRouteDtoLogger>().As <IDataSaverBase>();
            builder.RegisterType <TransportationEventLogger>().As <IDataSaverBase>();
            builder.RegisterType <TransportationStatusLogger>().As <IDataSaverBase>();
            builder.RegisterType <PersonStatusLogger>().As <IDataSaverBase>();
            builder.RegisterType <TransportationStateEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <ChargingStationStateLogger>().As <IDataSaverBase>();
            builder.RegisterType <VariableEntryLogger>().As <IDataSaverBase>();
            builder.RegisterType <TransportationDeviceStatisticsLogger>().As <IDataSaverBase>();

            builder.RegisterType <AffordanceEnergyUseLogger>().As <IDataSaverBase>();
            //builder.Register(x=> x.Resolve<CalcVariableDtoFactory>().GetRepository()).As<CalcVariableRepository>().SingleInstance();
            builder.Register(x => MakeLightNeededArray(csps.GeographicLocation, csps.TemperatureProfile,
                                                       rnd,
                                                       new List <VacationTimeframe>(), hh.Name, calcParameters)).As <DayLightStatus>().SingleInstance();
        }
        private static ICalcAbleObject MakeCalcHouseholdObject([NotNull] Simulator sim, [NotNull] CalcStartParameterSet csps, [NotNull] ICalcObject hh,
                                                               [NotNull] ILifetimeScope scope,
                                                               [NotNull] CalcVariableDtoFactory cvrdto,
                                                               [NotNull] CalcVariableRepository variableRepository,
                                                               out CalcObjectType cot,
                                                               [NotNull] CalcRepo calcRepo)
        {
            var              cmhdf        = scope.Resolve <CalcModularHouseholdDtoFactory>();
            HouseholdKey     householdKey = new HouseholdKey("HH1");
            CalcHouseholdDto dto          = cmhdf.MakeCalcModularHouseholdDto(sim, (ModularHousehold)hh,
                                                                              csps.TemperatureProfile, householdKey, csps.GeographicLocation,
                                                                              out _, csps.TransportationDeviceSet, csps.TravelRouteSet,
                                                                              csps.EnergyIntensity, csps.ChargingStationSet);
            var cmhf = scope.Resolve <CalcModularHouseholdFactory>();

            /*foreach (var v in dto.CalcVariables)
             *              {
             *                  variableRepository.RegisterVariable(new CalcVariable(v.Name, v.Guid, v.Value, v.LocationName, v.LocationGuid, v.HouseholdKey));
             *              }*/
            foreach (HouseholdKeyEntry entry in dto.GetHouseholdKeyEntries())
            {
                calcRepo.InputDataLogger.Save(Constants.GeneralHouseholdKey, entry);
            }

            calcRepo.InputDataLogger.Save(Constants.GeneralHouseholdKey, dto);
            RegisterAllDtoVariables(cvrdto, variableRepository);
            ICalcAbleObject ch = cmhf.MakeCalcModularHousehold(dto, out _, null, null, calcRepo);

            cot = CalcObjectType.ModularHousehold;
            return(ch);
        }
        private static ICalcAbleObject MakeCalcHouseObject([NotNull] Simulator sim,
                                                           [NotNull] CalcStartParameterSet csps, [NotNull] ICalcObject hh,
                                                           [NotNull] ILifetimeScope scope,
                                                           [NotNull] CalcVariableDtoFactory cvrdto, [NotNull] CalcVariableRepository variableRepository,
                                                           out CalcObjectType cot, [NotNull] CalcRepo calcRepo)
        {
            var house = (House)hh;

            calcRepo.FileFactoryAndTracker.RegisterHousehold(Constants.HouseKey, "House Infrastructure",
                                                             HouseholdKeyType.House, "House Infrastructure", house.Name, house.Description);
            var housedtoFac = scope.Resolve <CalcHouseDtoFactory>();
            var housedto    = housedtoFac.MakeHouseDto(sim, house, csps.TemperatureProfile,
                                                       csps.GeographicLocation, csps.EnergyIntensity);

            foreach (HouseholdKeyEntry entry in housedto.GetHouseholdKeyEntries())
            {
                calcRepo.InputDataLogger.Save(Constants.GeneralHouseholdKey, entry);
            }

            var convertedAutoDevList = housedto.AutoDevs.ConvertAll(x => (IHouseholdKey)x).ToList();

            if (calcRepo.CalcParameters.Options.Contains(CalcOption.HouseholdContents))
            {
                calcRepo.InputDataLogger.SaveList(convertedAutoDevList);
                calcRepo.InputDataLogger.Save(Constants.GeneralHouseholdKey, housedto);
            }

            var chf = scope.Resolve <CalcHouseFactory>();

            RegisterAllDtoVariables(cvrdto, variableRepository);
            ICalcAbleObject ch = chf.MakeCalcHouse(housedto, calcRepo);

            cot = CalcObjectType.House;
            return(ch);
        }
        private static DeviceSelection GetDeviceSelection([NotNull] CalcStartParameterSet csps, [NotNull] ICalcObject hh, [CanBeNull] ModularHousehold chh)
        {
// device selection
            DeviceSelection ds = null;

            if (csps.DeviceSelection != null)
            {
                ds = csps.DeviceSelection;
            }
            else
            {
                if (chh != null)
                {
                    ds = chh.DeviceSelection;
                }

                if (hh.CalcObjectType == CalcObjectType.House)
                {
                    var house = (House)hh;
                    foreach (var houseHousehold in house.Households)
                    {
                        var houseModularHousehold = houseHousehold.CalcObject as ModularHousehold;

                        if (houseModularHousehold?.DeviceSelection != null)
                        {
                            ds = houseModularHousehold.DeviceSelection;
                        }
                    }
                }
            }

            return(ds);
        }