Страницы: 1
RSS
Как получить наибольшую сумму произведений?, Проблемы с поиском оптимального решения
 
Добрый вечер, Однофорумчане!
Столкнулся с тривиальной задачей, но не могу подобрать метод поиска оптимального решения.
История:
Играю в игру. Случайным образом подбираются 8 соперников, с фиксированными очками за победу.
Бой состоит только из 4 битв, т.е. выбираются только 4 из 8 соперников. С одним и тем же противником нельзя драться более 1 раза.
Каждый бой имеет свой коэффициент:
Первый бой = 1;
Второй = 1,2;
Третий = 1,4;
Четвертый = 1,6.

Задача: набрать максимальную сумму очков за 4 боя.

Попытался составить задачку по оптимизации, и что-то не получилось, Надстройка считает не так, как надо.
Очень прошу посмотреть/помочь/подсказать, что я не учел в задаче. Файл прикладываю.
Спасибо.
 
Цитата
Юрий Козлов написал:
считает не так, как надо
а как должно получиться?

Сообразил : =ЕСЛИ(C$2=НАИБОЛЬШИЙ($C$2:$J$2;СТРОКА(A1));1;0)
Тема: подбор максимальной суммы произведений
Изменено: buchlotnik - 21.08.2019 22:38:12
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
а как должно получиться?
Если посмотреть приложенный файл, то Надстройка говорит:
SkullЭллиотБэтманМадамЛиуЛордХитманТайсон
Очки162526086811722201291929372556Сумма очков
Коэффициент1,6000000104699,2
Коэффициент1,4000001004086,6
Коэффициент1,2000010002641,2
Коэффициент1000000012556
13983
Что первый бой надо провести с Тайсоном и с коэффициентом 1 и получить за него 2556 очков.

Но если первый провести с Лиу:
SkullЭллиотБэтманМадамЛиуЛордХитманТайсон
Очки162526086811722201291929372556Сумма очков
Коэффициент1,6000000104699,2
Коэффициент1,4000001004086,6
Коэффициент1,2000000013067,2
Коэффициент1000010002201
14054
То итоговая сумма очков будет больше, а Надстройка этого не видит.
 
Цитата
Юрий Козлов написал:
Надстройка этого не видит
Эволюционный поиск находит... но на формулах проще
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
Сообразил : =ЕСЛИ(C$2=НАИБОЛЬШИЙ($C$2:$J$2;СТРОКА(A1));1;0)
Спасибо, а через Поиск решения это возможно реализовать?
Есть подозрение, что когда разброс по очкам будет небольшой (то есть коэффициенты исказят информацию), то формула сосчитает неправильно. Нет?
 
Цитата
Юрий Козлов написал:
Есть подозрение
подкрепите примером, что значит
Цитата
Юрий Козлов написал:
коэффициенты исказят информацию
, да и про
Цитата
Юрий Козлов написал:
через Поиск решения это возможно реализовать
написал в #4,но формулы на порядки быстрее
Изменено: buchlotnik - 21.08.2019 23:15:48
Соблюдение правил форума не освобождает от модераторского произвола
 
название темы:
получить наибольшую сумму произведений
ответ
Код
=СУММПРОИЗВ(A5:D5;НАИБОЛЬШИЙ(A2:H2;СТОЛБЕЦ(A5:D5)))
Изменено: Ігор Гончаренко - 21.08.2019 23:00:31
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Юрий Козлов написал:
Есть подозрение, что когда разброс по очкам будет небольшой (то есть коэффициенты исказят информацию), то формула сосчитает неправильно. Нет?
Хотя в принципе все работает. Неужели такое простое решение?
Спасибо еще раз!
Если кто-то знает, как это реализовать через Поиск решения, буду очень благодарен.
 
Цитата
Юрий Козлов написал:
Если кто-то знает
издеваетесь?! #4!
Изменено: buchlotnik - 21.08.2019 23:15:56
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Ігор Гончаренко написал:
=СУММПРОИЗВ(A5:D5;НАИБОЛЬШИЙ(A2:H2;СТОЛБЕЦ(A5:D5)))

Спасибо большое!
Но для меня было важно понимать, на кого первого нападать, чтобы набрать максимальное количество баллов. :-)
 
Цитата
buchlotnik написал:
издеваетесь?! #4!
Извините, сразу не увидел ответа.
Спасибо еще раз!
 
Цитата
Юрий Козлов написал:
понимать, на кого первого нападать
см.вложение)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Юрий Козлов написал:
на кого первого нападать, чтобы набрать максимальное количество баллов
Если только 4 боя, то сначала надо нападать на четвёртого по количеству очков, потом на третьего, на второго и на первого. Даст наибольшее количество баллов.
Конечно, если удастся победить. Очки то они победами заработали.
 
Цитата
Ігор Гончаренко написал:
см.вложение)
Очень понравилось, спасибо! :-)
Страницы: 1
Наверх