Как подобрать товар на необходиму сумму

aaaa1

Здравствуйте!
Помогите формализовать задачу, пожалуйста.
Нужно найти хотя-бы несколько наборов решений (Xi - натуральное или ноль) уравенения СУММА(Ai*Xi) = S
Требования:
1. Нужно, чтобы ненулевых Xi в решении было, скажем, половина - (немогу формализовать ето).
Как к этому подступиться?
Есть какой-нибудь более оптимальный путь, чтобы не тупо перебирать все возможные варианты?

Marusetta


В голову приходит "сумма всевозможных произведений n/2 Xi" - если, конечно, требуется не более n/2 нулевых.
По крайней мере автоматизирует проверку

Reves2

посмотри в сторону задачи укладки рюкзака

vall

ты задолбаешься формализовать ограничение на количество использованных типов и это не приблизит тебя к решению.
лучше посмотри на решение задачи о рюкзаке методом динамического программирования и добавь там ещё одно измерение — количество использованных типов предметов.

0000

Что то помнится мне, что задача уже давно формулизована и имеется алгоритм решения - блин тока я название забыл этой байды (в техникуах подобные задачи как раз проходят).

vall

ты говоришь о задаче линейного программирования?
я не вижу способа к ней это свести без изврата.
да и задача целочисленного линейного пограммирования вроде NP-трудна.

0000

Hее, не так называлось.
А вот были ли там целые или не целые числа уж и не помню - только дюже похоже формулировалась.

Helga87

глобально-то чего хочется? какую жизненную задачу ты пытаешься формализовать и решить?

pilligrimm

а задача такая:
Есть перечень блюд с известными ценами Ai
Есть перечень продуктов на складе с известным остатком
Есть сумма выручка за день S
Известны рецептуры приготовления каждого блюда.
Бухгалтеру нужно найти хотя-бы пару наборов решений (Xi - натуральное или ноль)
уравенения СУММА(Ai*Xi) = S
Требования:
1. количества продуктов на складе должно хватить на приготовление блюд.
(рецептуры приготовления всех блюд, наличие продуктов на складе известно)
тут, понятно, система неравенств СУММА(Вji*Xi)<=Di (где 1<= j <= m - m зависит от выбранных блюд)
2. чтобы ненулевых значений в наборе решения было ну скажем 10 (или 15, 20) - (немогу формализовать ето).
Вторым условием в принципе можно пренебречь если можно найти некоторое количество решений, чтобы человек сам выбирал удобоваримое.
что похоже на симплекс метод (задачи линейного программирования но там функция, значение которой максимизируют или минимизируют, а у меня строгое равенство.

vpzhukov13

эксель\поиск решения. Вручную -геморно решать

tima56

Слушайте Blind'а, он дело говорит
Excel тут не помощник

vpzhukov13

не знаю, о каких извратах ты и бинд говорите. типичная задача ЛП-
поясни,чем эксель тут плох

vall

типичная задача ЛП
Катя, она такой будет, если ты придумаешь линейную функцию выдающую (x>0)?1:0 хотябы приблизительно

vpzhukov13

что похоже на симплекс метод (задачи линейного программирования но там функция, значение которой максимизируют или минимизируют, а у меня строгое равенство.
в экселе это; "установить целевую ячейку равной= (твое число)

vpzhukov13

я не катя,но попробую ее тебе заменить
открой для себя булевы переменные.Они в экселе есть.

vall

ты первая начал(а) обзываться — bind это не я а dns сервер.
я не знаю что там умеет эксель, но в задаче линейного программирования всё по-определению линейно относительно неизвестных.
Оставить комментарий
Имя или ник:
Комментарий: