找到最大的i& j使用for循环

时间:2011-03-18 14:17:49

标签: php

找到i&的最大价值的最佳组合j,但不超过金额,任何想法?

$amount = 20000; 
$max_area = 1000; 

for ($i=0; $i<=100; $i+=0.1) { 

   for ($j=0; $j<=100; $j+=0.1) { 

       $area = $i*$j; 
       $cost = $i*1200 + ($i+$j*2) * 2500; 

       if($cost > $amount && $area > $max_area) { 
           break; 
       } 
   } 
}

2 个答案:

答案 0 :(得分:2)

您可能最好找到一个参数化公式,该公式可以测量任何特定i和j的“效率”,然后使用分析方法找到绝对最大值,再次参数化。你可以在纸上完成所有这些。然后将生成的公式转换为PHP。

答案 1 :(得分:0)

您只是尝试实施约束优化问题解决方案。

如果你把代码拿走一分钟,让我们一起检查。

您的模型看起来如下(如果您提供了可能有用的背景信息)

  

成本= 1200 * i + 2 *(i + j)+2500

     

area = i * j

     

最大化,受限于

     

成本&lt; max_amount(但您在if语句中键入了费用&gt;金额)

     

区域&gt; max_area

您应该使用分析方法来解决它。由于用单纯形解决不够简单(因为它不是线性的),你必须去heuristics