Логистическое планирование доставки товаров

Автор работы: Пользователь скрыл имя, 08 Декабря 2013 в 20:44, дипломная работа

Описание работы

Цель и задачи исследования. Целью дипломной работы бакалавра является повышение эффективности поиска оптимальных маршрутов и решение задачи маршрутизации транспорта с ограничением по грузоподъемности.
Для достижения поставленной цели были решены следующие задачи:
провести анализ методов и подходов к решению задач маршрутизации транспорта;
разработать или модифицировать существующий алгоритм решения задачи маршрутизации транспорта с ограничение по грузоподъемности;
разработать программный продукт, способный находить и оптимизировать маршруты доставки для 100 и более клиентов;

Содержание работы

ВВЕДЕНИЕ3
АНАЛИЗ СУЩЕСТВУЮЩИХ ПРОБЛЕМ ТРАНСПОРТНОЙ ЛОГИСТИКИ5
1.1 Понятие транспорта и транспортной логистики 5
1.2 Транспортная экспедиция8
1.3 Основные принципы маршрутизации9
1.4 Задачи маршрутизации транспорта11
1.5 Разновидности ЗМТ13
1.6 Существующий инструментарий для решения ЗМТ18
1.7 Результаты анализа и постановка задачи20
МАТЕМАТИЧЕСКАЯ МОДЕЛЬ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ МАРШРУТИЗАЦИИ ТРАСПОРТА В УСЛОВИЯХ ГОРОДСКОЙ ДОРОЖНОЙ СЕТИ21
2.1 Классификация алгоритмов для решения ЗМТ21
2.2 Генетический алгоритм23
2.2.1 Основной вид генетического алгоритма23
2.2.2 Применение генетического алгоритма для задач упорядочивания24
2.2.3 Применение алгоритма для решения ЗМТ25
2.3 Задача построение планов доставки для розничной клиентской сети26
МЕТОД РЕШЕНИЯ ЗАДАЧИ МАРШРУТИЗАЦИИ ТРАНСПОРТА В УСЛОВИЯХ ГОРОДСКОЙ ДОРОЖНОЙ СЕТИ31
3.1 Упрощение исходного графа городской дорожній сети31
3.2 Архитектура генетического алгоритма32
3.3 Сравнительные результаты и эффективность похода35
ВЫБОР ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ И ПОСТРОЕНИЕ БД36
4.1 Обоснование выбора используемого инструментального средства......36
4.1.1 Java36
4.1.2 MySql37
4.1.3 GoogleMaps API37
4.2 Создание базы данных38
5 ТЕСТОВЫЙ ЗАПУСК ПРИЛОЖЕНИЯ40
5.1 Руководство пользователя40
6 ЭКОНОМИЧЕСКАЯ ЧАСТЬ42
6.1 Описание изделия42
6.2 Расчет себестоимости и цены программного продукта42
6.3 Перечни работ для создания программного продукта42
ВЫВОДЫ ПО РАЗДЕЛУ45
7 ОХРАНА ТРУДА. 47
7.1 Выявление и анализ опасных и вредных производственных факторов, действующих в рабочей зоне проектируемого объекта47
7.2 Разработка мероприятий по предотвращению или ослаблению возможного воздействия опасных и вредных производственных факторов на работающих48
7.3 Расчет системы жизнеобеспечения48
ВЫВОДЫ ПО РАЗДЕЛУ51

Файлы: 1 файл

RPZ.docx

— 4.52 Мб (Скачать файл)

    

     size = label3.getPreferredSize();

     label3.setBounds(440 + insets.left, 5 + insets.top,

      size.width, size.height);

      size = label4.getPreferredSize();

     label4.setBounds(480 + insets.left, 35 + insets.top,

      size.width, size.height);

     size = label5.getPreferredSize();

     label5.setBounds(480 + insets.left, 65 + insets.top,

      size.width + 80, size.height);

     

     size = button.getPreferredSize();

      button.setBounds(90 + insets.left, 100 + insets.top,

     size.width, size.height);

     

     size = button1.getPreferredSize();

      button1.setBounds(475 + insets.left, 100 + insets.top,

     size.width, size.height);

     

      size = button2.getPreferredSize();

      button2.setBounds(260 + insets.left, 150 + insets.top,

     size.width, size.height);

 

      size = list.getPreferredSize();

      list.setBounds(90 + insets.left, 260 + insets.top,

     size.width, size.height);

 

}

 

class ButtonEventListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

 

}

}

 

public static void main(String[] args) {

Inter app = new Inter();

app.setVisible(true);

}

private static int tLenght(ResultSet rs,int t) throws SQLException {

while (rs.next()) {

t=t+1;

}

return t;

}

public static int Time (String s, String q)throws IOException, JSONException{

 final String proxy = "http://anonymouse.org/cgi-bin/anon-www.cgi/";//дальнейшие переходы осуществляются через прокси-сервер

        final String baseUrl = proxy + "http://maps.googleapis.com/maps/api/directions/json";// путь к Geocoding API по HTTP

        final Map<String, String> params = Maps.newHashMap();

        params.put("sensor", "false");// указывает, исходит ли запрос от устройства с датчиком

        params.put("language", "ru");// Язык возвращаемого  значения

        params.put("mode", "driving");// способ перемещения: driving, walking, bicycling

        params.put("origin", s);// текстовое значение широты и долготы отправного пункта маршрута

        params.put("destination", q);// текстовое значение  широты и долготы долготы конечного  пункта маршрута

        final String url = baseUrl + '?' + encodeParams(params);// генерируем путь с параметрами

        //System.out.println(url); // Проверка что вернет url в браузере

        final JSONObject response = JsonReader.read(url);//запрос  к вебсервису и получаем от  него ответ

        JSONObject location = response.getJSONArray("routes").getJSONObject(0);

        location = location.getJSONArray("legs").getJSONObject(0);

        final String duration = location.getJSONObject("duration").getString("text");

        //перевод в минуты

        String res = duration.replaceAll(" ч. ", ".");

        res = res.replaceAll(" мин.", "");

        double result=Double.parseDouble(res);

        int hours = (int)result;

        double minute = result - hours;

        String min=Double.toString(minute);

        String minut = min.replaceAll("0.", "");

        int minutes = Integer.parseInt(minut);

        int time = (hours*60)+minutes;

    return (time);

}

 

public static double Dist (String s, String q)throws IOException, JSONException{

 final String proxy = "http://anonymouse.org/cgi-bin/anon-www.cgi/";//дальнейшие переходы осуществляются через прокси-сервер

        final String baseUrl = proxy + "http://maps.googleapis.com/maps/api/directions/json";// путь к Geocoding API по HTTP

        final Map<String, String> params = Maps.newHashMap();

        params.put("sensor", "false");// указывает, исходит ли запрос от устройства с датчиком

        params.put("language", "ru");// Язык возвращаемого  значения

        params.put("mode", "driving");// способ перемещения: driving, walking, bicycling

        params.put("origin", s);// текстовое значение широты и долготы отправного пункта маршрута

        params.put("destination", q);// текстовое значение  широты и долготы долготы конечного  пункта маршрута

        final String url = baseUrl + '?' + encodeParams(params);// генерируем путь с параметрами

        //System.out.println(url); // Проверка что вернет url в браузере

        final JSONObject response = JsonReader.read(url);//запрос  к вебсервису и получаем от  него ответ

        JSONObject location = response.getJSONArray("routes").getJSONObject(0);

        location = location.getJSONArray("legs").getJSONObject(0);

        final String distance = location.getJSONObject("distance").getString("text");

 

        //перевод в км

        String dis= distance.replaceAll(" км", "");

        String dista=dis.replaceAll(",",".");

        double dist=Double.parseDouble(dista);

       

    return (dist);

}

protected static String encodeParams(final Map<String, String> params) {

        final String paramsUrl = Joiner.on('&').join(// получаем значение вида key1=value1&key2=value2...

                Iterables.transform(params.entrySet(), new Function<Entry<String, String>, String>() {

 

           @Override

           public String apply(final Entry<String, String> input) {

           try {

           final StringBuffer buffer = new StringBuffer();

           buffer.append(input.getKey());// получаем значение вида key=value

           buffer.append('=');

           buffer.append(URLEncoder.encode(input.getValue(), "utf-8"));// кодирует строку в соответствии со стандартом HTML 4.01

     return buffer.toString();

  } catch (final UnsupportedEncodingException e) {

throw new RuntimeException(e);

}

}

  }));

        return paramsUrl;

}

public static void shortestPaths(List<Edge>[] edges, int s, int[] prio, int[] pred) {

    Arrays.fill(pred, -1);

    Arrays.fill(prio, Integer.MAX_VALUE);

    prio[s] = 0;

    PriorityQueue<Long> q = new PriorityQueue<Long>();

    q.add((long) s);

    while (!q.isEmpty()) {

      long cur = q.remove();

      int curu = (int) cur;

      if (cur >>> 32 != prio[curu])

        continue;

      for (Edge e : edges[curu]) {

        int v = e.t;

        int nprio = prio[curu] + e.cost;

        if (prio[v] > nprio) {

          prio[v] = nprio;

          pred[v] = curu;

          q.add(((long) nprio << 32) + v);

        }

      }

    }

  }

 

  public static void generatepopulation(int[]orders, int[]rtime){

 

  }

  static class Edge {

    int t, cost;

 

    public Edge(int t, int cost) {

      this.t = t;

      this.cost = cost;

    }

  }

  public static void collectorders(int[]orders, int[]rtime){

  }

  public static void checkingcapacity(int[]orders, int[]rtime){

  }

  public static void returnroute(int[]orders, int[]rtime){

  }

 

 

}


Информация о работе Логистическое планирование доставки товаров