VB 实现以线性规划为 模型的饲料配方方法.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:3 大小:139KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

VB 实现以线性规划为 模型的饲料配方方法.pdf

VB实现以线性规划为模型的饲料配方方法.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

科技动态VB实现以线性规划为模型的饲料配方方法巴恒星杨福合荣敏吴琼中国农业科学院特产研究所中图分类号:S816.3文献标识码:B文章编号:1002-2813(2007)03-0036-03目前,大型专业饲料公司己使用专用的计算机a21x1+a22x2+∧+a2nxn≥b2(或=,≤b2)饲料配方软件进行配方,但专用的饲料配方软件价┇┇┇┇格不菲,其核心算法就是线性规划。线性规划法是am1x1+am2x2+∧+amnxn≥bm(或=,≤bm)xj≥0目前应用最广泛的一种优化饲料配方技术。其优化(j=1,2,⋯,n)结果是产生一个满足约束条件的最低成本配方,它其中:x1,x2,∧,xn为决策变量,即各种原料在配方受原料的营养成分、约束条件值(配方营养素水平)中的数量。及原料价格等的影响。文章主要对核心算法线性规aij(i=1,2,∧,m;j=1,2,∧,n)为技术系数,即划用vb代码进行阐述。各种原料相应的营养成分。1饲料配方设计要求b1,b2,∧,bn为约束值,即配方中应满足各项1.1优化配方设计目标营养指标或质量指标。动物生产的经济效益主要取决于饲料。饲料品C1,C2,∧,Cn为成本系数,即每种原料的价格质的好坏及成本的高低直接影响动物生产的经济效系数;益。而饲料配方是配合饲料生产的核心要优化配,M为约束条件个数;方设计必须同时解决以下个问题)营养需要问,3:1N为配方原料个数。题,由营养学家研究修改制定,满足营养标准就是线2计算机程序原代码性规划求解的主要约束条件之一,即营养性限制。PrivateSublp()2)合理组合原料,不同原料的合理搭配,才能满足动Dima()AsSingle,ji()AsSingle,b()AsSingle,x()物的营养需要,是约束条件之二,即原料性限制。3)AsSingle价格最低,在符合条件1和2的基础上,采用成本最DimMAsInteger,NAsInteger,d1AsInteger,d2As低的原料配比就是求解的目标,即最低成本目标函Integer,qAsInteger,e1AsInteger,e2AsInteger数。M=InputBox(″请输入约束方程个数:″):1.2数学模型N=InputBox(″请输入配方原料变量个数:″)优选最佳饲料配方的数学原理是线性规划法,d1=InputBox(″请输入>=约束方程个数:″)就是求某一目标函数在一定的约束条件下的最大值d2=InputBox(″请输入=约束方程个数:″)或最小值。约束条件和目标函数均可用线性方程组q=M+N+d1或线性不等式表示。线性规划最低成本配方优化的ReDima(1ToM+2,1Toq+1):ReDimji(1To数学模型可表示为:M):ReDimb(1ToM)目标函数:MinS=C1X1+C2X2+∧+CnXn(求ReDimx(1Toq)最小值)Fori=1ToM约束条件:a11x1+a12x2+∧+a1nxn≥b1Forj=1ToN(或=,≤b1)a(i,j)=InputBox(″请逐次输入约束方程的变量系收稿日期:2006-11-27数:″)36饲料研究FEEDRESEARCHNO.3,2007科技动态Nextjt2=a(fl2,fl1)b(i)=InputBox(″请输入>,>=,<=符号″)Fori=1ToM+2Ifb(i)<>″<=″ThenIfi<>fl2Then:t1=a(i,fl1)e1=e1+1:a(i,N+M-d2+e1)=1:Ifb(i)=Forj=1Toq+1:a(i,j)=a(i,j)-a(fl2,j)3″>=″Thena(i,N+i)=-1t1/t2:Nextj:a(i,fl1)=0ji(i)=N+M-d2+e1EndIfElseNextia(i,N+i)=1:ji(i)=N+iForj=1Toq+1:a(fl2,j)=a(fl2,j)/t2:Nextj:jiEndIf(fl2)=fl1a(i,q+1)=InputBox(″请输入约束方程的值:″)GoToone:Nexti’开始第2阶段Forj=1ToN:a(M+1,j)=InputBox(″请输入目标函two:数系数:″):Nextjf1=0Forj=M+N-d2+1Toq:a(M+2,j)=1:NextjForj=1Toq-d1-d2:Ifa(M+1,j)<f1Then:f1=aMsgBox″赋值完毕!″(M+1,j):fl1=j:EndIf’开始第1阶段NextjFori=1ToMIff1=0Then:GoTojieguo:Ifb(i)<>″<=