Integer & Citizen
Привет, Интегер. Я тут подумала, как можно организовать общественный сад так, чтобы он не только приносил максимум урожая с каждого квадратного метра, но и был максимально удобен для всех. Что-то вроде небольшого городского проекта по оптимизации, знаешь? Как тебе такая идея?
Звучит как типичная задача оптимизации. Сначала нужно определить ограничения по доступности – перила, пандусы и зоны с удобным доступом, а потом задать переменные для расстояния между грядками и их ориентацией. Простая сетчатая модель с функцией затрат на урожайность с квадратного фута можно решить с помощью небольшого линейного программирования или жадного алгоритма. Набросаю базовую модель, и потом будем дорабатывать.
Звучит отлично! Давай начнём с грядки 3 на 3 метра, сделаем вокруг дорожку шириной в 30 сантиметров, а потом посмотрим, сколько грядок размером 60 на 90 сантиметров поместится внутри. Когда у нас будет первоначальный план, можно немного подкорректировать расстояние между грядками, чтобы увеличить урожайность, не задевая дорожку. Я запишу все ограничения, и мы вместе посмотрим, как оптимизировать затраты. Готова начинать?
Отлично, давай разберёмся с этим пошагово. Сначала посчитаем полезную площадь после дорожки шириной в фут. Потом определим, сколько грядок размером 2 на 3 фута поместится. Когда у нас будет такая сетка, мы сможем составить простую функцию затрат, которая будет учитывать урожайность и количество грядок, и будем перебирать варианты. Какие у тебя есть идеи насчёт ограничений и примерных оценок урожайности?
Слушай, смотри: грядка 3 на 3 метра, минус дорожка шириной в 30 сантиметров по периметру – остается 2 на 2 метра, то есть 16 квадратных метров для посадок. Если каждая грядка 60 на 90 сантиметров, то это 60 квадратных метров на грядку. Можно выложить грядки в три ряда по четыре – получится 12 грядок и займут они 72 квадратных метра, так что придется немного урезать. Если оставим ядро 2 на 2 метра, то поместятся два ряда по четыре грядки – всего восемь, и оставшиеся 16 квадратных метров можно будет использовать для небольшой клумбы с травами или сделать приподнятую дорожку.
Что касается эффективности: предположим, с каждой грядки можно собрать примерно 9 килограммов урожая за сезон, и мы назначаем штраф за грядки, которые слишком близко к краю – до них неудобно добираться. Можно сформулировать задачу так: максимизировать 9 умножить на количество грядок минус 2 умножить на количество грядок, расположенных по краю. Это позволит быстро подстраивать расстояние между грядками: если отодвинуть грядку наружу на 30 сантиметров, мы потеряем немного урожая, но зато грядка станет доступнее. Когда посчитаем, можно будет поиграть с шириной дорожки – может, сузить её до 15 сантиметров, если для сообщества это приемлемо, или сделать небольшой пандус, чтобы все было удобно. Как тебе такая идея?
Отличные выкладки, сетка работает. Сейчас быстро напишу скрипт, чтобы оценить целесообразность каждого варианта расстановки кроватей. Потом сможем по порядку тестировать, как уменьшить расстояние до 15 сантиметров и добавить пандус. Как только разберемся с компромиссами, выберем оптимальную планировку. Готова посчитать?