白绒山羊远程饲料配方系统的设计
2010-06-07徐东升
徐东升 屈 雷
饲料配方是白绒山羊生产管理的物质基础,饲料成本将占养羊总成本的60%~70%,合理利用饲料资源、降低饲料成本是生产实际亟需解决的问题[1]。我国从20世纪80年代初期开始,先后研制成功了多款饲料配方软件。这些饲料配方软件几乎都是单机版的,价格不菲加上操作比较复杂,一直没能普及到中小养殖户。然而,我国目前白绒山羊养殖业的现状是中小养殖户占了很大的比重,且在相当长的时期内仍将维持农户小规模养殖、中等规模专业户养殖及现代化大型养殖厂并存的格局[2]。因此,为中小养殖户开发操作简单易用、维护升级方便的饲料配方软件就显得十分重要。
本文根据白绒山羊饲养管理与营养需要的实际情况,考虑到利用Internet进行远程饲料配方设计可以让更多的农民饲养户受益,采用线性规划的理论和网络数据库技术,本着方法科学、技术先进、操作简单、界面友好等原则,开发了基于Web的白绒山羊远程饲料配方系统——RFFS(Remote Feeding Formula System)。
1 系统的功能结构
1.1 系统的体系结构
RFFS是一个基于Web的三层Browser/Server体系结构的信息管理系统,这种模式在逻辑上将应用功能分为三层:客户层、Web服务器层、数据服务器层[3]。客户层只用来实现人机交互,对于Windows操作系统,只需要一种通用的Web浏览器软件,如IE等就可以满足需要。Web服务器层用来响应客户端的请求,利用ASP可以动态生成HTML代码,并将处理结果嵌入其中,返回给客户端的浏览器。数据服务器层仅仅提供数据信息服务,实现数据库管理。当客户端提交的请求包括数据的存取时,Web服务器将与数据库服务器一起工作。系统的体系结构如图1所示。
图1 系统体系结构
1.2 系统的功能模块
RFFS分为前台显示与后台管理两大模块。对于前台显示模块,只包含配方计算子系统,匿名用户就可以操作,不需要密码。而对于后台管理模块,系统管理员必须通过身份验证后才能进入系统。后台管理模块的主要功能包括系统管理子系统、数据库维护子系统、系统帮助子系统等。整个系统详细功能模块的划分如图2所示。
1.2.1 配方计算子系统
用户在浏览器中输入相应地址进入系统主页后,第一步选择营养标准和营养指标,第二步选择饲料原料,第三步修改饲料原料配方参数,第四步直接进行远程饲料配方计算,第五步进行影响成本的因素分析。
1.2.2 系统管理子系统系统初始化可以在系统使用之前清空系统中存在的没用的全部数据;密码修改可以修改用户的登录系统口令;系统字典的主要功能是在系统中定义各数据字典项的字典值,如饲养对象、原料类别、营养指标等;数据备份和数据恢复则可以实现数据的多重保存,防止数据丢失,提高系统安全性。
1.2.3 数据库维护子系统
数据库维护子系统采用了SQL的自动校验和事务处理技术,即所有数据库操作命令作为一个整体一起向系统提交或撤销,这一组数据库操作命令要么都执行,要么都不执行,从而保证了营养标准数据表、饲料原料数据表、经典配方数据表保存到系统数据库的一致性和完整性。为了降低管理员录入营养标准和原料营养成分的工作量,本系统在设计时为数据库维护子系统增加了从Excel表格导入营养标准或原料营养成分数据的功能。
1.2.4 系统帮助子系统
系统帮助子系统提供联机超文本形式的帮助文件,便于用户了解系统的性能;此外,还提供了营养技术指导、羊营养性疾病的一些基本知识。
2 系统的设计
2.1 开发工具
ASP技术为构造新一代动态网站和基于网络的分布式应用提供强有力的支持[4],同时考虑到微软在整个软件行业处于霸主的地位,其Windows操作系统、IIS服务器、SQL Server数据库、IE浏览器开发平台已经成功地应用在许多领域。因此,我们在设计和实现RFFS时前台开发工具主要采用Dreamweaver MX和VBScript脚本语言,后台数据库选用SQL Server 2000,开发环境为Windows XP Professional+IIS6.0+IE6.0+MDAC2.8。
2.2 数据库设计
数据库设计有六个不同级别的范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系[5]。数据库设计须在系统需求分析结果的基础上进行,充分考虑数据结构的合理性、完整性及安全性,采用软件工程的先进思想和方法,便于程序设计及系统的维护与升级[6]。根据这些原则,本系统设计了白绒山羊远程饲料配方数据库,包含用户信息表、饲养对象表、原料类别表、营养指标表、饲养标准表、饲料原料表、经典配方表、参算原料表、选定标准表、临时配方表、临时营养成分表等共10多个数据表。
2.3 配方求解算法设计
目前饲料配方系统常用的求解算法包括线性规划、目标规划和模糊线性规划[7]。RFFS要实现远程饲料配方,服务器可能同时处理大量的数据,加之网络传输的速度较为有限,不宜采用复杂的算法,否则会影响系统的响应速度;另一方面,RFFS主要服务于中小养殖户的日常饲料配方设计,他们的实际配方水平较为有限。而目标规划与模糊线性规划较为复杂,要求配方人员具备较高的动物营养知识和配方经验,才能进行必要的分析和调整,不容易掌握。因此综合考虑,RFFS采用线性规划作为配方设计的数学模型。
2.3.1 数学模型的建立
在饲料配方问题的求解中,既要求满足动物各项指标的营养需要,又要求饲料成本为最低。线性规划就是求某一目标函数在一定的约束条件下的最大值或最小值,其中的约束条件和目标函数均可用线性方程组或线性不等式表示,非常适合于饲料配方问题的求解[8]。线性规划最低成本配方的数学模型可表示为:
目标函数:Zmin=c1x1+c2x2+…+cnxn
满足约束条件:
其中:xi(i=1,2,…,n)为参与配方配制的各种原料的用量,n为原料个数;aji(j=1,2,…,m;i=1,2,…,n)为第i种原料的第j种营养成分的含量,m为约束条件数;bj(j=1,2,…,m)为配方应满足的各项营养需要;ci(i=1,2,…,n)为原料的价格系数,Z为目标值,这里目标函数是配方成本最低,求取的是满足约束条件下的最低成本配方。
2.3.2 算法实现
本系统应用了单纯形法的基本算法。算法实现的思路是:首先将饲料原料的品种及营养成分和营养标准中营养指标值均放在系统数据库中。根据用户选择的饲料原料种类和营养指标从系统数据库中抽取所需数据,然后进行目标函数最优解的计算。
2.3.3 影子价格
原料的影子价格是指,在得到最佳配方后,配方中某种原料用量增减一个单位,使饲料配方的成本增加或降低多少。数学家们已经证明:原料的影子价格就是求解对偶规划的最优解[9]。这个对偶规划与原配方的线性规划模型之间存在如下的关系:两个线性规划问题中约束条件的系数互为转置矩阵;原线性规划问题中右手侧的常数,正好是新线性规划问题的目标函数中各自变量的系数,新线性规划问题中约束条件的右手侧常数,也正好是原线性规划问题的目标函数中自变量的系数;原线性规划问题中约束条件中的不等式符号如果是“≥”,那么新线性规划问题中约束条件中的不等式的符号就是“≤”;如果原线性规划问题中的目标函数是求最小值,那么新线性规划问题中的目标函数就是求最大值。
在实践中我们根据影子价格可有把握地调整饲料配方。一般说来,当某原料影子价格为负值时,增加该原料在饲料配方中的用量,可以降低配合饲料的成本;当某原料影子价格为正值时,降低该原料在饲料配方中的用量,可以降低配合饲料的成本。
3 应用实例
以30 kg日增重0.10 kg的育成白绒山羊为例,各种营养需要为约束条件,计算精料饲料配方。白绒山羊的营养标准参照肉羊饲养国家标准(NY/T816—2004),见表1。选择的各种饲料原料的营养价值查中国饲料成分及营养价值表(2009年第20版)获得,见表2。通过调研获得当地同期各种饲料原料的市场价格及用量限制,见表3。采用线性规划求解得到饲料配方及配方的营养指标,见表4和表5。
表1 营养标准
表2 各种饲料原料营养价值
表3 各种饲料原料的市场价格与约束条件
从运算报告的结果看,本例配合饲料的价格为1.67元/kg。若规划求解过程中出现无解时,说明所使用的原料要达到约束条件是不可能的,此时要注意分析可能存在的问题,重新选择饲料原料和设置约束条件进行计算。
表4 线性规划配方
表5 配方的营养指标
4 建议与讨论
4.1 基于Web的远程饲料配方系统具有操作简便、成本低廉、容易推广等优点,所使用的数据库查询、配方计算都在服务器端运行,客户端只负责选择标准、原料、调整配方参数,提交到服务器,不受时间、地点、计算机的限制,非常适合服务白绒山羊中小养殖户的计算机饲料配方需要。
4.2 系统可根据当地饲料资源情况选择自己的决策变量,筛选适合当地实际的各种饲料配方。
4.3 尽管RFFS具有单机版不可比拟的优势,但其根本上还是一款饲料配方的工具,终究不能取代配方师的地位,因为系统现有的知识无法模拟配方师的经验及知识。同时,本系统在配方过程中没有考虑配方的适口性、保质期等问题。
目前,RFFS只能实现饲料配方的远程设计,根据白绒山羊生产管理的现状和发展,必然要逐步走向标准化、商业化,这就需要理论上完善、技术上先进、实践上可行的数字化养殖平台。因此,下一步工作的重点将在现有基础上增加生产管理数字化模块、疫病诊断数字化模块、畜产品安全监控数字化模块等,全面建设一个基于Web的陕北白绒山羊数字化精细养殖平台,实现绒山羊的现代化生产和管理。
[1]刘士义,张安国.陕北白绒山羊高效生态养殖技术[M].杨凌:西北农林科技大学出版社,2007.
[2]陈立平,姚光强,赵春江,等.基于掌上电脑的饲料配方系统的设计与开发[J].农业工程学报,2008,24(6):179-183.
[3]范振钧.基于ASP.NET的三层结构实现方法研究 [J].计算机科学,2007,34(4):289-291.
[4]熊本海,罗清尧,庞之洪.网络远程交互畜禽饲料配方系统的研制[J].畜牧兽医学报,2003,34(5):447-451.
[5]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2006.
[6]Daniela Florescu,Alon Levy,Alberto Mendelzon.Database Techniques for the World Wide Web[J].Sigmod record,2005,32(3):59-74.
[7]张彦成.饲料配方研究中数学方法的应用及其结果的神经网络评价[D].内蒙古大学,2009:3-4.
[8]潘效干,杨利国,姜勋平.动物饲料配方系统(AFS)软件研究[J].中国草食动物,2002,30(1):174-177.
[9]王继华,张乐颖,梁立军.影子价格/灵敏度分析与饲料配方调整[J].邯郸农业高等专科学校学报,2005,22(1):1-4.