有这样一个题目:
 
目的:得出最佳的饲料配制方法;
       {何为最佳呢?就是最弹终配制成的饲料的价格是最低的,而且是从已有的物料中进行选择}
说明:某种饲料含有很多种营养成份,如最终的饲料A需要含x%的成份1,y%的成份2,z%的成份3.......以次类推,现在给出的是物料A、物料B.......物料N,而且已经知道物量A、物料B.....物料N的各种成份含有量,如物量A中含有X%的成份1,Y%的成份2....N%的成份N,其中物料中的X% <> 最终的饲料中的x%。同时也知道了物料A、物料B的价格。这个算法应该如何去实现呢?大家可以发表自己的想法。

解决方案 »

  1.   

    是最后每种营养成分正好等于要求,还是不少于要求呢
    比如
    “最终的饲料A需要含x%的成份1”
    是要求得到的配方中成份1含量=x%呢还是>=x%呢
    如果原料数不定,要求成份数不定,好象没有什么好办法似的,嘿嘿,不懂算法,直觉,
    一个公式似乎不太可能似的你可以建个RECORD像猪哥的,把数据库的东西下到本地!我说的只是我的想法,因为要达到精确配置,要细,我只能那样,如果是找寻一个粗略的范围,你可以拉大步长,不是给你说了?而针对数据,我想不论怎样,一遍的数据得找吧!那么就
    type thingInfo=Record
        Pid:string;
        Pname:string;
        pprice:string;
        pxx:??;
        Pxx2:??; 
    end;
      Pthing=^Thinginfo;你让数据来本地再实现搭配 
    以下是引用lihao在2003-5-9 13:06:51的发言:
    你们还在比较配方,我只是要找一种,因为一直是价格多的占量大,这样得到的一般是没什么问题,除非是怪种配方,用的价大的多了它成本还低,呵呵
     举一个例子:物料A的价格最贵,它的蛋白质含量高达90%,可是其它含量仅仅占0.几个百分点,而要生成的配制单又刚好需要那仅仅占0.几个百分点的成份,这样就不好,虽然成本高,但是还不符合要求,而且,最终的配制单又有一个总量的限制范围。
     
    我想先是三个数组 main_siliao[名称][营养成分][含量]、mini_siliao[名称][营养成分][含量],peifang[营养成分][含量]。约定以质量比为成分比。通常肯定是有一、两种饲料做为主料,它的价格最低,那么先把它放到main_siliao[][][]中,其他作为细料的放到mimi_siliao[][][]中
    而后总质量按1计算。那么就使用循环计算mainsiliao[][][]先配大致的营养比,而后用细饲料minisiliao[][][]计算剩余的,这样可能整体简化了计算,而且也符合实际的情况。以上是简化的方案,不知道是否能简化,呵呵,如果有线形代数的方法可能会简单一些,可惜都交给老师了。
    。。加班中,可怜呀我试首用三种方式去作,从大到小、从小到大、中间开花,哈哈哈,估计你们也不明白我的意思。
    先检索记录,再定义数据就肯定是动态数组了,而且,还有一点要考虑到,就是当你已经配制了好几个物料了(比如),但是发现无法进行下去的话,那么是否就需要一层一层的后退,这时如何用数组的话,有两种方式,如果数据定义的太大则会无估的浪费空间,如果数组定义的小一点的话,肯定不行,用临时表怎么样?呵呵。或是用TStrings进行保存,只保存物料、数量就可以了,因为你保存了物料、数据的话,那么什么都知道了。
    =========================================
    以上是别人、我的回复
      

  2.   

    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
    各位老大,帮我顶一下成不成啊?
    http://expert.csdn.net/Expert/topic/1762/1762793.xml?temp=.1745874
    不要让沉底了啊
    5555555555555555555555555555
    我回感动的唏哩哗啦的
      

  3.   

    up一下:)fancier(OP&&C/C++) 兄又出现了:)大家周末开心哟:)
      

  4.   

    ghyghost(著名关心CSDN的结贴率爱国代表)兄:  多谢关心!呵呵,在另一贴子灌昏了头。----------------------------------------------我再踢!
      

  5.   

    小小~~xixi~~···········
    哈哈~~大概溜了一遍题目,终于有摩托拿手的了,想当初摩托刚出厂时,可是专门拿pascal
    写算法的牛皮吹破了~~~先发句牢骚:TNND!!焊了一下午电路板,眼睛都
    冒金星了,摩托正朝一名合格的蓝领工人拓步前进ing~~~摩托还是再去看看题目和大家的高见~~
      

  6.   

    嘻嘻:
    建立一模型:
     
       1    2     3   4   5   6
    A 0.3 0.05  0.3  0.1 0.1 0.15  +=1
    B 0.1  0.1  0.3  0.4  0  0.1   +=1
    C .....................
    D
    E其实是一个矩阵[U]
    每行代表一种配料的各种元素含量,其和为1
    设 向量 X' 为各种配料的用量,
    且满足最终饲料的元素成分,但并不一定最优~~
    可以得到N个X’向量,也就是一个N*M的矩阵[T](M为配料种类数)
    设 P 为各个配料的价格向量
    P 点乘 [T] 再除以 [T]的各列之和组成的向量就能得到最终的行向量,
    这个行向量中最小的解的位置K,也就是N个解中第K个解是最优解~~~
      

  7.   

    万全之策:排列组合每种配比,看看得到的参数是否最优。好像没别的办法,只能利用电脑这点速度优势,除非你用人的智力优势想到一个好算法。"数据结构"书上有排列组合的源程序,改一下就能适用于delphi的动态数组。
      

  8.   

    当然,首先你要格式化输入数据,比如就用record类型的dynamic array,这样一维就够了,因为每种饲料的属性是固定的,而饲料种类总数也是有限的。你唯一需要做的就是定制一个象样的格式,再根据你的具体需要寻求最优配比,或者为了速度寻求第一个可接受配比。其中排列组合的时候应该有点小技巧减少不必要的组合来提高速度。
      

  9.   

    小小~~方程组求解的代码就不写了吧~~xixi~~直接用矩阵求,如果让moto写,还要去翻书了
    不过,肯定不麻烦~~还有排列组合等穷举的算法不太合适,因为结果域是实数集,穷举的精度如何决定??
    如果解是无理数呢--->配料A的百分比为11.1223446546345234132343543.......%
    .....................
      

  10.   

    to zswang(伴水清清)(专家门诊清洁工) 
    ************************************
    这个问题我一直挂着~~
    主要是条件给得不充足~~
    并且没有直观的输入输出范例~~
    使我对其可行性表示怀疑~~
    假设:
    要配置的饲料含量(铁:20%,锌30%,钙:50%)
    原料两种,其中A(铁:10%,锌20%,钙:30%)、B(铁:20%,锌30%,钙:10%)
    这样不是便宜不便宜的问题~~
    根本就配置不出符合要求的饲料~~
    *******************************实际生产活动,一定会考虑到这重情况,所以初级原料一定是某种成分较高,而其他成分偏低,任何生产活动都不会在极端情况下进行,也不会考虑极端情况(因为成本无法接受).也就是说如果数据来自某一特定范围之外,问题是可能无解的,所以我认为这个问题应只考虑在其有解范围内求解,如果超出这个范围,问题就会无法解决.
      

  11.   


    楼主 的条件还要再整理一下 moto的建模 有些简单 
      

  12.   

    大家应该先去学营养学,再去学如何配料,最后学Delphi,
    我可是学过养猪的……呵呵
      

  13.   

    HTTP/1.1 100 Continue
    Server: Microsoft-IIS/5.0
    Date: Fri, 16 May 2003 10:57:13 GMT
      

  14.   

    HTTP/1.1 100 Continue
    Server: Microsoft-IIS/5.0
    Date: Fri, 16 May 2003 10:57:15 GMT
      

  15.   

    HTTP/1.1 100 Continue
    Server: Microsoft-IIS/5.0
    Date: Fri, 16 May 2003 10:57:14 GMT
      

  16.   

    其实楼主的意思是不是:从n种天然饲料来配制一批配合饲料。要求在这批配合饲料中必须含有m种不同的营养成分,并要求i营养(第i号营养)成分的含量不低于b_i 。已知i营养成分在每单位j天然饲料(第j号天然饲料)中的含量为a_ij ,每单位j天然饲料的价格为c_j 。那么,在保证营养的条件下,应采用哪种配方才能使这批配合饲料的费用最小?如果是这样,那么可以建模:设x_j 为j天然饲料的用量。那么,a_ij*x_j 即为所用j天然饲
                         n
    料中i营养成分的含量,∑(a_ij*x_j) 即为在这批配合饲料中i营养成分
                        j=1
    的总含量,它不应低于b_i ,于是,问题就可以下列数学形式:
                                n
                         min f=∑c_j*x_j
                               j=1
                         n
       s.t.(约束条件)  ∑(a_ij*x_j) ≥ b_i ,i=1,...m ,                   
                        j=1
                                 x_j ≥ 0  , j=1,...n 。跟着就是一个线性规划问题。
      

  17.   

    分成两个问题:BOM问题和最优化组合算法
      

  18.   

    看来你也是数学系的,^_^noall()
      

  19.   

    在一下这个问题,zswang上面提出了一个问题:
       比如:饲料营养成份(铁:20%,锌30%,钙:50%)
       只有一种原料:红萝卜(铁:10%,锌20%,钙:30%)   看上去两份红萝卜就可以做出一份饲料~~ 
       可,锌和铁都超出标准~~
       实际中要分离除去多余的部分是不现实的,会花去更多的成本~~
       这样的情况怎么处理?~~
       就是说一种营养成份过多是否要考虑其副作用?~~对这个问题我说明一下,在实际生产中铁、锌、锡都属于微量元素,在饲料中的含量不可能达到这么高,否则早中毒死了,而且会带来大量的残余污染环境,这是违反国家相关规定的。就算出现了这种情况,前面已经说了,因为是微量成分,添加量很小,把它加到饲料中和其他物料混合后含量会被稀释。另外,题目要求找出一种最佳解,如果出现了以上的情况,根本就不是一个合理的解,所以用不着考虑。
        这里我提供一个很简单的模型:
        假设有4种原料(a,b,c,d),我们要做要求的成分含量有五种(Pr,M,Ash,Ca,P),每种的价格为(am,bm,cm,dm),其中Pr的误差范围为+-4%,M的误差范围是15%,Ash是25%,Ca、P是15%,实际例子如下(其中数据基本为真实数据,价格为现在市场价):
    原料表:
    原料名  Pr   M   Ash   Ca    P
    玉米    7.5  13  1.3   --   --
    高粱    8.1  11  1.2   --   --
    鱼粉    62   7   11    4.3  1.6
    碳酸钙  --   0.1 98.4  38.5 --
    需要量表:
    小猪:   21  14  14    0.8  0.6
    蛋鸡:   21  14  13    3.6  1.8
    注:其中的“--”表示含量很小,可以忽略不记。
    相信大家现在要解决这个问题应该不是什么问题了吧。    
      

  20.   

    http://www.skin-studio.com
        有的时候,我们开发了一套很有市场价值的软件,可是发觉市场销售量却很低,原来真正的原因是软件的包装不够漂亮。公司采取各种渠道来解决问题。招聘大量的美工人员,可是,却发觉程序员的水平跟不上步伐,专门设立一个研究部门,却发觉需要花费巨额的人力物力,采用第三方控件吧,却要支费大量的注册费用或者版权使用费用,而且一般都以动态链接库*.DLL 或者控件*.OCX 绑定到我们的软件中。并且,控件功能扩展需要花费一定的升级费用才能够实现。您希望一次花费为数不多的费用就能弥补所有的不足吗...皮肤类不以任何形式的控件*.OCX,动态链接库*.DLL出售给用户,所以,你不必担心是否以源代码的方式出售给用户
        皮肤工作室皮肤类(VC开发企业版)暑假期间正在热销中,优惠活动截至到2003.9月。售价仅仅人民币500元整(终身使用版权);并且,在功能上可以任意扩展,真可谓手到擒来。具体包括皮肤对话框,皮肤按扭,皮肤进度条,皮肤控制条,皮肤动画标签类,皮肤面版类... 全部功能都以源代码的方式出售,使你可以制作真正意义上的具有自主版权皮肤功能的软件,还在等什么,赶快行动吧!!!
       真正令我们心动的时刻到了,同时随送的一些经典皮肤示例源代码包括多彩取色机XP,鼠标记录机,多彩影音伴侣等等
    你如果希望购买我们的产品,请到我们网站的购买方式页面 http://www.skin-studio.com/bankcard.htm了解更多信息
      

  21.   

    采用的是数学上的线性规划和目标规划的算法
    市面上已有成熟的软件在销售
    详细情到网站查看
    www.chinabreed.com
    上有关于饲料配方超级优化决策系统的介绍
      

  22.   

    To 伴水比如:饲料营养成份(铁:20%,锌30%,钙:50%)
    只有一种原料:红萝卜(铁:10%,锌20%,钙:30%)看上去两份红萝卜就可以做出一份饲料~~
    可,锌和铁都超出标准~~
    实际中要分离除去多余的部分是不现实的,会花去更多的成本~~
    这样的情况怎么处理?~~
    就是说一种营养成份过多是否要考虑其副作用?~~==============================================如果这个不考虑上述问题的话,我觉得应该是个线性规划问题,那就不用编程了啊。用数学软件LINGO,LINDO直接做一下就行了啊。偶是学数学的:)