def post_data(): json_s, errors = first_validate() lst_cit = json_s['citizens'] try: import_id = Import_id.query.all()[-1].last_id + 1 except: import_id = 1 last_id = Import_id(last_id=import_id) db.session.add(last_id) if errors: return errors, 400 try: db.create_all() relat_dict = dict() for cit in lst_cit: editors = list(cit) for line in editors: if line not in [ 'citizen_id', 'town', 'street', 'building', 'apartment', 'name', 'birth_date', 'gender', 'relatives' ]: return "Invalid keys in citizen\n", 404 citizen_id = cit['citizen_id'] town = cit['town'] street = cit['street'] building = cit['building'] apartment = cit['apartment'] name = cit['name'] birth_date = datetime.datetime.strptime(cit['birth_date'], '%d.%m.%Y').date() if datetime.datetime.now().date() < birth_date: return "Date of some person is too large\n", 400 gender = cit['gender'] if len(str(cit['relatives'])) > 2: relatives = list( map(int, str(cit['relatives'])[1:-1].split(','))) else: relatives = [] citizen = Citizen(citizen_id=citizen_id, town=town, street=street, building=building, apartment=apartment, name=name, birth_date=birth_date, gender=gender, relatives=relatives, import_id=import_id) db.session.add(citizen) relat_dict[citizen_id] = relatives if last_valid(lst_cit, import_id, relat_dict): return "Invalid arguments\n", 400 db.session.commit() return jsonify({"data": {"import_id": citizen.import_id}}), 201 except: return "Bad Request\n", 400
def search(self): step_size = np.array([ (self.bounds[i][1] - self.bounds[i][0]) * self.init_fac for i in range(Citizen.P_SIZE) ]) current = Citizen() self.evaluate(current) count = 0 gen = 0 while gen < self.max_gen: big_stepsize = self.large_step_size(gen, step_size) step, big_step = self.take_steps(current, step_size, big_stepsize) if step.get_error() <= current.get_error() or \ big_step.get_error() <= current.get_error(): if big_step.get_error() <= step.get_error(): step_size, current = big_stepsize, big_step else: current = step count = 0 else: count += 1 if count >= self.max_no_impr: count = 0 step_size = (step_size / self.s_factor) self.best = current self.error.append(current.get_error()) print("iteration:{}, error:{}".format(gen, current.get_error())) gen += 1
def de_rand_1_bin(self, p0, p1, p2, p3): cut = randint_bound(Citizen.P_SIZE) params = [0 for _ in range(Citizen.P_SIZE)] for i in range(4): if i == cut or rand() < self.cr: aux = p3[i] + self.wf * (p1[i] - p2[i]) aux = Citizen.BOUNDS[i][0] if ( aux < Citizen.BOUNDS[i][0]) else aux aux = Citizen.BOUNDS[i][1] if ( aux > Citizen.BOUNDS[i][1]) else aux params[i] = aux else: params[i] = p0[i] return Citizen(params)
def search(self): gen = 0 candidate = Citizen() self.evaluate(candidate) while gen < self.max_gen: neighbor = self.random_neighbor(candidate.get_values()) self.evaluate(neighbor) if neighbor.get_error() <= candidate.get_error(): candidate = neighbor self.best = candidate self.error.append(candidate.get_error()) print('iteration: {}, error: {}'.format(gen, candidate.get_error())) gen += 1
def import_data(): try: listOfCitizens = request.get_json() listOfCitizens = listOfCitizens["citizens"] import_id = generate_random_number() for citizen in listOfCitizens: citizen_id = citizen['citizen_id'] if citizen_id < 0: return "The citizen_id is not valid", 400 town = citizen['town'] flag = False for c in town: if c.isalpha() or c.isdigit(): flag = True if not flag or len(town) > 256 or len(town) == 0: return "The town string is not valid", 400 street = citizen['street'] flag = False for c in street: if c.isalpha() or c.isdigit(): flag = True if not flag or len(street) > 256 or len(street) == 0: return "The street string is not valid", 400 building = citizen['building'] flag = False for c in building: if c.isalpha() or c.isdigit(): flag = True if not flag or len(building) > 256 or len(building) == 0: return "The building string is not valid", 400 apartment = citizen['apartment'] if apartment < 0: return "The apartment is not valid", 400 name = citizen['name'] if len(name) > 256 or len(name) == 0: return "The name string is not valid", 400 birth_date = citizen['birth_date'] if check_date(birth_date) == 0: return "The date of birth is not valid", 400 gender = citizen['gender'] if gender != "male" or gender != "female": return "The gender string is not valid", 400 relatives = ' '.join([str(e) for e in citizen['relatives']]) citi = Citizen(import_id=import_id, citizen_id=citizen_id, town=town, street=street, building=building, apartment=apartment, name=name, birth_date=birth_date, gender=gender, relatives=relatives) db.session.add(citi) db.session.commit() if checkrelatives(listOfCitizens) == 0: ''' delete_this = Citizen.query.filter_by(import_id=import_id) for citi in delete_this: db.session.delete(citi) db.session.commit() ''' return "You have a trouble with relatives relationship", 400 return jsonify({"data": {"import_id": import_id}}), 201 except Exception as e: print("\n \t exception \n") print(str(e)) return "The input data is not correct", 400
def rebuild_database(): db.drop_all() db.create_all() household = Household( name='Barcelona-001', number_of_members='5', region='Region IV-A', province='Quezon', city='Lucena', barangay='Ilayang Iyam', address='12 Zamora St. Ciudad Maharlika, Ilayang Iyam, Lucena City', cluster='2011334281', contact='09159484200', status='Green', remarks='') household1 = Household(name='Barcelona-002', number_of_members=3, region='Region IV-A', province='Quezon', city='Lucena', barangay='Isabang', address='Barcelona Compound, Lucena City', cluster='2011334281', contact='09159484200', status='Green', remarks='') household2 = Household(name='Armamento-001', number_of_members=3, region='Region IV-A', province='Quezon', city='Lucena', barangay='Gulang Gulang', address='Capistrano Subdivision, Lucena City', cluster='2011334282', contact='09159484200', status='Green', remarks='') image = HouseholdImage( household_id=1, path='../static/images/households/test_household.jpg') image1 = HouseholdImage( household_id=2, path='../static/images/households/test_household1.jpg') image2 = HouseholdImage( household_id=3, path='../static/images/households/test_household2.jpg') citizen1 = Citizen(last_name='Barcelona', first_name='Jasper Oliver', middle_name='Estrada', gender='Male', age=23, birthday='June 11, 1994', employment_status='Employed', occupation='Chief Executive Officer', company='Pisara', email='*****@*****.**', citizenship='Filipino', religion='Roman Catholic', civil_status='Single', msisdn='09159484200', household_id=1, household_name='Barcelona-001', position='Child', status='Green', remarks='') citizen2 = Citizen(last_name='Barcelona', first_name='Flora', middle_name='Estrada', gender='Female', age=63, birthday='May 29, 1953', employment_status='Retired', occupation='Government Health Worker', company='City Health Office', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Widowed', msisdn='09159484200', household_id=1, household_name='Barcelona-001', position='Head', status='Green', remarks='') citizen3 = Citizen(last_name='Barcelona', first_name='Ma Angelica', middle_name='Estrada', gender='Female', age=29, birthday='December 18, 1988', employment_status='Employed', occupation='Web Content Developer', company='Intercontinental Hotels Group', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Single', msisdn='09159484200', household_id=1, household_name='Barcelona-001', position='Child', status='Green', remarks='') citizen4 = Citizen(last_name='Barcelona', first_name='Ma April Therese', middle_name='Estrada', gender='Female', age=34, birthday='April 26, 1986', employment_status='Employed', occupation='Technical Support', company='Direct with Hotels', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Single', msisdn='09159484200', household_id=1, household_name='Barcelona-001', position='Child', status='Green', remarks='') citizen5 = Citizen(last_name='Sacristia', first_name='Rolando', middle_name='Dela Cruz', gender='Male', age=46, birthday='Augyst 08, 1976', employment_status='Employed', occupation='House Helper', company='N/A', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Single', msisdn='09159484200', household_id=1, household_name='Barcelona-001', position='Resident', status='Green', remarks='') citizen6 = Citizen(last_name='Barcelona', first_name='Jadd Paolo Luigi', middle_name='Ong', gender='Male', age=29, birthday='April 14, 1986', employment_status='Employed', occupation='Chief Marketing Officer', company='Pisara', email='*****@*****.**', citizenship='Filipino', religion='Roman Catholic', civil_status='Married', msisdn='09159484200', household_id=2, household_name='Barcelona-002', position='Head', status='Green', remarks='') citizen7 = Citizen(last_name='Barcelona', first_name='Cyril Joy', middle_name='Lucero', gender='Female', age=23, birthday='April 25, 1986', employment_status='Employed', occupation='Dentist', company='Lucero Dental Clinic', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Married', msisdn='09159484200', household_id=2, household_name='Barcelona-002', position='Spouse', status='Green', remarks='') citizen8 = Citizen(last_name='Barcelona', first_name='Stephen Skylar', middle_name='Lucero', gender='Male', age=1, birthday='November 15, 2017', employment_status='Unemployed', occupation='N/A', company='N/A', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Single', msisdn='N/A', household_id=2, household_name='Barcelona-002', position='Spouse', status='Green', remarks='') citizen9 = Citizen(last_name='Armamento', first_name='Jan Paolo', middle_name='Calzado', gender='Male', age=23, birthday='January 23, 1994', employment_status='Employed', occupation='Chief Infrastructure Officer', company='Pisara', email='*****@*****.**', citizenship='Filipino', religion='Roman Catholic', civil_status='Married', msisdn='09159484200', household_id=3, household_name='Armamento-001', position='Head', status='Green', remarks='') citizen10 = Citizen(last_name='Armamento', first_name='Caithlin Lois', middle_name='Nicolas', gender='Female', age=23, birthday='January 23, 1994', employment_status='Unemployed', occupation='Student', company='MSEUF', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Married', msisdn='09159484200', household_id=3, household_name='Armamento-001', position='Spouse', status='Green', remarks='') citizen11 = Citizen(last_name='Armamento', first_name='Coco', middle_name='Nicolas', gender='Female', age=1, birthday='January 23, 1994', employment_status='Unemployed', occupation='N/A', company='N/A', email='N/A', citizenship='Filipino', religion='Roman Catholic', civil_status='Single', msisdn='N/A', household_id=3, household_name='Armamento-001', position='Child', status='Green', remarks='') admin_user = AdminUser(email='*****@*****.**', password='******', status='Active', name="Jasper Barcelona") db.session.add(household) db.session.add(household1) db.session.add(household2) db.session.add(citizen1) db.session.add(citizen2) db.session.add(citizen3) db.session.add(citizen4) db.session.add(citizen5) db.session.add(citizen6) db.session.add(citizen7) db.session.add(citizen8) db.session.add(citizen9) db.session.add(citizen10) db.session.add(citizen11) db.session.add(image) db.session.add(image1) db.session.add(image2) db.session.add(admin_user) db.session.commit() return jsonify(status='success'), 201
def generate_sample(self): sample = Citizen() for i in range(Citizen.P_SIZE): aux = rand_bound(self.means[i], self.stdevs[i]) sample.set_value(i, aux) return sample
def create_pop(self): return [Citizen() for _ in range(self.pop_size)]
def random_neighbor(self, params=[]): mutant = Citizen(params) pos = randint_bound(Citizen.P_SIZE) mutant.set_value(pos) return mutant
def main(): user_interface = UserInterface() name, sex, age, cpf = user_interface.read_citizen_data() new_citizen = Citizen(name, sex, age, cpf) user_interface.show_citizen_data(new_citizen)
def cross(self, p1, p2): v_p1 = p1.get_values() v_p2 = p2.get_values() cut_p = randint_bound(1, 3) v_child = v_p1[:cut_p] + v_p2[cut_p:] return Citizen(v_child)