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

AMPL

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

Distribution

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

Правила построения формулировки «по столбцам»

Алгебраическое описание ограничения AMPL может быть записано любым из следующих способов:

arith-expr <= arith-expr arith-expr = arith-expr arith-expr >= arith-expr
const-expr <= arith-expr <= const-expr const-expr >= arith-expr >= const-expr

Каждое const-expr должно быть арифметическим выражением, не содержащим переменных, а arith-expr может быть любым допустимым арифметическим выражением(линейным для линейных программ). Для формулировки задачи "по столбцам", один из arith-exprs может быть задан как:

to_come
to_come + arith-expr
arith-expr + to_come

Чаще всего ограничение типа «шаблон» состоит, как в наших примерах, из to_come, оператора отношения и const-expr. Все линейные ограничения представлены в объявлениях var, а to_come указывает, к чему они относятся. Если ограничение шаблона содержит переменные, они должны быть из предыдущих объявлений var, и модель становится своего рода гибридом между строковой и столбцовой формами.
Выражение для целевой функции может также включать to_come . Если целевая функция - это сумма линейных элементов, полностью определяемых последующими объявлениями var, как в наших примерах, выражение для цели - to_come вовсе может быть опущено.
В объявлении var коэффициенты ограничения могут быть указаны одной или несколькими фразами, состоящими из ключевого слова coeff, необязательного выражения индексации, имени ограничения и арифметического выражения. Если выражение индексации присутствует, коэффициент создается для каждого элемента набора индексации. В противном случае генерируется один коэффициент. Индексное выражение также может принимать специальную форму {if logic-expr}, в этом случае коэффициент генерируется только в том случае, если логическое выражение принимает значение true.
Наши простые примеры требовали только одной фразы coeff в каждом объявлении var, однако в целом отдельная фраза coeff требуется для каждого отдельного индексированного набора ограничений, в котором появляется переменная.
Коэффициенты целевой функции могут быть указаны таким же образом, за исключением того, что ключевое слово obj используется вместо coeff.
Фраза obj в объявлении var аналогична фразе obj, используемой в объявлениях arc для сетей. Коэффициенты ограничения для сетевых переменных, определенных объявлением дуги, обычно задаются фразами from и to, но также могут присутствовать фразы coeff. Они могут быть полезны, если необходимо дать описание по столбцам «боковых» ограничений, которые применяются в дополнение к ограничениям баланса потоков. В качестве примера ниже показано, как можно использовать фразу coeff для модели многопродуктового потока, рассматриваемой здесь, полностью по столбцам.

set CITIES;
set LINKS within (CITIES cross CITIES);
set PRODS;
param supply {CITIES,PRODS} >= 0; # Количество предложения по городам
param demand {CITIES,PRODS} >= 0; # Количество спроса по городам
check {p in PRODS}:
sum {i in CITIES} supply[i,p] = sum {j in CITIES} demand[j,p];
param cost {LINKS,PRODS} >= 0; # стоимость доставки/1000 коробок
param capacity {LINKS,PRODS} >= 0; # максимальная вместимость
param cap_joint {LINKS} >= 0; # максимальное количество отправленных пакетов / ссылка
minimize Total_Cost;
node Balance {k in CITIES, p in PRODS}: net_in = demand[k,p] - supply[k,p];
subject to Multi {(i,j) in LINKS}: to_come <= cap_joint[i,j]; arc Ship {(i,j) in LINKS, p in PRODS} >= 0, <= capacity[i,j,p],
from Balance[i,p], to Balance[j,p], coeff Multi[i,j] 1.0,
obj Total_Cost cost[i,j,p];

Файл netmcol.mod на сайте AMPL.

coeff, to_come, arith-expr, constant-expr, obj
Каковы ваши чувства?
Поделитесь этой статьёй:
  • 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