serge_gorshkov


Сергей Горшков - о бизнесе в сфере ИТ

о семантической интеграции, программировании, управлении...


Previous Entry Share Next Entry
Еще раз об оптимизации
serge_gorshkov
Аналитическое решение любых оптимизационных задач традиционно заключается в:

  • Формализации фрагмента предметной области таким образом, который позволяет отразить ее характеристики, существенные для оценки результата;

  • Выборе способа представления характеристик в виде чисел, установления зависимостей между характеристиками;

  • Разделении характеристик на заданные в качестве ограничений, и подлежащие оптимизации;

  • Поиске экстремальных значений оптимизируемых характеристик.

Работает традиционный способ плохо, и применим ограниченно.
Об оптимизации при помощи симуляционных алгоритмов мы сейчас говорить не будем – сосредоточимся на аналитическом подходе. Я уже писал об этом здесь, здесь, и несколько раз до этого; продолжаю писать, поскольку Карфаген должен быть разрушен, а убийственные результаты неправильной оптимизации можно наблюдать вокруг нас ежедневно. Кроме того, на этот раз я дам конкретный алгоритм того, как оптимизировать что-либо, не сводя его описание к одному числу, характеризующему "хорошесть" (заменить по желанию) объекта.

В качестве примера рассмотрим задачу выбора «лучшего» автомобиля. Очевидными характеристиками грузового автомобиля будут его грузоподъемность, скорость, длина автономного пробега и др. Можно вводить и синтетические, комплексные характеристики, описывающие, например, энергетическую эффективность автомобиля в перемещении грузов, или эффективность с учетом скорости доставки, равную произведению массы груза на расстояние и квадрат скорости. Понятно, что существуют зависимости между мощностью двигателя и расходом топлива, мощностью двигателя и грузоподъемностью, массой автомобиля и грузоподъемностью, массой и расходом топлива, и т.д. Выразив их в виде функций, задав ограничения, выбрав оптимизируемый параметр – например, нас интересует минимизация затрат топлива на доставку груза – можно найти экстремум функции, описывающей зависимость оптимизируемого параметра от остальных, и, таким образом, рассчитать оптимальные параметры автомобиля. Или выбрать «лучший» автомобиль среди доступных. Поскольку оптимизация по одной функции проще, чем по нескольким, чаще всего аналитики стремятся получить единую комплексную числовую оценку оптимизируемого качества системы – или системы в целом. Эта оценка получается заведомо абстрактной, не имеющей физического смысла, приводит к потере информации – об этом я уже писал.
Понятно, что на практике применение такой оптимизации встречает ряд препятствий. Для грузового автомобиля эффективность выполнения работы является главным, но не единственным параметром оценки. Например, для работы в отдаленных регионах величина автономного пробега может стать важнее, чем энергетическая эффективность. Транспортная компания, преимуществом которой является скорость доставки, может предпочесть более скоростные автомобили в ущерб эффективности. Если же посмотреть на критерии выбора легкового автомобиля обывателем, мы поймем, что любые измерения его натуральных показателей не дадут нам ключа к решению задачи выбора «лучшего» автомобиля. Попытки экстраполировать традиционный подход, и описать при помощи численных значений «крутизну внешнего вида», «престиж марки» или «комфортность салона» обречены на провал.
Вывод из сказанного заключается в том, что при решении подобных задач необходимо учитывать целеполагание субъекта, в интересах которого используется объект или оптимизируемая система. Чаще всего это целеполагание принципиально не может быть описано математически. Придумываемые для этого костыли вроде «степени удовлетворенности», которыми заполняют свои отчеты и исследования аналитики, не описывают реальность ни в какой степени.
Ближе к реальности способ, заключающийся в формулировании характеристик объекта и запросов субъекта в виде логических утверждений, и их сравнении друг с другом. Запросы могут иметь разную степень обязательности: как минимум, «необходимо» и «желательно». Анализ по первому набору аксиом позволит выделить набор приемлемых вариантов. Анализ по второму набору позволит ранжировать приемлемые варианты по степени оптимальности.
Например, я утверждаю, что мне необходим компактный пятидверный автомобиль без изысков. «Пятидверный» - объективная, натуральная характеристика, поскольку ошибиться в подсчете дверей крайне сложно. «Компактный» - уже характеристика субъективная, но ее значение можно расшифровать в натуральных величинах, показав мне несколько автомобилей, и определив предельный размер тех, которые я назову «компактными». Хуже всего обстоит дело с характеристикой «без изысков». С некоторыми допущениями ее можно расшифровать в логическую аксиому типа «без хромированных деталей, без светодиодной подсветки, без элементов внешнего вида, отсутствующих на большинстве других автомобилей» и др.
Полученный набор логических условий мы можем применить к оценке всех доступных на рынке автомобилей. Для этого каждый из них нужно описать в тех же терминах, которые я использовал для формулирования своего запроса.
Далее, я формулирую желаемые условия, которые таким же образом раскладываются на логические аксиомы, и сверяются с каждым из автомобилей-кандидатов. Для ранжирования можно выбрать простейший критерий – число желаемых условий, которым соответствует кандидат. Таким образом, можно отобрать автомобили, соответствующие наибольшему числу моих запросов. Разумеется, можно вводить весовые коэффициенты, можно учитывать степень соответствия каждому условию, если используемый в нем показатель выражен в числовой форме, но это путь «на темную сторону», который приведет нас к началу пути – синтетическим, безразмерным, бессмысленным числовым показателям. Если простой способ подсчета числа выполненных условий почему-либо нас не устраивает, то правильнее будет формулировать их комбинации, которые напрямую будут давать довольно узкие наборы оптимальных вариантов, например: «если это будет универсал, то хотелось бы, чтобы стекло и задняя дверь могли открываться по отдельности, а если хэтчбек – то чтобы заднее сиденье складывалось в пропорции 2/3». Таким образом, набор оптимальных решений может содержать весьма непохожие друг на друга варианты, которые никогда не оказались бы рядом при количественном ранжировании.
А финальное решение, конечно, состоит в воспроизведении всего процесса выбора при помощи нейронных вычислений.
Разумеется, на практике задачу подбора какого-либо объекта по набору требований приходится решать не так уж часто. Примером могут быть сервисы персональных рекомендаций, которым до таких алгоритмов пока далеко, как до Луны (все они так или иначе работают на поиске корреляций в массивах данных об уже состоявшемся выборе пользователей, и дают отвратительные результаты). Чаще приходится находить, например, оптимальную конфигурацию какой-либо системы. Вся суть корректного подхода к решению таких задач сводится к истолкованию слова «оптимальный».
Это истолкование обязательно должно опираться на систему целеполагания субъектов – пользователей системы, должно содержать, по отдельности, критерии приемлемости и желательности той или иной конфигурации системы, должно опираться на как можно более сложное, многофакторное, логическое описание самой системы и набора целей.Оптимизация без учета такого подхода приводит к результатам, которые легко видеть в «оптимизируемых» системах нашего здравоохранения и образования, когда выдуманные ключевые показатели стремительно улучшаются, а реальное качество услуги падает до такой степени, что ее использование полностью теряет смысл.

 

  • 1
Думаю, метод оптимизации по одной функции широко используется только потому что математика достаточно простая и есть куча готовых инструментов (тот же Эксель). В теории автоматического управления (регулирования) оптимизируемую функцию как раз часто называют целевой. Гладкие целевые функции действительно, чаще всего однобоко отражают реальную цель. Поэтому построить хорошую целевую функцию очень трудно. Чтобы реализовать в ней узкие наборы подходящих вариантов, пользуются не весовыми коэффициентами, а разрывными (например, ступенчатыми) функциями. В этом случае, на промежуточных (неподходящих) вариантах либо целевая функция будет "зашкаливать" (уходить в большой плюс при минимизации, или в большой минус при максимизации), либо подходящие варианты будут хорошо выделяться на "горном ландшафте" целевой функции. При этом можно продолжать пользоваться тем же методом оптимизации по одной функции, но оптимизационные алгоритмы должны уметь работать с негладкими функциями. То есть, не градиентный спуск, но генетические алгоритмы, например. В процессе построения хорошей целевой функции она может из формульной превратиться в алгоритмическую. Современные математические пакеты, например Матлаб, умеют работать с такими функциями.

Все правильно, насчет доступности инструментов, и однобокости функции. Только такой подход здорово напоминает то, что в психологии называется "смещенная активность". Это когда человек или животное оказывается в ситуации, когда он не знает, что делать (нет готового поведенческого паттерна), а возбудитель есть, и сделать что-то нужно. В этом случае он может выполнить какое-то совершенно постороннее, но привычное действие. Самое простое - почесаться, что-нибудь съесть, и т.д.

И с оптимизацией также: что-то сделать нужно; что именно делать - не знаем; значит, делаем, что привыкли.

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

Теория функциональных систем советского академика П.К.Анохина (нейрофизиолога), как раз основывается на цели как системообразующем факторе живых организмов. То есть, цель прямо, не косвенно определяет действия и принимаемые решения. В искусственных же системах, цель обычно заранее дробится на задачи, так что её с трудом можно разглядеть в целевой функции. Ключевые показатели чаще всего относятся именно к задачам, поэтому и получается что KPI улучшаются, а реальное качество услуги падает до такой степени, что ее использование полностью теряет смысл".
Другой советский академик (математик) В.И.Арнольд пришёл к выводу, что оптимизация сложной системы по любому численному параметру приводит к принципиальному ухудшению общего качества ее работы.

Игорь, а можно ссылку на Арнольда? Или хотя бы в каких работах искать, примерно? Мне бы очень пригодилось.
Ну и на теорию функциональных систем Анохина тоже.

В.И.Арнольд "Жесткие и мягкие математические модели"
П.К.Анохин "Принципиальные вопросы общей теории функциональных систем"
(тексты легко гуглятся)

>> Придумываемые для этого костыли вроде «степени удовлетворенности», которыми заполняют свои отчеты и исследования аналитики, не описывают реальность ни в какой степени.
В теории функциональных систем Анохина, в этом качестве выступает гомеостаз организма. В конечном итоге, все искусственные системы тоже направлены на поддержание гомеостаза заказчика. Просто при формулировании требований к задаче, редко говорят о самой конечной цели (особенно, в условиях подряда и субподряда). Например, зачем выбирается лучший автомобиль? Думаю, чтобы чаще испытывать положительные эмоции и подавлять отрицательные эмоции, которые являются датчиками этого самого гомеостаза ;-)

Как я понял теорию Анохина, организм не имеет жёсткой информационной структуры управления (за исключением "скелета" безусловных рефлексов), а вырабатывает её сам, запоминая лучшие решения для будущего применения в качестве условных рефлексов. Вся входная информация от рецепторов обрабатывается не просто так, а адекватно текущим потребностям и мотивации. И результат обработки сразу же преобразуется (при необходимости) в действие, адекватное цели. Так как в организме нет никаких вычислителей и оптимизаторов, то всё это работает только за счёт правильного распределения возбуждения в центральной нервной системе.
По этим принципам была отечественная разработка http://www.freepatent.ru/patents/2257611 http://www.freepatent.ru/patents/2295763

Если моделировать организм на таком уровне, то есть воспроизводить происходящие в нем процессы, то надо использовать нейронные вычисления.
Мы же работаем на более "высоком" уровне, где можно уже говорить о логическом описании причинно-следственных связей, например - между мотивацией и действием. Понятно, что в человеке они реализуются средствами ЦНС, а у нас - при помощи логических аксиом и логического вывода, т.е. совсем разными механизмами. Человек очень редко рассуждает логически о своей мотивации.
Но, тем не менее, можно сказать, что мы в существенных (для наших целей) отношениях воспроизводим принципы поведения человека, хоть и довольно примитивным способом. Разумеется, это приемлемо только в том случае, если а) мы моделируем большое количество людей, т.е. статистика сглаживает погрешности в поведении отдельных агентов, б) сама цель создания модели достаточно узка, не изучает, например, мотивацию саму по себе, а интересуется только результатами ее проявления.

Да, вы правы. Технические системы обычно рассчитаны не на один конкретный организм, а на любой организм из множества. Поэтому статистика, распределения, паттерны поведения и являются целепроявлением, этаким "гомеостазом общества".
Но, проблема технических систем, построенных на принципах, по которым работает организм, в том числе нейронных вычислений, в том что нет возможности как гарантировать успешный результат, так и внятно объяснить как он был получен (или почему он не был получен). Такие системы типа "черный ящик", пусть даже с понятной информационной структурой, имеют ограниченное применение. Именно поэтому и пользуются строгими математическими и логическими методами, чтобы выдать заказчику результат "при таких-то условиях эксплуатации в отсутствие сбоев правильный результат гарантируется", а не "в таком-то очень большом проценте (но не 100%) рабочих циклов система будет выдавать правильный результат".

По ссылкам, которые я привёл, эмулируется как раз "правильное распределение возбуждения", только в упрощенной модели искусственной ЦНС. При этом достигается вычислительный эффект без заранее "вшитых" в структуру аксиом и логического вывода.
Аналогии, для пониманию, приходят на ум такие: табличное, а не аналитическое задание функций; раскладывание значений по большому ассоциативному массиву (хэшмапу) вместо их рекурсивной или многоцикловой обработки; и прочие методы замены хитрых алгоритмов хитрыми структурами данных.
Соответственно, оптимизация такой системы (umnick.com) происходит не путём поиска экстремума или перебором вариантов, а путем адаптивной перестройки структуры данных адекватно целеустановке.

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

Интересно, а есть ли общие походы к построению таких структур, раскладывание данных по которым достаточно простыми алгоритмами, даст решение задачи оптимизации? Если да, то целевая функция (или целевая вектор-функция), наверное, будет "зашита" в базисе структуры данных, а не в формуле алгоритма.

Ну, я считаю, что одним из таких подходов является онтологическое представление информации :)
То есть - описание структуры, функций, поведения, задач системы, а также ограничений и начальных условий в виде логических аксиом. А затем - преобразование этой модели по заложенным в ней самой правилам, до получения целевого результата. Преобразование может заключаться в прогонах симуляционного моделирования, или в переборе вариантов, и т.д.

То есть, онтологическое, которое с FOL в качестве "логического ассемблера", как в ISO 15926?
Я больше сторонник лингво-семантического подхода (как в Gellish), при необходимости с интерпретацией в логическое представление, если при работе с семантической сеткой нужна математическая строгость.
Сам по себе, граф из фактов несёт множество смыслов. Целевая функция, видимо, закладывается в процедуре его обхода, которая выделяет конкретный смысловой результат. Но за счёт того, что задача поиска решения формулируется в человеческих терминах (или даже в SPARQL-запросах), а не в понятных только специалистам формулах, то увидеть цель в формулировке задачи достаточно легко. Так? Например, в geology.business-semantic.ru цель поиска "Какие скважины пересекают геологическую формацию Balder?" легко видится в формальной постановке задачи: Искомый объект - Скважина, такой, что 'существует Пересечение формации скважиной, который(-ая) относится к скважине'. Пересечение формации скважиной, такой, что 'пересекает формацию'. Формация, такой, что 'имеет Название' равно 'Balder'.

Ну, с формацией - это очень простой пример. Фактически, это просто поиск в существующих данных, как бы мы ни формулировали его условия (для этого мы потом сделали еще несколько инструментов, в т.ч. квази-CNL, см. ролик на http://trinidata.ru/knowledge.htm).
Говоря об оптимизации, я скорее имел в виду другие варианты. Например, у нас есть структурно-функциональная модель некой системы, пусть водопровода, представленная в виде онтологии. Описаны узлы, соединяющие их трубы, насосы, источники, потребители и др. Целевая задача может быть сформулирована, например, как "обеспечить подключение таких-то новых потребителей, при минимальном повышении мощности системы в целом". В какой-то точке появляется новый потребитель, и дальше оптимизирующий алгоритм начинает, например, перебирать варианты увеличения мощности насосов, диаметров трубопроводов, чтобы обеспечить его. Среди вариантов, которые решают задачу, выбирается тот, в котором затраты будут минимальны. Таким образом, целевая функция формулируется как логическое условие (потребитель обеспечен), плюс математическое (затраты минимальны).
Если мы говорим о социальном моделировании, то там может понадобиться, например, найти для агента (человека) такой вариант поведения, при котором будет удовлетворено наибольшее число его потребностей, при минимальных затратах. Метод решения - совершенно такой же, только логических условий становится больше, и они усложняются, потому что потребности могут быть описаны не просто на уровне констатации их существования, а обладать разветвленными характеристиками, которые предъявляют требования к конкретному способу их удовлетворения.

В этом случае, логическое условие (потребитель обеспечен) выступает в роли ограничения, а не критерия (минимизация затрат, максимизация количества удовлетворенных потребностей). Просто в классической оптимизации ограничения задаются математическими формулами, а здесь - логическими формулами. Плюс, сами входные параметры не только непрерывные, а чаще всего дискретные (хотя бы frue/false). Преимущество получается в том, что ограничения получаются настолько же понятными, насколько понятен и критерий оптимизации. Никакой надуманной «степени удовлетворенности».

В принципе, можно себе представить задачу, которая состоит исключительно в поиске логического решения (какое-то большое условие = true), но это решение реально найти только перебором, а не дедукцией.

В.И.Арнольд
П.К.Анохин
Спасибо! Очень интересно....

Кстати, многокритериальная оптимизация также доступна в современных математических пакетах, в том же Матлабе. В том числе, с помощью генетических алгоритмов.

>> «если это будет универсал, то хотелось бы, чтобы стекло и задняя дверь могли открываться по отдельности, а если хэтчбек – то чтобы заднее сиденье складывалось в пропорции 2/3»

Это уже похоже на экспертную систему. Но, в таких системах цель "размазывается" по базе знаний (правил логического вывода). Да и оптимизацией это трудно назвать, скорее это многоступенчатый выбор из большого множества вариантов. Главное преимущество экспертных систем только в автоматическом объяснении полученного результата (трассируемости логического вывода), что не даст оптимизация математическими методами, а также нейросетевыми и методами генетических алгоритмов. Дополнительное преимущество экспертных систем, что для решения не нужно писать компьютерную программу, а достаточно заполнить базу знаний фактами на человеческом языке.

Да, похоже на экспертную систему, но тут я привел достаточно простой пример на обыденных вещах. Если говорить о реальных применениях, где возникают подобные вещи - то это, например, задача оптимального распределения социальной инфраструктуры по городу. То есть, нужно определить, где и сколько построить/реконструировать детских садов, школ, больниц.
Чтобы решить эту задачу, нужно спрогнозировать, сколько людей будут пользоваться той или иной услугой, предоставляемой этими учреждениями. А для этого нужно смоделировать социально-экономический портрет аудитории в довольно серьезной детализации (это как раз решаемо), модель их потребностей, и построить паттерны, в соответствии с которым людям интересны/не интересны услуги, обладающие определенными качествами.
Например, паттерны могут быть такого рода: "хотелось бы, чтобы школа была под окном, но если это будет престижная школа с углубленным изучением каких-то предметов, то я готов возить туда ребенка, даже тратя на дорогу по часу ежедневно".

В решении этой задачи мы как раз пытаемся:
а) создать базу знаний, содержащую набор подобных правил, которые в общем-то выявляются эмпирически на основе имеющихся данных о загруженности разных учреждений и качестве их услуг,
б) при помощи симуляционного моделирования "заселить" строящиеся районы людьми,
в) найти оптимальные варианты размещения объектов инфраструктуры, и их характеристики, при которых бюджет на поддержание объектов будет минимальным, а охват населения их услугами - максимальным. Находим их, в общем-то, перебором, причем спектр вариантов определяется возможностями территориального планирования. Есть не так много "гнезд" в застройке, куда можно воткнуть школу или поликлинику. Так что получается оптимизационная система, синтезирующая несколько подходов.

Собственно, размышления именно над этим кейсом привели меня к этому посту. Если бы мы попытались описать всю социальную инфраструктуру простыми численными параметрами, и "оптимизировать" их, получилось бы как раз то, что мы видим на примере "оптимизации" больниц и образования в Москве: закрытие элитных, малокомплектных школ/их слияние с обычными, нечеловеческие нормативы по числу пациентов, которых должны ежедневно обслуживать врачи, при сокращении числа врачей, и так далее. В результате всех этих мер на бумаге эффективность социальной сферы растет, а с точки зрения потребителей этих услуг, т.е. "на самом деле", с точки зрения целей существования инфраструктуры - падает.

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

Хороший пример! Т.е. это подразумевает предварительный опрос населения. Причем семантическая система может вполне успешно в этих анкетах разбирать графу "Прочее" (т.е. например, в анкете пять вариантов ответа и вариант "Прочее").


Edited at 2015-05-04 07:57 pm (UTC)

Да, результаты опросов тоже используем. Фактически, мы строим модель ценностных установок населения - штука, казалось бы, достаточно эфемерная. Кстати, в ответах на опросы надо уметь разделять желаемое и действительное - это уже психология.

Например, на одном из ранних шагов составления этой модели нам нужно было с хорошей точностью предсказать рождаемость, чтобы знать число детей каждого возраста на любой год, для любого квартала. Рождаемость имеет сильную отрицательную связь с доходом, т.е. богатые люди рожают намного меньше. Правда, у самых богатых снова наблюдается рост рождаемости. При этом, если смотреть на результаты опросов - все хотят иметь детей намного больше, чем имеют по факту.

Дело, оказывается, в том, что в человеческой душе конкурируют разные потребности, которые имеют разные способы удовлетворения. Например, потребность в самоутверждении (грубо) может быть удовлетворена как путем карьерного роста, так и путем рождения детей. Естественно, те, у кого есть возможности и предрасположенность к карьере, самоутверждаются этим способом, и детей рожают меньше, потому что им некогда. Те, кому карьера не светит, рожают детей, чтобы самоутвердиться таким способом.
На самом деле, там целая матрица конкурирующих потребностей и способов их удовлетворения, возможность реализации которых зависит от состояния внешней среды - это я привел грубый пример.

По факту это выливается в то, что в кварталах "элитной" застройки живет куда меньше детей на душу населения, чем в "гетто". Что мы и учитываем при планировании социальной инфраструктуры. Богатые еще и пользуются муниципальной инфраструктурой гораздо меньше - это уже следующий уровень модели.

>> Так что получается оптимизационная система, синтезирующая несколько подходов
Скорее, это неградиентная (перебор) двухкритериальная (бюджет+охват) оптимизация при ограничениях (застройка) дискретных (спектр вариантов) входных параметров. Плюс целевой вектор-функция - не просто формула, а результат применения базы знаний к имитационной модели, который поднимает приоритет вариантам "школа под окном" и "престижная школа" (в том числе, сравнивает их) при вычислении бюджета и охвата.

Кстати, в Матлабе есть встроенные возможности многокритериальной генетической оптимизации и при дискретных входных параметрах. В общем, советую www.mathworks.com/help/pdf_doc/gads/gads_tb.pdf

По факту, у нас построена мультиагентная симуляционная модель, которая использует фактические данные о жителях имеющейся застройки, имитирует на основе известных распределений заселение возводимой застройки, прогнозирует естественную прибыль/отток населения.
На втором уровне модели, эти "жители" принимают решения о том, пользоваться ли теми или иными объектами инфраструктуры, т.е. "разбредаются" по садикам, школам и т.д. При составлении модели мы много потрудились над тем, чтобы вывести из известных распределений и данных опросов некие законы, по которым люди принимают подобные решения.
Дальше эта модель много раз прогоняется при разных вариантах застройки, социально-экономического прогноза (=>бюджета), или при заданных вручную бюджетных ограничениях, и находятся оптимальные варианты.

Непосредственно к оптимизации, относится только последний этап "прогонки". С точки зрения теории оптимизации, предыдущие два этапа - это шаги построения целевой функции и ограничений на значения её параметров.
Как сравниваются различные подходящие варианты в вашей системе, для нахождения оптимальных вариантов? Если строится Парето-область в координатах "бюджет vs. охват", то это многокритериальная оптимизация в чистом виде.

Насчет оптимизации - согласен.
В текущей реализации всегда выбирается одна целевая функция - или бюджет, или обеспеченность населения услугами. Так что пока оптимизируем только по одному критерию, а другой можем ввести как ограничение. Но в окончательной, рабочей версии должно быть именно так, как вы написали - многокритериальная оптимизация.

Кстати, это популярный способ в условиях наличия инструмента только однокритериальной оптимизации - оптимизировать по первому (самому главному) критерию, а второй закрепить как ограничение и прогнать несколько раз при разных его значениях. Получается спектр оптимальных вариантов на выбор конечного пользователя (бизнес-заказчика). То есть, простое переформулирование требований к ответу задачи оптимизации, чтобы он был понятен обычным управленцам, а не только узким специалистам.

  • 1
?

Log in

No account? Create an account