Ошибка массива 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);

Это создает массив n, который, по-видимому, полностью соответствует моему оригиналу ($jectiveFunction). Тем не менее, когда я запускаю модель LP с использованием массива, созданного из цикла, lp_solve возвращает ошибку для «недопустимого вектора» в той же строке, где я ввожу свой массив. Я не могу понять, почему один массив будет работать, а другой нет.

1

Решение

Похоже, что lpsolve ожидает массив чисел с плавающей запятой.

Изменение:

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

Для того, чтобы:

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

кажется, чтобы решить проблему

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]