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»
    • Страница «Анализ: Что-Если»
    • Страница «Бенчмаркинг цен»
    • Страница «План/Факт»
    • Страница «Факторный анализ»

Рекурсия

Параметры AMPL могут быть определены краткими рекурсивными записями. Рекурсия в AMPL поддерживает множество видов рядов.

Определение значения каждого последующего элемента как суммы предыдущих элементов

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

param N;
param s {j in 1..N} = sum {jj in 1..j} jj;
или, используя формулу:
param s {j in 1..N} = j * (j+1) / 2;

либо, используя рекурсивное определение,

param s {j in 1..N} = if j = 1 then 1 else s[j-1] + j;

Итерационное суммирование предыдущих/последующих элементов набора.

Итерационное Tagg суммирование предыдущих Tagg элементов набора.

param avail_agg {t in Tagg..T by Tagg}= sum {u in t-Tagg+1..t} avail[u];

Итерационное Tagg суммирование всех предыдущих (включая текущий) элементов набора.

param avail_agg {t in Tagg..T by Tagg}= sum {u in 1..t} avail[u];

Последовательное 1..Т суммирование всех предыдущих(включая текущий) членов набора.

param avail_agg {t in 1..T}= sum {u in 1..t} avail[u];

Итерационное Tagg суммирование последующих Tagg элементов набора.

param avail_agg {t in 1..T by Tagg}= sum {u in t..t+Tagg-1} avail[u];

Факториал числа

Запись для определения факториала числа:

param fact{j in 1..10}= if j = 1 then 1 else fact[j-1]* j;

или

param fact {i in 0..c} := prod {j in 1..i} j;

Числа Фибоначи

Выражение для чисел Фибоначи:

fib[n] число Фибоначи: f0 = f1 = 1 and fn = fn-1 + fn-2:
param fib{j in 0..10}= if j=0 or j=1 then 1 else
   fib[j-1]+fib[j-2];

n-е число Фибоначчи равно ближайшему целому числу

Функция Аккермана

Функция Аккермана: Используя рекурсивное объявление, можно определить ack[i,j].

param odd {i in 1..10} = if i = 1 then 3 else
   min {j in odd[i-1]+2..odd[i-1]*2 by 2:
      not exists{k in 1..i-1} j mod odd[k] = 0} j;
set PER;
param T >= 1;
param Tagg integer >= 1;
param avail{PER};

POWER SET

Набор состоящий из полного перечня вариаций поднаборов своих элементов.

set D ordered;
set P within {D,D};
param c{P};
set Adj{i in D} within P := {(u,v) in P: u==i or v==i};
param n:= card(D);
set S:= 0..(2**n-1);
set POW{k in S}:= {i in D: (k div 2**(ord(i,D)-1)) mod 2 ==1};
var x{P} binary;
subject to span{i in D}: sum{(u,v) in Adj[i]}x[u,v] >= 1;
subject to size: sum{(i,j) in P} x[i,j] = n -1;
subject to no_cycles{k in S: card({i in POW[k],j in POW[k]:
(i,j)in P}) >= 3}: sum{i in POW[k], j in POW[k]:
(i,j) in P} x[i,j] <= card(POW[k]) - 1;
minimize cost: sum{(i,j) in P} c[i,j] * x[i,j];
data;
set D := 1 2 3 4 5;
param :P: c:
1 2 3 4 5 :=
1 .   100 125 120 110
2 100 .   40  65  60
3 125 40  .   45  55
4 120 65  45  .   50
5 110 60  55  50  . ;
solve; display cost, x;
Числа Фибоначи, Функция Аккермана, POWER SET, set POW, Рекурсия, fact, fib, Итерационное суммирование, Факториал числа
Каковы ваши чувства?
Поделитесь этой статьёй:
  • Facebook
  • Twitter
  • LinkedIn
  • Pinterest
Оглавление
  • Определение значения каждого последующего элемента как суммы предыдущих элементов
  • Итерационное суммирование предыдущих/последующих элементов набора.
  • Факториал числа
  • Числа Фибоначи
  • Функция Аккермана
  • POWER SET
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