Я бы предложил сделать l3, r3, s3 зависимыми от выбора других переменных.Например, если l1 = 1 и l2 = 2 , это означает, что l3 = 30 - 1 - 2 .Таким образом, у вас осталось только 6 параметров для поиска.
Тогда вам следует использовать какой-нибудь метод нелинейной оптимизации, например fminsearh .Определите ваш функционал как функцию от этих 6 параметров.
Если ваша функция гладкая, целочисленное решение должно быть близко к реальному решению.
Чтобы обработать ненулевое условие, вы можете просто датьогромная ошибка для любого входа, который дает отрицательный результат.
Итак, ваш функционал должен выглядеть примерно так:
function d = f(l1,l2,s1,s2,r1,r2)
l3 = 30 - l1 - l2;
r3 = 15 - r1 - r2;
s3 = 10 - s1 - s2;
z = B(s1,r1,l1)+B(s2,r2,l2)+B(s3,r3,l3);
if z<0
d = 10^20;
else
d = z;
end
end
В конце попробуйте проверить все целочисленные решения - попробуйтеокруглите каждое значение до этаж или ceil .Будет 2 ^ 6 возможностей.