Exemple #1
0
 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;
 }