Beispiel #1
0
 public void CalculateCO2EmissionCost(PowerplantModel powerplant, FuelsModel fuels)
 {
     if (powerplant.Type != Enums.PowerplantType.Windturbine)
     {
         powerplant.CO2CostEmission = Math.Round(powerplant.P * 0.3m * fuels.Co2, 2);
     }
 }
 private void UsePowerplant(PowerplantModel powerplant, FuelsModel fuels, ref int load, PowerplantModel nextTypePowerplant)
 {
     powerplant.P = GetPowerGenerated(powerplant, fuels, load, nextTypePowerplant);
     UpdateExpectedLoadRemaining(ref load, powerplant.P);
     runningCostService.CalculateCO2EmissionCost(powerplant, fuels);
     runningCostService.CalculateRunningCost(powerplant, fuels);
     powerplant.IsUsed = true;
 }
 private int GetPowerGenerated(PowerplantModel powerplant, FuelsModel fuels, int load, PowerplantModel nextTypePowerplant = null)
 {
     if (powerplant.Type == PowerplantType.Windturbine)
     {
         return(UseWindturbine(powerplant, fuels));
     }
     else
     {
         return(UseTurboJetAndGasFired(powerplant, load, nextTypePowerplant));
     }
 }
Beispiel #4
0
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            string carIDStr;

            NavigationContext.QueryString.TryGetValue("id", out carIDStr);
            this.carID = int.Parse(carIDStr);

            //load settings for units
            string distance, volume, average, currency;
            bool   avgmethod;

            IsolatedStorageSettings.ApplicationSettings.TryGetValue("distance", out distance);
            IsolatedStorageSettings.ApplicationSettings.TryGetValue("volume", out volume);
            IsolatedStorageSettings.ApplicationSettings.TryGetValue("average", out average);
            IsolatedStorageSettings.ApplicationSettings.TryGetValue("currency", out currency);
            IsolatedStorageSettings.ApplicationSettings.TryGetValue("avgmethod", out avgmethod);

            stMpgUnits.Text = distance.ToLower() + "/" + volume.ToLower();

            FuelsModel fm = new FuelsModel(this.carID);

            listBoxFuel.ItemsSource = fm.GetRecords();
            fuelOverallMpg.Text     = fm.OverallFuelConsumption().ToString("F2") + " " + distance.ToLower() + "/" + volume.ToLower();

            /*
             * tFuelCS.Text = fm.totalCost.ToString("F2");
             * tFCPD.Text = (fm.totalCost / fm.GetTotalTimeSpan().Days).ToString();
             * tAvgFuelCS.Text = (fm.totalCost/fm.totalFuel).ToString("F2");
             * tFCPM.Text = (fm.totalCost / fm.GetTotalTimeSpan().Days * 30).ToString();
             * tMilesPD.Text = (fm.totalMiles / fm.GetTotalTimeSpan().Days).ToString();
             * tMilesPM.Text = (fm.totalMiles / fm.GetTotalTimeSpan().Days * 30).ToString();
             */
            //tFuelCS.Text = fm.totalCost.ToString("F2");
            stMpg.Text    = fm.OverallFuelConsumption().ToString("F2");
            stCostpd.Text = currency + (fm.totalCost / fm.GetTotalTimeSpan().Days).ToString("F2") + " /day";
            stCostpm.Text = currency + (fm.totalCost / fm.GetTotalTimeSpan().Days * 30).ToString("F2") + " /month";
            stMilepd.Text = (fm.totalMiles / fm.GetTotalTimeSpan().Days).ToString("F2") + " " + distance + "/day";
            stMilepm.Text = (fm.totalMiles / fm.GetTotalTimeSpan().Days * 30).ToString("F2") + " " + distance + "/month";
            tFuelC.Text   = currency + (fm.totalCost).ToString("F2");

            MaintsModel mm = new MaintsModel(this.carID);

            listBoxMaint.ItemsSource = mm.GetRecords();
            tTotalCostMaint.Text     = currency + " " + mm.GetTotalCost().ToString();
            tMaintCS.Text            = currency + mm.GetTotalCost().ToString("F2");
            tMaintParts.Text         = "Parts: " + currency + " " + mm.TotalPartsCost.ToString("F2");
            tMaintLabor.Text         = "Labor: " + currency + " " + mm.TotalLaborCost.ToString("F2");

            CarsModel cm  = new CarsModel(this.carID);
            carInfo   car = cm.GetCar();

            tCarname.Text = car.CarModel;
        }
Beispiel #5
0
 public void CalculateRunningCost(PowerplantModel powerplant, FuelsModel fuels)
 {
     if (powerplant.Type != Enums.PowerplantType.Windturbine)
     {
         powerplant.RunningCost = Math.Round(powerplant.CO2CostEmission
                                             + (
                                                 (powerplant.P / powerplant.Efficiency)
                                                 * ((powerplant.Type == Enums.PowerplantType.Gasfired) ? fuels.Gas : fuels.Kerosine)
                                                 ), 2);
     }
 }
        private ProductionplanService MakeSut(IList <PowerplantModel> powerplants, FuelsModel fuels)
        {
            var mockRunningCostService = new Mock <IRunningCostService>();

            var mockMeritOrderService = new Mock <IMeritOrderService>();

            mockMeritOrderService
            .Setup(m => m.SetMeritOrder(powerplants, fuels))
            .ReturnsAsync(powerplants.OrderBy(p => p.MeritOrder).ToList());

            return(new ProductionplanService(mockMeritOrderService.Object, mockRunningCostService.Object));
        }
 private async Task <bool> IsWindy(FuelsModel fuels)
 {
     return(await Task.FromResult(fuels.Wind > 0));
 }
        public async Task <IList <PowerplantModel> > SetMeritOrder(IList <PowerplantModel> powerplants, FuelsModel fuels)
        {
            int priority = 1;

            if (await IsWindy(fuels))
            {
                Set(powerplants, PowerplantType.Windturbine, ref priority);
            }
            if (fuels.Gas < fuels.Kerosine)
            {
                Set(powerplants, PowerplantType.Gasfired, ref priority);
                Set(powerplants, PowerplantType.Turbojet, ref priority);
            }
            else
            {
                Set(powerplants, PowerplantType.Turbojet, ref priority);
                Set(powerplants, PowerplantType.Gasfired, ref priority);
            }

            return(powerplants.OrderBy(x => x.MeritOrder).ToList());
        }
 private int UseWindturbine(PowerplantModel powerplant, FuelsModel fuels)
 {
     return((int)Math.Round(powerplant.Efficiency * powerplant.Pmax * (fuels.Wind / 100)));
 }
        public async Task <IList <PowerplantModel> > CalculateUnitOfCommitment(IList <PowerplantModel> powerplants, int load, FuelsModel fuels)
        {
            var results = await meritOrderService.SetMeritOrder(powerplants, fuels);

            foreach (var r in results)
            {
                var nextTypePowerplant = results.Where(x => x.MeritOrder > r.MeritOrder && !r.IsUsed).FirstOrDefault();
                if (!r.IsUsed)
                {
                    UsePowerplant(r, fuels, ref load, nextTypePowerplant);
                }
                if (load == 0)
                {
                    break;
                }
            }

            return(results);
        }