请教一个算法的问题(200分)

  • 主题发起人 主题发起人 porsche
  • 开始时间 开始时间
P

porsche

Unregistered / Unconfirmed
GUEST, unregistred user!
<p>  小弟想编一个饲料配方软件,设计了三个表(如下):<br>
饲料标准—表feedbz(内容下省略)<br>
</p>
<table id="GenTable" border=1 cellpadding="0" cellspacing="0">
<tr>
<th>标准名称</th>
<th>代谢能</th>
<th>粗蛋白</th>
<th>钙</th>
<th>总磷</th>
<th>有效磷</th>
<th>蛋氨酸</th>
<th>蛋+胱</th>
<th>赖氨酸</th>
</tr>
<tr>
<td height="15">猪</td>
<td height="15">2.9000</td>
<td height="15">38.0000</td>
<td height="15">3.5000</td>
<td height="15">1.0000</td>
<td height="15">0.0000</td>
<td height="15">0.0000</td>
<td height="15">0.0000</td>
<td height="15">2.8000</td>
</tr>
<tr>
<td>蛋用鸡饲养标准</td>
<td>2.8000</td>
<td>16.5000</td>
<td>0.8500</td>
<td>0.0000</td>
<td>0.4500</td>
<td>0.3300</td>
<td>0.6000</td>
<td>0.6400</td>
</tr>

</table>
<p>饲料原料总表—表feedyl(每种原料的营养成份比例%,内容很多下省略)<br>
</p>
<table id="GenTable" border=1 cellpadding="0" cellspacing="0">
<tr>
<th>名称</th>
<th>价格</th>
<th>最小值</th>
<th>最大值</th>
<th>比例</th>
<th>代谢能</th>
<th>粗蛋白</th>
<th>钙</th>
<th>总磷</th>
<th>有效磷</th>
<th>蛋氨酸</th>
<th>蛋+胱</th>
<th>赖氨酸</th>
</tr>
<tr>
<td>石粉 (38%)</td>
<td>1.00</td>
<td>1.00</td>
<td>10.00</td>
<td>0.00</td>
<td>0.00</td>
<td>0.00</td>
<td>38.00</td>
<td>0.14</td>
<td>0.14</td>
<td>0.00</td>
<td>0.00</td>
<td>0.00</td>
</tr>
<tr>
<td>菜籽粕</td>
<td>4.00</td>
<td>4.00</td>
<td>40.00</td>
<td>0.00</td>
<td>1.77</td>
<td>38.60</td>
<td>0.65</td>
<td>1.07</td>
<td>0.42</td>
<td>0.63</td>
<td>1.50</td>
<td>1.30</td>
</tr>
<tr>
<td>大豆饼(42%)</td>
<td>7.00</td>
<td>7.00</td>
<td>70.00</td>
<td>0.00</td>
<td>2.64</td>
<td>42.00</td>
<td>0.30</td>
<td>0.49</td>
<td>0.24</td>
<td>0.59</td>
<td>1.20</td>
<td>2.38</td>
</tr>
<tr>
<td>大豆粕</td>
<td>1.50</td>
<td>8.00</td>
<td>80.00</td>
<td>0.00</td>
<td>2.43</td>
<td>43.00</td>
<td>0.32</td>
<td>0.61</td>
<td>0.31</td>
<td>0.64</td>
<td>1.30</td>
<td>2.45</td>
</tr>
</table>
<p>选定后的饲料原料表(基本同上表)—表newyl(每种原料的营养成份比例%,内容很多下省略)<br>
</p>
<table id="GenTable" border=1 cellpadding="0" cellspacing="0">
<tr>
<th>名称</th>
<th>价格</th>
<th>最小值</th>
<th>最大值</th>
<th>比例</th>
<th>代谢能</th>
<th>粗蛋白</th>
<th>钙</th>
<th>总磷</th>
<th>有效磷</th>
<th>蛋氨酸</th>
<th>蛋+胱</th>
<th>赖氨酸</th>
</tr>
<tr>
<td>石粉 (38%)</td>
<td>1.00</td>
<td>1.00</td>
<td>10.00</td>
<td>0.00</td>
<td>0.00</td>
<td>0.00</td>
<td>38.00</td>
<td>0.14</td>
<td>0.14</td>
<td>0.00</td>
<td>0.00</td>
<td>0.00</td>
</tr>
<tr>
<td>菜籽粕</td>
<td>4.00</td>
<td>4.00</td>
<td>40.00</td>
<td>0.00</td>
<td>1.77</td>
<td>38.60</td>
<td>0.65</td>
<td>1.07</td>
<td>0.42</td>
<td>0.63</td>
<td>1.50</td>
<td>1.30</td>
</tr>
<tr>
<td>大豆饼(42%)</td>
<td>7.00</td>
<td>7.00</td>
<td>70.00</td>
<td>0.00</td>
<td>2.64</td>
<td>42.00</td>
<td>0.30</td>
<td>0.49</td>
<td>0.24</td>
<td>0.59</td>
<td>1.20</td>
<td>2.38</td>
</tr>
<tr>
<td>大豆粕</td>
<td>1.50</td>
<td>8.00</td>
<td>80.00</td>
<td>0.00</td>
<td>2.43</td>
<td>43.00</td>
<td>0.32</td>
<td>0.61</td>
<td>0.31</td>
<td>0.64</td>
<td>1.30</td>
<td>2.45</td>
</tr>
</table>
<p>   (以上除价格外,几乎为%)</p>
<p></p>
<p>原理是先选定或手工设定标准(如粗蛋白含量为40%,赖氨酸含量为3%等,不一定非要等于[标准],不过要近似等于,<br>
每种原料不能超过最小用量%最大用量%),然后调整每种原料的配合比例,算出最低的价格。小弟忙了几天也弄不<br>
出一个好的算法,太糗了:),特请教大富翁的高手们。先谢了!</p>
<p></p>
 
太复杂了 @!@
 
线性规划怎么样?以前学过,早忘了 :((
 
一个一个地定位,换照公式加减乘除一个一个地算,虽然有点麻烦,
但最终都是会算出来的,不要灰心啊.
 
有没有肯花点时间的高手啊,帮帮忙!
 
不用,现在计算机这么快,内存这么大(妈的,又跌了!!!)
用贪心算法(就是穷举算法)就行了,
线性规划也只是逼近而已。
 
几位,别说风凉话了 :)帮帮忙啊!
 
不是说了么:用贪婪法,自己找本程序设计的书,照这算法自己编吧!
 
若是个项目什么的我到可以具体做一下!
因为需求分析仅仅这几句话很难弄清楚其间的关系!?
 
动态规划
贪心法
A*
实在不会
穷举法
 
真的不是说风凉话,就是用穷举法比较方便,
要不你就用动态规划。
 
再给你一个提示,用数组,一个数据库的每个记录的值可以用一个二维的数组来表示,
你可以用二维进行定位和计算,非常方便,
如你要把一个记录的所有字段的值加起来:
with table1 do
begin
locate(xxx,vararrayof([m,n]),[locaseinsensitive,loPartialKey]);
edit;
for n:=1 to 12 do B5[m,n]:=fields[n].value;
x:=0; for n:=1 to 12 do x:=x+b5[m,n]; b5[m,13]:=x;
fields[13].value:=b5[m,13]; //把所有字段的值付到第13个字段去
end;
 
算法分析真的很重要!
 
我同意用穷举,方法如下:
for a=最小用量 to 最大用量 do //根据精度要求,设定步距!
for b=最小用量 to 最大用量 do
for c=最小用量 to 最大用量 do
begin
判断每种元素是否够量
如果够再算总价格
.......
end;
这样可以试出所有的可能值,可以得出总价格最小的值。
 
您可以考虑使用MATLAB来解决。
 
这是一个多目标规划问题,你可以参看<<运筹学>>的书籍,另外在<<电脑爱好者>>某期的擂台赛上有类似的程序
 
同意newstone
规划问题太复杂了
 
还有没人进来啊!不然我要给分了!
 
哎,又一个执著的。
老杨我已经搞了好几年了。
这个问题已经约定俗成,用线性规划或目标规划,相关文章极其多。

我现在使用的是线性规划法。
以前用VB时候写的算法,作成了COM部件后调用的,一直没时间改写成
Pascal程序。现在用Delphi作的程序都快完成了。

有兴趣的话多联系,难得碰到,有缘!

 
算了,各位,把分给你们算了,我的QQ是4719373 欢迎联系!
 
后退
顶部