项目描述
该项目计算马需要摄入多少食物,这基于许多变量。用户输入有关每匹马和首选饲料的信息。每种饲料都有多种类型的维生素和营养物质。
1匹马使用多种类型的饲料。
我们拥有什么
我们拥有特定马匹所需每种营养素的最小和最大值。
我们拥有一个或多个不同类型的饲料的内容,每种饲料可能有大约20-30种不同的营养素和维生素。我们还拥有价格,并希望使用它来节省资金。
(每次只针对一匹马进行计算)
示例
我们使用A、B和C表示营养素。
马需要:(A,B,C)MIN(30,7,9)MAX(35,9,17)
饲料1包含:(A,B,C)VALUES(16,2,3)
饲料2包含:(A,B,C)VALUES(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 个变量,同时又以 整数 而非 布尔值 来定义数量,那么就会有很多组合。