1

lpsolvegenalgR を使用して、以下の輸送問題を解決しようとしていました。 を使用していくつかの問題に直面していgenalgます。

            Boston  New York    Supply
---------------------------------------  
Detroit     30      20          200  
Pittsburgh  40      10          100
---------------------------------------  
Demand      150     150 

上記の問題が明確でない場合に備えて、問題ステートメントへのリンクを次に示します。 http://support.sas.com/documentation/cdl/en/ormpug/66107/HTML/default/viewer.htm#ormpug_optmodel_sect005.htm

を使用したコードgenalg:

    library(genalg)  
    dataset <- data.frame(arc = c("det_bos", "det_new", "pit_bos", 
   "pit_new"), cost = c(30, 20, 40, 10), supply_1 = c(1,1,0,0),
    supply_2 = c(0,0,1,1),demand_1 = c(1,0,1,0),demand_2 = c(0,1,0,1))

 supply_1_limit <- 200  
 supply_2_limit <- 100  
 demand_1_limit <- 150  
 demand_2_limit <- 150

evalFunc <- function(arc=c()) {  
current_solution_cost <- arc%*%dataset$cost  
current_solution_supply_1 <- arc%*%dataset$supply_1  
current_solution_supply_2 <- arc%*%dataset$supply_2  
current_solution_demand_1 <- arc%*%dataset$demand_1  
current_solution_demand_2 <- arc%*%dataset$demand_2

if (current_solution_supply_1 < supply_1_limit | 
    current_solution_supply_2 < supply_2_limit | 
    current_solution_demand_1 > demand_1_limit | 
    current_solution_demand_2 > demand_2_limit)    
    return(0) else return(current_solution_cost)}

 GAmodel <- rbga(stringMin=c(0,0,0,0), 
 stringMax=c(150,150,150,150),       
 suggestions=NULL,popSize=200, 
 iters=100, mutationChance=0.10,elitism=T,
 monitorFunc=NULL,evalFunc=evalFunc,showSettings=FALSE, verbose=FALSE)

 cat(summary.rbga(GAmodel))

上記のモデルから導き出された最良のソリューションを配置すると、正しい数値が得られません。反復回数を変更しようとしましたが、役に立ちませんでした。

solution =c(37.3445626697503, 108.823138475418, 124.833289347589, 1.39844713266939)  
sum(solution)  
total_cost = solution%*%dataset$cost  
print(total_cost)

答えは

Total Cost = 6500 , Units Shipped = 300  as ( 150 , 50, 0 , 100)

助けてください。

4

1 に答える 1