у нас есть около 1000 свободных мест для наших лекций в нашем унисе, и потребовалось около 2000 мест (возможно, 500 студентов требовали по 4 места).
Я разрабатываю webapp с CakePHP, который позволяет учащимся составлять список желаний и вводить 4 лекции на блок с приоритетами от 1 до 4. (Затем это входит в базу данных MySQL)
Теперь выполняется веб-интерфейс, выполняются действия администратора (добавлять лекции, добавлять лекторов и т. Д.). Осталось только написать алгоритм распределения.
Как мне лучше всего это сделать? MySQL-скрипт кажется полезным, но mysql не очень дружелюбен, когда дело доходит до циклов и if-конструкций, не так ли?
Было бы разумно экспортировать данные где-нибудь и позволить другому языку справиться с этой проблемой?
Изменить: dnagirl запросил дополнительную информацию об алгоритме: у нас нет бизнес-правил для алгоритма. Мы адаптировали существующее (очень дорогое) приложение от кого-то другого в другом университете, у которого есть правила, которые мы только что адаптировали.
То, что он делает (и то, что я пытаюсь клонировать, чтобы сохранить большую плату за семестр), заключается в следующем:
Я знаю, что этот алгоритм – не лучшее решение, но я думал, что сейчас буду клонировать его, а может быть, после этого буду работать над улучшением логики / возможностей.
Вероятно, вам нужен какой-то генетический алгоритм:
Вам нужно будет выполнить несколько тестов и настроить весы, чтобы понять это правильно.
MySQL на самом деле не очень подходит для этого; вам лучше решить это на PHP, а затем упорствовать в один ход. Если производительность недостаточно, вы можете даже рассмотреть возможность ее реализации на C ++, но я предлагаю вам сначала попробовать PHP и посмотреть, достаточно ли это. Это не похоже на то, что вы будете запускать это каждые 2 секунды.