Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
  ext
  lib
  lib_for_doc
  sample
  spec
  .gitignore
  .rspec
  .travis.yml
  Gemfile
  LICENSE.txt
  README.rdoc
  Rakefile
  gurobi.gemspec
Size: Mime:
  README.rdoc
= Gurobi

This is a Gurobi Ruby binding based on C++ Gurobi API.

== Prerequisites

* Gurobi 5.6 installed and
  environment variable GUROBI_HOME is set (e.g. /opt/gurobi563/linux64).

== Installation

This package has not yet been registered at gem site so that
please do as follows:

1. download or 'git clone' like this:
    $ mkdir [YOUR_WORK_DIR]
    $ cd [YOUR_WORK_DIR]
    $ git clone https://github.com/fuminori-ido/gurobi.git
1. rake build
    $ cd gurobi
    $ rake build
1. install it
    $ gem install pkg/gurobi-N.NN.NN.gem      # replace N to actual version 

== Usage

Following model:

        x1, x2, x3 >=  0
                x3 <= 30
  2*x1 +   x2 + x3 <= 60
    x1 + 2*x2 + x3 <= 60
  maximize 15*x1 + 18*x2 + 30*x3

is written in following ruby code:

  require 'gurobi'
  
  model = Gurobi::Model.new(Gurobi::Env.new)
  x1    = model.addVar(0, Gurobi::INFINITY, 0, Gurobi::CONTINUOUS, 'x1')
  x2    = model.addVar(0, Gurobi::INFINITY, 0, Gurobi::CONTINUOUS, 'x2')
  x3    = model.addVar(0, 30,               0, Gurobi::CONTINUOUS, 'x3')
  model.update
  model.addConstr(2*x1 +   x2 + x3 <= 60)
  model.addConstr(  x1 + 2*x2 + x3 <= 60)
  model.setObjective(15*x1 + 18*x2 + 30*x3, Gurobi::MAXIMIZE)
  model.optimize
  print "val = ", model.get_double(Gurobi::DoubleAttr::OBJ_VAL), "\n"
  print "x1  = ", x1.get_double(Gurobi::DoubleAttr::X), "\n"
  print "x2  = ", x2.get_double(Gurobi::DoubleAttr::X), "\n"
  print "x3  = ", x3.get_double(Gurobi::DoubleAttr::X), "\n"

See {spec/}[../spec/] and {sample/}[../sample/] for more examples.

== Document

1. generate document by:
    $ rake yard
1. browse doc/frames.html

== TODO

* Some known memory leak exist.
* Client/Server model is not implemented.


== Contributing

1. Fork it ( https://github.com/[my-github-username]/gurobi/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request