grunt-contrib-tuning v0.0.0 リリース

grunt-contrib-tuningをリリースしました。

いろいろなパフォーマンスのチューニングをgruntから利用することができます。

grunt.loadNpmTasks 'grunt-contrib-tuning'

と登録して

grunt.initConfig 
  tuning:
    test: 
      params: 
        alpha:
          range: [1, 100]
        beta:
          range: [5, 10]
        gamma:
          range: [10, 100]
      env: ()->
        port = 10000
        ()->
          {port: port++}
      limit: 10
      target: 0.3
      command: (env, params, next)->
        setTimeout ()->
            next(null, Math.random())
          Math.random() * 1000

とパラメタセット(params)やら実際の施行(command)を定義してから、

% grunt tuning

とshellを叩くとlimitを施行上限回数として、target以下になるまで、様々なパラメタで施行を繰り返し、最適な結果とその時のパラメタセットを得ることができます。

% grunt tuning
Running "tuning:test" (tuning) task
tuning: 1 cases, time: 1.132 sec
    best score: 0.06350546376779675
    on: {"alpha":0.06564602116122842,"beta":9.134039804339409,"gamma":53.039238741621375}

Done, without errors.

今現在は、ストラテジとしてランダムでの総当り状態なので非常に良くないですが、何点かgridで取得して、それを元に、一般線形モデルとか作って、ヨサゲなところを重点的に、とかってのもやりやすく作っています。

ストラテジのpluginとかも出来ればいいなとは思っていますが、おいおい。

とりあえず某異常値検知のチューニングとかにこれをぶち込んだりするといいことがあるんじゃないかと思ったりしています。

TODO

  • commandで文字列を渡してshellコマンドを叩けるといいな
  • strategyでパラメタ戦略を渡せるといいな(一般線形モデルとか)
  • あ、grunt-pluginのテストよくわからなかったからまだ書いてない・・・