diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml new file mode 100644 index 0000000..956f701 --- /dev/null +++ b/.github/workflows/cicd.yml @@ -0,0 +1,31 @@ +name: Python CI/CD + +on: + push: + branches: + - stage + pull_request: + branches: + - main + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run tests + run: | + pytest diff --git a/.gitignore b/.gitignore index 82f9275..befb2eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,10 @@ +# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,visualstudio +# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,python,visualstudio + +### Python ### # Byte-compiled / optimized / DLL files __pycache__/ +.vscode/ *.py[cod] *$py.class @@ -106,10 +111,8 @@ ipython_config.py #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. -# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +# https://pdm.fming.dev/#use-with-ide .pdm.toml -.pdm-python -.pdm-build/ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ @@ -160,3 +163,429 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### VisualStudio ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions +.vscode/launch.json +.vscode/ + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +*.code-workspace + +# Local History for Visual Studio Code + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml + +### VisualStudio Patch ### +# Additional files built by Visual Studio + +# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,visualstudio \ No newline at end of file diff --git a/Genetic/PreferencesGenetic.py b/Genetic/PreferencesGenetic.py new file mode 100644 index 0000000..afc91ec --- /dev/null +++ b/Genetic/PreferencesGenetic.py @@ -0,0 +1,197 @@ +import random +import statistics +import heapq +from typing import List, Tuple +from utils.student import Student + +def initialize_groups(students: List[Student], num_groups: int) -> List[List[Student]]: + """ + הערה מקורית: יוצר קבוצות התחלתיות + מה הוספנו? לא ביצענו באופן אקראי לחלוטין, אנחנו מתאימים תלמידים לפי התאמות אישיות + """ + # ניצור את הקבוצות ריקות + groups = [[] for _ in range(num_groups)] + # נשמור תלמידים שהכנסנו לקבוצה + assigned_students = set() + + # נחשב את הגודל המקסימלי של כל קבוצה + max_group_size = len(students) // num_groups + (1 if len(students) % num_groups != 0 else 0) + + random.shuffle(students) + # נרוץ על כל תלמיד, ננסה להכניס אותו לקבוצה רק אם יש לו את אחת מהעדפות שלו בקבוצה + # ואם הקבוצה לא עברה את הגודל המקסימלי + for student in students: + for group in groups: + if len(group) < max_group_size and any(preference in [s.id for s in group] for preference in student.preferences): + group.append(student) + assigned_students.add(student.id) + break + + # אם התלמיד לא הוכנס לאף קבוצה, נכניס אותו לקבוצה הכי קטנה (אם היא לא מלאה) + if student.id not in assigned_students: + smallest_group = min(groups, key=len) + if len(smallest_group) < max_group_size: + smallest_group.append(student) + assigned_students.add(student.id) + + # נרוץ על התלמידים שעוד לא הוכנסו לקבוצות, כל אחד מהם בתורו נכניס לקבוצה הקטנה ביותר (אם היא לא מלאה) + remaining_students = [student for student in students if student.id not in assigned_students] + for student in remaining_students: + for group in groups: + if len(group) < max_group_size: + group.append(student) + break + + return groups + +def calculate_diversity(groups: List[List[Student]]) -> float: + """ + הערה מקורית: פונקציית חישוב הגיוון של תוצאה + מה הוספנו? על כל תלמיד שבקבוצה עם לפחות אחת מהעדפות שלו הוספנו נקודה לתוצאה + """ + group_diversities = [] + preference_score = 0 + + for group in groups: + scores = [student.get_score() for student in group] + if len(scores) > 1: # סטיית תקן מוגדרת רק עבור יותר מנתון אחד + diversity = statistics.stdev(scores) + else: + diversity = 0 # אין גיוון בקבוצה עם תלמיד אחד + group_diversities.append(diversity) + + # נרוץ על כל התלמידים בקבוצה, נבדוק אם הוא עם לפחות העדפה אחת שלו. אם כן, נוסיף נקודה לציון + for student in group: + if any(preference in [s.id for s in group] for preference in student.preferences): + preference_score += 1 + + # ממוצע הגיוון בקבוצות + mean_diversity = sum(group_diversities) / len(group_diversities) + + # שונות בין הגיוונים בקבוצות (עונש על חוסר אחידות) + diversity_variance = statistics.stdev(group_diversities) if len(group_diversities) > 1 else 0 + + # ניקוד כולל: ממוצע הגיוון - שונות בין הקבוצות ונוסיף את ניקוד על ההתאמה האישית (אנחנו רוצים שונות נמוכה) + total_score = mean_diversity + preference_score - diversity_variance + return total_score + +def generate_initial_population(students: List[Student], num_groups: int, population_size: int) -> List[List[List[Student]]]: + """ + יוצרת אוכלוסייה ראשונית של פתרונות. + כל פתרון הוא חלוקה של התלמידים לקבוצות. + """ + population = [] # רשימת פתרונות + for _ in range(population_size): + groups = initialize_groups(students, num_groups) # חלוקה אקראית + population.append(groups) + return population + +def calculate_population_fitness(population: List[List[List[Student]]]) -> List[float]: + """ + מחשבת את הכושר עבור כל פתרון באוכלוסייה. + """ + fitness_scores = [] + for groups in population: + fitness = calculate_diversity(groups) # חישוב הגיוון + fitness_scores.append(fitness) + return fitness_scores + +def selection(population: List[List[List[Student]]], fitness_scores: List[float]) -> Tuple[Student, Student]: + """ + מחזיר את שני ההורים עם הניקוד הגבוה ביותר + """ + if len(fitness_scores) >= 2: + largest_scores = heapq.nlargest(2, fitness_scores) + elif len(fitness_scores) == 1: + return population[0] + else: + return None + + parent1 = population[fitness_scores.index(largest_scores[0])] + parent2 = population[fitness_scores.index(largest_scores[1])] + return parent1, parent2 + +def crossover(parent1: List[List[Student]], parent2: List[List[Student]]) -> List[List[Student]]: + """ + מבצע הכלאה בין שני הורים ליצירת ילד חדש, תוך הבטחת חלוקה מלאה של כל התלמידים. + """ + all_students = {student.id: student for group in parent1 + parent2 for student in group} + + # חלוקה ראשונית מהורה 1 + child = [group[:] for group in parent1] + + # שמירה על התלמידים שכבר הוקצו + assigned_students = {student.id for group in child for student in group} + + # הוספת תלמידים חסרים מהורה 2 + for group in parent2: + for student in group: + if student.id not in assigned_students: + smallest_group = min(child, key=len) + smallest_group.append(student) + assigned_students.add(student.id) + + # בדיקה אם כל התלמידים מוקצים + remaining_students = list(all_students.keys() - assigned_students) + for student_id in remaining_students: + smallest_group = min(child, key=len) + smallest_group.append(all_students[student_id]) + + return child + +def mutate(groups: List[List[Student]], mutation_rate: float) -> List[List[Student]]: + """ + מבצע מוטציה על פתרון עם סיכוי מסוים, תוך הבטחת חלוקה מלאה של כל התלמידים. + """ + if random.random() < mutation_rate: + group1, group2 = random.sample(range(len(groups)), 2) + if groups[group1] and groups[group2]: + # בחירת תלמידים להחלפה + student1 = random.choice(groups[group1]) + student2 = random.choice(groups[group2]) + + # החלפה + groups[group1].remove(student1) + groups[group2].remove(student2) + groups[group1].append(student2) + groups[group2].append(student1) + return groups + +def update_population(population: List[List[List[Student]]], fitness_scores: List[float], child: List[List[Student]]) -> None: + """ + מעדכן את האוכלוסייה על ידי החלפת הפתרון הגרוע ביותר בילד החדש (אם הילד טוב יותר). + """ + # חישוב הכושר של הילד + child_fitness = calculate_diversity(child) + + # מציאת הפתרון הגרוע ביותר + worst_index = fitness_scores.index(min(fitness_scores)) + + # החלפת הפתרון הגרוע בילד אם הוא טוב יותר + if child_fitness > fitness_scores[worst_index]: + population[worst_index] = child + fitness_scores[worst_index] = child_fitness + +def genetic_algorithm_with_preferences(students: List[Student], num_groups: int, population_size: int, generations: int, mutation_rate: float): + # יצירת אוכלוסייה ראשונית + population = generate_initial_population(students, num_groups, population_size) + fitness_scores = calculate_population_fitness(population) + + for generation in range(generations): + # בחירת הורים + parent1, parent2 = selection(population, fitness_scores) + + # יצירת ילד חדש + child = crossover(parent1, parent2) + mutated_child = mutate(child, mutation_rate) + + # עדכון האוכלוסייה + update_population(population, fitness_scores, mutated_child) + + # הדפסת מידע על הדור + #best_fitness = max(fitness_scores) + #print(f"Generation {generation + 1}, Best Fitness: {best_fitness}") + + # מחזירים את הפתרון הטוב ביותר + best_index = fitness_scores.index(max(fitness_scores)) + return population[best_index] diff --git a/Genetic/StandardGenetic.py b/Genetic/StandardGenetic.py new file mode 100644 index 0000000..13b4d5b --- /dev/null +++ b/Genetic/StandardGenetic.py @@ -0,0 +1,160 @@ +import random +import statistics +import heapq +from typing import List, Tuple +from utils.student import Student + +def initialize_groups(students: List[Student], num_groups: int) -> List[List[Student]]: + """ + יוצר קבוצות התחלתיות + """ + random.shuffle(students) + groups = [[] for _ in range(num_groups)] + for i, student in enumerate(students): + groups[i % num_groups].append(student) + return groups + +def calculate_diversity(groups: List[List[Student]]) -> float: + """ + פונקציית חישוב הגיוון של תוצאה + """ + group_diversities = [] + + for group in groups: + scores = [student.get_score() for student in group] + if len(scores) > 1: # סטיית תקן מוגדרת רק עבור יותר מנתון אחד + diversity = statistics.stdev(scores) + else: + diversity = 0 # אין גיוון בקבוצה עם תלמיד אחד + group_diversities.append(diversity) + + # ממוצע הגיוון בקבוצות + mean_diversity = sum(group_diversities) / len(group_diversities) + + # שונות בין הגיוונים בקבוצות (עונש על חוסר אחידות) + diversity_variance = statistics.stdev(group_diversities) if len(group_diversities) > 1 else 0 + + # ניקוד כולל: ממוצע הגיוון - שונות בין הקבוצות (אנחנו רוצים שונות נמוכה) + total_score = mean_diversity - diversity_variance + return total_score + +def generate_initial_population(students: List[Student], num_groups: int, population_size: int) -> List[List[List[Student]]]: + """ + יוצרת אוכלוסייה ראשונית של פתרונות. + כל פתרון הוא חלוקה של התלמידים לקבוצות. + """ + population = [] # רשימת פתרונות + for _ in range(population_size): + groups = initialize_groups(students, num_groups) # חלוקה אקראית + population.append(groups) + return population + +def calculate_population_fitness(population: List[List[List[Student]]]) -> List[float]: + """ + מחשבת את הכושר עבור כל פתרון באוכלוסייה. + """ + fitness_scores = [] + for groups in population: + fitness = calculate_diversity(groups) # חישוב הגיוון + fitness_scores.append(fitness) + return fitness_scores + +def selection(population: List[List[List[Student]]], fitness_scores: List[float]) -> Tuple[Student, Student]: + """ + מחזיר את שני ההורים עם הניקוד הגבוה ביותר + """ + if len(fitness_scores) >= 2: + largest_scores = heapq.nlargest(2, fitness_scores) + elif len(fitness_scores) == 1: + return population[0] + else: + return None + + parent1 = population[fitness_scores.index(largest_scores[0])] + parent2 = population[fitness_scores.index(largest_scores[1])] + return parent1, parent2 + +def crossover(parent1: List[List[Student]], parent2: List[List[Student]]) -> List[List[Student]]: + """ + מבצע הכלאה בין שני הורים ליצירת ילד חדש, תוך הבטחת חלוקה מלאה של כל התלמידים. + """ + all_students = {student.id: student for group in parent1 + parent2 for student in group} + + # חלוקה ראשונית מהורה 1 + child = [group[:] for group in parent1] + + # שמירה על התלמידים שכבר הוקצו + assigned_students = {student.id for group in child for student in group} + + # הוספת תלמידים חסרים מהורה 2 + for group in parent2: + for student in group: + if student.id not in assigned_students: + smallest_group = min(child, key=len) + smallest_group.append(student) + assigned_students.add(student.id) + + # בדיקה אם כל התלמידים מוקצים + remaining_students = list(all_students.keys() - assigned_students) + for student_id in remaining_students: + smallest_group = min(child, key=len) + smallest_group.append(all_students[student_id]) + + return child + +def mutate(groups: List[List[Student]], mutation_rate: float) -> List[List[Student]]: + """ + מבצע מוטציה על פתרון עם סיכוי מסוים, תוך הבטחת חלוקה מלאה של כל התלמידים. + """ + if random.random() < mutation_rate: + group1, group2 = random.sample(range(len(groups)), 2) + if groups[group1] and groups[group2]: + # בחירת תלמידים להחלפה + student1 = random.choice(groups[group1]) + student2 = random.choice(groups[group2]) + + # החלפה + groups[group1].remove(student1) + groups[group2].remove(student2) + groups[group1].append(student2) + groups[group2].append(student1) + return groups + +def update_population(population: List[List[List[Student]]], fitness_scores: List[float], child: List[List[Student]]) -> None: + """ + מעדכן את האוכלוסייה על ידי החלפת הפתרון הגרוע ביותר בילד החדש (אם הילד טוב יותר). + """ + # חישוב הכושר של הילד + child_fitness = calculate_diversity(child) + + # מציאת הפתרון הגרוע ביותר + worst_index = fitness_scores.index(min(fitness_scores)) + + # החלפת הפתרון הגרוע בילד אם הוא טוב יותר + if child_fitness > fitness_scores[worst_index]: + population[worst_index] = child + fitness_scores[worst_index] = child_fitness + +def genetic_algorithm(students: List[Student], num_groups: int, population_size: int, generations: int, mutation_rate: float): + # יצירת אוכלוסייה ראשונית + population = generate_initial_population(students, num_groups, population_size) + fitness_scores = calculate_population_fitness(population) + + for generation in range(generations): + # בחירת הורים + parent1, parent2 = selection(population, fitness_scores) + + # יצירת ילד חדש + child = crossover(parent1, parent2) + mutated_child = mutate(child, mutation_rate) + + # עדכון האוכלוסייה + update_population(population, fitness_scores, mutated_child) + + # הדפסת מידע על הדור + best_fitness = max(fitness_scores) + print(f"Generation {generation + 1}, Best Fitness: {best_fitness}") + + # מחזירים את הפתרון הטוב ביותר + best_index = fitness_scores.index(max(fitness_scores)) + return population[best_index] diff --git a/experiments/generations_experiment.csv b/experiments/generations_experiment.csv new file mode 100644 index 0000000..0b035b5 --- /dev/null +++ b/experiments/generations_experiment.csv @@ -0,0 +1,51 @@ +Generations,Run_1,Run_2,Run_3,Run_4,Run_5,Run_6,Run_7,Run_8,Run_9,Run_10 +10,199.45726234932891,207.53553970521716,196.62050500210543,198.8672744587659,197.5566879772905,205.1770683137893,200.02014472259606,204.7872875859621,202.0472677152132,195.1376940363578 +20,201.43013167660587,198.34246906560347,199.02185083281344,199.610213226942,201.4847678296463,202.3772513161442,194.25466839827885,191.6529999462586,196.46869228488072,201.37057217753568 +30,200.42217248858992,198.27749468102544,203.94292693483183,198.92143171980337,202.97547636716672,197.49985884935165,198.22437905009537,202.14409624330946,199.3491176902934,203.13403441352926 +40,197.7520590273902,201.20516558206882,199.13999320394748,197.66743429259344,199.34529913719643,193.94582430452658,205.73102913462253,203.29249994922336,198.80282641073364,193.59392154936336 +50,197.2903465709864,193.11899162199435,199.16330796482748,199.67724964201713,197.72375380271316,198.27693143669705,199.7963187377246,200.7708425212346,193.81199533354234,198.9657164710511 +60,203.308519211876,194.92054904768864,202.3845112714801,198.43632295962692,196.98457651637628,195.09037970251123,193.7685670123829,191.78927709453535,200.9116233488277,198.52346989622913 +70,196.58215131475075,196.55559623519622,206.72257115328577,199.52092658493262,193.8483181597684,197.5088348072118,199.67835009181553,202.62719026238506,203.21172464975695,200.474249520105 +80,193.39230419075898,199.94748895351862,190.13748729636507,197.92696355739994,198.2158812974375,202.51746818657313,204.86732706288495,198.57677768035774,194.08330036591423,203.72053941343063 +90,195.79418781115814,198.5676828604407,198.88810489141503,205.66367594536044,199.69628416192074,197.09640451408964,194.92607439236988,206.05615099662157,199.96622872535391,202.52857381315638 +100,197.90865488290922,197.9559070159903,195.26721028683218,198.64348340181235,199.5087528296514,195.04201992916305,198.49551548015225,196.6995110978913,204.94380242071907,198.09586444897684 +110,196.90861104861915,197.72111765606633,203.8654152787751,194.7466205937938,204.51101785413627,197.02473177393753,198.07935916468674,196.65989400191953,199.71096580523505,196.10452802093863 +120,197.72143026434668,200.74982836286543,198.27481484810735,202.25740686084157,200.74056913715253,198.02228749067422,197.35068724396206,199.78332567622448,200.3680894287462,198.45180412049078 +130,198.56094782849192,196.35846067908926,200.60329228625432,206.86094110339113,193.00550720762337,196.2184641613383,196.48607971182895,197.5783338619221,199.32293621383337,196.57997647497226 +140,199.13337307356664,203.1593291625809,194.6565761475192,200.7275512802784,199.11907325940092,197.90117052855328,200.83493971031263,198.27047326745534,197.21883890716092,202.6724381485215 +150,203.54066482374185,200.11770039507758,196.54333880400787,199.71363172855632,197.60260917012272,205.922341530356,207.82289188217422,197.82888502918848,202.68966042529019,197.3729239956089 +160,194.01756493492437,197.61550037011565,200.43081738175542,198.10485427160685,198.33393523553423,200.04408737169135,194.93276188641408,202.7254488307763,202.55576426075186,206.2286859124599 +170,198.2363164207736,194.5007187946335,199.73860534751194,199.29047178555552,204.2529275414991,197.67272832860743,201.64245042804038,198.51322072781593,207.06354591124585,201.64692950473048 +180,203.58337675354525,196.826114238669,205.56880193969928,201.94294079765547,195.43326206351537,200.04744406670932,200.2195238599519,200.672228741287,200.08214102266925,194.41238628235496 +190,202.37334387219545,204.09622704627463,202.8699872293448,199.02892921549198,201.9829445408329,200.78065080447706,197.36703004354882,197.53982893288318,201.2013575735212,199.7298988265726 +200,206.3769293477012,203.16507370309247,204.07999961638774,192.2969632629883,195.97536564358336,199.98239369187877,199.65085469416263,195.05126003153669,200.74255752481602,195.5445226053487 +210,201.82604124976132,198.80375606842964,195.0828469510503,195.5145506569977,191.2138327726497,197.7135146744443,199.16135753830181,199.6270423326316,196.95888123897203,197.94113671565353 +220,204.35714308854148,195.44350678623604,208.61854664546502,200.54151981123792,200.4263601805431,196.35589141679387,206.28212670362464,197.49499399678945,198.98444261097063,206.67743790166395 +230,204.642899224623,202.29652674511664,201.76730720613196,196.4086587140929,199.97171318754124,197.55598148854074,205.1449437604499,198.4822722534468,202.80295389696502,210.5596991409681 +240,202.5024175416641,196.67757868238985,198.8784242234981,202.8884329151379,201.63485724343104,199.66742046124662,205.07262399656918,200.76393792898102,202.10162864163493,194.79965010340766 +250,202.37576373631532,198.66818192804408,199.13491344815367,196.16673415810976,196.63681800123717,198.36342095404203,197.86653671968241,195.84625352190068,200.24348647437978,197.65234327846645 +260,199.3791927865348,202.15256365319064,196.24676605391468,201.31447148131068,197.93828982133857,203.17328636395553,200.54516396245904,202.7303046020452,193.24584569983355,200.27669479374515 +270,193.06717075234965,202.13375947259442,203.7332100001791,196.01738498803897,194.18277262418246,201.68826929773638,205.74690676556574,199.37335424809734,195.56136069518666,199.50250973297884 +280,203.19782822492465,201.50423413778591,199.93234755379288,204.04177276143346,211.52468310707386,195.24532707608603,196.20656216163178,196.89469988266774,195.4801474990388,204.78297226013802 +290,197.33542305904655,198.8824813316677,195.9473746863351,201.03232970701612,203.334850786082,196.9038833382799,198.8524158474293,202.41311887688218,200.99864034169232,197.1590774607918 +300,199.20857591928882,202.1564448048634,203.71287835808565,197.26885221333075,201.86539002842235,202.67516119076225,200.89699536579633,193.81585614751717,198.80703770048876,206.6576349197213 +310,201.9099684281482,204.09094525634447,200.92958240986474,200.14413491975336,196.19860154273664,199.4950743227048,197.16254621272913,197.00196464018543,199.09546492032362,203.2194392834469 +320,196.38504273475277,206.77730357182008,199.13751658442808,203.69594809440002,194.5267536609959,196.08483833628705,201.20144973400699,204.1258208355685,194.00848837421896,198.7879428087816 +330,199.74284015363855,199.22946512034602,202.00336593062968,201.2221686278577,199.90424960607726,202.33686688109398,193.86484548096908,198.45033231047623,199.018975563084,199.6037132917564 +340,202.9863355466985,196.12538715184004,201.46753728001582,200.38137530234172,201.33884504919249,205.0674046203077,194.88531202476935,199.68135059995004,197.85128699526922,204.61167383394644 +350,197.55351052832026,202.14606811184643,197.9569637971064,208.34037282202348,206.58684839009445,196.44934390695576,200.54234451618035,206.65832840695938,201.02284745164206,200.97018139376158 +360,197.1510125969983,202.96842308202633,195.8973349911052,197.85527804826592,198.8963116368112,207.06473154612405,205.1213747502039,200.05367805241903,198.0182858156962,198.066553636862 +370,204.49130800865288,197.81976376558518,199.75093966018738,197.32668364296342,198.26796326442226,194.48736790820354,192.28647877071583,199.10739253865788,203.92339661060072,195.3281669095922 +380,200.2502596826843,204.24213911331861,198.51064783539476,194.91228397546905,206.2110541851816,206.51571783720985,202.5226940123257,202.61614568575615,201.41634208513352,197.7398951099338 +390,201.7852888463454,200.33666467523142,197.55219462004308,207.51287466286152,199.03469946028994,201.13443818936778,199.220692565595,199.93676001919462,200.3062768838804,197.3576580161514 +400,198.70754925577737,206.70275696906464,197.4771611206425,199.2126086162371,202.06058549478803,203.16018926172566,197.55501682419813,194.1241617043865,204.8717037470825,200.36605391881247 +410,201.1372334809487,198.89265049754022,200.36303978973905,200.91725474584132,203.2569977934738,195.8398370528769,200.33682054683825,197.95845865248066,197.07659488704385,195.98074883815886 +420,199.7879767136054,204.3656496897045,205.11395543861093,194.74659664093565,197.7418737499115,204.62488645970373,206.9387131313511,195.03634988764756,205.4219119957795,202.28612321410947 +430,197.6668251354769,203.98756236621466,204.32031937680745,199.25040706584772,196.93919495563406,204.96054292331712,201.136046397344,196.66906894085446,198.7056537236762,196.0643525604552 +440,199.2885247136079,199.25412166674542,205.03166030916393,201.0170716972019,202.1318883030612,199.48196724821605,201.56101464590625,207.4983463414423,203.8934499220214,203.3069482168705 +450,193.3607538283198,197.3677036079861,194.1268719298433,203.8663529328883,201.48062965587377,201.89313196840828,200.04680865042164,200.05184343420973,204.840234593404,200.8508429075322 +460,205.81270028273087,214.49057355268312,194.96414090822148,203.84523808211992,202.97270914952338,206.82482347388907,201.9248764205151,200.1904017796004,203.39635860654897,201.97375100936432 +470,199.44211691974272,198.41893460798076,203.63457011804238,200.79235410867597,198.23659196896165,202.2657376322125,203.60066184688307,202.28997378456762,203.8807400666673,202.61925850867968 +480,199.18011712906372,198.90009048919296,201.843231948678,203.1148558920505,198.10042903540744,204.28823531283487,205.735361861541,202.3261511528026,199.33546250893986,204.32760598123474 +490,194.80817486085277,201.03973519317663,198.53720419189972,204.0477576684784,198.29290059994526,202.99291863328514,197.25701844517195,200.06051966628527,194.74527351224546,198.39749199781735 +500,197.98741520970458,202.84035302750266,203.24838931290202,195.44522461850838,195.8245629745074,199.5469214337406,203.85175801524971,202.75557045301483,202.11197979079125,200.17801808220352 diff --git a/experiments/mutation_experiment.csv b/experiments/mutation_experiment.csv new file mode 100644 index 0000000..174cccf --- /dev/null +++ b/experiments/mutation_experiment.csv @@ -0,0 +1,21 @@ +Mutation Rate,Run_1,Run_2,Run_3,Run_4,Run_5,Run_6,Run_7,Run_8,Run_9,Run_10 +5%,207.58173390542453,203.35567711066068,207.1002805897894,205.78700596193892,204.24211011117865,207.48510324035004,204.95598158415595,209.90158055942743,202.19917640854518,210.33728729147512 +10%,202.97163704624305,205.0451980272814,208.4192017543762,207.48474174206595,204.82617645656805,204.75943778937068,204.36792850526825,203.15630103990415,207.21852594380914,207.57139765592865 +15%,202.948324114379,206.26638917986202,205.8135580389381,206.21050679086034,204.60074090226388,210.68451101492727,205.5518770975626,205.4679668364571,205.05301441329556,208.0977167251404 +20%,205.17097435704574,209.55965996915563,207.50193332976338,210.29859714524957,206.20530530052469,204.9949756170748,207.39498421807113,201.5195766459554,208.1082445799814,202.68719209633278 +25%,208.56168669999957,207.8332977298956,212.48776307511963,207.1529972155108,203.83945900981746,204.43840720975155,202.21023889319474,207.23851785843627,203.00828758318013,206.30733107184753 +30%,206.01644191310885,205.40168724084648,213.51288983172782,212.16948248168953,206.84868116364356,205.23324704566974,213.37799166072992,206.0568211062033,204.5564947084136,204.7166128752362 +35%,214.0817313276291,210.05045678191385,203.39465307535494,209.2627401772028,205.50696336739898,207.01930588335983,208.72027173340936,208.7009004703522,204.1663652205444,207.51190838669888 +40%,212.4269061531904,207.02684737014485,206.87989631095132,208.30963682747796,205.4276988737969,205.30004940732007,208.28860687313184,209.08471394206077,207.6976955556667,205.67905500662715 +45%,206.33547022183896,206.37875685274403,210.83894978818782,202.79352018885078,207.5250662368475,207.77433717226324,204.01531949373688,203.56026393774022,211.52826004544852,204.37307291253566 +50%,206.92550257196655,210.1698835583495,208.9434196815621,202.56898156588875,205.40937435199572,204.42970849620906,208.0596910071511,206.9654734337079,205.9426435074828,204.38359005268345 +55%,205.86176253272214,204.8557634904758,203.12778680784965,205.4784380143568,206.51632538801763,207.49494543051125,206.21327796483692,205.52312217167662,205.13843050162993,206.67077916031724 +60%,204.7551885489366,205.19760000191536,212.94872960793154,206.4181089365439,206.45760561152258,209.57256235765038,207.6502565107356,207.93551152974513,208.1757786404881,205.1083786956979 +65%,205.1271511085186,204.54254974455026,213.06278812857326,208.40128247214906,208.2734632320987,201.3786177684767,204.41172530090637,208.37358503603045,206.5244094857146,207.4754195030978 +70%,206.371416464178,210.6307958636827,207.48783812310026,207.57965022714666,204.63076807629636,206.94703061811308,201.349328706304,204.88214832536875,206.92186123694634,204.9934870222566 +75%,201.75892773065553,204.8897077597272,211.36761025263513,207.84172324391986,204.52489404971752,211.15653771573616,207.2805640858606,207.14286185645517,205.7314998072581,201.33233493317232 +80%,207.06549771677734,206.41821252765857,206.08221144502397,208.69242072452064,207.1216202462565,205.32920836032434,204.63516753224286,205.30428539142923,210.30393850161482,206.07178438187722 +85%,207.58750682833428,204.32766384541216,205.66532582312166,204.99529498995923,204.07970444439457,207.78914871994297,205.94408611343147,205.14847145000041,206.63934996816252,209.17457129869442 +90%,203.52176536941573,205.87657527387327,205.47129686277268,207.4740580102241,209.2597631128946,212.3996898982286,208.19891139894054,213.449070974289,206.69558049132127,204.29297852791046 +95%,205.97390327899677,208.74916238098157,206.51213119770318,209.28816464938822,204.37580973488872,204.63704866676855,204.65857027487507,206.3119594547126,210.1728016080836,205.0458516317354 +100%,204.09578820529865,207.34716150435696,211.41790441884947,207.28057313179795,209.42338019992843,208.3420620193895,205.7078599041345,210.48758630915376,206.12322151569052,207.3134663881314 diff --git a/experiments/mutation_timing_experiment.csv b/experiments/mutation_timing_experiment.csv new file mode 100644 index 0000000..87d83ae --- /dev/null +++ b/experiments/mutation_timing_experiment.csv @@ -0,0 +1,21 @@ +Mutation Rate,Run_1,Run_2,Run_3,Run_4,Run_5,Run_6,Run_7,Run_8,Run_9,Run_10 +5%,0.8005797863006592,0.8254134654998779,0.8920581340789795,0.8231966495513916,0.9137589931488037,0.8427944183349609,0.791881799697876,0.7956230640411377,0.7565455436706543,0.8253276348114014 +10%,0.8480641841888428,0.7841670513153076,0.8466875553131104,0.7663300037384033,0.8727641105651855,0.7614221572875977,0.7628457546234131,0.7571349143981934,0.760284423828125,0.7542486190795898 +15%,0.7653427124023438,0.776392936706543,0.7598733901977539,0.7578766345977783,0.7619471549987793,0.759282112121582,0.7612426280975342,0.7548282146453857,0.7620177268981934,0.7642991542816162 +20%,0.7654304504394531,0.7675096988677979,0.7592706680297852,0.7648470401763916,0.7617430686950684,0.7548091411590576,0.7728240489959717,0.7742838859558105,0.7787597179412842,0.7712757587432861 +25%,0.7803843021392822,0.778817892074585,0.7714700698852539,0.777388334274292,0.7760241031646729,0.771826982498169,0.7653524875640869,0.7817938327789307,0.7673327922821045,0.7784054279327393 +30%,0.7813029289245605,0.7839572429656982,0.7747395038604736,0.7754485607147217,0.7772891521453857,0.7760200500488281,0.7689850330352783,0.773404598236084,0.7642414569854736,0.7713510990142822 +35%,0.7748606204986572,0.7803699970245361,0.7694001197814941,0.7677304744720459,0.7677288055419922,0.7756996154785156,0.7768764495849609,0.7668523788452148,0.7752730846405029,0.7643640041351318 +40%,0.7849502563476562,0.7822883129119873,0.7663578987121582,0.774195671081543,0.7757880687713623,0.7773163318634033,0.7787864208221436,0.7662556171417236,0.7743051052093506,0.7827763557434082 +45%,0.7842879295349121,0.7803618907928467,0.7675833702087402,0.7647297382354736,0.7721982002258301,0.7747945785522461,0.7596883773803711,0.7768204212188721,0.7718288898468018,0.7543067932128906 +50%,0.7754144668579102,0.771491289138794,0.7718045711517334,0.7692749500274658,0.7659585475921631,0.7657265663146973,0.762291431427002,0.774359941482544,0.7709460258483887,0.7722952365875244 +55%,0.7743406295776367,0.773935079574585,0.7691373825073242,0.769298791885376,0.7703464031219482,0.7618036270141602,0.7672982215881348,0.7662107944488525,0.7720925807952881,0.7718477249145508 +60%,0.7713336944580078,0.7680487632751465,0.7648215293884277,0.7663516998291016,0.7674009799957275,0.7577733993530273,0.7592482566833496,0.7562685012817383,0.7608487606048584,0.7688257694244385 +65%,0.7669162750244141,0.7675333023071289,0.764324426651001,0.7677664756774902,0.763801097869873,0.760178804397583,0.7597131729125977,0.7663440704345703,0.7657396793365479,0.7618987560272217 +70%,0.7668163776397705,0.7715151309967041,0.762298583984375,0.7613546848297119,0.7595686912536621,0.7549538612365723,0.7638137340545654,0.7610411643981934,0.760775089263916,0.7582292556762695 +75%,0.7574021816253662,0.7647695541381836,0.7628035545349121,0.7710201740264893,0.7618377208709717,0.7602930068969727,0.7607231140136719,0.760796070098877,0.7564411163330078,0.7658040523529053 +80%,0.7664012908935547,0.7718043327331543,0.7617850303649902,0.7602949142456055,0.7596735954284668,0.7617385387420654,0.7597696781158447,0.7628912925720215,0.7607829570770264,0.7562117576599121 +85%,0.7623591423034668,0.7684504985809326,0.7591934204101562,0.7623906135559082,0.7572672367095947,0.7628109455108643,0.7633230686187744,0.7582345008850098,0.7602381706237793,0.7622487545013428 +90%,0.7628347873687744,0.7670395374298096,0.7564346790313721,0.7632982730865479,0.763892650604248,0.759223461151123,0.7622854709625244,0.754777193069458,0.7572600841522217,0.7632722854614258 +95%,0.765364408493042,0.7712149620056152,0.7552816867828369,0.761728048324585,0.7532131671905518,0.7592906951904297,0.7623164653778076,0.7593441009521484,0.7642993927001953,0.757256031036377 +100%,0.7669863700866699,0.7723782062530518,0.7724294662475586,0.7657594680786133,0.7576708793640137,0.7619009017944336,0.7649745941162109,0.7652723789215088,0.7653102874755859,0.7670309543609619 diff --git a/experiments/population_experiment.csv b/experiments/population_experiment.csv new file mode 100644 index 0000000..039d0c5 --- /dev/null +++ b/experiments/population_experiment.csv @@ -0,0 +1,52 @@ +Populations,Run_1,Run_2,Run_3,Run_4,Run_5,Run_6,Run_7,Run_8,Run_9,Run_10 +5,195.107051780106,192.51507153330596,196.73831141162523,201.3987738877849,204.9130102049523,202.61229128948233,196.78079715128962,205.5746520432539,197.66310312146598,198.37328470932397 +10,206.10758969253163,197.51805146351657,201.27218713489756,201.84973891629127,198.85771607817068,202.39590588898812,208.98248280814337,199.53233282607917,199.44006621963658,202.1865330695465 +20,201.37864673123065,202.81512353323185,202.21094429477318,201.09120843534885,199.08839452030568,199.8926404915411,203.67354024742144,202.63783225443365,201.11726931622988,201.49620441608144 +30,203.24413692147132,208.5026882710226,201.2970958389993,204.52896996247776,198.94386387685438,202.38224005691237,206.981572153016,209.23933863230837,201.85094899983426,206.87959070143543 +40,206.80754887602998,202.56137448468363,203.68278102400902,204.93570116234548,207.76153487510376,205.07611084874358,202.82588371801677,207.14785577912357,204.49994713398806,204.35590880317673 +50,202.23774281233173,213.7623940703891,201.66575807643213,204.38214805400003,204.76173850836034,202.75173474864988,201.93866813499366,204.79354019021252,205.9934566133586,204.95107044683044 +60,207.3129694329287,198.48731780615103,204.40642201079353,203.36860635442702,202.99751108626876,208.2790296253971,204.16751662845928,203.98458546778156,205.7531631215927,202.1824177439138 +70,204.86131111598644,204.68909965034558,214.58277970915532,204.0173525340217,203.01296338350878,205.8484066306843,210.8187434347994,205.69479985036597,202.9926090362007,207.7993142676477 +80,207.45137100399683,205.1371639759256,209.2161625039854,203.4964494609069,204.83712777200617,204.2364937947206,204.4629210905315,214.56883017657373,205.59322354987748,207.0279728292239 +90,205.82947753249707,205.5179759986684,204.58626177934897,216.866547921922,208.4531538113915,206.31264206896597,206.62668288343997,204.35899176063356,207.7917836234634,206.59569525865282 +100,206.2248781412893,206.74757668105408,207.74085124492336,207.54613033525575,206.24713387565106,207.32887426456907,203.24328822893824,204.67963365894622,210.2175210590153,208.0588046825104 +110,209.76114908916162,216.50318410952045,207.08114055073824,210.63743213595023,208.4391542604874,205.75501966195336,207.25320353196713,206.39680987012332,205.8614905599655,209.2883658570607 +120,207.39072287993298,204.15905875322017,209.62841364020423,206.1825762786608,203.90621555054284,206.62800376980286,203.0012406742391,203.94182167166835,204.1351236810833,204.35110519825105 +130,207.8287877070801,207.99140206257695,201.4670301880474,205.93748000819485,205.51185235009385,204.42846882027058,205.88510331644915,211.8476016385198,202.85369565945774,204.75542343788314 +140,204.26943083444104,206.1437525303749,206.24557356801188,208.3387491341072,209.2200087105636,207.85836204273684,205.60550677811017,207.34175369418776,205.76100371858647,206.3679851156037 +150,207.8929631833707,208.2643567963649,202.03720127791806,205.2554810494283,208.78855797234718,206.085352161786,206.89719309807242,203.19855419512322,206.96687613296817,209.45008130791223 +160,209.4830539139913,207.52800592674674,206.85384534708186,207.69568327485956,205.15127567809793,212.65851883685352,208.59064726443253,205.69256642730133,207.65267798332147,212.98558520622132 +170,208.08853711797406,205.61036573742317,205.7714282147292,206.30687803619713,208.2802343361928,205.15187896646927,207.9454721437886,208.48589489817493,206.1153113296581,208.85744590549325 +180,207.96714077960058,206.04427392559575,207.70629904060056,208.53698246639144,207.3493082053826,209.29550425225207,206.59171712330195,204.00973955848193,213.41222594766967,204.77487441076255 +190,206.323435786251,206.70766470127975,206.96952460853245,209.91980884563554,205.4770998872957,204.58430454921083,208.1751971340471,207.11663218170145,208.15635104847772,210.7409470926952 +200,206.58923057430002,206.07821670248265,209.1968036777895,206.5678156957806,210.43011035721557,208.52772520086103,210.96500915487564,206.65124504033588,208.74505671206356,206.9515570040449 +210,207.93987858815737,204.90455587533725,208.83939018498282,207.8237046814222,206.9390017164647,207.0092672010629,206.12840189835435,207.00122066127744,208.20989577725865,209.59419134324915 +220,208.5495954215321,206.24279504257535,207.38631864099418,207.1295680872579,210.14923798630724,211.08808830539581,206.68389698085775,206.86166920679796,207.15038964134516,207.4037239881683 +230,205.29790377066277,211.3487695742621,204.44602601672727,208.67571031712902,207.225378451001,211.15588758272673,206.32979585676026,207.4866186717552,209.09794401664917,206.86005519403338 +240,204.97333452526493,207.01536667712747,207.95654803902073,205.50589498650635,205.17918831340359,206.22163662849408,209.58309476005257,203.89376254071144,206.25564529490495,207.0861149688036 +250,205.82867766234185,206.09076016423694,207.85676770613074,208.75306741122486,209.3107215276423,206.83243927185268,208.97765291048682,211.04785057173896,208.48708324984705,209.9133903448343 +260,204.13062960395902,209.7657636512514,207.3162821741491,211.4539782988391,206.86730607359144,207.18918356711117,205.80204889934163,207.18014404356848,208.09216806075636,212.69453928528105 +270,208.13253508145323,210.27303208988604,205.82913451311805,208.62317960200264,206.9914168366625,206.86214000789528,206.30279615106687,206.10248183424068,206.08163701321797,212.93783504374989 +280,207.05922716611084,204.78015966933083,209.63334116822142,206.36396569102513,210.16856987014177,211.09046341569734,208.05871529224243,208.67281947337295,205.57300883222615,208.27079156550556 +290,206.7965307692976,210.4866097340803,204.9324970725594,206.07692162452705,205.1447933951884,208.52226756898716,206.15608176078538,211.70076936952344,203.27686054889958,209.56461738000394 +300,206.8282699110528,209.40572390495063,208.94771311221635,207.325893135975,212.0015158589729,206.36862746495362,211.00456944619685,209.71198024819824,210.5227652169549,209.15541043247703 +310,209.48017088104794,208.21781531637254,206.67335679407984,207.68241362215042,207.0179064399514,207.18570766792575,205.16830630865502,208.61485908622058,206.19937117044717,204.98611651617372 +320,207.013169073295,207.50523458354473,210.4335064988135,211.8843811405054,208.1225047771643,212.00642015114596,209.7795648038196,208.97126920207586,205.83108212830427,207.25289927064563 +330,209.0861429118088,208.84202609871062,206.86245721321544,207.6258738596233,210.93511779189407,207.39693407027156,206.70646655260154,207.11630211084628,208.8141392104513,206.0062117715854 +340,208.37395201574748,209.6242463892044,207.1522895515752,211.93613034107935,207.23501847482538,208.25187883918306,207.0287793841747,208.56534744920495,207.72733222929145,206.40422547067507 +350,210.15304572430074,206.04082614235668,209.8187709445059,208.24614810400962,209.0475089715897,209.16182637125698,210.2915136612372,205.71837521529022,209.03594183008124,211.25576095022274 +360,210.18445487393572,210.12732055124334,212.4604986700151,208.25727893068557,206.46352738106322,211.65432049429404,207.32212651736037,206.58987132470386,207.85501012992952,209.20391544163436 +370,208.22407149847118,206.18026263294178,210.3165358580347,208.25845390705211,211.12610067949743,208.93146568975845,208.801689132881,206.16562496875923,207.65597089846457,209.34204982246013 +380,207.03738734707105,214.5818608695542,208.99676712082336,205.69400755176414,209.3077284199728,207.17411159433104,209.96573961561901,210.50507257501386,206.7183907909352,212.28490194984667 +390,209.523669423324,211.31947310716356,207.67348938029602,209.88514138520912,214.33251232294816,210.76618816112472,209.09688587119746,208.817872740521,211.75590978210448,210.11059173003864 +400,206.91370404843775,208.57639355992612,207.9107781977977,206.22910312365258,214.7041259595301,210.775488376195,209.5660125759472,208.99736032111394,206.17491912751186,209.73087836559202 +410,205.8580493394561,209.87656594260355,210.23196416613834,205.89153968532455,207.67333345949527,208.4494230806163,212.88660240367307,207.98833669510333,209.2955375024228,210.2152312814498 +420,211.38864810005728,206.89104645133963,215.11871926014385,208.0772190737371,207.91043892097144,206.47397706666663,213.25471907615687,207.28235805418973,207.74634565532335,209.74548475464562 +430,207.9530033381291,207.97196641527765,206.01473511078464,208.51733118049842,211.93960793016032,208.2478518549109,205.2627162069567,208.81777224893395,207.9313204408293,207.3436339784293 +440,207.41884329668153,213.57235934438535,209.56593636362604,205.90387282469936,208.33551394794029,209.6572466855671,211.10502213890666,210.42744254382382,211.7623410939256,211.4235464271043 +450,208.10933869009415,209.84514278747142,208.45304298914812,206.20193065990878,210.62456689635155,209.3812201896731,207.8982976152176,207.6715254227799,211.93613799993005,208.4562097403593 +460,208.25464948410493,209.0155799919089,206.1883047001652,207.08941716383424,208.73821245799584,211.99872198774372,210.6612183610991,208.4168232697894,209.13086961797939,213.97963624120663 +470,210.15529407351204,211.80466044318993,210.51494162711833,209.06679184927137,210.14703181774127,211.1862755227271,208.13234056538437,211.80936915268182,209.99464256564144,208.62821977742354 +480,208.04215382276237,206.87944614870293,210.0037293344865,208.04276985169358,211.2014732193735,205.29052860480556,209.0524752864289,206.46533115317712,208.87900195857893,208.54030747927675 +490,210.36272146634224,205.35961110321384,209.55917325667096,214.17719095614203,208.0830634409673,207.9134351768521,205.6250992957224,208.53636523906147,206.31677784271002,209.72574853752798 +500,208.01609482966202,209.85149308700383,207.22023228761097,211.40844791475544,207.1828262533346,204.42946983289784,207.08887758449904,207.96209250569336,210.9080527854506,208.9682534803268 diff --git a/experiments/population_timing_experiment.csv b/experiments/population_timing_experiment.csv new file mode 100644 index 0000000..27e91d9 --- /dev/null +++ b/experiments/population_timing_experiment.csv @@ -0,0 +1,52 @@ +Populations,Run_1,Run_2,Run_3,Run_4,Run_5,Run_6,Run_7,Run_8,Run_9,Run_10 +5,0.42119932174682617,0.49548864364624023,0.4147944450378418,0.3838784694671631,0.5228757858276367,0.48282504081726074,0.3622012138366699,0.3315427303314209,0.37645697593688965,0.34844422340393066 +10,0.36287641525268555,0.34844207763671875,0.3493945598602295,0.3596665859222412,0.34907102584838867,0.3577260971069336,0.35050415992736816,0.35207128524780273,0.3480501174926758,0.35297441482543945 +20,0.3915250301361084,0.39853906631469727,0.3949306011199951,0.40274667739868164,0.3996107578277588,0.404510498046875,0.4014418125152588,0.4027099609375,0.3973989486694336,0.39356350898742676 +30,0.4541137218475342,0.4446415901184082,0.43939208984375,0.43988466262817383,0.43932199478149414,0.4443359375,0.4362936019897461,0.43581724166870117,0.4327843189239502,0.43732571601867676 +40,0.4918994903564453,0.5289816856384277,0.48586130142211914,0.489438533782959,0.48499512672424316,0.4889376163482666,0.487865686416626,0.4934272766113281,0.487377405166626,0.48995137214660645 +50,0.5409505367279053,0.5360550880432129,0.5384502410888672,0.5364866256713867,0.5365562438964844,0.5449984073638916,0.5334305763244629,0.5359699726104736,0.5369288921356201,0.5359325408935547 +60,0.5866410732269287,0.5760223865509033,0.5855696201324463,0.5856990814208984,0.5792989730834961,0.5850391387939453,0.5855352878570557,0.583885669708252,0.5824613571166992,0.5796465873718262 +70,0.6607441902160645,0.6323506832122803,0.6326322555541992,0.6341829299926758,0.6303012371063232,0.6305956840515137,0.6446905136108398,0.630744457244873,0.6341729164123535,0.6317195892333984 +80,0.6807880401611328,0.6807820796966553,0.673649787902832,0.6777372360229492,0.67873215675354,0.6791446208953857,0.6731843948364258,0.6813526153564453,0.6773529052734375,0.6737713813781738 +90,0.7392935752868652,0.8312509059906006,0.7207520008087158,0.756988525390625,0.7780463695526123,0.8554625511169434,0.761368989944458,0.7473435401916504,0.7478950023651123,0.7429800033569336 +100,0.7913768291473389,0.7871766090393066,0.7934367656707764,0.7869381904602051,0.7879383563995361,0.7918331623077393,0.7855267524719238,0.7884511947631836,0.7884156703948975,0.7928543090820312 +110,0.8405647277832031,0.8316857814788818,0.8406729698181152,0.8310239315032959,0.8465793132781982,0.8379595279693604,0.8389310836791992,0.8500051498413086,0.8371307849884033,0.8369593620300293 +120,0.8806452751159668,0.8840794563293457,0.8816277980804443,0.8880674839019775,0.8816766738891602,0.9037833213806152,0.8790960311889648,0.8835697174072266,0.8905453681945801,0.890540599822998 +130,0.9317972660064697,0.9341156482696533,0.9357104301452637,0.9296491146087646,0.9321868419647217,0.9377663135528564,0.9297976493835449,0.9366800785064697,0.9276130199432373,0.9398071765899658 +140,1.0019094944000244,0.9803719520568848,0.9782960414886475,0.9860904216766357,0.9824411869049072,0.98282790184021,0.9787578582763672,0.9768726825714111,0.9762017726898193,0.9899578094482422 +150,1.030278205871582,1.035928726196289,1.0223972797393799,1.041452169418335,1.0268805027008057,1.0452015399932861,1.02638578414917,1.0147819519042969,1.0287716388702393,1.0224425792694092 +160,1.075951337814331,1.0750370025634766,1.0778281688690186,1.0664608478546143,1.0670185089111328,1.0709161758422852,1.0659749507904053,1.0778751373291016,1.0851590633392334,1.0613775253295898 +170,1.1182982921600342,1.1327381134033203,1.1202571392059326,1.1175549030303955,1.1191294193267822,1.1221568584442139,1.1249792575836182,1.1260175704956055,1.124023199081421,1.1270954608917236 +180,1.1770665645599365,1.1750879287719727,1.1611690521240234,1.1792352199554443,1.184661865234375,1.170576572418213,1.166529655456543,1.1682252883911133,1.1710278987884521,1.1675543785095215 +190,1.2307038307189941,1.236407995223999,1.2195687294006348,1.285280704498291,1.2285864353179932,1.2175440788269043,1.215343713760376,1.2315621376037598,1.2188403606414795,1.2664330005645752 +200,1.3373265266418457,1.2611842155456543,1.2778985500335693,1.2688417434692383,1.282766580581665,1.2572455406188965,1.2638869285583496,1.2609927654266357,1.2639186382293701,1.27571702003479 +210,1.315911054611206,1.3190078735351562,1.3188722133636475,1.3147807121276855,1.3158996105194092,1.3170013427734375,1.3159599304199219,1.3278288841247559,1.314662218093872,1.312929391860962 +220,1.366363763809204,1.3660142421722412,1.3559925556182861,1.3589658737182617,1.3668742179870605,1.3704981803894043,1.361151933670044,1.3688461780548096,1.377105712890625,1.3606369495391846 +230,1.4046447277069092,1.4089298248291016,1.413581371307373,1.4044630527496338,1.4099798202514648,1.4139904975891113,1.3961045742034912,1.4100935459136963,1.418945074081421,1.4194633960723877 +240,1.4697401523590088,1.4591894149780273,1.464189052581787,1.454120397567749,1.4587218761444092,1.4632840156555176,1.4637062549591064,1.4546995162963867,1.461024284362793,1.461684226989746 +250,1.5128345489501953,1.5127806663513184,1.509631633758545,1.5114960670471191,1.509059190750122,1.5196897983551025,1.51080322265625,1.509291648864746,1.5002000331878662,1.506678819656372 +260,1.5573701858520508,1.5728998184204102,1.592254400253296,1.5644361972808838,1.5573697090148926,1.551863193511963,1.5728754997253418,1.5608859062194824,1.550386667251587,1.5542244911193848 +270,1.6937386989593506,1.66214919090271,1.6184892654418945,1.6924018859863281,1.684722900390625,1.6058170795440674,1.6080214977264404,1.601799488067627,1.600285530090332,1.6105854511260986 +280,1.659020185470581,1.6476547718048096,1.636122226715088,1.6430644989013672,1.6966731548309326,1.6576483249664307,1.6630311012268066,1.652550220489502,1.6320836544036865,1.649153232574463 +290,1.6937127113342285,1.6993513107299805,1.704012393951416,1.7051684856414795,1.705251693725586,1.7076892852783203,1.6975319385528564,1.70206880569458,1.6925785541534424,1.688211441040039 +300,1.7707226276397705,1.7400102615356445,1.769747257232666,1.768322467803955,1.74967622756958,1.7452001571655273,1.7357456684112549,1.7411186695098877,1.759251356124878,1.7486889362335205 +310,1.7891364097595215,1.8092854022979736,1.7918925285339355,1.7971303462982178,1.7983033657073975,1.786496639251709,1.7936224937438965,1.796485424041748,1.792639970779419,1.8118011951446533 +320,1.8463244438171387,1.8342249393463135,1.82047438621521,1.849350929260254,1.8393962383270264,1.8379261493682861,1.8370327949523926,1.8317956924438477,1.8414497375488281,1.8397178649902344 +330,1.888352394104004,1.8805065155029297,1.8872864246368408,1.891571044921875,1.8874473571777344,1.8953421115875244,1.8919060230255127,1.87691330909729,1.9107224941253662,2.09623384475708 +340,2.0496628284454346,2.030222177505493,1.9466140270233154,1.94708251953125,1.9605779647827148,1.94417142868042,1.9991705417633057,1.964087724685669,1.9628612995147705,1.944915771484375 +350,2.0555508136749268,2.06516695022583,2.071948528289795,2.1406307220458984,2.084197521209717,2.0771090984344482,2.0160086154937744,2.0387771129608154,1.9969983100891113,1.9998579025268555 +360,2.0362439155578613,2.0353474617004395,2.042418956756592,2.0271458625793457,2.0261974334716797,2.0306060314178467,2.041846990585327,2.053405523300171,2.120605230331421,2.164179801940918 +370,2.1201367378234863,2.145073175430298,2.1231698989868164,2.110755443572998,2.162020444869995,2.110306978225708,2.16300106048584,2.1998820304870605,2.125645637512207,2.1395766735076904 +380,2.189359664916992,2.1646907329559326,2.208646774291992,2.154064416885376,2.16872239112854,2.484476327896118,2.2471415996551514,2.155566692352295,2.182835102081299,2.20743727684021 +390,2.4381701946258545,2.2582621574401855,2.219295024871826,2.3578684329986572,2.3463847637176514,2.5750908851623535,2.591524600982666,2.64284086227417,2.515981435775757,2.4472665786743164 +400,2.6403257846832275,2.490727186203003,2.38869571685791,2.3287699222564697,2.550828695297241,2.770921468734741,2.405625581741333,2.333245277404785,2.379201889038086,2.330190896987915 +410,2.423170566558838,2.3112428188323975,2.336442708969116,2.5094611644744873,2.4957339763641357,2.316033363342285,2.4372503757476807,2.4565985202789307,2.296449661254883,2.2747488021850586 +420,2.453608274459839,2.3159093856811523,2.300579071044922,2.310025930404663,2.3465449810028076,2.3159797191619873,2.313342571258545,2.326349973678589,2.3039584159851074,2.309248685836792 +430,2.338294267654419,2.3631680011749268,2.3638322353363037,2.3588638305664062,2.3546905517578125,2.370760917663574,2.358242988586426,2.365438222885132,2.360591173171997,2.350360631942749 +440,2.408257484436035,2.4003872871398926,2.5109317302703857,2.3922078609466553,2.403662919998169,2.3979134559631348,2.392691135406494,2.4501216411590576,2.4040725231170654,2.386723279953003 +450,2.448791027069092,2.439791679382324,2.448624610900879,2.4601616859436035,2.4317352771759033,2.447753429412842,2.4402830600738525,2.436795473098755,2.428232431411743,2.4546492099761963 +460,2.486388921737671,2.4963130950927734,2.483804702758789,2.505688428878784,2.493043899536133,2.4978370666503906,2.5068061351776123,2.5036754608154297,2.498701810836792,2.489816665649414 +470,2.5355794429779053,2.549304962158203,2.5427587032318115,2.5329768657684326,2.526334524154663,2.534306526184082,2.5532076358795166,2.5466248989105225,2.5541772842407227,2.5342869758605957 +480,2.604766368865967,2.594428300857544,2.580451726913452,2.607374906539917,2.5873100757598877,2.5959575176239014,2.6089863777160645,2.602447748184204,2.652806520462036,2.58380389213562 +490,2.644697904586792,2.6543474197387695,2.6522133350372314,2.6684393882751465,2.6502559185028076,2.6462740898132324,2.642193555831909,2.6372756958007812,2.6360292434692383,2.645747184753418 +500,2.704573154449463,2.69638991355896,2.6858789920806885,2.7018773555755615,2.685478687286377,2.69327712059021,2.7003772258758545,2.695335626602173,2.6835193634033203,2.7042369842529297 diff --git a/experiments/timing_experiment.csv b/experiments/timing_experiment.csv new file mode 100644 index 0000000..d0f4087 --- /dev/null +++ b/experiments/timing_experiment.csv @@ -0,0 +1,51 @@ +Generations,Run_1,Run_2,Run_3,Run_4,Run_5,Run_6,Run_7,Run_8,Run_9,Run_10 +10,0.05137825012207031,0.04976916313171387,0.048120975494384766,0.04883217811584473,0.046584129333496094,0.04560208320617676,0.048590660095214844,0.046596527099609375,0.046067237854003906,0.04710245132446289 +20,0.0696403980255127,0.07167339324951172,0.06611847877502441,0.06712841987609863,0.06561017036437988,0.07869553565979004,0.11266660690307617,0.12066912651062012,0.0858910083770752,0.0758671760559082 +30,0.08663392066955566,0.0861670970916748,0.08808517456054688,0.08469176292419434,0.08426189422607422,0.0842132568359375,0.0841376781463623,0.08565664291381836,0.0852060317993164,0.0821526050567627 +40,0.10789966583251953,0.10367679595947266,0.10666441917419434,0.10816311836242676,0.12847900390625,0.11287832260131836,0.10478019714355469,0.10516762733459473,0.10512900352478027,0.10419321060180664 +50,0.12940001487731934,0.12278079986572266,0.125732421875,0.12372493743896484,0.12572741508483887,0.12221169471740723,0.12133932113647461,0.13175439834594727,0.12825608253479004,0.12225222587585449 +60,0.14675211906433105,0.14140772819519043,0.1432666778564453,0.14323759078979492,0.14376354217529297,0.14474081993103027,0.1392836570739746,0.14178872108459473,0.141801118850708,0.14224767684936523 +70,0.16941523551940918,0.16477084159851074,0.16127681732177734,0.1662898063659668,0.1583576202392578,0.1602950096130371,0.16577458381652832,0.1622753143310547,0.16328144073486328,0.16228389739990234 +80,0.1859130859375,0.18381285667419434,0.1849045753479004,0.17881059646606445,0.18181228637695312,0.18383550643920898,0.18037199974060059,0.17981910705566406,0.18684887886047363,0.17989540100097656 +90,0.20638418197631836,0.20846819877624512,0.21442151069641113,0.20960068702697754,0.20437932014465332,0.21094894409179688,0.2059178352355957,0.21038126945495605,0.20538616180419922,0.20233654975891113 +100,0.23033809661865234,0.21992158889770508,0.21796512603759766,0.22666406631469727,0.23298430442810059,0.2336583137512207,0.22139739990234375,0.22090411186218262,0.22437834739685059,0.22503066062927246 +110,0.24341678619384766,0.23801469802856445,0.24204754829406738,0.2495718002319336,0.2515685558319092,0.2519655227661133,0.2454662322998047,0.25150299072265625,0.25348663330078125,0.24956631660461426 +120,0.27150702476501465,0.2610206604003906,0.26745128631591797,0.2790067195892334,0.2730386257171631,0.2735564708709717,0.4551365375518799,0.29952502250671387,0.34040403366088867,0.28965306282043457 +130,0.294858455657959,0.2980778217315674,0.36168336868286133,0.3805248737335205,0.3047006130218506,0.42084169387817383,0.30516505241394043,0.28657054901123047,0.2866332530975342,0.28659915924072266 +140,0.3090198040008545,0.3000912666320801,0.3020150661468506,0.30162858963012695,0.3005392551422119,0.30711865425109863,0.3041379451751709,0.2996480464935303,0.30051136016845703,0.2980227470397949 +150,0.32710838317871094,0.32370662689208984,0.3210744857788086,0.32010912895202637,0.32305288314819336,0.32907724380493164,0.3215806484222412,0.32660531997680664,0.3181493282318115,0.3231208324432373 +160,0.34409379959106445,0.33809733390808105,0.34215307235717773,0.3446071147918701,0.3507251739501953,0.34416890144348145,0.34610486030578613,0.34560680389404297,0.34064245223999023,0.34067654609680176 +170,0.3672804832458496,0.36415815353393555,0.36072516441345215,0.36869215965270996,0.37226080894470215,0.36476731300354004,0.39939308166503906,0.3627352714538574,0.36215972900390625,0.36469554901123047 +180,0.3857283592224121,0.38124895095825195,0.38787198066711426,0.38067126274108887,0.4239957332611084,0.3787529468536377,0.38315701484680176,0.3752405643463135,0.3771195411682129,0.38281893730163574 +190,0.42125868797302246,0.4158289432525635,0.4037964344024658,0.40872764587402344,0.4044513702392578,0.39737772941589355,0.4017937183380127,0.40398573875427246,0.39063310623168945,0.4037172794342041 +200,0.4215116500854492,0.41876697540283203,0.41286206245422363,0.42324066162109375,0.41634464263916016,0.42030763626098633,0.4277811050415039,0.4137887954711914,0.4207630157470703,0.44193434715270996 +210,0.48014378547668457,0.4784975051879883,0.4503600597381592,0.44147443771362305,0.43734240531921387,0.44127416610717773,0.4472618103027344,0.4402642250061035,0.45285582542419434,0.44048428535461426 +220,0.45331406593322754,0.4527931213378906,0.4598405361175537,0.4609653949737549,0.4468846321105957,0.45883941650390625,0.4568471908569336,0.46539998054504395,0.45531511306762695,0.46078062057495117 +230,0.4778470993041992,0.5141892433166504,0.497189998626709,0.5065698623657227,0.4804353713989258,0.5365960597991943,0.522514820098877,0.4983992576599121,0.4928855895996094,0.48690271377563477 +240,0.5211036205291748,0.5441770553588867,0.5135245323181152,0.5286037921905518,0.5206236839294434,0.5166337490081787,0.5269944667816162,0.5362114906311035,0.5190250873565674,0.5069077014923096 +250,0.5305509567260742,0.5290331840515137,0.5174410343170166,0.5361669063568115,0.5395505428314209,0.5422558784484863,0.5285296440124512,0.5363147258758545,0.5163760185241699,0.5245544910430908 +260,0.552771806716919,0.5555198192596436,0.5456821918487549,0.5435905456542969,0.5480961799621582,0.551530122756958,0.540020227432251,0.5425412654876709,0.6328067779541016,0.5535216331481934 +270,0.5785257816314697,0.5679976940155029,0.5666162967681885,0.5681073665618896,0.5665760040283203,0.5770895481109619,0.5610287189483643,0.567152738571167,0.5685477256774902,0.5539743900299072 +280,0.5881521701812744,0.5956478118896484,0.5825700759887695,0.5831520557403564,0.587566614151001,0.5790510177612305,0.5700154304504395,0.587632417678833,0.5700721740722656,0.5965511798858643 +290,0.598752498626709,0.5986032485961914,0.5930702686309814,0.6126425266265869,0.6912071704864502,0.6422951221466064,0.6292281150817871,0.673173189163208,0.6268861293792725,0.6186864376068115 +300,0.6393494606018066,0.6337141990661621,0.6393675804138184,0.6303043365478516,0.6347141265869141,0.6196627616882324,0.6477928161621094,0.6362013816833496,0.6333754062652588,0.6403005123138428 +310,0.7073101997375488,0.7064015865325928,0.7818326950073242,0.6808972358703613,0.7415533065795898,0.8073608875274658,0.6768722534179688,0.7764272689819336,0.6753344535827637,0.6679329872131348 +320,0.6639411449432373,0.7183430194854736,0.6822738647460938,0.6663534641265869,0.7009408473968506,0.6988604068756104,0.6935207843780518,0.6914868354797363,0.659635066986084,0.6658549308776855 +330,0.7379701137542725,0.689857006072998,0.6959435939788818,0.6998293399810791,0.6777842044830322,0.7093534469604492,0.7226107120513916,0.6957781314849854,0.6928608417510986,0.7229411602020264 +340,0.7310483455657959,0.7757046222686768,0.7168478965759277,0.7058088779449463,0.7293970584869385,0.7258350849151611,0.7320506572723389,0.7190182209014893,0.6914103031158447,0.7199718952178955 +350,0.7312803268432617,0.7403316497802734,0.7477335929870605,0.7267649173736572,0.7240481376647949,0.7199316024780273,0.7056796550750732,0.7318580150604248,0.7269134521484375,0.7282981872558594 +360,0.7363135814666748,0.7868137359619141,0.7630915641784668,0.729851484298706,0.7487707138061523,0.7468969821929932,0.7523617744445801,0.7317657470703125,0.741340160369873,0.7263762950897217 +370,0.7539513111114502,0.7523868083953857,0.7603044509887695,0.7754876613616943,0.7678790092468262,0.7629601955413818,0.7444455623626709,0.7483775615692139,0.7755939960479736,0.761979341506958 +380,0.8235964775085449,0.7951836585998535,0.757892370223999,0.7759816646575928,0.7688651084899902,0.7718677520751953,0.789132833480835,0.7943825721740723,0.8010070323944092,0.7759792804718018 +390,0.7954113483428955,0.7868757247924805,0.801800012588501,0.7998983860015869,0.7921411991119385,0.7898392677307129,0.7906291484832764,0.7819187641143799,0.7909359931945801,0.8015367984771729 +400,0.8080861568450928,0.8342311382293701,0.8059070110321045,0.8124227523803711,0.8051908016204834,0.8620431423187256,0.8185806274414062,0.8175954818725586,0.8064024448394775,0.8249833583831787 +410,0.8360178470611572,0.8416638374328613,0.8286032676696777,0.8390598297119141,0.8255743980407715,0.8504986763000488,0.8341062068939209,0.8199558258056641,0.8455753326416016,0.8270308971405029 +420,0.8555784225463867,0.8550276756286621,0.8600413799285889,0.8636069297790527,0.8711996078491211,0.8782856464385986,0.8470051288604736,0.9166150093078613,0.8616533279418945,0.8644993305206299 +430,0.8822672367095947,0.8786020278930664,0.8756418228149414,0.8946387767791748,0.8906404972076416,0.8725574016571045,0.8743305206298828,0.8816530704498291,0.8646433353424072,0.8787236213684082 +440,0.9111328125,0.8942680358886719,0.8886559009552002,0.8942244052886963,0.8995261192321777,0.92954421043396,0.8980433940887451,0.8992390632629395,0.8901324272155762,0.913118839263916 +450,0.9227888584136963,0.9261684417724609,0.8982620239257812,0.9272489547729492,0.9128355979919434,0.9231607913970947,0.9108107089996338,0.9176514148712158,0.9122138023376465,0.9107823371887207 +460,0.9348936080932617,0.9398548603057861,0.9507222175598145,0.9307727813720703,0.9288396835327148,0.9436826705932617,0.9702081680297852,0.9539000988006592,0.9442708492279053,0.9357321262359619 +470,0.9581959247589111,0.9593033790588379,0.9412312507629395,0.9507839679718018,0.9713397026062012,0.9748368263244629,0.945138692855835,0.9580910205841064,0.9496493339538574,0.9334201812744141 +480,0.9773900508880615,0.981271505355835,1.0024962425231934,0.9687459468841553,1.1046385765075684,1.009185791015625,0.9854381084442139,0.9843504428863525,1.0004549026489258,0.9995613098144531 +490,1.033959150314331,1.0218579769134521,0.9990582466125488,0.9957311153411865,0.9939813613891602,0.9973282814025879,1.0125176906585693,1.0122761726379395,1.0716965198516846,1.0339696407318115 +500,1.0379970073699951,1.0420663356781006,1.1219966411590576,1.0534121990203857,1.506453275680542,1.1042041778564453,1.0234379768371582,1.0459036827087402,1.0068333148956299,1.0268795490264893 diff --git a/main.py b/main.py new file mode 100644 index 0000000..d107a82 --- /dev/null +++ b/main.py @@ -0,0 +1,39 @@ +from utils.helperFunctions import generate_random_student_list, generate_students_json, print_students_table, run_generations_experiment, run_mutation_experiment, run_mutation_timing_experiment, run_population_experiment, run_population_timing_experiment, run_timing_experiment, translate_file_to_students +from Genetic.StandardGenetic import genetic_algorithm +from Genetic.PreferencesGenetic import genetic_algorithm_with_preferences + +def get_filename(num_students: int, num_criteria: int): + return f"samples\students({num_students})_criteria({num_criteria}).json" + +def test_standard_genetic(students): + # פרמטרים + num_groups = 3 + population_size = 5 + generations = 50 + mutation_rate = 0.3 + + # הרצה + best_solution = genetic_algorithm(students, num_groups, population_size, generations, mutation_rate) + + # הדפסת הפתרון הטוב ביותר + print("\nBest Solution:") + for i, group in enumerate(best_solution, 1): + print(f"Group {i}: {group}") + +def test_preferences_genetic(students): + # פרמטרים + num_groups = 3 + population_size = 5 + generations = 50 + mutation_rate = 0.3 + + # הרצה + best_solution = genetic_algorithm_with_preferences(students, num_groups, population_size, generations, mutation_rate) + + # הדפסת הפתרון הטוב ביותר + print("\nBest Solution:") + for i, group in enumerate(best_solution, 1): + print(f"Group {i} ({len(group)}): {group}") + +if __name__ == "__main__": + students = translate_file_to_students(get_filename(200, 5)) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..df733e0 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +tabulate +pytest \ No newline at end of file diff --git a/samples/students(10)_criteria(3).json b/samples/students(10)_criteria(3).json new file mode 100644 index 0000000..f70dbd8 --- /dev/null +++ b/samples/students(10)_criteria(3).json @@ -0,0 +1,272 @@ +[ + { + "id": 1, + "name": "Student_1", + "preferences": [ + 5, + 10, + 3, + 7 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 71.44 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 7.72 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 98.8 + } + ] + }, + { + "id": 2, + "name": "Student_2", + "preferences": [ + 10, + 1, + 3, + 5 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 80.65 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 0.93 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 34.19 + } + ] + }, + { + "id": 3, + "name": "Student_3", + "preferences": [ + 1, + 8, + 5, + 6 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 85.84 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 1.01 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 20.88 + } + ] + }, + { + "id": 4, + "name": "Student_4", + "preferences": [ + 3, + 5, + 6, + 2 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 74.39 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 9.37 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 0.32 + } + ] + }, + { + "id": 5, + "name": "Student_5", + "preferences": [ + 3, + 2, + 6, + 8 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 79.34 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 6.25 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 61.44 + } + ] + }, + { + "id": 6, + "name": "Student_6", + "preferences": [ + 2, + 7, + 4, + 10 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 11.85 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 8.36 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 99.07 + } + ] + }, + { + "id": 7, + "name": "Student_7", + "preferences": [ + 8, + 5, + 6, + 1 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 64.04 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 3.98 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 95.74 + } + ] + }, + { + "id": 8, + "name": "Student_8", + "preferences": [ + 3, + 10, + 4, + 5 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 39.76 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 6.14 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 29.19 + } + ] + }, + { + "id": 9, + "name": "Student_9", + "preferences": [ + 6, + 8, + 4, + 5 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.71 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 7.84 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 85.77 + } + ] + }, + { + "id": 10, + "name": "Student_10", + "preferences": [ + 5, + 6, + 7, + 8 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 79.05 + }, + { + "name": "Criteria_2", + "type": "0-10", + "value": 3.64 + }, + { + "name": "Criteria_3", + "type": "0-100", + "value": 69.03 + } + ] + } +] \ No newline at end of file diff --git a/samples/students(15)_criteria(1).json b/samples/students(15)_criteria(1).json new file mode 100644 index 0000000..b13146b --- /dev/null +++ b/samples/students(15)_criteria(1).json @@ -0,0 +1,257 @@ +[ + { + "id": 1, + "name": "Student_1", + "preferences": [ + 13, + 3, + 5, + 7 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 46.83 + } + ] + }, + { + "id": 2, + "name": "Student_2", + "preferences": [ + 15, + 12, + 14, + 4 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 42.81 + } + ] + }, + { + "id": 3, + "name": "Student_3", + "preferences": [ + 6, + 14, + 4, + 2 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.6 + } + ] + }, + { + "id": 4, + "name": "Student_4", + "preferences": [ + 8, + 7, + 12, + 13 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 82.21 + } + ] + }, + { + "id": 5, + "name": "Student_5", + "preferences": [ + 2, + 14, + 6, + 13 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 13.65 + } + ] + }, + { + "id": 6, + "name": "Student_6", + "preferences": [ + 11, + 3, + 8, + 9 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 79.12 + } + ] + }, + { + "id": 7, + "name": "Student_7", + "preferences": [ + 10, + 11, + 9, + 1 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 27.85 + } + ] + }, + { + "id": 8, + "name": "Student_8", + "preferences": [ + 6, + 12, + 4, + 10 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 80.09 + } + ] + }, + { + "id": 9, + "name": "Student_9", + "preferences": [ + 15, + 1, + 7, + 10 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 7.75 + } + ] + }, + { + "id": 10, + "name": "Student_10", + "preferences": [ + 4, + 6, + 12, + 9 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 86.32 + } + ] + }, + { + "id": 11, + "name": "Student_11", + "preferences": [ + 12, + 9, + 3, + 7 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 67.04 + } + ] + }, + { + "id": 12, + "name": "Student_12", + "preferences": [ + 10, + 13, + 5, + 2 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 48.08 + } + ] + }, + { + "id": 13, + "name": "Student_13", + "preferences": [ + 2, + 15, + 12, + 11 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 3.87 + } + ] + }, + { + "id": 14, + "name": "Student_14", + "preferences": [ + 11, + 9, + 8, + 6 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 63.09 + } + ] + }, + { + "id": 15, + "name": "Student_15", + "preferences": [ + 3, + 7, + 8, + 1 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 2.92 + } + ] + } +] \ No newline at end of file diff --git a/samples/students(200)_criteria(5).json b/samples/students(200)_criteria(5).json new file mode 100644 index 0000000..4424bd4 --- /dev/null +++ b/samples/students(200)_criteria(5).json @@ -0,0 +1,7402 @@ +[ + { + "id": 1, + "name": "Student_1", + "preferences": [ + 15, + 62, + 183, + 117 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 20.78 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 47.95 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.39 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 1.76 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 63.69 + } + ] + }, + { + "id": 2, + "name": "Student_2", + "preferences": [ + 15, + 80, + 123, + 60 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.93 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 43.87 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.4 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 8.37 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 4.81 + } + ] + }, + { + "id": 3, + "name": "Student_3", + "preferences": [ + 36, + 192, + 7, + 53 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 43.83 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 85.91 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.89 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 14.68 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 76.32 + } + ] + }, + { + "id": 4, + "name": "Student_4", + "preferences": [ + 178, + 105, + 168, + 29 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 62.96 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 98.51 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.36 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 63.04 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 0.62 + } + ] + }, + { + "id": 5, + "name": "Student_5", + "preferences": [ + 100, + 76, + 181, + 133 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 24.78 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.79 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 94.68 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 19.16 + } + ] + }, + { + "id": 6, + "name": "Student_6", + "preferences": [ + 81, + 21, + 165, + 200 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 2.55 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 65.0 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.22 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 21.22 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 20.07 + } + ] + }, + { + "id": 7, + "name": "Student_7", + "preferences": [ + 192, + 85, + 184, + 173 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 42.01 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 62.21 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.08 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 80.79 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 35.32 + } + ] + }, + { + "id": 8, + "name": "Student_8", + "preferences": [ + 103, + 20, + 184, + 39 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 45.8 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 93.38 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.38 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 38.21 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 30.39 + } + ] + }, + { + "id": 9, + "name": "Student_9", + "preferences": [ + 44, + 79, + 25, + 135 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 31.29 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 2.82 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.27 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 77.24 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 73.63 + } + ] + }, + { + "id": 10, + "name": "Student_10", + "preferences": [ + 192, + 119, + 115, + 165 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 64.47 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 49.91 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.05 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 18.75 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 97.16 + } + ] + }, + { + "id": 11, + "name": "Student_11", + "preferences": [ + 192, + 169, + 174, + 177 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 28.15 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 88.84 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.47 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 73.72 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 48.56 + } + ] + }, + { + "id": 12, + "name": "Student_12", + "preferences": [ + 18, + 64, + 102, + 71 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 28.08 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 33.27 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.73 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 10.54 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 28.42 + } + ] + }, + { + "id": 13, + "name": "Student_13", + "preferences": [ + 135, + 117, + 115, + 66 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 29.17 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 39.11 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.18 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 23.15 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 91.61 + } + ] + }, + { + "id": 14, + "name": "Student_14", + "preferences": [ + 91, + 63, + 134, + 198 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 69.04 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 94.97 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.83 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 0.74 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 19.47 + } + ] + }, + { + "id": 15, + "name": "Student_15", + "preferences": [ + 32, + 30, + 39, + 199 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 51.08 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 8.37 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.51 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 72.17 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 25.85 + } + ] + }, + { + "id": 16, + "name": "Student_16", + "preferences": [ + 110, + 124, + 45, + 155 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 92.82 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 51.55 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.1 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 65.42 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 17.79 + } + ] + }, + { + "id": 17, + "name": "Student_17", + "preferences": [ + 124, + 49, + 146, + 105 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 85.1 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 7.81 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.56 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 83.26 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 84.59 + } + ] + }, + { + "id": 18, + "name": "Student_18", + "preferences": [ + 22, + 71, + 78, + 27 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 20.92 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 18.64 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.55 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 94.07 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 4.79 + } + ] + }, + { + "id": 19, + "name": "Student_19", + "preferences": [ + 31, + 16, + 60, + 165 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 63.64 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 3.82 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.31 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 13.9 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 31.55 + } + ] + }, + { + "id": 20, + "name": "Student_20", + "preferences": [ + 29, + 93, + 37, + 49 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 12.15 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 54.26 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.2 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 36.17 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 9.52 + } + ] + }, + { + "id": 21, + "name": "Student_21", + "preferences": [ + 124, + 164, + 58, + 87 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 85.45 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 6.1 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.68 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 94.57 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 97.76 + } + ] + }, + { + "id": 22, + "name": "Student_22", + "preferences": [ + 109, + 80, + 188, + 155 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 76.79 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 94.77 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.05 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 77.65 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 95.93 + } + ] + }, + { + "id": 23, + "name": "Student_23", + "preferences": [ + 165, + 64, + 173, + 86 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 28.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 10.09 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.23 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 31.34 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 44.22 + } + ] + }, + { + "id": 24, + "name": "Student_24", + "preferences": [ + 96, + 44, + 57, + 198 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 4.72 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 43.96 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.37 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 53.28 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 68.47 + } + ] + }, + { + "id": 25, + "name": "Student_25", + "preferences": [ + 184, + 116, + 161, + 32 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 66.77 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 19.03 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.98 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 36.75 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 20.49 + } + ] + }, + { + "id": 26, + "name": "Student_26", + "preferences": [ + 19, + 74, + 183, + 127 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 97.5 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 87.45 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.36 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 62.84 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 92.89 + } + ] + }, + { + "id": 27, + "name": "Student_27", + "preferences": [ + 8, + 50, + 102, + 86 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 48.29 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 61.86 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.72 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 56.18 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 11.53 + } + ] + }, + { + "id": 28, + "name": "Student_28", + "preferences": [ + 149, + 141, + 172, + 64 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 52.79 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 52.82 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.23 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 37.96 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 52.62 + } + ] + }, + { + "id": 29, + "name": "Student_29", + "preferences": [ + 137, + 40, + 117, + 105 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 2.17 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 66.48 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.19 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 90.31 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 65.3 + } + ] + }, + { + "id": 30, + "name": "Student_30", + "preferences": [ + 20, + 64, + 125, + 22 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 39.13 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 94.1 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.58 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 66.76 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 54.17 + } + ] + }, + { + "id": 31, + "name": "Student_31", + "preferences": [ + 101, + 23, + 13, + 163 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 93.39 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 53.89 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.73 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 69.38 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 50.21 + } + ] + }, + { + "id": 32, + "name": "Student_32", + "preferences": [ + 185, + 33, + 27, + 98 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 83.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 44.2 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.12 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 41.72 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 23.94 + } + ] + }, + { + "id": 33, + "name": "Student_33", + "preferences": [ + 52, + 119, + 109, + 81 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 3.07 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 13.59 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.57 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 58.39 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 63.44 + } + ] + }, + { + "id": 34, + "name": "Student_34", + "preferences": [ + 185, + 138, + 95, + 161 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 71.66 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 71.66 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.27 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 99.39 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 4.45 + } + ] + }, + { + "id": 35, + "name": "Student_35", + "preferences": [ + 123, + 163, + 177, + 150 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 22.99 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 36.28 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.61 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 69.7 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 77.91 + } + ] + }, + { + "id": 36, + "name": "Student_36", + "preferences": [ + 141, + 8, + 101, + 93 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 94.56 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 81.65 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.5 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 61.74 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 92.32 + } + ] + }, + { + "id": 37, + "name": "Student_37", + "preferences": [ + 120, + 43, + 147, + 174 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 92.91 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 74.55 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.0 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 73.02 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 21.48 + } + ] + }, + { + "id": 38, + "name": "Student_38", + "preferences": [ + 80, + 6, + 156, + 32 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 97.79 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 83.9 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.44 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 4.26 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 53.09 + } + ] + }, + { + "id": 39, + "name": "Student_39", + "preferences": [ + 5, + 35, + 134, + 149 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 37.03 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 36.3 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.87 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 66.89 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 56.18 + } + ] + }, + { + "id": 40, + "name": "Student_40", + "preferences": [ + 178, + 154, + 47, + 64 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.65 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 95.43 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.76 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 57.64 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 92.74 + } + ] + }, + { + "id": 41, + "name": "Student_41", + "preferences": [ + 37, + 95, + 13, + 100 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 70.55 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 92.53 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.01 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 95.83 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 30.02 + } + ] + }, + { + "id": 42, + "name": "Student_42", + "preferences": [ + 66, + 103, + 81, + 194 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 79.65 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 35.96 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.13 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 78.77 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 10.97 + } + ] + }, + { + "id": 43, + "name": "Student_43", + "preferences": [ + 90, + 146, + 41, + 156 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 88.47 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 57.46 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.6 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 14.41 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 76.39 + } + ] + }, + { + "id": 44, + "name": "Student_44", + "preferences": [ + 94, + 106, + 88, + 98 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 72.62 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 87.99 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.83 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 76.78 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 10.07 + } + ] + }, + { + "id": 45, + "name": "Student_45", + "preferences": [ + 114, + 131, + 50, + 194 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 75.58 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 84.66 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.82 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 80.95 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 96.69 + } + ] + }, + { + "id": 46, + "name": "Student_46", + "preferences": [ + 141, + 125, + 83, + 28 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 32.66 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 66.59 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.09 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 25.21 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 96.2 + } + ] + }, + { + "id": 47, + "name": "Student_47", + "preferences": [ + 184, + 99, + 135, + 42 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.95 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 6.75 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.4 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 85.34 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 34.9 + } + ] + }, + { + "id": 48, + "name": "Student_48", + "preferences": [ + 103, + 155, + 27, + 113 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 11.26 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 73.3 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.56 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 72.25 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 18.88 + } + ] + }, + { + "id": 49, + "name": "Student_49", + "preferences": [ + 36, + 92, + 34, + 188 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 33.9 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 77.49 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.65 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 97.61 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 13.82 + } + ] + }, + { + "id": 50, + "name": "Student_50", + "preferences": [ + 24, + 6, + 78, + 114 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 42.85 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 37.15 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.48 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 40.39 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 79.13 + } + ] + }, + { + "id": 51, + "name": "Student_51", + "preferences": [ + 44, + 1, + 96, + 79 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 80.8 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 96.87 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.26 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 1.24 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 37.17 + } + ] + }, + { + "id": 52, + "name": "Student_52", + "preferences": [ + 92, + 172, + 122, + 57 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 82.08 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 69.46 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.72 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 19.3 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 41.68 + } + ] + }, + { + "id": 53, + "name": "Student_53", + "preferences": [ + 8, + 117, + 125, + 21 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 7.95 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 90.76 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.0 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 21.75 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 91.63 + } + ] + }, + { + "id": 54, + "name": "Student_54", + "preferences": [ + 176, + 11, + 14, + 159 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 77.69 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 83.94 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.5 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 23.26 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 67.52 + } + ] + }, + { + "id": 55, + "name": "Student_55", + "preferences": [ + 163, + 123, + 58, + 157 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 7.47 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 66.93 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.13 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 31.54 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 44.93 + } + ] + }, + { + "id": 56, + "name": "Student_56", + "preferences": [ + 141, + 106, + 154, + 60 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 17.31 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 7.15 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.67 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 55.67 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 20.66 + } + ] + }, + { + "id": 57, + "name": "Student_57", + "preferences": [ + 2, + 115, + 174, + 180 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 83.72 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 9.19 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.23 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 70.32 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 63.56 + } + ] + }, + { + "id": 58, + "name": "Student_58", + "preferences": [ + 174, + 110, + 197, + 176 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 85.9 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 19.67 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.67 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 10.01 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 6.16 + } + ] + }, + { + "id": 59, + "name": "Student_59", + "preferences": [ + 16, + 26, + 114, + 70 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 61.44 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 58.99 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.81 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 83.91 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 62.74 + } + ] + }, + { + "id": 60, + "name": "Student_60", + "preferences": [ + 161, + 107, + 185, + 124 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 83.99 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 73.55 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.64 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 9.5 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 43.09 + } + ] + }, + { + "id": 61, + "name": "Student_61", + "preferences": [ + 50, + 6, + 58, + 88 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 27.12 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 43.37 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.11 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 3.55 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 35.46 + } + ] + }, + { + "id": 62, + "name": "Student_62", + "preferences": [ + 64, + 95, + 85, + 7 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 68.96 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 49.9 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.14 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 45.47 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 16.5 + } + ] + }, + { + "id": 63, + "name": "Student_63", + "preferences": [ + 122, + 14, + 102, + 182 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 2.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 53.68 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.19 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 22.91 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 88.5 + } + ] + }, + { + "id": 64, + "name": "Student_64", + "preferences": [ + 164, + 173, + 21, + 144 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 46.63 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 85.48 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.82 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 2.39 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 2.73 + } + ] + }, + { + "id": 65, + "name": "Student_65", + "preferences": [ + 200, + 23, + 53, + 78 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 71.42 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 23.3 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.29 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 29.06 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 40.24 + } + ] + }, + { + "id": 66, + "name": "Student_66", + "preferences": [ + 35, + 58, + 36, + 128 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 67.32 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 31.41 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.48 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 64.64 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 16.82 + } + ] + }, + { + "id": 67, + "name": "Student_67", + "preferences": [ + 151, + 121, + 7, + 148 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 41.48 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 8.36 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.29 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 74.69 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 67.26 + } + ] + }, + { + "id": 68, + "name": "Student_68", + "preferences": [ + 182, + 39, + 19, + 45 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 57.06 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 51.4 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.43 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 49.79 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 96.79 + } + ] + }, + { + "id": 69, + "name": "Student_69", + "preferences": [ + 145, + 63, + 156, + 177 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 40.44 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 16.89 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.33 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 88.5 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 79.57 + } + ] + }, + { + "id": 70, + "name": "Student_70", + "preferences": [ + 19, + 199, + 52, + 40 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 11.3 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 14.0 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.05 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 14.89 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 85.66 + } + ] + }, + { + "id": 71, + "name": "Student_71", + "preferences": [ + 120, + 51, + 69, + 151 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 41.05 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 6.99 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.42 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 57.19 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 67.12 + } + ] + }, + { + "id": 72, + "name": "Student_72", + "preferences": [ + 171, + 184, + 63, + 188 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 28.49 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 31.67 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.4 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 26.82 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 56.61 + } + ] + }, + { + "id": 73, + "name": "Student_73", + "preferences": [ + 112, + 125, + 38, + 70 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 88.11 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 9.03 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.32 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 22.89 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 16.9 + } + ] + }, + { + "id": 74, + "name": "Student_74", + "preferences": [ + 191, + 19, + 188, + 39 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 97.77 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 6.44 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.57 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 25.57 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 8.15 + } + ] + }, + { + "id": 75, + "name": "Student_75", + "preferences": [ + 120, + 68, + 135, + 136 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 0.45 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 19.06 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.73 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 66.41 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 44.22 + } + ] + }, + { + "id": 76, + "name": "Student_76", + "preferences": [ + 57, + 194, + 179, + 48 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 93.37 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 70.68 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.97 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 92.96 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 38.82 + } + ] + }, + { + "id": 77, + "name": "Student_77", + "preferences": [ + 171, + 64, + 92, + 139 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 65.18 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 36.52 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.16 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 38.09 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 49.81 + } + ] + }, + { + "id": 78, + "name": "Student_78", + "preferences": [ + 153, + 148, + 107, + 116 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 64.78 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 77.25 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.3 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 63.4 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 23.99 + } + ] + }, + { + "id": 79, + "name": "Student_79", + "preferences": [ + 107, + 25, + 160, + 167 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 59.0 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 95.4 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.81 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 80.76 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 30.76 + } + ] + }, + { + "id": 80, + "name": "Student_80", + "preferences": [ + 149, + 142, + 197, + 22 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 57.06 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 19.54 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.09 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 16.35 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 96.79 + } + ] + }, + { + "id": 81, + "name": "Student_81", + "preferences": [ + 2, + 138, + 133, + 96 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 18.3 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 32.72 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.27 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 30.54 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 3.92 + } + ] + }, + { + "id": 82, + "name": "Student_82", + "preferences": [ + 50, + 4, + 66, + 153 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 24.84 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 39.8 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.03 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 36.63 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 57.23 + } + ] + }, + { + "id": 83, + "name": "Student_83", + "preferences": [ + 115, + 41, + 32, + 172 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 34.88 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 33.55 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.34 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 17.39 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 53.39 + } + ] + }, + { + "id": 84, + "name": "Student_84", + "preferences": [ + 17, + 44, + 118, + 151 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 24.6 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 5.55 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.85 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 0.47 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 97.66 + } + ] + }, + { + "id": 85, + "name": "Student_85", + "preferences": [ + 45, + 43, + 180, + 160 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 93.69 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 67.65 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.47 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 87.78 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 43.0 + } + ] + }, + { + "id": 86, + "name": "Student_86", + "preferences": [ + 96, + 199, + 162, + 174 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 68.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 31.76 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.72 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 42.75 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 46.15 + } + ] + }, + { + "id": 87, + "name": "Student_87", + "preferences": [ + 147, + 89, + 155, + 51 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 74.62 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 0.53 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.65 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 66.69 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 21.91 + } + ] + }, + { + "id": 88, + "name": "Student_88", + "preferences": [ + 42, + 35, + 24, + 162 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 61.32 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 68.18 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.25 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 43.92 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 84.52 + } + ] + }, + { + "id": 89, + "name": "Student_89", + "preferences": [ + 81, + 175, + 114, + 58 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 91.64 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 88.19 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.16 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 26.65 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 38.53 + } + ] + }, + { + "id": 90, + "name": "Student_90", + "preferences": [ + 194, + 177, + 50, + 15 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 1.15 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 29.19 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.45 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 79.89 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 99.01 + } + ] + }, + { + "id": 91, + "name": "Student_91", + "preferences": [ + 195, + 162, + 43, + 170 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 7.29 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 78.87 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.06 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 58.94 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 85.91 + } + ] + }, + { + "id": 92, + "name": "Student_92", + "preferences": [ + 6, + 156, + 35, + 134 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 93.52 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 39.4 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.86 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 55.79 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 90.24 + } + ] + }, + { + "id": 93, + "name": "Student_93", + "preferences": [ + 33, + 26, + 70, + 72 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 78.89 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 19.31 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.41 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 31.53 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 87.9 + } + ] + }, + { + "id": 94, + "name": "Student_94", + "preferences": [ + 137, + 103, + 22, + 188 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 86.81 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 30.72 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.62 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 22.67 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 20.63 + } + ] + }, + { + "id": 95, + "name": "Student_95", + "preferences": [ + 181, + 45, + 13, + 83 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 13.36 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 91.39 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.25 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 27.44 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 92.41 + } + ] + }, + { + "id": 96, + "name": "Student_96", + "preferences": [ + 181, + 105, + 38, + 90 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 17.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 37.3 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.72 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 1.41 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 20.82 + } + ] + }, + { + "id": 97, + "name": "Student_97", + "preferences": [ + 150, + 172, + 7, + 57 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 28.68 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 28.26 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.51 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 39.01 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 57.84 + } + ] + }, + { + "id": 98, + "name": "Student_98", + "preferences": [ + 77, + 113, + 2, + 142 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 57.59 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 49.19 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.58 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 84.91 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 4.28 + } + ] + }, + { + "id": 99, + "name": "Student_99", + "preferences": [ + 32, + 58, + 26, + 101 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 80.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 10.51 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.19 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 18.34 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 89.64 + } + ] + }, + { + "id": 100, + "name": "Student_100", + "preferences": [ + 28, + 103, + 152, + 84 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 31.07 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 46.39 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.76 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 61.17 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 54.33 + } + ] + }, + { + "id": 101, + "name": "Student_101", + "preferences": [ + 30, + 125, + 186, + 118 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 87.38 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 89.5 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.37 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 40.24 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 62.22 + } + ] + }, + { + "id": 102, + "name": "Student_102", + "preferences": [ + 27, + 160, + 145, + 113 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 95.56 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 4.0 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.22 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 33.6 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 81.77 + } + ] + }, + { + "id": 103, + "name": "Student_103", + "preferences": [ + 90, + 188, + 35, + 147 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 94.7 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 62.29 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.29 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 79.03 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 96.46 + } + ] + }, + { + "id": 104, + "name": "Student_104", + "preferences": [ + 86, + 35, + 114, + 70 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 80.83 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 31.39 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.93 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 95.6 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 44.92 + } + ] + }, + { + "id": 105, + "name": "Student_105", + "preferences": [ + 77, + 161, + 74, + 100 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 72.58 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 25.35 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.03 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 26.32 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 91.15 + } + ] + }, + { + "id": 106, + "name": "Student_106", + "preferences": [ + 79, + 64, + 103, + 181 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 79.44 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 57.7 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.52 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 82.4 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 55.89 + } + ] + }, + { + "id": 107, + "name": "Student_107", + "preferences": [ + 131, + 89, + 119, + 166 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 33.84 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 53.33 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.73 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 31.73 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 60.15 + } + ] + }, + { + "id": 108, + "name": "Student_108", + "preferences": [ + 27, + 80, + 51, + 79 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 65.65 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 97.31 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.67 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 9.37 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 80.64 + } + ] + }, + { + "id": 109, + "name": "Student_109", + "preferences": [ + 187, + 31, + 172, + 46 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 95.24 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 37.59 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.38 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 93.0 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 8.82 + } + ] + }, + { + "id": 110, + "name": "Student_110", + "preferences": [ + 167, + 161, + 84, + 140 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 69.86 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 90.75 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.81 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 64.25 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 8.14 + } + ] + }, + { + "id": 111, + "name": "Student_111", + "preferences": [ + 112, + 177, + 143, + 79 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 6.76 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 45.2 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.9 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 92.11 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 97.48 + } + ] + }, + { + "id": 112, + "name": "Student_112", + "preferences": [ + 23, + 199, + 56, + 103 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 71.45 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 16.98 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.84 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 38.83 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 20.3 + } + ] + }, + { + "id": 113, + "name": "Student_113", + "preferences": [ + 83, + 30, + 153, + 40 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 6.47 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 19.91 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.64 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 70.13 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 49.94 + } + ] + }, + { + "id": 114, + "name": "Student_114", + "preferences": [ + 77, + 111, + 106, + 27 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 81.25 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 87.4 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.43 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 40.0 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 24.61 + } + ] + }, + { + "id": 115, + "name": "Student_115", + "preferences": [ + 174, + 61, + 99, + 146 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 41.27 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 0.5 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.66 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 69.74 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 47.01 + } + ] + }, + { + "id": 116, + "name": "Student_116", + "preferences": [ + 172, + 97, + 46, + 80 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.22 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 95.62 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.9 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 15.56 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 28.45 + } + ] + }, + { + "id": 117, + "name": "Student_117", + "preferences": [ + 150, + 11, + 52, + 113 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 46.81 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 0.31 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.87 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 62.83 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 52.89 + } + ] + }, + { + "id": 118, + "name": "Student_118", + "preferences": [ + 45, + 49, + 163, + 122 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 68.63 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 77.2 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.33 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 76.79 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 61.64 + } + ] + }, + { + "id": 119, + "name": "Student_119", + "preferences": [ + 55, + 75, + 123, + 37 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 25.78 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 60.19 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.08 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 75.09 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 27.33 + } + ] + }, + { + "id": 120, + "name": "Student_120", + "preferences": [ + 20, + 112, + 108, + 192 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 32.69 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 9.46 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.82 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 20.39 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 78.35 + } + ] + }, + { + "id": 121, + "name": "Student_121", + "preferences": [ + 177, + 167, + 195, + 136 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 60.92 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 3.19 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.13 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 88.97 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 35.14 + } + ] + }, + { + "id": 122, + "name": "Student_122", + "preferences": [ + 124, + 98, + 128, + 30 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 10.9 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 96.17 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.8 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 34.44 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 88.48 + } + ] + }, + { + "id": 123, + "name": "Student_123", + "preferences": [ + 81, + 36, + 98, + 128 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 13.01 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 88.78 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.43 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 1.69 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 13.57 + } + ] + }, + { + "id": 124, + "name": "Student_124", + "preferences": [ + 175, + 128, + 140, + 12 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 43.78 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 45.33 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.42 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 61.77 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 91.09 + } + ] + }, + { + "id": 125, + "name": "Student_125", + "preferences": [ + 110, + 30, + 113, + 44 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 14.73 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 52.27 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.51 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 31.65 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 50.32 + } + ] + }, + { + "id": 126, + "name": "Student_126", + "preferences": [ + 140, + 18, + 5, + 85 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 23.01 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 43.01 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.22 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 3.17 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 85.6 + } + ] + }, + { + "id": 127, + "name": "Student_127", + "preferences": [ + 77, + 18, + 178, + 114 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 53.92 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 86.69 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.74 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 99.85 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 10.96 + } + ] + }, + { + "id": 128, + "name": "Student_128", + "preferences": [ + 70, + 36, + 166, + 18 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 88.62 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 25.54 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.67 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 91.9 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 30.34 + } + ] + }, + { + "id": 129, + "name": "Student_129", + "preferences": [ + 185, + 82, + 42, + 98 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 68.78 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 16.37 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.97 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 43.45 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 85.29 + } + ] + }, + { + "id": 130, + "name": "Student_130", + "preferences": [ + 13, + 34, + 197, + 181 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 5.24 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 34.64 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.53 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 43.05 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 49.66 + } + ] + }, + { + "id": 131, + "name": "Student_131", + "preferences": [ + 18, + 161, + 73, + 125 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 38.03 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 54.51 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.8 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 38.48 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 76.91 + } + ] + }, + { + "id": 132, + "name": "Student_132", + "preferences": [ + 81, + 184, + 98, + 1 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 99.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 94.67 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.63 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 41.25 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 12.11 + } + ] + }, + { + "id": 133, + "name": "Student_133", + "preferences": [ + 110, + 176, + 17, + 81 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 3.15 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 23.39 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.46 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 31.54 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 7.21 + } + ] + }, + { + "id": 134, + "name": "Student_134", + "preferences": [ + 175, + 144, + 10, + 87 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 84.49 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 47.86 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.09 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 33.09 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 15.21 + } + ] + }, + { + "id": 135, + "name": "Student_135", + "preferences": [ + 123, + 11, + 23, + 131 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 78.13 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 15.95 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.48 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 49.15 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 50.93 + } + ] + }, + { + "id": 136, + "name": "Student_136", + "preferences": [ + 135, + 45, + 197, + 32 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 12.95 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 89.69 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.31 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 84.1 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 17.95 + } + ] + }, + { + "id": 137, + "name": "Student_137", + "preferences": [ + 45, + 66, + 4, + 194 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 6.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 5.03 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.83 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 13.18 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 74.89 + } + ] + }, + { + "id": 138, + "name": "Student_138", + "preferences": [ + 68, + 1, + 70, + 69 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 85.28 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 90.67 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.22 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 21.41 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 57.09 + } + ] + }, + { + "id": 139, + "name": "Student_139", + "preferences": [ + 100, + 124, + 167, + 101 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 27.29 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 4.46 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.28 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 96.55 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 2.45 + } + ] + }, + { + "id": 140, + "name": "Student_140", + "preferences": [ + 34, + 144, + 104, + 77 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 6.04 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 58.45 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.53 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 19.08 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 10.35 + } + ] + }, + { + "id": 141, + "name": "Student_141", + "preferences": [ + 20, + 108, + 142, + 56 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 42.4 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 59.27 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.47 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 97.44 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 15.21 + } + ] + }, + { + "id": 142, + "name": "Student_142", + "preferences": [ + 75, + 85, + 132, + 137 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 49.97 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 12.05 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.3 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 58.03 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 77.98 + } + ] + }, + { + "id": 143, + "name": "Student_143", + "preferences": [ + 153, + 137, + 128, + 108 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 51.06 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 30.97 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.05 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 33.13 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 33.16 + } + ] + }, + { + "id": 144, + "name": "Student_144", + "preferences": [ + 115, + 103, + 91, + 128 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 54.76 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 29.64 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.95 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 51.68 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 12.31 + } + ] + }, + { + "id": 145, + "name": "Student_145", + "preferences": [ + 128, + 162, + 191, + 74 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 46.75 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 85.49 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.46 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 83.18 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 70.02 + } + ] + }, + { + "id": 146, + "name": "Student_146", + "preferences": [ + 123, + 192, + 82, + 94 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 34.05 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 98.82 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.28 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 58.78 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 59.1 + } + ] + }, + { + "id": 147, + "name": "Student_147", + "preferences": [ + 170, + 7, + 40, + 27 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 62.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 79.24 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.5 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 52.47 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 67.84 + } + ] + }, + { + "id": 148, + "name": "Student_148", + "preferences": [ + 55, + 182, + 37, + 176 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 99.8 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 17.64 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.78 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 77.11 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 1.08 + } + ] + }, + { + "id": 149, + "name": "Student_149", + "preferences": [ + 161, + 89, + 100, + 68 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 52.57 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 57.47 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.99 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 36.18 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 58.98 + } + ] + }, + { + "id": 150, + "name": "Student_150", + "preferences": [ + 120, + 1, + 5, + 181 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 98.74 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 44.73 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.14 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 55.9 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 97.93 + } + ] + }, + { + "id": 151, + "name": "Student_151", + "preferences": [ + 56, + 121, + 30, + 20 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 83.44 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 20.74 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.17 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 15.65 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 6.69 + } + ] + }, + { + "id": 152, + "name": "Student_152", + "preferences": [ + 36, + 160, + 156, + 85 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 0.7 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 7.41 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.41 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 19.93 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 90.72 + } + ] + }, + { + "id": 153, + "name": "Student_153", + "preferences": [ + 125, + 74, + 73, + 2 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 44.75 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 2.41 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.49 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 95.92 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 96.17 + } + ] + }, + { + "id": 154, + "name": "Student_154", + "preferences": [ + 64, + 169, + 187, + 71 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 18.71 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 39.87 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.31 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 50.34 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 94.12 + } + ] + }, + { + "id": 155, + "name": "Student_155", + "preferences": [ + 120, + 195, + 138, + 38 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 92.98 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 1.51 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.16 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 85.04 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 39.81 + } + ] + }, + { + "id": 156, + "name": "Student_156", + "preferences": [ + 102, + 89, + 136, + 140 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 95.04 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 78.53 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.84 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 34.0 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 33.19 + } + ] + }, + { + "id": 157, + "name": "Student_157", + "preferences": [ + 120, + 134, + 186, + 131 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 48.18 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 32.92 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.56 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 74.78 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 17.81 + } + ] + }, + { + "id": 158, + "name": "Student_158", + "preferences": [ + 93, + 180, + 117, + 1 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 58.74 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 57.17 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.27 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 63.29 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 17.45 + } + ] + }, + { + "id": 159, + "name": "Student_159", + "preferences": [ + 185, + 33, + 165, + 63 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 57.55 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 67.67 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.5 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 65.46 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 10.41 + } + ] + }, + { + "id": 160, + "name": "Student_160", + "preferences": [ + 145, + 97, + 76, + 110 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 39.83 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 74.42 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.81 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 18.91 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 37.33 + } + ] + }, + { + "id": 161, + "name": "Student_161", + "preferences": [ + 162, + 100, + 67, + 92 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 4.44 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 12.45 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.87 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 86.15 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 73.89 + } + ] + }, + { + "id": 162, + "name": "Student_162", + "preferences": [ + 96, + 156, + 180, + 61 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 37.59 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 81.42 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.1 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 79.53 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 29.69 + } + ] + }, + { + "id": 163, + "name": "Student_163", + "preferences": [ + 129, + 121, + 104, + 114 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 58.64 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 78.29 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.08 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 11.36 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 69.13 + } + ] + }, + { + "id": 164, + "name": "Student_164", + "preferences": [ + 64, + 131, + 43, + 32 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 32.18 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 54.54 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.7 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 78.84 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 40.18 + } + ] + }, + { + "id": 165, + "name": "Student_165", + "preferences": [ + 53, + 155, + 89, + 138 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 20.51 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 77.64 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.01 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 20.65 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 2.47 + } + ] + }, + { + "id": 166, + "name": "Student_166", + "preferences": [ + 94, + 27, + 90, + 44 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 58.42 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 17.48 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.26 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 7.01 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 61.34 + } + ] + }, + { + "id": 167, + "name": "Student_167", + "preferences": [ + 100, + 39, + 16, + 196 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 13.65 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 93.2 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.66 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 50.68 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 68.53 + } + ] + }, + { + "id": 168, + "name": "Student_168", + "preferences": [ + 15, + 142, + 159, + 112 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 75.52 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 28.05 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 0.13 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 36.38 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 25.25 + } + ] + }, + { + "id": 169, + "name": "Student_169", + "preferences": [ + 24, + 23, + 87, + 84 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 98.75 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 33.18 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.2 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 10.95 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 80.77 + } + ] + }, + { + "id": 170, + "name": "Student_170", + "preferences": [ + 32, + 140, + 182, + 136 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 53.51 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 21.23 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.84 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 42.12 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 4.64 + } + ] + }, + { + "id": 171, + "name": "Student_171", + "preferences": [ + 73, + 45, + 99, + 52 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 73.19 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 70.38 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.7 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 55.44 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 44.16 + } + ] + }, + { + "id": 172, + "name": "Student_172", + "preferences": [ + 5, + 21, + 24, + 193 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 8.15 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 3.84 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.25 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 9.11 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 33.45 + } + ] + }, + { + "id": 173, + "name": "Student_173", + "preferences": [ + 153, + 88, + 187, + 2 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 3.52 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 1.48 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.94 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 54.05 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 30.81 + } + ] + }, + { + "id": 174, + "name": "Student_174", + "preferences": [ + 59, + 136, + 179, + 119 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 90.18 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 88.36 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.07 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 49.59 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 1.84 + } + ] + }, + { + "id": 175, + "name": "Student_175", + "preferences": [ + 158, + 90, + 20, + 126 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 61.35 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 62.84 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.53 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 65.51 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 57.28 + } + ] + }, + { + "id": 176, + "name": "Student_176", + "preferences": [ + 83, + 54, + 141, + 36 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 15.72 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 82.51 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.29 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 71.13 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 64.35 + } + ] + }, + { + "id": 177, + "name": "Student_177", + "preferences": [ + 134, + 165, + 146, + 72 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 7.32 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 7.18 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.85 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 46.91 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 52.36 + } + ] + }, + { + "id": 178, + "name": "Student_178", + "preferences": [ + 12, + 183, + 153, + 22 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 73.3 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 14.17 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.14 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 7.45 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 82.16 + } + ] + }, + { + "id": 179, + "name": "Student_179", + "preferences": [ + 174, + 145, + 161, + 127 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 12.83 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 19.33 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.48 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 97.61 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 0.76 + } + ] + }, + { + "id": 180, + "name": "Student_180", + "preferences": [ + 21, + 184, + 126, + 16 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 97.32 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 12.76 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.64 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 0.06 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 72.87 + } + ] + }, + { + "id": 181, + "name": "Student_181", + "preferences": [ + 195, + 6, + 57, + 54 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 72.84 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 40.64 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.38 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 12.92 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 38.13 + } + ] + }, + { + "id": 182, + "name": "Student_182", + "preferences": [ + 98, + 160, + 96, + 39 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 12.64 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 0.46 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.3 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 63.2 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 96.2 + } + ] + }, + { + "id": 183, + "name": "Student_183", + "preferences": [ + 59, + 108, + 61, + 62 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 82.15 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 66.77 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.54 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 74.13 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 16.66 + } + ] + }, + { + "id": 184, + "name": "Student_184", + "preferences": [ + 149, + 11, + 156, + 125 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 24.36 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 38.64 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 2.82 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 56.88 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 86.42 + } + ] + }, + { + "id": 185, + "name": "Student_185", + "preferences": [ + 30, + 195, + 108, + 153 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 45.56 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 55.17 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 3.08 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 8.06 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 86.51 + } + ] + }, + { + "id": 186, + "name": "Student_186", + "preferences": [ + 10, + 129, + 113, + 172 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 59.35 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 56.92 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.43 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 60.32 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 82.17 + } + ] + }, + { + "id": 187, + "name": "Student_187", + "preferences": [ + 49, + 150, + 155, + 26 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 66.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 33.59 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 5.02 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 48.71 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 5.15 + } + ] + }, + { + "id": 188, + "name": "Student_188", + "preferences": [ + 28, + 133, + 189, + 70 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 6.15 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 44.97 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.63 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 16.91 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 50.91 + } + ] + }, + { + "id": 189, + "name": "Student_189", + "preferences": [ + 2, + 104, + 101, + 197 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 84.82 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 78.1 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.71 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 52.81 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 70.28 + } + ] + }, + { + "id": 190, + "name": "Student_190", + "preferences": [ + 76, + 187, + 19, + 72 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 32.76 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 21.51 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.68 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 9.25 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 33.39 + } + ] + }, + { + "id": 191, + "name": "Student_191", + "preferences": [ + 13, + 116, + 187, + 161 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 1.95 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 99.43 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 8.9 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 3.62 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 28.37 + } + ] + }, + { + "id": 192, + "name": "Student_192", + "preferences": [ + 101, + 104, + 148, + 8 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 95.69 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 67.61 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.61 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 66.32 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 85.61 + } + ] + }, + { + "id": 193, + "name": "Student_193", + "preferences": [ + 187, + 16, + 30, + 66 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 81.42 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 92.19 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.17 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 28.84 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 34.13 + } + ] + }, + { + "id": 194, + "name": "Student_194", + "preferences": [ + 5, + 119, + 57, + 109 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 2.76 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 37.36 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 6.68 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 4.72 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 33.88 + } + ] + }, + { + "id": 195, + "name": "Student_195", + "preferences": [ + 77, + 9, + 59, + 122 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 45.95 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 48.52 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 4.72 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 67.88 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 61.72 + } + ] + }, + { + "id": 196, + "name": "Student_196", + "preferences": [ + 120, + 119, + 113, + 22 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 89.8 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 75.41 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.08 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 89.67 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 6.07 + } + ] + }, + { + "id": 197, + "name": "Student_197", + "preferences": [ + 196, + 111, + 113, + 71 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 31.09 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 10.16 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 1.21 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 52.12 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 45.82 + } + ] + }, + { + "id": 198, + "name": "Student_198", + "preferences": [ + 96, + 152, + 119, + 30 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 44.73 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 66.53 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.61 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 23.93 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 23.08 + } + ] + }, + { + "id": 199, + "name": "Student_199", + "preferences": [ + 153, + 141, + 196, + 40 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 98.4 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 99.82 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 9.43 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 98.12 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 36.51 + } + ] + }, + { + "id": 200, + "name": "Student_200", + "preferences": [ + 75, + 131, + 27, + 156 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-100", + "value": 36.79 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 31.74 + }, + { + "name": "Criteria_3", + "type": "0-10", + "value": 7.29 + }, + { + "name": "Criteria_4", + "type": "0-100", + "value": 22.93 + }, + { + "name": "Criteria_5", + "type": "0-100", + "value": 14.21 + } + ] + } +] \ No newline at end of file diff --git a/samples/students(50)_criteria(2).json b/samples/students(50)_criteria(2).json new file mode 100644 index 0000000..a93a34e --- /dev/null +++ b/samples/students(50)_criteria(2).json @@ -0,0 +1,1102 @@ +[ + { + "id": 1, + "name": "Student_1", + "preferences": [ + 17, + 25, + 13, + 32 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.6 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 81.37 + } + ] + }, + { + "id": 2, + "name": "Student_2", + "preferences": [ + 15, + 40, + 8, + 29 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.64 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 70.75 + } + ] + }, + { + "id": 3, + "name": "Student_3", + "preferences": [ + 28, + 14, + 49, + 42 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.4 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 74.82 + } + ] + }, + { + "id": 4, + "name": "Student_4", + "preferences": [ + 37, + 10, + 35, + 15 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.59 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 75.93 + } + ] + }, + { + "id": 5, + "name": "Student_5", + "preferences": [ + 41, + 43, + 34, + 21 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.17 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 56.6 + } + ] + }, + { + "id": 6, + "name": "Student_6", + "preferences": [ + 44, + 10, + 39, + 9 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.5 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 70.09 + } + ] + }, + { + "id": 7, + "name": "Student_7", + "preferences": [ + 41, + 45, + 17, + 31 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.12 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 67.07 + } + ] + }, + { + "id": 8, + "name": "Student_8", + "preferences": [ + 50, + 16, + 20, + 37 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.99 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 69.21 + } + ] + }, + { + "id": 9, + "name": "Student_9", + "preferences": [ + 35, + 47, + 46, + 5 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.11 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 98.3 + } + ] + }, + { + "id": 10, + "name": "Student_10", + "preferences": [ + 25, + 50, + 34, + 44 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 56.49 + } + ] + }, + { + "id": 11, + "name": "Student_11", + "preferences": [ + 37, + 10, + 19, + 22 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.14 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 70.1 + } + ] + }, + { + "id": 12, + "name": "Student_12", + "preferences": [ + 33, + 5, + 17, + 2 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.39 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 94.54 + } + ] + }, + { + "id": 13, + "name": "Student_13", + "preferences": [ + 16, + 3, + 4, + 42 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.94 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 69.74 + } + ] + }, + { + "id": 14, + "name": "Student_14", + "preferences": [ + 44, + 45, + 11, + 49 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.65 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 95.75 + } + ] + }, + { + "id": 15, + "name": "Student_15", + "preferences": [ + 28, + 50, + 24, + 40 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.6 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 60.66 + } + ] + }, + { + "id": 16, + "name": "Student_16", + "preferences": [ + 31, + 11, + 40, + 1 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.66 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 97.61 + } + ] + }, + { + "id": 17, + "name": "Student_17", + "preferences": [ + 48, + 18, + 16, + 45 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.81 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 4.22 + } + ] + }, + { + "id": 18, + "name": "Student_18", + "preferences": [ + 33, + 46, + 16, + 45 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.66 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 56.66 + } + ] + }, + { + "id": 19, + "name": "Student_19", + "preferences": [ + 1, + 12, + 45, + 36 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.85 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 93.34 + } + ] + }, + { + "id": 20, + "name": "Student_20", + "preferences": [ + 48, + 42, + 24, + 39 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.93 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 45.99 + } + ] + }, + { + "id": 21, + "name": "Student_21", + "preferences": [ + 22, + 5, + 3, + 14 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.24 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 2.26 + } + ] + }, + { + "id": 22, + "name": "Student_22", + "preferences": [ + 2, + 31, + 35, + 34 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.25 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 43.42 + } + ] + }, + { + "id": 23, + "name": "Student_23", + "preferences": [ + 31, + 32, + 7, + 38 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.96 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 42.74 + } + ] + }, + { + "id": 24, + "name": "Student_24", + "preferences": [ + 26, + 31, + 35, + 13 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.44 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 92.47 + } + ] + }, + { + "id": 25, + "name": "Student_25", + "preferences": [ + 30, + 14, + 43, + 23 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.23 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 33.52 + } + ] + }, + { + "id": 26, + "name": "Student_26", + "preferences": [ + 41, + 29, + 25, + 9 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 64.78 + } + ] + }, + { + "id": 27, + "name": "Student_27", + "preferences": [ + 24, + 43, + 22, + 23 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.32 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 28.71 + } + ] + }, + { + "id": 28, + "name": "Student_28", + "preferences": [ + 32, + 8, + 30, + 14 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.75 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 42.18 + } + ] + }, + { + "id": 29, + "name": "Student_29", + "preferences": [ + 11, + 5, + 38, + 30 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.86 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 36.84 + } + ] + }, + { + "id": 30, + "name": "Student_30", + "preferences": [ + 36, + 17, + 34, + 49 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.71 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 64.81 + } + ] + }, + { + "id": 31, + "name": "Student_31", + "preferences": [ + 42, + 1, + 29, + 20 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.65 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 18.18 + } + ] + }, + { + "id": 32, + "name": "Student_32", + "preferences": [ + 11, + 25, + 23, + 38 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.07 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 78.68 + } + ] + }, + { + "id": 33, + "name": "Student_33", + "preferences": [ + 25, + 32, + 3, + 37 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 26.26 + } + ] + }, + { + "id": 34, + "name": "Student_34", + "preferences": [ + 10, + 41, + 16, + 21 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.81 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 22.11 + } + ] + }, + { + "id": 35, + "name": "Student_35", + "preferences": [ + 48, + 19, + 6, + 37 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.93 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 54.41 + } + ] + }, + { + "id": 36, + "name": "Student_36", + "preferences": [ + 14, + 50, + 46, + 39 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.54 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 27.46 + } + ] + }, + { + "id": 37, + "name": "Student_37", + "preferences": [ + 27, + 12, + 1, + 10 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.1 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 1.82 + } + ] + }, + { + "id": 38, + "name": "Student_38", + "preferences": [ + 25, + 20, + 9, + 11 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.95 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 12.54 + } + ] + }, + { + "id": 39, + "name": "Student_39", + "preferences": [ + 46, + 49, + 6, + 38 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.87 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 98.15 + } + ] + }, + { + "id": 40, + "name": "Student_40", + "preferences": [ + 24, + 2, + 10, + 50 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.27 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 88.98 + } + ] + }, + { + "id": 41, + "name": "Student_41", + "preferences": [ + 18, + 32, + 9, + 11 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.11 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 68.56 + } + ] + }, + { + "id": 42, + "name": "Student_42", + "preferences": [ + 12, + 9, + 36, + 14 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.69 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 88.79 + } + ] + }, + { + "id": 43, + "name": "Student_43", + "preferences": [ + 35, + 26, + 29, + 19 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.38 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 11.22 + } + ] + }, + { + "id": 44, + "name": "Student_44", + "preferences": [ + 29, + 10, + 38, + 48 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.83 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 83.43 + } + ] + }, + { + "id": 45, + "name": "Student_45", + "preferences": [ + 41, + 8, + 38, + 1 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.87 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 30.54 + } + ] + }, + { + "id": 46, + "name": "Student_46", + "preferences": [ + 34, + 36, + 6, + 41 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.41 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 18.34 + } + ] + }, + { + "id": 47, + "name": "Student_47", + "preferences": [ + 5, + 26, + 41, + 10 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.34 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 22.96 + } + ] + }, + { + "id": 48, + "name": "Student_48", + "preferences": [ + 34, + 25, + 43, + 8 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.07 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 39.83 + } + ] + }, + { + "id": 49, + "name": "Student_49", + "preferences": [ + 38, + 24, + 21, + 8 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.02 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 99.26 + } + ] + }, + { + "id": 50, + "name": "Student_50", + "preferences": [ + 17, + 27, + 45, + 32 + ], + "criteria": [ + { + "name": "Criteria_1", + "type": "0-1", + "value": 0.33 + }, + { + "name": "Criteria_2", + "type": "0-100", + "value": 40.87 + } + ] + } +] \ No newline at end of file diff --git a/tests/test_genetic.py b/tests/test_genetic.py new file mode 100644 index 0000000..0e432f8 --- /dev/null +++ b/tests/test_genetic.py @@ -0,0 +1,2 @@ +def test_example_function(): + assert True \ No newline at end of file diff --git a/utils/helperFunctions.py b/utils/helperFunctions.py new file mode 100644 index 0000000..9e244a4 --- /dev/null +++ b/utils/helperFunctions.py @@ -0,0 +1,265 @@ +import random +import csv +import json +import time +from Genetic.PreferencesGenetic import calculate_diversity, genetic_algorithm_with_preferences +from utils.student import Student +from typing import List +from tabulate import tabulate + +def generate_random_student_list(amount: int, criteria: List[dict]) -> List[Student]: + """ + יוצר רשימה של אובייקטי סטודנטים עם נתונים רנדומליים. + + :param amount: כמות הסטודנטים ליצירה (int). + :param criteria: רשימת קריטריונים להגדרת הסטודנטים (List[dict]). + :return: רשימת אובייקטי סטודנטים (List[Student]). + + דוגמא לקריאה: generate_random_student_list(10, [{"name": "GPA", "type": "0-100"}]) יחזיר רשימה של עשרה תלמידים עם ממוצע ציונים בין 0 ל100 ועם העדפות עם מי להיות + """ + return [ + Student({ + "id": i, + "name": f"Student_{i}", + "preferences": generate_random_preferences(1, amount, i), + "criteria": generate_criteria_list(criteria) + }) + for i in range(1, amount + 1) + ] + +def generate_random_preferences(min_val: int, max_val: int, exclude: int) -> List[int]: + """ + יוצר רשימת העדפות רנדומלית לסטודנט, תוך כדי מניעת הכללת ערך מסוים. + """ + valid_values = [num for num in range(min_val, max_val + 1) if num != exclude] + return random.sample(valid_values, 4 if len(valid_values) >= 4 else len(valid_values)) + +def generate_criteria_list(criteria_definitions: List[dict]) -> List[dict]: + """ + יוצר רשימת קריטריונים עם ערכים רנדומליים. + """ + def generate_value(criteria_type: str) -> float: + """ + מייצר ערך רנדומלי בהתבסס על סוג הקריטריון. + """ + types = { + "0-100": (0.0, 100.0), + "0-1": (0.0, 1.0), + "0-10": (0.0, 10.0) + } + if criteria_type not in types: + raise ValueError(f"Unknown criteria type: {criteria_type}") + + min_val, max_val = types[criteria_type] + return round(random.uniform(min_val, max_val), 2) + + criteria_list = [] + for criteria in criteria_definitions: + name = criteria["name"] + criteria_type = criteria["type"] + value = generate_value(criteria_type) + criteria_list.append({"name": name, "type": criteria_type, "value": value}) + + return criteria_list + +def print_students_table(students: List[Student]): + """ + מדפיס טבלה של התלמידים + """ + table_data = [ + [student.id, ', '.join(map(str, student.preferences)), f"{student.get_score():.2f}"] + for student in students + ] + headers = ["ID", "Preferences", "Score"] + print(tabulate(table_data, headers, tablefmt="grid")) + +def generate_students_json(file_name: str = None, num_students: int = 10, num_criteria: int = random.randint(1, 5)) -> None: + """ + מגריל קובץ גייסון עם פרטי תלמידים + """ + if not file_name: + file_name = f"students({num_students})_criteria({num_criteria})" + students = [] + + criteria_template = [ + { + "name": f"Criteria_{i + 1}", + "type": random.choice(["0-1", "0-10", "0-100"]) + } + for i in range(num_criteria) + ] + + for student_id in range(1, num_students + 1): + # מגריל העדפות רנדומליות + preferences = generate_random_preferences(1, num_students, student_id) + + # מגדיל קריטריונים רנדומלים + criteria = generate_criteria_list(criteria_template) + + # יוצר את הגייסון של התלמיד + student_data = { + "id": student_id, + "name": f"Student_{student_id}", + "preferences": preferences, + "criteria": criteria + } + students.append(student_data) + + # שמירה לקובץ גייסון + with open(f"samples/{file_name}.json", "w") as file: + json.dump(students, file, indent=4) + + print(f"Generated {num_students} students and saved to {file_name}") + +def translate_file_to_students(file_name: str) -> List[Student]: + """ + קורא קובץ גייסון ומחזיר את הרשימה של התלמידים בתור אובייקט + """ + try: + with open(file_name, "r") as file: + students_data = json.load(file) + + students = [Student(data) for data in students_data] + return students + except FileNotFoundError: + print(f"שגיאה: לא נמצא קובץ עם השם: '{file_name}'") + return [] + except json.JSONDecodeError: + print(f"שגיאה: נכשל בתרגום הקובץ: '{file_name}'.") + return [] + except Exception as e: + print(f"קרתה שגיאה לא יודעה: {e}") + return [] + +def run_generations_experiment(students: List[Student], num_groups: int, population_size: int, mutation_rate: float, output_file: str): + generations_to_test = range(10, 501, 10) + results = [] + + for generations in generations_to_test: + print(f"Running {generations} generations...") + fitness_scores = [] + for run in range(1, 11): + best_solution = genetic_algorithm_with_preferences(students, num_groups, population_size, generations, mutation_rate) + best_fitness = calculate_diversity(best_solution) + fitness_scores.append(best_fitness) + + results.append([generations] + fitness_scores) + + with open(f"experiments/{output_file}.csv", mode='w', newline='') as file: + fieldnames = ["Generations"] + [f"Run_{i}" for i in range(1, 11)] + writer = csv.writer(file) + writer.writerow(fieldnames) + writer.writerows(results) + + print(f"Experiment completed! Results saved to {output_file}") + +def run_timing_experiment(students: List[Student], num_groups: int, population_size: int, mutation_rate: float, output_file: str): + generations_to_test = range(10, 501, 10) + results = [] + + for generations in generations_to_test: + print(f"Running {generations} generations...") + timing_scores = [] + for run in range(1, 11): + start_time = time.time() + genetic_algorithm_with_preferences(students, num_groups, population_size, generations, mutation_rate) + elapsed_time = time.time() - start_time + timing_scores.append(elapsed_time) + + results.append([generations] + timing_scores) + + with open(f"experiments/{output_file}.csv", mode='w', newline='') as file: + fieldnames = ["Generations"] + [f"Run_{i}" for i in range(1, 11)] + writer = csv.writer(file) + writer.writerow(fieldnames) + writer.writerows(results) + + print(f"Timing experiment completed! Results saved to {output_file}") + +def run_population_experiment(students: List[Student], num_groups: int, generations_size: int, mutation_rate: float, output_file: str): + population_to_test = [5] + list(range(10, 501, 10)) + results = [] + + for population in population_to_test: + print(f"Running {population} population...") + fitness_scores = [] + for run in range(1, 11): + best_solution = genetic_algorithm_with_preferences(students, num_groups, population, generations_size, mutation_rate) + best_fitness = calculate_diversity(best_solution) + fitness_scores.append(best_fitness) + + results.append([population] + fitness_scores) + + with open(f"experiments/{output_file}.csv", mode='w', newline='') as file: + fieldnames = ["Populations"] + [f"Run_{i}" for i in range(1, 11)] + writer = csv.writer(file) + writer.writerow(fieldnames) + writer.writerows(results) + + print(f"Experiment completed! Results saved to {output_file}") + +def run_population_timing_experiment(students: List[Student], num_groups: int, generations_size: int, mutation_rate: float, output_file: str): + population_to_test = [5] + list(range(10, 501, 10)) + results = [] + + for population in population_to_test: + print(f"Running {population} population...") + timing_scores = [] + for run in range(1, 11): + start_time = time.time() + genetic_algorithm_with_preferences(students, num_groups, population, generations_size, mutation_rate) + elapsed_time = time.time() - start_time + timing_scores.append(elapsed_time) + + results.append([population] + timing_scores) + + with open(f"experiments/{output_file}.csv", mode='w', newline='') as file: + fieldnames = ["Populations"] + [f"Run_{i}" for i in range(1, 11)] + writer = csv.writer(file) + writer.writerow(fieldnames) + writer.writerows(results) + + print(f"Experiment completed! Results saved to {output_file}") + +def run_mutation_experiment(students: List[Student], num_groups: int, generations_size: int, population_size: int, output_file: str): + mutation_rate_to_test = list(range(5, 101, 5)) + results = [] + + for mutation_rate in mutation_rate_to_test: + print(f"Running {mutation_rate}% population...") + fitness_scores = [] + for run in range(1, 11): + best_solution = genetic_algorithm_with_preferences(students, num_groups, population_size, generations_size, mutation_rate/100) + best_fitness = calculate_diversity(best_solution) + fitness_scores.append(best_fitness) + results.append([f"{mutation_rate}%"] + fitness_scores) + + with open(f"experiments/{output_file}.csv", mode='w', newline='') as file: + fieldnames = ["Mutation Rate"] + [f"Run_{i}" for i in range(1, 11)] + writer = csv.writer(file) + writer.writerow(fieldnames) + writer.writerows(results) + + print(f"Experiment completed! Results saved to {output_file}") + +def run_mutation_timing_experiment(students: List[Student], num_groups: int, generations_size: int, population_size: int, output_file: str): + mutation_rate_to_test = list(range(5, 101, 5)) + results = [] + + for mutation_rate in mutation_rate_to_test: + print(f"Running {mutation_rate}% population...") + timing_scores = [] + for run in range(1, 11): + start_time = time.time() + genetic_algorithm_with_preferences(students, num_groups, population_size, generations_size, mutation_rate/100) + elapsed_time = time.time() - start_time + timing_scores.append(elapsed_time) + results.append([f"{mutation_rate}%"] + timing_scores) + + with open(f"experiments/{output_file}.csv", mode='w', newline='') as file: + fieldnames = ["Mutation Rate"] + [f"Run_{i}" for i in range(1, 11)] + writer = csv.writer(file) + writer.writerow(fieldnames) + writer.writerows(results) + + print(f"Experiment completed! Results saved to {output_file}") \ No newline at end of file diff --git a/utils/student.py b/utils/student.py new file mode 100644 index 0000000..3549045 --- /dev/null +++ b/utils/student.py @@ -0,0 +1,47 @@ +class Student: + """ + מחלקה לייצוג סטודנט, הכוללת נתונים כמו מזהה, שם, העדפות וקריטריונים לחישוב ציון. + """ + def __init__(self, student_data: dict): + """ + אתחול אובייקט סטודנט. + + :param student_data: מילון עם פרטי הסטודנט הכוללים: + - id: מזהה הסטודנט (int). + - name: שם הסטודנט (str). + - preferences: רשימת העדפות (ברירת מחדל: רשימה ריקה). + - criteria: רשימת קריטריונים לחישוב ציון (ברירת מחדל: רשימה ריקה). + """ + self.id = student_data.get("id") + self.name = student_data.get("name") + self.preferences = student_data.get("preferences", []) + self.criteria = student_data.get("criteria", []) + + def get_score(self) -> float: + """ + מחשב את הציון הכולל של הסטודנט על בסיס הקריטריונים. + + :return: הציון הכולל (float). + """ + total_score = 0.0 + for criteria in self.criteria: + criteria_type = criteria.get("type") + value = float(criteria.get("value", 0)) + + # חישוב הציון לפי סוג הקריטריון + if criteria_type == "0-1": + total_score += value * 100 + elif criteria_type == "0-10": + total_score += value * 10 + elif criteria_type == "0-100": + total_score += value + + return total_score + + def __repr__(self): + """ + מציג את האובייקט בפורמט קריא. + + :return: מחרוזת המייצגת את האובייקט. + """ + return f"Student(*{self.id}*, {self.preferences}, {self.get_score()})"