48. 2.x
3.x
1.x オンプレミス SaaS
2007年 2008年 2009年 2010年 2011年 2012年 2013年 2014年 2015年 2016年
4.x
Web ASP ➠ Ruby on Rails ➠
最適化 C++ ➠ JRuby ➠
WINWORKS One の歴史
49. なぜRubyを使うのか
require 'gurobi‘
model = Gurobi::Model.new
x = model.add_var(vtype: :integer)
y = model.add_var(vtype: :integer)
model.maximize x * 2 + y * 3
model.add_constr x + y * 2 <= 12
model.add_constr x * 3 + y * 2 <= 18
model.optimize
最適化の式をわかりやすい形でコード上で表現できる
50. なぜRubyを使うのか
import gurobi.GRB;
import gurobi.GRBEnv;
import gurobi.GRBException;
import gurobi.GRBLinExpr;
import gurobi.GRBModel;
import gurobi.GRBVar;
public class ProductionPlanning {
public static void main(String[] args) throws GRBException {
GRBEnv env = new GRBEnv();
GRBModel model = new GRBModel(env);
GRBVar x = model.addVar(0.0, GRB.INFINITY, 0.0, GRB.INTEGER, null);
GRBVar y = model.addVar(0.0, GRB.INFINITY, 0.0, GRB.INTEGER, null);
model.update();
// miximize: 2x + 3y
GRBLinExpr expr = new GRBLinExpr();
expr.addTerm(2, x);
expr.addTerm(3, y);
model.setObjective(expr, GRB.MAXIMIZE);
// x + 2y <= 12
expr = new GRBLinExpr();
expr.addTerm(1, x);
expr.addTerm(2, y);
model.addConstr(expr, GRB.LESS_EQUAL, 12, null);
// 3x + 2y <= 18
expr = new GRBLinExpr();
expr.addTerm(3, x);
expr.addTerm(2, y);
model.addConstr(expr, GRB.LESS_EQUAL, 18, null);
model.update();
model.optimize();
}
require 'gurobi‘
model = Gurobi::Model.new
x = model.add_var(vtype: :integer)
y = model.add_var(vtype: :integer)
model.maximize x * 2 + y * 3
model.add_constr x + y * 2 <= 12
model.add_constr x * 3 + y * 2 <= 18
model.optimize
最適化の式をわかりやすい形でコード上で表現できる