В GAMS, в чем разница между переменными и параметрами? - PullRequest
0 голосов
/ 14 октября 2018

В GAMS, в чем разница между переменными и параметрами?

В каких случаях один из них лучше использовать, чем другой?

1 Ответ

0 голосов
/ 15 октября 2018

Краткое объяснение

Параметры используются для ввода данных в модель.Эти данные могут быть использованы в уравнениях и не будут затронуты оптимизацией.Математически вы можете думать о константе.(Решение) Переменные являются «переменными» во время оптимизации.Значение переменной в оптимуме сообщается после завершения оптимизации.

Мнемоника

Если модель примет решение о значении данных (например, объем производства, распределение и т. Д.):
Да -> Переменная
Нет -> Параметр

Пример

Возьмите Пример проблемы с транспортом с веб-сайта 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):

Также может быть интересно знать, что значения параметров вычисляются во время компиляции, в то время как переменные будут вычисляться во время решения (или во время выполнения).

...