Skip to content
import numpy as np
from scipy.stats import binom
departures = [5,15,12,8,7,6,9,10,14,9,9,9,9,8,11,11,9,4,7,7,4,6,6,7,4,6,6,4,5,6,6]
print('Miðað við 95% öryggi að varavaktir dugi fyrir hvern dag')
sum = 0
for idx,dep in enumerate(departures):
    print(str(idx + 1) + '. janúar: brottfarir ' + str(dep) + ', varavaktir ' + str(binom.ppf(0.95, dep, 0.1432)))
    sum = sum + binom.ppf(0.95, dep, 0.1432)
print('Fyrir janúar í heild þarf ' + str(sum) + ' varavaktir')
print('Hlutfall varavakta af brottförum ' + str(sum / 239))
for i in np.arange(0,11):
    print(str(i) + ": " + str(binom.pmf(i, 10, 0.2)))

Vaktaplan fyrir varavaktir

def cost_function(n, k, absence_rate, c_shift, c_bought_day):
    return k * c_shift + expected_cost_bought_days(k, n, absence_rate, c_bought_day)

def expected_cost_bought_days(k, n, absence_rate, c_bought_day):
    cost = 0
    for i in np.arange(k + 1, n + 1):
        cost = cost + ((i - k) * binom.pmf(i, n, absence_rate) * c_bought_day)
    return cost

n = 10
absence_rate = 0.2
c_shift = 250000
c_bought_day = 500000
for k in np.arange(0,10):
    print(str(k) + ": " + str(cost_function(n, k, absence_rate, c_shift, c_bought_day)))
np.arange(0,10)
sum = 0
for i in np.arange(0,11):
    print(binom.pmf(i,10,0.1))
%%capture
!pip install gurobipy
import gurobipy as gp
from gurobipy import GRB
arr = []
for i in range(0,11):
    arr.append(cost_function(n, i, absence_rate, c_shift, c_bought_day))
print(arr)

#arr = [3,2,3,2,3,2,3,2,3,2,3,2,3,2,3]
def testfunc(k):
    
    return expected_cost_bought_days(k, n, absence_rate, c_bought_day)

try:

    # Create a new model
    m = gp.Model("mip1")

    # Create variables
    k_g = m.addVar(vtype=GRB.INTEGER, name="k_g")
    
    # Set objective
    #.setObjective(k_g * c_shift + binom.pmf(3,10,0.1), GRB.MINIMIZE)
    m.setObjective(k_g * c_shift + testfunc(k_g), GRB.MINIMIZE)
    
    # Add constraint: x + 2 y + 3 z <= 4
    
    # Add constraint: x + y >= 1
    m.addConstr(k_g >= 0, "c0")
    m.addConstr(k_g <= n, "c1")

    # Optimize model
    m.optimize()

    for v in m.getVars():
        print('%s %g' % (v.VarName, v.X))

    print('Obj: %g' % m.ObjVal)

except gp.GurobiError as e:
    print('Error code ' + str(e.errno) + ': ' + str(e))

except AttributeError:
    print('Encountered an attribute error')
    

Vísitala fasteignaverðs og meginvextir SÍ

import pandas as pd
mv = pd.read_csv('Meginvextir(1).csv', delimiter=';')
mv['Dagsetning'] = pd.to_datetime(mv['Dagsetning'], format='%d.%m.%Y')
mv.head()