назад Оглавление вперед


[Старт] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [ 17 ] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293]


17

!........содержимое 1-го внешнего файла;

Ml М2 Demandl Demand2

!........ содержимое 1-го внешнего файла;

6412-1101

Рис. 2.15. Содержимое внешних файлов для модели Reddy Mikks

#-------------------------------определение множеств модели

set Constr; #множество ограничений

set Var; #множество переменных

#----------------------------задание имен элементам модели

param С (Var); коэффициенты целевой функции

param Rhs (Constr) ; #правые части ограничений

param Aij (Constr, Var); #коэфф. левых частей ограничений

#------------------------------------задание переменных

var X (Var) >= 0; #условие неотрицательности

#------------------------------------задание модели

maximize Total: sum (j in Var) C[j]*X[j]; #целевая функция Subject to Restrictions (i in Constr) : Ограничения

sum (j in Var) Aij [i, j]*X[ j] <= Rhs[i];

#------------------------------------данные для модели

data,-

set Constr := Ml M2 Demandl Demand2; set Var := XI X2;

param Rhs

Demandl

Demand2

param Aij

Demandl

Demand2

param С :=

= XI 5 X2

Puc. 2.16. Листинг AMPL модели Reddy Mikks

Далее оператор var задает имя X (имя определяется пользователем) для переменных множества Var. В отличие от программы LINGO, где все переменные по умолчанию предполагаются неотрицательными, в AMPL все переменные изначально предполагаются свободными. В модели Reddy Mikks переменные ограничиваются условием неотрицательности, поэтому добавляется выражение X{Var}>=0.

После задания имен переменных пользователь определяет имена целевой функции (Total в данном случае) и ограничений - Restrictions. Эти имена используются в выходном отчете программы.

В последнем разделе листинга задаются входные данные модели. Отметим, что данные от имен данных в операторах set и param отделяются символами :=.

В моделях AMPL, как и в моделях LINGO, входные данные не обязательно должны включаться в саму модель. В LINGO для присоединения внешних файлов



сданными использовался оператор @FILE (см. рис. 2.14). В AMPL ситуация несколько иная, поскольку эта программа выполняется в среде DOS (а не Windows). Однако и эта программа позволяет сохранять данные, включая спецификацию модели, во внешних файлах, а затем во время исполнения извлекать эти данные. Например, чтобы найти решение модели Reddy Mikks, в среде программы AMPL надо выполнить следующие команды:

ampl: model ch2AmplReddyMikks.mod; ampl: solve;

Здесь в файле ch2AmplReddyMikks.mod содержится вся спецификация модели, представленная в листинге на рис. 2.16, включая исходные числовые данные. Если числовых данных в этой спецификации нет (т.е. в листинге на рис. 2.16 отсутствует раздел data), но они содержатся в отдельном файле ch2AmplReddyMikks.dat, следует использовать такие команды, ampl: model ch2AmplReddyMikks.mod; ampl: data ch2AmplReddyMikks.dat; ampl: solve;

Вывод на экран результатов расчета (как и входных данных) обеспечивает команда display. Для примера рассмотрим следующие команды (они должны выполняться после команды solve), ampl: display Total; ampl: display X, rc; ampl: display Restrictions; ampl: display Aij, Rhs;

Первая команда выводит на экран значение целевой функции Total, вторая - значения переменных X и приведенные стоимости (параметр гс). Третья команда выводит значения, связанные с ограничениями. Последняя команда отображает значения массива Aij коэффициентов левых частей ограничений и значения Rhs - правых частей ограничений.

УПРАЖНЕНИЯ 2.4

1. На рис. 2.17 показаны выходные результаты, полученные с помощью программы TORA для задачи "диеты" из примера 2.2.2.

a) Интерпретируйте двойственную цену первого ограничения.

b) Найдите новое оптимальное решение, если необходимо ежедневно производить не менее 900 фунтов пищевой добавки.

c) Если стоимость кукурузной изменится до 0,40 долл. за один фунт при неизменной цене соевой муки, то будет ли текущее решение оптимальным?

2. Задача ЛП из упражнения 2.3.1.7 формулируется следующим образом.

Максимизировать г = 18х, + 9х2 при выполнении условий

24х, + 8х2<60 ООО, х, < 2000, х2 < 6000,

xv х2>0,

где х, и х2 - количество производимых консервным заводом упаковок томатного сока и томатной пасты соответственно. Решение этой задачи приведено на рис. 2.18.



LINEAR PROGRAMMING OUTPUT SUMMARY

Title: Diet Problem, Example 2.2-2

Final Iteration No.:

Objective Value =

437.65

Variable

Value

Obj Coeff

Obj Val Contrib

x1: corn

470,59

0,30

141,18

x2: soybean

329,41

0,90

296,47

Constraint

Slack-/Surplus+

1 (>)

800,00

0,00

2(<)

0,00

0,00

3(>)

0,00

10,82+

•"Sensitivity Analysis*"

Variable

Current Obj Coeff

Min Obj Coeff

Max Obj Coeff

Reduced Cost

x1: corn

0,30

-0,63

0,90

0,00

x2: soybean

0,90

0,30

infinity

0,00

Constraint

Current RHS

Min RHS

Max RHS

Dual Price

1 (>)

800,00

0,00

infinity

0,55

2(<)

0,00

-138,00

168,00

-1,18

3(>)

0,00

-infinity

10,82

0,00

Рис. 2.17. Выходной отчет программы TORA

a) Определите единичную стоимость дополнительного фунта помидоров.

b) Изменится ли оптимальное решение, если склад сможет принимать больше упаковок томатного сока? А при увеличении емкости склада для упаковок томатной пасты?

c) Найдите новое оптимальное решение, если компания уменьшит объем перерабатываемых помидоров до 50 000 фунтов за смену.

3. Решите задачу "диеты" из примера 2.2.2 с помощью:

a) средства Excel Поиск решения;

b) программы LINGO;

c) программы AMPL.

2.5. ПРИМЕРЫ МОДЕЛЕЙ ЛП

В этом разделе исследовано несколько реалистических моделей ЛП, в которых определение переменных и построение целевой функции и ограничений не так однозначно, как в ранее рассмотренных моделях с двумя переменными. Использование программы TORA позволит интерпретировать результаты решения этих задач ЛП.

[Старт] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [ 17 ] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293]