如何从lp_select gem(lpsolve)

时间:2018-05-17 07:51:13

标签: ruby-on-rails rubygems lpsolve

感谢您的时间。

我无法找到解决方案后如何获取变量值。

Make a three row five column equation
@lp = LPSolve::make_lp(3, 5) 

 Set some column names
LPSolve::set_col_name(@lp, 1, "fred")
LPSolve::set_col_name(@lp, 2, "bob")
 Add a constraint and a row name, the API expects a 1 indexed array
constraint_vars = [0, 0, 1]
FFI::MemoryPointer.new(:double, constraint_vars.size) do |p|
  p.write_array_of_double(constraint_vars)
  LPSolve::add_constraint(@lp, p, LPSelect::EQ, 1.0.to_f)
end
LPSolve::set_row_name(@lp, 1, "onlyBob")

 Set the objective function and minimize it
constraint_vars = [0, 1.0, 3.0]
FFI::MemoryPointer.new(:double, constraint_vars.size) do |p|
  p.write_array_of_double(constraint_vars)
  LPSolve::set_obj_fn(@lp, p)
end
LPSolve::set_minim(@lp)

 Solve it and retreive the result
LPSolve::solve(@lp) 
@objective = LPSolve::get_objective(@lp)

输出

Model name:  '' - run #1    
Objective:   Minimize(R0)


SUBMITTED
Model size:        4 constraints,       5 variables,            1 non-zeros.
Sets:                                   0 GUB,                  0 SOS.

DUAL使用phase 1 simplex PRIMAL phase 2Devex。{/ p>

原始和双重单纯形定价策略设置为“Optimal solution 3 after 1 iter. Excellent numeric accuracy ||*|| = 0 ”。

$(document).ready(function() {
    $('#timeOfAdmissionCalendar').calendar({
        ampm: false,
        type: 'time',
    });
    $('#timeOfDischargeCalendar').calendar({
        type: 'time'
    });
});
  

备忘:lp_solve版本5.5.0.15用于64位操作系统,64位REAL   变量。         在总迭代次数1,0中,0(0.0%)被绑定翻转。         有0次重构,0由时间触发,0由密度触发。          ......每次重构平均有1.0个主要枢纽。         最大的[LUSOL v2.2.1.0]事实(B)有5个新西兰条目,1.0倍最大基数。         约束矩阵inf-norm为1,动态范围为1。         加载数据的时间为0.031秒,预解算使用0.000秒,          ...单纯形求解器中的0.000秒,总共0.031秒。 => 3.0

1 个答案:

答案 0 :(得分:0)

retvals = []
FFI::MemoryPointer.new(:double, 2) do |p|

    err = LPSolve::get_variables(@lp, p)

  retvals = p.get_array_of_double(0,2)
end

retvals[0]
retvals[1]

给出解决方案。