Exemplo n.º 1
0
def main():
    # algorithm arguments init
    density = 3000
    dist = 0.02
    step = 0.005

    # evaluator arguments init
    total_capacity = 3000
    window_size = 3
    tmp_num = 2
    tmp_max_list = [90] * tmp_num
    method = "DP"

    # huff arguments init
    alpha = 1
    beta = 1
    ignore_prob = 0.01
    reachable_dist = 0.02
    huff = Huff(alpha, beta, reachable_dist, ignore_prob)

    # file name
    patient_filename = sys.argv[1]
    hospital_filename = sys.argv[2]

    # record variables
    result_pos = []
    start_time = time.time()


    hospital_list = HospitalList()
    hospital_list.read_file(hospital_filename)

    pat_list = PatientList()
    pat_list.read_file(patient_filename)


    pos_list = get_init_pos_list((pat_list.xmin, pat_list.xmax), (pat_list.ymin, pat_list.ymax), step)
    pos_list.set_range(pat_list.xmin, pat_list.xmax, pat_list.ymin, pat_list.ymax)
    pos_list = density_filter(pos_list, pat_list, density, dist)

    print("Num of Selectable Position: ", len(pos_list))

    for i in range(tmp_num):
        tmp_max = tmp_max_list[i]
        e = Evaluater(hospital_list, pat_list, total_capacity, window_size, [tmp_max], huff, method)
        pos, v = search_best_place(pos_list, e)
        pos_list.sort(key=lambda p: p.val, reverse=True)
        result_pos.append(pos)
        new_h = Hospital("Tmp-" + str(i), pos.x, pos.y, tmp_max)
        hospital_list.append(new_h)
        del e

    print "\nResult:"
    print v[0]
    print "\nPosition:"
    for i in range(len(result_pos)):
        print "%f, %f" % (result_pos[i].x, result_pos[i].y)
Exemplo n.º 2
0
def editarHospitalesGenerativo(individuo):
    # gerar um aleatório entre 0 e 3 para saber quantos hospitais serão criados
    randomGenerative = rand.randint(1, 3)
    city = individuo[0].city

    #gera os datos aleatorios de os novos hospitais
    for i in range(randomGenerative):
        x1 = rand.randint(0, city.width - 1)
        y1 = rand.randint(0, city.height - 1)
        range1 = rand.randint(0, 3)
        individuo.append(Hospital(x1, y1, range1, city))

    return individuo
Exemplo n.º 3
0
 def __init__(self, h_list, p_list, t_cap, w_size, t_max_list, huff,
              allocate_method):
     self.h_list = h_list
     self.p_list = p_list
     self.t_cap = t_cap
     self.w_size = w_size
     self.huff = huff
     self.allocate_method = allocate_method
     self.t_list = [
         Hospital("Tmp-" + str(i), -1, -1, t_max_list[i])
         for i in range(len(t_max_list))
     ]
     self.a_list = self.h_list + self.t_list
     self.a_mapping = {a: i for i, a in enumerate(self.a_list)}
     self.counter = 0
     pass
Exemplo n.º 4
0
    def __init__(self, comm_row, comm_column, populations, initial_infections, comm_size=500):
        # constants
        self.FPS = 60

        self.CONTAGIOUS_RADIUS = 15
        self.CONTAGIOUS_RATE = 1

        self.LEAST_INFECTED_TIME = 3

        self.CURE_RATE = 0.07
        self.CURE_RATE_PER_FRAME = 1 - pow(1 - self.CURE_RATE, 1/self.FPS)
        self.DEAD_RATE = 0.03
        self.DEAD_RATE_PER_FRAME = 1 - pow(1 - self.DEAD_RATE, 1/self.FPS)

        self.SCAN_PER_FRAME = 3
        # objects
        self.comm_row = comm_row
        self.comm_column = comm_column
        self.communities = [Community(self, size=comm_size, population=populations[i], initial_infection=initial_infections[i]) for i in range(comm_row*comm_column)]
        self.hospital = Hospital()
        # people variable
        self.people = []
        self.data = []
    doctor3 = Doctor('Dr.',
                        'Greta Koopmann',
                        ['general', 'orthopedist'],
                        '+49 169 05251 2222',
                        calendar.afternoon)

    doctor4 = Doctor('Dr.',
                        'Christian Gösling',
                        ['general', 'neurologist'],
                        '+49 169 05251 3333',
                        calendar.morning)

    doctor5 = Doctor('Dr.',
                        'Viktor Kratchnisky',
                        ['general', 'emergency_doc'],
                        '+49 169 05251 4444',
                        calendar.morning + calendar.afternoon)

    return [doctor1, doctor2, doctor3, doctor4, doctor5]

#Data for hospital 2
name = 'St_Johannes_Hospital'
free_rooms = 75
id = 'mel_hosp2'
coordinates = [51.51,7.45]  # Dortmund
doctors = create_doctors()

hospital = Hospital(name, free_rooms, id, coordinates, doctors)

hospital.loop()
Exemplo n.º 6
0
ORIGINAL_NUM = 50  #初始感染数量
BROAD_RATE = 0.7  #传播率
SHADOW_TIME = 24  #潜伏时间 最新数据潜伏期可长达24天
HOSPITAL_RECEIVE_TIME = 3  #医院收治响应时间
CURE_TIME = 14  #治疗时间
BED_NUM = 1000  #医院床位
SAFETY_DIST = 15  #安全距离
u = np.exp(-0.99)  #流动意向平均值 几乎不动
PERSON_NUM = 5000  #城市内人数

city = City(0, 0)
# def __init__(self,city,u,people_num,BROAD_RATE,SHADOW_TIME,HOSPITAL_RECEIVE_TIME,CURE_TIME,SAFETY_DIST):
pool = PeoplePool(city, u, PERSON_NUM, BROAD_RATE, SHADOW_TIME,
                  HOSPITAL_RECEIVE_TIME, CURE_TIME, SAFETY_DIST)

hospital = Hospital(BED_NUM)

# 随机选择初始感染者
for i in range(ORIGINAL_NUM):
    idx = np.random.randint(0, PERSON_NUM)
    pool.people[idx].status = 1
    pool.people[idx].infected_time = 0

color_person = ['white', 'yellow', 'red', 'black']  # 正常, 潜伏, 确诊感染, 住院
color_bed = ['red', 'black']  # 0 感染者入住 , 1空床位

fig = plt.figure(figsize=(20, 10))

plt.style.use('dark_background')
fig.patch.set_facecolor('black')
Exemplo n.º 7
0
from mathdojo import MathDojo
from hospital import Patient
from hospital import Hospital
from car import Car
from callcenter import Call
from callcenter import CallCenter
from bike import Bike
from animals import Animal
from animals import Dog
from animals import Dragon

md = MathDojo(0)
print md
hosp = Hospital("Great Hospital", 6)
print hosp
patient = Patient(1, "Bob")
print patient
car = Car(5000, "75mph", "Full", "25mpg")
print car
call = Call(1, "Stephen", "770-789-7038", 8.30, "For Fun")
print call
call_center = CallCenter()
print call_center
bike = Bike(150, "15mph")
print bike
fox = Animal("Fox")
print fox
pitbull = Dog("Pitbull")
print pitbull
trogdor = Dragon("Trogdor the Burninator")
print trogdor
Exemplo n.º 8
0
#from hospital import Hopistal, Medico
import tkinter

from hospital import Hospital
from medico import Medico
from tkinter import *
hosp = Hospital(nome='', tipo='', especialidade='', avaliacao='')
app = Tk(screenName='principal')

app.geometry('200x100+200+100')
bt_inserir = Button(app, text='Inserir', command=hosp.inserir)
bt_inserir.pack(side='right')
bt_mostrar = Button(app, text='Mostrar', command=hosp.mostrar)
bt_mostrar.pack(side='left')
app.mainloop()