4

6つの線形制約があります。私はこの問題の解決策を手作業と経由の両方で見つける方法を知っていますr。実行可能領域のイラストを簡単に入手できる方法を探しています。

私はggplot2成功せずにそうしようとしました。

制約は次のとおりです。x1 >= 0, x2 >= 0, x2 <= 10およびx2 <= 12 - 2/5 * x1、、、x2 <= 18 - x1x2 <= 18 - x1

require(ggplot2)

# x2 <= 12 - 2/5*x1
fun1 = function(x1){
     x2 = 12 - 2/5*x1
     return(x2)
}

# x2 <= 18 - x1
fun2 = function(x1){
    x2 = 18 - x1
    return(x2)
}

# x2 = 44 - 3*x1
fun3 = function(x1){
    x2 = 44 - 3*x1
    return(x2)
}

x1 = seq(0,20)
mydf = data.frame(x1, fun1(x1), fun2(x1),fun3(x1),rep(10,length(x1)))
names(mydf) = c('x1','y1','y2','y3','y4')
mydf$y5 = rep(0,length(x1))

p0 = ggplot(mydf, aes(x = x1)) + 
     coord_cartesian(ylim=c(0,10),xlim = c(0,20))+                      
     geom_line(aes(y = y1), colour = 'blue') +
     geom_line(aes(y = y2), colour = 'green') +
     geom_line(aes(y = y3), colour = 'red') +
     geom_line(aes(y = y4), colour = 'purple') +
     geom_line(aes(y = y5), colour = 'black')

p0 +  geom_area(aes(y = pmin(y1,y2,y3,y4,y5)), fill = 'gray60')

ご協力いただきありがとうございます!

編集y5:関数から最後を削除するpminと、トリックが実行されます:

 p0 +  geom_area(aes(y = pmin(y1,y2,y3,y4,y5)), fill = 'gray60')
4

1 に答える 1

0

私の問題は最後の変数にありましたy5。機能からそれを削除することpminはトリックをしました。

p0 = ggplot(mydf, aes(x = x1)) + 
    coord_cartesian(ylim=c(0,10),xlim = c(0,20))+                      
    geom_line(aes(y = y1), colour = 'blue') +
    geom_line(aes(y = y2), colour = 'green') +
    geom_line(aes(y = y3), colour = 'red') +
    geom_line(aes(y = y4), colour = 'purple') +
    geom_line(aes(y = y5), colour = 'black')

p0 +  geom_area(aes(y = pmin(y1,y2,y3,y4)), fill = 'gray60')
于 2013-01-20T04:40:00.740 に答える