Описание проекта
Проект подсчитывает, сколько пищи должно иметь лошадь, это основано на огромном числе переменных. Пользователь вводит информацию о каждой лошади и предпочтительных кормах. Каждый корм имеет несколько видов витаминов и питательных веществ.
1 лошадь использует несколько типов фидов.
Что у нас
У нас есть минимальные и максимальные значения для каждого питательного вещества, которое требуется конкретной лошади.
У нас есть контент для одного или нескольких разных типов кормов, это может быть около 20-30 различных питательных веществ и витаминов на корм. У нас также есть цена и мы хотим использовать это, чтобы сэкономить деньги.
(Расчет только для одной лошади в то время)
Пример
Мы используем A, B и C для представления питательных веществ.
Лошадь: (A, B, C) MIN (30,7,9) MAX (35,9,17)
Feed 1 содержит: (A, B, C) ЗНАЧЕНИЯ (16,2,3)
Подача 2 содержит: (A, B, C) ЗНАЧЕНИЯ (0,4,9)
Рабочим решением будет 2 * Feed1 и 1 * Feed2.
Проблема
Я хочу, чтобы система вычислила идеальный баланс на основе минимальных/максимальных значений для каждого питательного вещества и по-прежнему удерживала цену как можно ниже.
Рабочее решение
Если я сначала вычислил максимально возможную сумму для каждого фида, можно будет рандомизировать, пока это не сработает. И тогда пользователь сможет изменить количество, если оно не идеально.
<?php
function randomizerLoop(){
foreach($feeds as $feed){
$max['A'] = floor($horse_max['A']/$feed['A']);
$max['B'] = floor($horse_max['B']/$feed['B']);
$max['C'] = floor($horse_max['C']/$feed['C']);
$maxRand = MIN($max['A'], $max['B'], $max['C']);
$amounts[$feed['id']] = rand(0, $maxRand);
}
return $amounts;
}
?>
Этот код будет продолжать пытаться, пока он не получит рабочий баланс, вместо того, чтобы использовать некоторый классный расчет, чтобы найти баланс с первой попытки.
Мне просто нужно понять, как его решить без rand()
.
Дополнительная информация
Каждый пользователь сможет добавить бесконечное количество лошадей, но сможет рассчитывать только на одну лошадь в данный момент (на данный момент).
Также можно будет добавить бесконечное количество фидов (определенных пользователем), и каждый фид может иметь 20-30 переменных. В зависимости от решения это, вероятно, потребует предела подачи для каждого автоматического расчета.
Было бы много комбинаций, если мы используем 20 разных каналов, 20-30 переменных для каждого фида, а также когда мы определяем сумму в int вместо просто логических.