-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.py
282 lines (254 loc) · 9.84 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
# create faculty and RA class
# create converter that will turn form into FA or RA object
# create algo that create a score for matching (adds and subrtacts from 0 to 100)
#
# project timeline, department, skills required, hours per week*, stage - project
# availability, interest, skills,degree - ra
# if available +20(range based on how available), if 0 -100,[for now yes or no]
# if all ra has all skills required +30(range),
# if RA degree matches project department +30,
# if ra interest match faculty interest (20+)
from typing import List
# FIELD SPECIFIC INTERESTS
Bio_interests = ['Zoology', 'Ecology', 'Forensics', 'Pharmaceuticals']
Psych_interests = ['Child psychology', 'Neurology']
Comp_interests = [
"Algorithms and Data Structures",
"Artificial Intelligence (AI)",
"Machine Learning",
"Computer Graphics",
"Human-Computer Interaction (HCI)",
"Databases",
"Software Engineering",
"Computer Networks",
"Cybersecurity",
"Computer Vision",
"Natural Language Processing (NLP)",
"Operating Systems",
"Parallel and Distributed Computing",
"Quantum Computing",
"Robotics",
"Theoretical Computer Science",
"Bioinformatics",
"Computer Ethics",
"Mobile Computing",
"Data Science",
"Embedded Systems",
"Web Development",
"Game Development",
"Network Security",
"Information Retrieval",
"Compiler Design",
"High-Performance Computing",
"Cloud Computing",
"Augmented Reality (AR) and Virtual Reality (VR)",
"Internet of Things (IoT)",
"Biometric Systems",
"Computational Linguistics",
"Geographic Information Systems (GIS)",
"Enterprise Systems",
"Computer-Aided Design (CAD)",
"Evolutionary Computation",
"Computer Forensics",
"Quantum Information Science",
"Usability Engineering",
"Computational Biology",
"Educational Technology",
"Blockchain Technology",
"Humanoid Robotics",
"Medical Imaging",
"Cryptography",
"Natural Computing",
"Big Data Analytics",
"Geometric Modeling",
"Network Programming",
"Semantic Web",
"Internet Security",
"Fuzzy Systems",
"Autonomous Systems",
"Swarm Intelligence",
"Pervasive Computing",
"Speech Processing",
"Information Theory",
"Simulation and Modeling",
"Bio-inspired Computing",
"Knowledge Representation and Reasoning",
"Recommender Systems",
"Wireless Sensor Networks",
"Parallel Processing",
"Social Network Analysis",
"Evolutionary Algorithms",
"Human-Robot Interaction",
"Computational Sustainability",
"Internet Programming",
"Digital Signal Processing",
"Graph Theory",
"Natural User Interfaces (NUI)",
"Embedded Web Systems",
"Biomedical Informatics",
"Internet of Everything (IoE)",
"Exascale Computing",
"Computational Complexity Theory",
"Quantum Machine Learning",
"Neuroinformatics",
"Human-Centered Computing",
"Ubiquitous Computing",
"Computer-Assisted Surgery",
"Information Visualization",
"Computational Geometry",
"Spatial Databases",
"Robotic Process Automation (RPA)",
]
BA_interests = [
"Marketing",
"Finance",
"Human Resource Management",
"Operations Management",
"Strategic Management",
"Entrepreneurship",
"International Business",
"Supply Chain Management",
"Information Systems Management",
"Project Management",
"Business Analytics",
"Economics",
"Organizational Behavior",
"Business Law",
"Management Information Systems",
"Corporate Social Responsibility (CSR)",
"Business Ethics",
"Leadership",
"Public Administration",
"Risk Management",
"Healthcare Administration",
"Public Relations",
"Retail Management",
"Hospitality Management",
"Real Estate Management",
"Management Consulting",
"Business Intelligence",
"Taxation",
"Accounting",
"E-commerce",
"Corporate Finance",
"Change Management",
"Nonprofit Management",
"Business Process Management",
"Customer Relationship Management (CRM)",
"Management Science",
"Business Communication",
"Information Technology Management",
"Supply Chain Analytics",
"Social Media Management",
"Small Business Management",
"Sustainability Management",
"Corporate Governance",
"Quality Management",
"Strategic Planning",
"Financial Planning",
"Knowledge Management",
"Business Development",
"Data Science for Business",
"Digital Marketing",
"Sports Management",
"Financial Risk Management",
"Environmental Management",
"Family Business Management",
"Crisis Management",
"Retail Analytics",
"Business Law and Ethics",
"Strategic Human Resource Management",
"Business Education",
"Business Negotiation",
"Green Business",
"Tourism Management",
"Innovation Management",
"Business Process Reengineering",
"Global Business",
"Legal Management",
"Brand Management",
"Conflict Resolution",
"International Economics",
"Consumer Behavior",
"Marketing Research",
"Financial Markets",
"Business Simulation",
"Operations Research",
]
interests = [Bio_interests, Psych_interests, Comp_interests, BA_interests]
departments = ["CompScience", "BusinessAdmin"]
# assume that each interest can lead to a degree
# dep_deg = {departments[1]: Comp_interests, departments[2]: BA_interests}
degrees = [1, 2, 3, 4, 5, 6, 7, 8]
education_level = ["bachelors", "masters", "phd", "Associates"]
certificates = []
# when the form is submitted we add the object to the database
# from the database we take all RAs and create Faculty_A objects for them for the algo (necessary?) do same for projects
# calculate and return score,
# post list of top 3 RAs for a project to
class Project:
def __init__(self, start_date, end_date, department, skills_R, weekly_H, stage, milestones):
# Instance variables
self.start_date = start_date
self.end_date = end_date
self.department = department
self.skills_R = skills_R
self.weekly_H = weekly_H
self.reseaerch_stage = stage
self.milestones = milestones # Will be a list of lists where the inner lists are the tasks under each milestone
def update_milestone(self):
pass
class Research_Assistant:
def __init__(self, name, availability, interest, skills, degree):
# Instance variables
self.name = name
self.interest = interest
self.availability = availability
self.skills = skills
self.degree = degree
class Faculty:
def __init__(self, name, interest, degree):
# Instance variables
self.name = name
self.interest = interest
self.degree = degree
def Gr8match(project: Project, assistants: List[Research_Assistant], faculty: Faculty):
scores = {}
for assistant in assistants:
score = 0
skill_score = 30 / len(project.skills_R)
interest_score = 20 / len(faculty.interest)
if not assistant.availability:
score -= 100
else:
score += 30
for skill in project.skills_R:
if skill in assistant.skills:
score += skill_score
else:
score -= skill_score
if assistant.degree == project.department:
score += 30
for interest in faculty.interest:
if interest in assistant.interest:
score += interest_score
scores[assistant.name] = score
#This is new
print(scores)
Alan_interests = ["Algorithms and Data Structures", "Artificial Intelligence (AI)", "Machine Learning", "Computer Graphics", "Human-Computer Interaction (HCI)", "Databases","Software Engineering", "Computer Networks"]
# RA dummy users
Alan = Research_Assistant('Alan', 'Yes', ["Algorithms and Data Structures", "Artificial Intelligence (AI)"], ["copywriting", "project management"], "Computer Science")
Beatrice = Research_Assistant('Beatrice', 'Yes', ["Marketing","Finance","Human Resource Management"], ["copywriting", "project management"], "Computer Science")
Nana = Research_Assistant('Nana', 'No', ["Computational Geometry","Spatial Databases","Robotic Process Automation (RPA)"], ["copywriting", "project management"], "Computer Science")
Miriam = Research_Assistant('Miriam', 'No', ["Algorithms and Data Structures","Computational Geometry","Spatial Databases","Robotic Process Automation (RPA)"], ["copywriting", "project management"], "Computer Science")
Richard = Research_Assistant('Richard', 'Yes', ["Computer-Aided Design (CAD)","Evolutionary Computation","Computer Forensics"], ["copywriting", "project management"], "Computer Science")
Derrick = Research_Assistant('Derrick', 'Yes', ["Artificial Intelligence (AI)"], ["copywriting", "project management"], "Computer Science")
Adwoa = Research_Assistant('Adwoa', 'Yes', ["Algorithms and Data Structures", "Artificial Intelligence (AI)"], ["copywriting", "project management"], "Computer Science")
Alicia = Research_Assistant('Alicia', 'Yes', ["International Business","Supply Chain Management","Information Systems Management","Project Management"], ["copywriting", "project management"], "Computer Science")
Janice = Research_Assistant('Janice', 'No', ["Algorithms and Data Structures", "Artificial Intelligence (AI)"], ["copywriting", "project management"], "Computer Science")
RAs = [Alan, Beatrice, Nana, Miriam, Richard, Derrick, Adwoa, Alicia, Janice]
# Faculty dummy users
Jack = Faculty("Jack", ["Algorithms and Data Structures", "Artificial Intelligence (AI)", "Finance", "Computer-Aided Design (CAD)"], "Computer Science")
# Dummy projects
Project1 = Project("12-01-2024", "17-07-2024", "Computer Science", ["copywriting", "Python", "project management", "technical writing"], 30, "Data collection", ["milestone 1", "milestone 2", "milestone 3"])
Gr8match(Project1, RAs, Jack)