Задача дробно-линейного программирования

Условия: Распределенная информационная система включает n баз данных (БД). Стоимость доступа к каждой БД равна Cj. Одна и та же информация может храниться в нескольких БД. Всю необходимую информацию можно получить в один запрос к БД. Задача состоит в том, чтобы найти оптимальный способ выполнения запроса на m единиц информации на основе следующих критериев: стоимость выполнения запроса, количество задействованных БД и средняя стоимость задействованных БД. Покажите, как требование включения либо DB1 и DB5, либо DB2 и DB4, повлияет на решение для первого критерия.

Как мне написать функцию для средней стоимости задействованных БД в LINDO?

Для первого критерия (минимальной стоимости) я получил следующую целевую функцию: (https://i.stack.imgur.com/QwbzU.png), при соблюдении следующих ограничений:

X2+X5>=1 - чтобы получить информацию 1, необходимо использовать базу данных 2 или 5 X1+X4+X5>=1 - чтобы получить информацию 2, необходимо использовать базу данных 1, 4 или 5 X2+X3+X9>=1 - чтобы получить информацию 3, необходимо использовать базу данных 2, 3 или 9 X2+X6>=1 - чтобы получить информацию 4, необходимо использовать базу данных 2 или 6 X4+X5>=1 - чтобы получить информацию 5, необходимо использовать базу данных 4 или 5 X1+X3+X5+X8>=1 - чтобы получить информацию 6, необходимо использовать базу данных 1, 3, 5 или 8 X1=1 - чтобы получить информацию 7, необходимо использовать базу данных 1 X8+X9>=1 - чтобы получить информацию 8, необходимо использовать базу данных 8 или 9 X3+X6>=1 - чтобы получить информацию 9, необходимо использовать базу данных 3 или 6 X4+X10>=1 - чтобы получить информацию 10, необходимо использовать базу данных 4 или 10.

Переменные X1, X2, X3, X4, X5, X6, X7, X8, X9, X10 равны 1, если база данных участвует в выполнении запроса, в противном случае 0. LINDO CODE:

MIN 3X1+10X2+5X3+17X4+15X5+7X6+2X7+4X8+8X9+9X10
SUBJECT TO
X2+X5>=1          
X1+X4+X5>=1       
X2+X3+X9>=1       
X2+X6>=1          
X4+X5>=1          
X1+X3+X5+X8>=1    
X1>=1             
X8+X9>=1     
X3+X6>=1     
X4+X10>=1         
X1<=1
X2<=1
X3<=1
X4<=1
X5<=1
X6<=1
X7<=1
X8<=1
X9<=1
X10<=1
END
gin 10

Для второго критерия (минимальное количество задействованных баз данных) также была получена функция, а ограничения остались те же самые.(https://i.stack.imgur.com/jWTHC.png)

Чтобы найти решение на основе третьего критерия, мне нужно использовать следующую модель: (https://i.stack.imgur.com/WslDo.png). Эта проблема является проблемой дробно-линейного программирования. Эта проблема может быть сведена к проблеме линейного программирования. Для этого давайте используем следующую нотацию: (https://i.stack.imgur.com/RhYOQ.png)(https://i.stack.imgur.com/83hmz.png), и у нас есть (https://i.stack.imgur.com/UaX9w.png). Подставляя данные из условия задачи, можно получить следующие ограничения: (https://i.stack.imgur.com/anVzi.png) И функцию: (https://i.stack.imgur.com/gWNvP.png)

Правильно ли я сформулировал модель, и как мне написать ее в LINDO/LINGO?


Ответы (0 шт):