ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

プロジェクトの見積もりは、単純に作業期間を積み上げたものより、長くなりがちの証明

2012-02-02 22:09:12 | トピックス

昨日の講義は、たぶんこういう意味だよな・・・

いま、A,B,C,Dというプロセスがあったとして

A:平均4日の正規分布
B:平均3日の正規分布
C:平均2日の正規分布
D:平均3日の正規分布

に従ったと仮定したとき、

もし、A→B→C→Dと、順番に仕事をするなら、期待値は
4+3+2+3=12日
となる。この意味は、何百回もやったら、だいたい12日くらいになり、
 12日よりも速く終わる回数と
 12日より遅く終わる回数が
同じくらいになるという意味だと言うことに、注目しておこう。





もし、ここでBとCが並行でできるとしよう。
パス1:A→B→Dは、4+3+3=10日
パス2:A→C→Dは、4+2+3=9日
となるので、パス1のほうがクリティカルパスとなり、
10日かかる・・・といいたいところだが、そうはならない。

たとえば、これを100回行ったとしたら、
パス1が、10日より多くなるのが50回、
パス1が、10日より少ないのが、50回ということになる。

ここで、パス1が10日より少なかった回について考えよう。
たとえば、パス1が9日だったとする。
このとき(たしかに標準偏差にもよるが)、パス2が11日になることもありえるだろう。
この場合、パス2がクリティカルパスとなり、かかった日数は11日になる。

つまり、10日を越えるのは、

パス1が10日をこえる50%と、
パス1が10日以下で、パス2が10日をこえるX%(かりにX=10%としますか)の、
50+10=60%となる。

ということは、10日以下の日は、100-60=40%となり、
10日より長引くほうに傾く




このことより、
作業を並行に行うことができる場合、

プロジェクトの見積もりは、
単純に作業期間を積み上げたときの、
クリティカルパスの期間としたものより、
長くなりがちといえる。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ビッグデータって、クラウドより、テラデータ使ったほうがいいような気がしてきた・・・

2012-02-02 16:36:38 | トピックス
 ビッグデータっていうと、ソリューションとして、クラウドを使ったり、Hadoopにもって行きたがる、企業とか、開発者がいるけど、どーなんでしょうね?
 クラウドにおいてしまうと、通信や処理スピードが意外と遅いとかいうことないのかな・・

 むしろ、テラデータとかでデータウェアハウスを自社で構築しちゃったほうが、いいんじゃないかなあ。外部と通信しなくて済む分。
 ほんとうにビッグデータが発生する企業において、億の金が必要ということが重要なことなんじゃなくって、その投資をして、見合うだけのリターンがあるかどうかが重要なんじゃないかな。たとえば、100億儲かるなら、10億だしてもいいけど、1銭も儲からないならフリーソフトでもやりたくないみたいな・・


 そういう観点でみると、ここの話は、おもしろいかも・・・

「20年以上ビッグデータに取り組んできた」--DWH専業の意地を見せるテラデータの底力(後編)
http://japan.zdnet.com/cio/analysis/35005947/

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rでお絵かき その1 グラフおえかき

2012-02-02 11:51:18 | そのほか
 統計のフリーソフトRを使って、グラフを作成させ、それをファイルに書き出すことを考える。

 こうすれば、あとは、

Java から R の機能を呼び出し (Rserve を使用)
http://www.db.is.kyushu-u.ac.jp/rinkou/r/rserve.html

を使えば、Javaのプログラムから、統計処理をしたグラフなんかをじゃんじゃん出せることになる。

 とくに、Javaで、TeXファイルを書き出し、それをPDFかなんかにすれば、統計処理した結果を、うるわしい帳票で出力できそうだ・・・

と、野望は大きいのだが、今日はその第一歩、グラフのお絵かきをする。




■今日の課題

 こんなグラフを書き出します。

つまり、sinカーブを0から180度(pi)まで書いて、
そこに10個、ランダムに点を打ちます。





■plotすると・・・

つまり、sinカーブを0から180度(pi)まで書いて、
(その間に1000個の点を配置して、plotのとき、type="l"にしてつなぐ)
単純にプロットしてみましょう。

delta<- 1000 
en.x<-seq(0,pi,length=delta) 
en.y<-sin(seq(0,pi,length=delta)) 
plot(en.x,en.y,type="l",xlim=c(0,pi),ylim=c(0,1))
polygon(c(en.x,rev(en.x)),c(rep(0,delta),rev(en.y)),col="green") 


この結果が、下の通り。

なんか、浮いちゃって、かっこ悪い。




■軸をひく

そこで、ビシッと軸につくように、

1.plotのときに軸を書かない
2.axisで軸を引く
   →横軸は、3で止まり、piまでひかれないので、線を引きなおしている
3.segmentsで線を引く

っていうことをしたのが、こんな感じ
delta<- 1000 
en.x<-seq(0,pi,length=delta) 
en.y<-sin(seq(0,pi,length=delta)) 
plot(en.x,en.y,type="l",xlim=c(0,pi),ylim=c(0,1))
polygon(c(en.x,rev(en.x)),c(rep(0,delta),rev(en.y)),col="green") 

axis(1,pos=0,at=seq(0,pi,by=0.6),adj=0,col=1)
segments(0,0,pi,0)
axis(2,pos=0,at=seq(0,1,by=0.2),adj=0,las=2,col=1)
segments(0,1,pi,1)
segments(pi,0,pi,1)
polygon(c(en.x,rev(en.x)),c(rep(0,delta),rev(en.y)),col="green")






■乱数を発生させて、図に載せる

一様乱数を発生させるのは、runif(n,0,pi)でいい。(nは個数。今回は0~piまで)
で、問題は、これを図に載せるために、
par(new=T)
をしている。これを書かないと、乱数だけ別のグラフになってしまう。

この乱数部分は、こんなかんじ。


n<-10
data <- cbind(runif(n,0,pi),runif(n))
par(new=T)
plot(data,xlim=c(0,pi),ylim=c(0,1),pch=20,axes=F,ann=F,col="blue")





今回はここまで。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする