基本的な 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 は、配列を入力した同じ行で「無効なベクトル」のエラーを返します。ある配列が機能し、別の配列が機能しない理由がわかりません。