Skip to content
Solverytic.com
Интеллект для бизнеса
  • ⬩BI-анализ
    • ⬩ BI-анализ
    • ⬩ Дашборд руководителя
    • ⬩ Дистрибьюция
      • ⬩ Документация
    • ⬩ Маркетплейсы
    • ⬩ Фармацея
    • ⬩ Калькулятор стоимости
  • ⬩ОПТИМИЗАЦИЯ
    • ⬩ МАТЕМАТИЧЕСКАЯ ОПТИМИЗАЦИЯ
    • ⬩ AMPL
      • ⬩ О AMPL
      • ⬩ AMPL ПРОДУКТЫ
      • ⬩ AMPL IDE
      • ⬩ AMPL API
      • ⬩ FAQ
    • ⬩ SOLVERS
      • ⬩ О SOLVERS
      • ⬩ ВСЕ SOLVERS
      • ⬩ ПРОДАЖА SOLVERS
  • ⬩ОТРАСЛИ
  • ⬩КУПИТЬ
  • ⬩БЛОГ
  • ⬩Контакты

AMPL

  • Оглавление
  • Команды и настройки AMPL
    • Команды
      • Команды моделирования
      • Команды отображения
        • Другие функции отображения
        • Общие настройки управления выводом
        • display
          • Команда display
          • Параметры display
        • print
          • Команда print
        • printf
          • Команда printf
    • Настройки AMPL
      • Изменение данных
      • Модификация моделей
      • Настройка и решение моделей
      • Параметры
  • Столбчатые формулировки
    • Модель “черный ящик”
    • Модель планирования
    • Правила построения формулировки «по столбцам»
    • Формулировки по столбцам. Введение
  • Команды сценариев
    • Завершение цикла. Команда: break и continue
    • Запуск сценариев
    • Оператор перебора набора: for
    • Повторение действий в зависимости от условия. Оператор repeat.
    • Пошаговое выполнение сценария
    • Сценарии команд. Общие сведения.
    • Тестирование условия: оператор if-then-else
  • Сетевые линейные программы
    • Сетевые линейные программы
    • Транспортная модель
      • Общая формулировка
        • Модель кратчайшего пути
        • Модель максимизации потока
        • Модель максимизации потока
        • Модель назначения
        • Минимизация затрат
          • Естественная убыль. Различные единицы измерения грузов при транспортировке
          • Транспортная модель: минимизация затрат (общая модель)
          • Транспортная модель: минимизация затрат (специализированная модель)
      • Нотация: node и arc
        • Правила объявления node и arc
        • Минимизация затрат
          • Варианты моделей перевалки
          • Модель перевалки (специализированная)
          • Сетевая интерпретация модели перевалки (общая).
  • Кусочно-линейные формулировки
    • Min-Max и другие формулировки
    • Инвентированные события
    • Кусочно-линейные модели
    • Правила описания кусочно-линейных выражений
    • Работа с неосуществимостью
    • Штрафы – мягкие ограничения
  • Взаимодействие с моделями
    • Именованное окружение
    • Именованные проблемы
    • Переключение между моделями
  • Линейность и линеаризация выражений
    • Линейные выражения
  • Лексический состав AMPL
    • Зарезервированные и предопределенные имена
    • Общие имена
    • Синонимы ключевых слов и операторов
    • Токены AMPL
    • Функции
      • Библиотека расширенных функций
      • Встроенные функции
      • Строковые выражения в командах AMPL
      • Строковые функции и операторы
      • Функции округления
      • Функции пользователя
      • Функции случайных чисел
    • Выражения
      • Арифметические выражения
      • Логические выражения
      • Логические операторы
      • Логические операторы
      • Операторы арифметической редукции
      • Рекурсия
      • Стандартная форма записи выражений в AMPL
  • Объекты модели
    • Данные
      • Данные в списках
      • Общие правила работы с данными
      • Объявление данных
      • Чтение неформатированных данных
      • Двумерные таблицы и срезы
        • Двумерные таблицы и срезы
      • Базы данных
        • Доступ к базе данных
        • Запись данных в реляционные таблицы
        • Индексированные коллекции таблиц и столбцов, 2D таблица
        • Операторы обработки таблиц
        • Стандартные и встроенные обработчики таблиц
        • Чтение данных из реляционных таблиц
        • Чтение и запись одной и той же таблицы
      • Общие правила работы с данными
        • Другие особенности объявления данных
    • Целевая функция
      • Целевая функция
    • Результаты
      • Альтернативные решения
      • Связанные значения решения
    • Ограничения
      • Ограничения модели
    • Наборы
      • Выражения индексации наборов
      • Индексированные коллекции наборов
      • Интервалы
      • Классификация наборов
      • Место объявления элементов набора
      • Наборы длинных кортежей
      • Наборы упорядоченных пар
      • Наборы. Правила объявления наборов
      • Неупорядоченный набор символьных строк
      • Операции над наборами
      • Подмножества и кусочки упорядоченных пар
      • Предопределенные наборы
      • Размерность набора (Арность)
      • Упорядоченные наборы
      • Установление членства в наборе
      • Числовые наборы
      • Операции с наборами
        • Оператор setof
        • Операции с наборами кортежей
    • Параметры
      • Логические параметры
      • Объявление параметров
      • Ограничения параметров
      • Операции с параметрами
      • Параметр в индексном выражении
      • Разряженные параметры
      • Расчет параметров
      • Символьные параметры
      • Случайно сгенерированные параметры
    • Переменные
      • Действия c переменными
      • Начальные значения переменных
      • Объявление переменных
      • Ограничение переменных
  • Решатели
    • Взаимодействие с решателями
      • Обмен информацией с решателями с помощью суффиксов
      • Получение результатов от решателей
      • Фаза предварительного решения: presolve

Distribution

  • Консоль
    • Страница “ГЛАВНАЯ”
    • Страница “ММЛ / МТ”
    • Страница “ОВП граф.”
    • Страница “ОВП граф.+”
    • Страница “ОВП табл.”
    • Страница “Рейтинги”
    • Страница “Сравнения”
    • Страница «Акции: показатели»
    • Страница «Акции: Скидки»
    • Страница «Акции: Эффективность»
    • Страница «Анализ: ABC-XYZ»
    • Страница «Анализ: Что-Если»
    • Страница «Бенчмаркинг цен»
    • Страница «План/Факт»
    • Страница «Факторный анализ»

Модель перевалки (специализированная)

Объявления arc и node позволяют легко определить линейную программу для сети, которая имеет несколько различных типов узлов и дуг. В качестве примера вернемся к специализированной модели:

set D_CITY;
set W_CITY;
set DW_LINKS within (D_CITY cross W_CITY);
param p_supply >= 0; # amount available at plant
param w_demand {W_CITY} >= 0; # amounts required at warehouses
check: p_supply = sum {j in W_CITY} w_demand[j];
param pd_cost {D_CITY} >= 0; # shipment costs/1000 packages
param dw_cost {DW_LINKS} >= 0;
param pd_cap {D_CITY} >= 0; # max packages that can be shipped
param dw_cap {DW_LINKS} >= 0;
var PD_Ship {i in D_CITY} >= 0, <= pd_cap[i];
var DW_Ship {(i,j) in DW_LINKS} >= 0, <= dw_cap[i,j];
# packages to be shipped
minimize Total_Cost:
sum {i in D_CITY} pd_cost[i] * PD_Ship[i] +
sum {(i,j) in DW_LINKS} dw_cost[i,j] * DW_Ship[i,j];
subject to P_Bal: sum {i in D_CITY} PD_Ship[i] = p_supply;
subject to D_Bal {i in D_CITY}:
PD_Ship[i] = sum {(i,j) in DW_LINKS} DW_Ship[i,j];
subject to W_Bal {j in W_CITY}:
sum {(i,j) in DW_LINKS} DW_Ship[i,j] = w_demand[j];

В сети есть узел завода, узел центра распределения для каждого D_CITY и узел склада для каждого W_CITY. Таким образом, для модели требуется три объявления узла:

node Plant: net_out = p_supply;
node Dist {i in D_CITY};
node Whse {j in W_CITY}: net_in = w_demand[j];

Условия баланса говорят, что поток из узла Plant должен быть p_supply, а поток в узел Whse [j] равен w_demand [j]. (Сеть не имеет дуг на заводе или вне складов, поэтому net_out и net_in - это только поток исходящий и входящий, соответственно.) Условия в узле Dist[i] могут быть записаны либо net_in = 0, либо net_out = 0, но поскольку они предполагаются по умолчанию, нам не нужно указывать какие-либо условия вообще.

В этой сети есть два вида дуг: дуга от завода к каждому D_CITY, которую можно объявить:

arc PD_Ship {i in D_CITY} >= 0, <= pd_cap[i], from Plant, to Dist[i], obj Total_Cost pd_cost[i];

и есть дуги от распределительного центра i до склада j для каждой пары (i,j) в DW_LINKS:

arc DW_Ship {(i,j) in DW_LINKS} >= 0, <= dw_cap[i,j], from Dist[i], to Whse[j], obj Total_Cost dw_cost[i,j];

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

set D_CITY; set W_CITY; set DW_LINKS within (D_CITY cross W_CITY); param p_supply >= 0; # amount available at plant
param w_demand {W_CITY} >= 0; # amounts required at warehouses
check: p_supply = sum {j in W_CITY} w_demand[j];
param pd_cost {D_CITY} >= 0; # shipment costs/1000 packages
param dw_cost {DW_LINKS} >= 0;
param pd_cap {D_CITY} >= 0; # max packages that can be shipped
param dw_cap {DW_LINKS} >= 0;
minimize Total_Cost;
node Plant: net_out = p_supply;
node Dist {i in D_CITY};
node Whse {j in W_CITY}: net_in = w_demand[j];
arc PD_Ship {i in D_CITY} >= 0, <= pd_cap[i], from Plant, to Dist[i], obj Total_Cost pd_cost[i]; arc DW_Ship {(i,j) in DW_LINKS} >= 0, <= dw_cap[i,j],
from Dist[i], to Whse[j], obj Total_Cost dw_cost[i,j];
Специализированная модель
Каковы ваши чувства?
Поделитесь этой статьёй:
  • Facebook
  • Twitter
  • LinkedIn
  • Pinterest
Solverytic.com
  • Аналитика для маркетплейсов в Power BI
  • Аналитика для сети аптек и фармации в Power BI
  • Дашборд для руководителя
  • Аналитика для дистрибьюции/ритейла в power BI
  • Калькулятор онлайн стоимости BI-решения
  • Математическая оптимизация
  • Блог
  • Контакты
Solverytic.com - является официальным партнером AMPL Optimization Inc. и Microsoft
© 2023 Solverytic.com. Все права защищены. Политика конфиденциальности
Minsk, Belarus
(+375) 29 613-13-68
mail@solverytic.com