|
发表于 2009-3-31 12:55:06
|
显示全部楼层
来自: 中国北京
看看我的思路:(绝对原创)很多专家认为是“疯狂的思路”
说明:以下技术在“智能二代”饲料软件中基本上采用自动运行功能,不需要软件使用者掌握,仅供技术交流之用.
1,数据索引
“智能二代”软件采用数据索引技术来提取营养需求标准。目的有两个:一是为提取数据更方便(操作简单)。二对提取的类型容易被软件识别。现在的”智能二代”软件不仅可以配置单胃、双胃的动物饲料,而且还可以对人类的营养配餐进行精确的计算。软件中的配方算法是通用的,唯有配方筛选时需要自动分辨单胃、双胃还是人类的营养配餐。故此数据索引主要是为配方筛选而准备的。
“智能二代”软件的数据索引采取是最高10层索引方式,主要形式如下:
1
猪
11
生长育肥猪《瘦肉型》
111
1-5公斤 仔猪
112
5-10公斤 仔猪
113
10-20公斤 仔猪
114
20-35公斤 生长猪
115
35-60公斤 生长猪
116
60-90公斤 肥育猪
12
生长育肥猪
121
5-15公斤(乳猪)
122
通过上面的例子,很容易就能掌握上面数据索引的制作方法。会了“智能二代”软件数据索引的制作方法就可以在软件中添加各个种类的营养需求了。10层索引方式从理论上讲可以添加超过十亿营养需求。
2,计算精度
在最初的“智能二代”软件中我采用的是双精度计算,偶然的一个机会发现取小数点后的十为位同双精度计算配方所得的结果差别微小,为了微小的差别而耗费宝贵的内存很不值得。所以现在“智能二代”软件采取自定义的方式,让用户根据自己电脑配置进行设置。为了避免产生错误,通过软件给出了最小值。在2008.2.28版本中非注册用户不能修改.
3,温度计算
根据温度生成各项营养需求其实是一个非常成熟的理论,算法编写也很简单,这里只介绍一下温度生成的参数截面.根据温度生成各项营养需求这个功能在试用版中被禁止使用.
上面的数据修改需要密码授权
4,根据实际生长生成营养需求
根据实际生长生成营养需求是提高养殖效益的一个很好的方法,通过数据索引,综合考虑同一种类所有的数据很容易就计算出某一点的营养需求量既实际生长生成营养需求.
5,配方筛选
配方筛选是这么多年一直困绕我的问题,困难在于始终有按下葫芦浮起瓢的感觉.以前我试用过十几个方法解决,但结果一直不令我满意.在升级到2008.2.28版本前,终于解决了这个问题.可能同我的长期思考、运气有关系。筛选的结果超出了我的最大预期。配方筛选问题解决了,软件中的梯度计算实际成了个多余的功能。
6,梯度计算
梯度计算是针对特殊配方计算而设定的。举个例子说明一下:假如配置16%蛋白的饲料,而所有的原料的蛋白含量都小于16%,软件该怎么办?为了解决这个特殊的配方问题,“智能二代”软件加入了梯度计算功能。在2008.2.28版本梯度计算功能仍然保留。
7,原料限量
原料限量是我最不想在“智能二代”软件中加入的功能,但在2008.2.28版本我加入了,因为我惹不起这个行业的传统势力!在”智能二代”软件中原料限量功能可用、可不用。具体情况,根据用户的习惯而定。
8,饲料软件智能化问题
智能化其实并不复杂,只要通过巧妙的构思,编写难度很一般。在“智能二代”软件中很多地方体现智能化。我举的简单的例子:2008.2.28版本引入了经验阐述问题,只要是是设计出格式来,让计算机读懂,一切都完事大吉了。在这种阐述中不需要多么详细,把人人共知的知识告诉电脑就可以了。
9,自动运行
在“智能二代”软件以前版本有个自动运行功能。每天只要打开计算机,不需任何操作,就能计算出所需的饲料配方。现在配方筛选算法过关,实现这个功能100%没有问题了。由于在升级过程中,我删除了大部分识别人机操作源码,在新版中这个功能不能运行了。
10,配方计算算法
“智能二代”软件的配方计算算法是我最得意的,这个算法是一个通用算法,它可以计算单胃、双胃动物和人的营养配餐。由于这个算法具有保密性,在此不进行全部详细的介绍,只介绍”智能二代”软件算法最基本的的原理之一:优先级。
“智能二代”软件算法最基本的的原理:是对营养需求(目标)数据进行优先级处理。例如:对常规饲料配方的计算中,首先考虑蛋白,再计算能量,再计算钙、磷等等。这个优先级数据设定是由软件中的数据文件所决定的,也就是说,任何软件使用者,都可以根据自己的想法进行优先级设定。
在能量的优先级的设定上,可能有些人会有疑问,猪、鸡和反刍动物的能量含义各不相同,应该如何设置?其实处理这个问题很简单。软件在计算前先在能量数据段进行搜索并判断是否为“0”?假如为“0”,继续搜索,直到搜到大于“0” 的数据,并把此数据作为能量需求量。这样大家就会明白了,在能量的优先级的设定上,通过把猪、鸡和反刍动物的能量全设定上,软件就可以分辨出所计算的配方是猪、鸡还是反刍动物的配方。(总磷和有效磷的原理同上)
软件总是先处理优先级高的设定,当这个级别处理完或无法处理,软件才能处理下一个优先级的数据。通过了解数据优先级的处理过程,很容易得出这样的结论,只要有一个优先级被软件处理,就会计算出配方,这也是”智能二代”软件计算配方时不会产生无解的原因。
软件在处理优先级数据时,采用无弹性计算方式。例如:在蛋白这个优先级上,假如蛋白需求是16%,软件就根据16%进行计算。这样才能保证配方营养结果的唯一性和确定性。”智能二代”软件在计算配方时不需要数据建模的原因就在这里。有了唯一性和确定性作基础,”智能二代”软件才能有根据温度和动物的实际生长计算配方的功能。
11,这个行业需要的是创新精神
......................................................................
“智能二代”软件是本着给个数据就运行的原则编写的,所以对数据要求不高。只要把有营养标准,软件就会根据标准计算出配方。大量的工作是由软件中编码所形成的算法进行完成的,为此总共编写了五万多条。
12,(续)连续筛选
连续筛选功能终于完成了,具体使用方法,大家试一试就应该会使用.这个功能很难编,主要原因是牵涉的内容太多,每种动物,同一动物不同生长阶段的筛选要求不同,所以连续筛选是一个动态过程.假如配方编号处出现"推荐",软件结束这个动态过程,完成连续筛选.真的很高兴!
原想配方计算后软件自动进行连续筛选(编写起来很简单),思来想去还是把这个主动权交给用户.
13,(续)超强的计算能力
在计算单胃动物饲料时,”智能二代”饲料软件计算11%、12%的蛋白饲料配方非常轻而易举。在计算反刍动物饲料时,计算7%、8%蛋白的饲料更不在话下。这一点超出了我在软件设计之初的设计要求。我收集了所有能收集到的饲料软件,通过对比发现,能达到”智能二代”这样超强计算能力的,好象没有. |
|