Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2011, 12:17   #1
xxyyzz
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 16
По умолчанию Максимум функции.

Здравствуйте все.
Встала интересная задача. Не соображу с какого боку к ней подойти.

Дано:
Яблоки - 45 руб/кг.
Груши - 72 руб/кг.
В кошельке 1000 руб.

Задача:
На данную сумму 1000 руб. купить наибольшее кол-во кг фруктов.

Как я понимаю, необходимо решить функцию на максимум.
Типа:
ax + by <= z
x + y = MAX
т.е.
45x + 72y <= 1000
x + y = MAX

Как это сделать в Excel'e без макросов?
Возможно ли такое?
Где копать? В какую сторону смотреть?
Никак не соображу

Спасибо!

Последний раз редактировалось xxyyzz; 27.05.2011 в 12:19.
xxyyzz вне форума Ответить с цитированием
Старый 27.05.2011, 12:30   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

не... уважаемый.
эта задача решается методом "сопряженных вычислений от обратного".
используем функцию минимум, а не максимум.
допустим стоимости у вас записаны в колонке В, в ячейках В2 и В3
тогда в любую ячейку пишете это:
=1000/мин(B2;B3)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.05.2011, 12:30   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Хм, а разве решение не очевидно - чем меньше цена, тем больше кг?
Функцией МИН находим мин. цену, делим на нее сумму, получает ответ.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 27.05.2011, 12:54   #4
xxyyzz
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 16
По умолчанию Update.

Если бы всё было так просто.

Э... Задачу неправильно сформулировал.
Извините, волнуюсь.

Необходимо купить как можно больше фруктов, затратив при этом как можно меньше денег.
В обязательном порядке должны быть куплены и яблоки и груши.

45x + 72y = MIN
x + y = MAX
xxyyzz вне форума Ответить с цитированием
Старый 27.05.2011, 13:01   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Тогда, наверно, должен быть указан вес каждого фрукта, т.е. мин. количество, которое можно купить. Иначе просто берем 0,000000001 кг дорогого фрукта, а остальные деньги тратим на дешевый

Копайте в сторону "подбор параметра" (для одной переменной) или "поиск решения" (для многих переменных), а я исчезаю.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 27.05.2011 в 13:06.
Казанский вне форума Ответить с цитированием
Старый 27.05.2011, 16:50   #6
xxyyzz
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 16
По умолчанию Спасибо, Казанский!

Направление было дано верное - "поиск решения".

Возникли другие вопросы.

1. При поиске решения всегда необходимо жамкать кнопки "Поиск решения" и "Выполнить"?
Есть ли возможность менять только входные данные (в одной или нескольких ячейках), а нужный результат автоматически пересчитывался на выходе в других ячейках?

2. Не могу понять как в ограничениях сделать условие допустимости значений с нужным разрядом, например десятками.
Там только "целое", "двоичное".
Как сделать чтобы полученное значение округлялось в нужную сторону?

Спасибо.
xxyyzz вне форума Ответить с цитированием
Старый 27.05.2011, 17:06   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однако...
что-то Вы не договариваете. или тут изложены не все условия или эта задача не для "поиска решений"...
в первой задаче не получилось случайно, что на 1000р. можно приобрести 22.22кг фруктов (22.22кг яблок + 0кг груш).

по п.2: поставте ячейкам формат числовой, два знака после запятой
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.05.2011, 17:54   #8
xxyyzz
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 16
По умолчанию

Ваша правда, IgorGO.
Стараюсь следовать правилам раздела: "просто замените Ваши данные на нейтральные (пулемёты на яблоки, Вову Путина на Васю Пупкина, и т.д.)"

На самом деле пример задачи не совсем корректный.

Если опять использовать мой корявый пример, то там нужно не 1000 руб, а 2000 руб. По 1000 на каждый фрукт, т.е. примерно должно выдерживаться условие:
45x = 72y = 1 000
или
45x + 72y <= 2000
Получаем, что надо купить 1000/45 = 22.(2) кг яблок и 1000/72 = 13.(8) кг груш
Погрешность взвешивания весов составляет 100гр. (вот для чего нужны "десятки")
Следовательно, мы можем потратить 45*22.2 = 999 руб на яблоки
и 72*13.8 = 993.6 руб на груши.
999+993.6 = 1992.6 < 2000
Вот тут и хотелось бы оптимизации (1992.6 уменьшить,а сумму 22.2 и 13.8 увеличить)

На самом деле вместо яблок и груш можно воткнуть, всё что угодно.
По сути нужно что:
1. Есть входные данные. Три числа.
2. После некоторых с ними манипуляций на выходе получаем 3 новых числа.
Вот эти числа нужно оптимизировать.
Из которых одно должно быть по возможности максимальным, а два других по возможности минимальными. Или наоборот, в зависимости от задачи.
xxyyzz вне форума Ответить с цитированием
Старый 27.05.2011, 18:02   #9
xxyyzz
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 16
По умолчанию Вдогонку.

Опять же хотелось бы, чтобы в трёх ячейках можно было менять цифры:
2000 руб - денег в кошельке
45 и 72 - цены на фрукты
а на выходе получать в других 3-х ячейках:
- фрукты в кг до десятых
- сэкономленную прибыль от 2000 руб

"На лету" такое возможно без использования каждый раз кнопки "Выполнить"?
xxyyzz вне форума Ответить с цитированием
Старый 27.05.2011, 19:01   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

повторюсь - это задача не для "поиска решений".
летайте...
Вложения
Тип файла: rar Книга682.rar (2.9 Кб, 16 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ первый максимум kate311893 Помощь студентам 0 26.05.2010 14:11
максимум в диапозоне kate311893 Общие вопросы C/C++ 0 26.05.2010 14:09
Максимум если. Baloo007 Microsoft Office Excel 3 08.07.2009 13:01
максимум meteor Microsoft Office Excel 2 06.12.2008 13:08