Ошибка массива PHP с lpsolve

1

Я создал базовую модель 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);

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

  • 0
    Вы должны улучшить свой вопрос: запишите вывод ошибки и модель
  • 0
    ошибка: «Фатальная ошибка PHP: lpsolve (): неверный вектор».
Теги:
lpsolve

1 ответ

0

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

Изменение:

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

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

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

похоже, устраняет проблему

Ещё вопросы

Сообщество Overcoder
Наверх
Меню