Ejemplo n.º 1
0
def stochasticindex(request, schedule_id):
    duration = 0
    durationCDF = 0
    iterCount = int(request.GET.get('itercount', 1000))
    reportType = int(request.GET.get('type', 2))
    weather = Weather(schedule_id)
    durationList = []
    demoMode = settings.DEMO_MODE

    if reportType == 2:
        durationList = weather.CalcStochastic(iterCount,
                                              ReportType.WEATHER_AWARE)
    if reportType == 4:
        # This should be the weather aware point, even though it is unlikely to show
        _, duration, _ = CalcReverseReport(schedule_id)
        weather.schedule.StatusTypeId = 1
        durationList = weather.CalcStochastic(iterCount, ReportType.REVERSE,
                                              duration)

        # find the probability for the marked point
        itemCDF = [item for item in durationList if item[1] == duration]
        if len(itemCDF) > 0: durationCDF = itemCDF[0][0]

    template = loader.get_template('report/stochasticindex.html')
    context = {
        'durationList': durationList,
        'scheduleId': schedule_id,
        'startDate': weather.schedule.StartDate,
        'duration': duration,
        'durationCDF': durationCDF,
        'reportType': reportType,
        'demoMode': demoMode
    }

    return HttpResponse(template.render(context, request))
Ejemplo n.º 2
0
 def testReverseStochastic(self):
     weather = Weather(2)
     weather.schedule.StatusTypeId = 1
     durationList = weather.CalcStochastic(100,
                                           reportType=ReportType.REVERSE)
     averageDays = sum(days for probability, days in durationList) / 100
     assert 470.0 <= averageDays <= 490.0
Ejemplo n.º 3
0
 def testStochastic(self):
     weather = Weather(2)
     weather.schedule.StatusTypeId = 1
     durationList = weather.CalcStochastic(
         100, reportType=ReportType.WEATHER_AWARE)
     averageDays = sum(days for probability, days in durationList) / 100
     assert 550.0 <= averageDays <= 570.0
Ejemplo n.º 4
0
 def testStochasticStatusDate(self):
     weather = Weather(2)
     weather.schedule.StatusDate = datetime.date(2017, 4, 1)
     weather.schedule.StatusTypeId = 2
     durationList = weather.CalcStochastic(
         100, reportType=ReportType.WEATHER_AWARE)
     averageDays = sum(days for probability, days in durationList) / 100
     assert 510.0 <= averageDays <= 530.0