Краткое объяснение
Параметры используются для ввода данных в модель.Эти данные могут быть использованы в уравнениях и не будут затронуты оптимизацией.Математически вы можете думать о константе.(Решение) Переменные являются «переменными» во время оптимизации.Значение переменной в оптимуме сообщается после завершения оптимизации.
Мнемоника
Если модель примет решение о значении данных (например, объем производства, распределение и т. Д.):
Да -> Переменная
Нет -> Параметр
Пример
Возьмите Пример проблемы с транспортом с веб-сайта GAMS, где целью является минимизация затратдоставки товаров с 2 заводов на 3 рынка.
Поскольку расстояние между двумя заводами известно (и мы ничего не можем изменить или не захотим принять решение), эти данные вводятся в модель в качестве параметра (вв данном случае таблица)
Table d(i,j) distance in thousands of miles
New-York Chicago Topeka
Seattle 2.5 1.7 1.8
San-Diego 2.5 1.8 1.4 ;
Кроме того, в этом типе модели транспортные расходы известны.Поскольку эти данные (в долларах на единицу доставки на тысячу миль) являются одномерными, их можно ввести в виде скаляра (который также является параметром)
Scalar f freight in dollars per case per thousand miles /90/ ;
С помощью этой информации вы можете рассчитать стоимость доставки поумножение стоимости перевозки на расстояние между различными заводами.
Parameter
c(i,j) transport cost in thousands of dollars per case ;
c(i,j) = f * d(i,j) / 1000 ;
Как видите, мы присвоили значение параметру c (i, j), указав функцию затрат на перевозку и расстояния междуконсервные растения.Независимо от типа модели (LP, MIP, NLP и т. Д.), Мы можем использовать нелинейные функции при расчете значений параметров, если не участвуют переменные решения.
Теперь единственное, что может решить модельна это количество доставки между различными заводами (i) и рынками (j), в нашей модели, помеченной как x (i, j)
cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;
Я надеюсь, что этот маленький пример показывает, что параметр ипеременная решения (по крайней мере, в контексте GAMS):
Также может быть интересно знать, что значения параметров вычисляются во время компиляции, в то время как переменные будут вычисляться во время решения (или во время выполнения).