求救,十万火急!!!!!!!请各位高手指点,谢谢,万分感谢!
求解选矿配比的最佳算法。
题目:已知7种类型矿的锰和铁的百分含量例如:矿号 锰% 铁% 锰铁比  原料百分配比    单价元/吨
A类 28.05 9.1 3.082    0.16          396.9
B类 28.18 11.05 2.550    0          370
C类 28.18 11.46 2.459    0.32          370
D类 24.51 13.36 1.835    0.3          350
E类 28.06 9.38 3.008    0          475.25
F类 40.78 8.27 4.931    0.1           1089
G类 11.68 41.04 0.285       0.12           177
合计      189.44  103.61                1                              现在要用这7种矿按一定的百分配比,炼出新型号的矿,要求成本价格最底。
我假设要炼新型号矿的锰含量为26.34%,铁含量为14.88%,锰铁比为1.77,要求成本价格最底。
如何求出7种矿的入炉原料百分配比。

解决方案 »

  1.   

    假设需要新型号矿是100单位(简单地说,就是省略百分比符号),则其中含锰26.34,鉄14.88,设A类矿百分比为xA,类似,B类为xB,C类xC,……,G类为xG,则有约束条件:
    xA+xB+xC+xD+xE+xF+xG=1
    28.05xA+28.18xB+28.18xC+24.51xD+28.06xE+40.78xF+11.68xG=26.34
    9.1xA+11.05xB+11.46xC+13.36xD+9.38xE+8.27xF+41.04xG=14.88
    1>=xA,xB,xC,xD,xE,xF,xG>=0
    目标函数为:
    min z=396.9xA+370xB+370xC+370xD+475.25xE+1089xF+177xG
    简单的线性规划问题,一般用单纯型法求解。觉得自己编程麻烦可以用线程的工具,例如lindo等等(可以用lindoAPI,它提供了很多语言的编程接口)。
    下面是用lindo6.1求解:
    输入:
    min 396.9xA+370xB+370xC+370xD+475.25xE+1089xF+177xG
    st
    xA+xB+xC+xD+xE+xF+xG=1
    28.05xA+28.18xB+28.18xC+24.51xD+28.06xE+40.78xF+11.68xG=26.34
    9.1xA+11.05xB+11.46xC+13.36xD+9.38xE+8.27xF+41.04xG=14.88
    xA<=1
    xB<=1
    xC<=1
    xD<=1
    xE<=1
    xF<=1
    xG<=1
    end
    求解结果(同时做灵敏度分析): LP OPTIMUM FOUND AT STEP      3        OBJECTIVE FUNCTION VALUE        1)      352.0544  VARIABLE        VALUE          REDUCED COST
            XA         0.000000        104.831062
            XB         0.000000         12.081584
            XC         0.877449          0.000000
            XD         0.000000        180.814667
            XE         0.000000        174.284958
            XF         0.006257          0.000000
            XG         0.116293          0.000000
           ROW   SLACK OR SURPLUS     DUAL PRICES
            2)         0.000000       1785.978516
            3)         0.000000        -64.523872
            4)         0.000000        -29.467340
            5)         1.000000          0.000000
            6)         1.000000          0.000000
            7)         0.122551          0.000000
            8)         1.000000          0.000000
            9)         1.000000          0.000000
           10)         0.993743          0.000000
           11)         0.883707          0.000000 NO. ITERATIONS=       3
     RANGES IN WHICH THE BASIS IS UNCHANGED:                           OBJ COEFFICIENT RANGES
     VARIABLE         CURRENT        ALLOWABLE        ALLOWABLE
                       COEF          INCREASE         DECREASE
           XA      396.899994         INFINITY       104.831131
           XB      370.000000         INFINITY        12.081655
           XC      370.000000        11.647514         INFINITY
           XD      370.000000         INFINITY       180.814728
           XE      475.250000         INFINITY       174.285034
           XF     1089.000000         INFINITY       571.622681
           XG      177.000000      4731.083496       748.554199                           RIGHTHAND SIDE RANGES
          ROW         CURRENT        ALLOWABLE        ALLOWABLE
                        RHS          INCREASE         DECREASE
            2        1.000000         0.001958         0.178088
            3       26.340000         8.570271         0.067708
            4       14.880000         9.651127         0.121382
            5        1.000000         INFINITY         1.000000
            6        1.000000         INFINITY         1.000000
            7        1.000000         INFINITY         0.122551
            8        1.000000         INFINITY         1.000000
            9        1.000000         INFINITY         1.000000
           10        1.000000         INFINITY         0.993743
           11        1.000000         INFINITY         0.883707
    可以看出,最省应该用C矿87.7449%,F矿0.6257%,G矿11.6293%,其他矿为0%,也就是不用。
    我的lindo还有4天就过期了:)-----------------------
    怎么才20分呀????
      

  2.   

    用 Delphi自己编写程序应该如何实现呢?请大家指点迷经。