public static function fromFile($path) { $input = array(); $file = fopen($path, 'r'); //simulation parameters $sim_pars = fgets($file); $sim_pars_parts = Self::splitstring($sim_pars); if (count($sim_pars_parts) == 5) { //simulation $input['rows'] = $sim_pars_parts[0]; $input['cols'] = $sim_pars_parts[1]; $input['drones'] = $sim_pars_parts[2]; $input['deadline'] = $sim_pars_parts[3]; $input['maxload'] = $sim_pars_parts[4]; } //products $input['products'] = fgets($file); $input['product_weights'] = Self::splitstring(fgets($file)); //warehouses $input['warehouses'] = fgets($file); $input['warehouse_details'] = array(); for ($i = 0; $i < $input['warehouses']; $i++) { $wh_coord_parts = Self::splitstring(fgets($file)); $wh_product_count_parts = Self::splitstring(fgets($file)); $input['warehouse_details'][] = array('warehouse_coord' => array(array('row' => $wh_coord_parts[0], 'col' => $wh_coord_parts[1])), 'warehouse_product_count' => $wh_product_count_parts); } //orders $input['orders'] = fgets($file); $input['order_details'] = array(); for ($i = 0; $i < $input['orders']; $i++) { $order_coord_parts = Self::splitstring(fgets($file)); $item_count = fgets($file); $product_types = Self::splitstring(fgets($file)); $input['order_details'][] = array('delivery_coord' => array(array('row' => $order_coord_parts[0], 'col' => $order_coord_parts[1])), 'item_count' => $item_count, 'product_types' => $product_types, 'order_weight' => Self::getTotalWeight($product_types, $input['product_weights'])); } fclose($file); return $input; }