Здравствуйте! Помогите пожалуйста в составлении модели для вот такой задачи:
Распределенная информационная система включает n баз данных (БД). Стоимость обращения к БД равна
. Одна и та же информация может содержаться в нескольких БД. За одно обращение из БД извлекается вся необходимая информация.
Требуется найти оптимальный вариант выполнения заявки на m единиц информации для критерия "Средняя стоимость задействованной БД".
Картинку таблички с исходными данными можно посмотреть
здесь
Как пытался решать Я:
Введем булеву переменную
– факт обращения к БД. Если обращение к БД было, то переменная становится равной 1, иначе 0. Таким образом:
– факт наличия обращения к БД1
– факт наличия обращения к БД2
– факт наличия обращения к БД3
– факт наличия обращения к БД4
– факт наличия обращения к БД5
– факт наличия обращения к БД6
– факт наличия обращения к БД8
– факт наличия обращения к БД9
– факт наличия обращения к БД10
Средняя стоимость задействованных БД – сумма всех затрат, деленная на количество обращений ко всем БД. Таким образом, критерий можно найти так:
А ограничения будут такими:
Поскольку критерий нелинейный и, соответственно, методами линейного программирования его решить нельзя, обозначим:
Введем еще одно обозначение:
Получим:
Всё! Математическая модель составлена. Теперь я пытаюсь решить эту систему пакетом LINDO. Вот код программы:
Код:
min 3y1 + 10y2 + 5y3 + 17y4 + 15y5 + 7y6 + 4y8 + 8y9 + 9y10
st
y2 + y5 -p =0
y1 + y4 + y5 -p =0
y2 + y3 + y9 -p =0
y2 + y6 -p =0
y4 + y5 -p =0
y1 + y3 + y5 + y8 -p =0
y1 -p =0
y8 + y9 -p =0
y4 + y10 -p =0
y1 + y2 + y3 + y4 + y5 + y6 + y8 + y9 + y10 = 1
end
LINDO выдаёт сообщение об ошибке №54 - решения нет, нехватка ресурса (переменная
отрицательная).
Я, конечно, понимаю, что отсутствие решения - тоже решение, но всё-таки может быть всё дело в модели, которую Я составил. Может быть так нельзя было решать эту задачу.... Пожалуйста подскажите