Спасибо за ваше время.
Я не мог найти, как получить значения переменных после решения.
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
и PRIMAL
симплекс для phase 2
.
Стратегия ценообразования простого и двойного симплекса установлена на «Devex
».
Optimal solution 3 after 1 iter.
Excellent numeric accuracy ||*|| = 0
ПАМЯТЬ: lp_solve версия 5.5.0.15 для 64-битной ОС, с 64-битной REAL
переменные.
В общем количестве итераций 1, 0 (0,0%) были связаны сальто.
Было 0 рефакторизаций, 0 сработало по времени и 0 по плотности.
... в среднем 1,0 основных точек на рефакторизацию.
Самый большой факт [LUSOL v2.2.1.0] (B) имел 5 записей NZ, что в 1,0 раза больше.
Inf-норма матрицы ограничений равна 1, с динамическим диапазоном 1.
Время загрузки данных составило 0,031 секунды, предварительное разрешение - 0,000 секунд,
... 0,000 секунд в симплексном решателе, всего 0,031 секунды. => 3,0