Теперь необходимо изменять значения ключевых ячеек в диапазоне B7:E7 таким образом, чтобы содержание в рационе нормируемых показателей соответствовало норме кормления. Можно попытаться вручную подобрать соответствующие количества кормов, но в реальных (полномерных) моделях с большим количеством переменных и ограничений это невозможно. Поэтому привлекаем для решения задачи надстройку «Поиск решения».
Вызываем диалоговое окно программы «Поиск решения» (рис. 4.7).

Рассмотрим последовательность работы с программой. Вначале определяем целевую ячейку B$14$. Здесь содержится формула для расчета суммы концентрированных кормов в рационе. Эту ячейку устанавливаем на минимальное значение. Программа должна составлять рацион так, чтобы обойтись наименьшим возможным количеством концентратов.
Переходим к элементу управления Изменяя ячейки . Следует указать блок ячеек, где находятся значения количества кормов. Указываем B$7:E$7.
Переходим к блоку управления ограничениями. Сюда можно добавить до 100 ограничений. Для этого запрограммированы 3 кнопки: Добавить , Изменить , Удалить . Щелкнув мышкой по кнопке Добавить, вызываем диалог добавления ограничения (рис. 4.8).

Окно диалога включает три поля ввода: Ссылка на ячейку, Оператор и Ограничение . Ссылка на ячейку содержит адрес ячейки или блока ячеек, значения в которых необходимо получить адекватно тому, что задано в окне ограничения. Эти поля представлены объектом RefEdit – конструкция, позволяющая вводить адреса ячеек или блоков ячеек простым щелчком мышки на них, что исключительно удобно и предотвращает возможность ошибки. На рис. 4.7 показано, что ячейка $F$8 должна быть равна ячейке $F$3. Выбор оператора осуществляется из списка. Нажатие кнопки Ок добавляет ограничение в список ограничений, а кнопка Отмена прекращает процедуру задания ограничения.
Кнопки Изменить и Удалить производят одноименное действие над выбранным в списке ограничением.
В нашем примере первые два ограничения в списке ограничений определяют минимальную и максимальную границы скармливания кормов. Эти ограничения множественные, так как включают по 4 ячейки каждое – по количеству кормов. Третье ограничение – по протеину, четвертое – по обменной энергии и пятое – по сухому веществу.
Следующим шагом в работе с программой необходимо вызвать диалоговое окно «Параметры поиска решения» (рис. 4.9).

В нашей задаче требуется самая простая настройка параметров поиска. Достаточно установить свойство «Неотрицательные значения». Все остальные параметры для нашего примера не влияют существенно на результат. Установив данное свойство, следует щелкнуть кнопку Ок для возврата в главный диалог программы.
Остается щелкнуть кнопку Выполнить для запуска процедуры оптимизации. Расчет занимает не более 1 с, после чего будет выведено сообщение «Решение найдено. Все ограничения и условия оптимальности выполнены». Результат приведен на рис. 4.10.

Рацион включает 25 кг силоса (31 %), 13,7 кг сенажа (21 %), 7,87 кг зерносмеси (36 %), 2,29 кг шрота (11 %). При этом общее потребление обменной энергии, сухого вещества, и сырого протеина соответствует потребности животных по норме кормления. Концентраты занимают 47 % по питательности. И это минимальное их количество для нашего варианта, так как концентрация энергии в сухом веществе поддерживается на уровне 11,36 МДж/кг. Из всех ограничений на количества кормов (дополнительная система ограничений) реально сработало только первое – по силосу. Его максимальная граница скармливания установлена на 25 кг, и эта цифра достигнута в рационе. Таким образом, это ограничение считается лимитирующим. Увеличив его до 30 кг, мы позволяем оптимизатору снизить долю концентратов до 35 %. Но такой рацион уже находится на границе физиологически обусловленного кормления коров – слишком много силоса может
