与lpsolve的php数组错误

时间:2015-05-28 16:11:13

标签: php lpsolve

我创建了一个基本的LP模型,手动将目标函数输入到数组中,模型工作正常:

    $ret = lpsolve('set_obj_fn', $lp, array(1, 3, 7, 2));

我将数组移出并用lp_solve函数中的变量引用它,但一切都很好:

    $objectiveFunction = array(1, 3, 7, 2);
    $ret = lpsolve('set_obj_fn', $lp, $objectiveFunction);

现在,我想通过从MySQL数据库中提取目标函数的值来扩展模型。我在数据库中查询结果,并使用循环将这些值推送到数组中。

    $newObjective = array();
    for($i=0; $i&l t;count($sqlResults); $i++) {
         array_push($newObjective, $sqlResults[$i][0]);
    }
    $ret = lpsolve('set_obj_fn', $lp, $newObjective);

这会创建一个完全匹配原始($ objectiveFunction)的n数组。但是,当我使用从循环创建的数组运行LP模型时,lp_solve会为“无效向量”返回错误'在我输入数组的同一行。我无法弄清楚为什么一个阵列会起作用而另一个阵列不起作用。

1 个答案:

答案 0 :(得分:0)

看起来lpsolve期待一个浮点数数组。

更改:

array_push($newObjective, $sqlResults[$i][0]);

要:

array_push($newObjective, (float) $sqlResults[$i][0]);

似乎解决了这个问题