我创建了一个基本的 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) 完美匹配的数组。但是,当我使用从循环创建的数组运行 LP 模型时,lp_solve 在我输入数组的同一行上返回“无效向量”错误。我无法弄清楚为什么一个阵列会起作用而另一个阵列不会。