Метод оптимізації, який враховує різну часову вартість цільової функції для різних параметрів


9

Я працюю над вдосконаленням процесу оптимізації певного програмного забезпечення для демографічного моделювання, щоб воно могло краще підходити демографічним моделям до даних. Ми хотіли б скоротити час оптимізації.

Час, який потрібно для оцінки нашої цільової функції, сильно змінюється, залежно від вхідних значень. Відомий взаємозв'язок між часом для оцінювання цільової функції та входом. Мені цікаво, чи існують методи оптимізації, які враховують відносну вартість часу цільової функції при виборі, які бали оцінювати.

Дякую!

Оновлення:

На думку Павла, ось деякі особливості цієї конкретної цільової функції:

  1. Кількість параметрів помірна (~ 12ш)
  2. Наша проблема - невипуклі, або, принаймні, на поверхні об'єктивної функції існують вузькі та плоскі "хребти". Зараз ми маємо справу з цим за допомогою декількох оптимізацій з різних точок, але ми хотіли б зробити краще.
  3. Цільова функція досить гладка, хоча ми можемо обчислити лише кінцево-різницькі наближення до похідних.
  4. Вартість оцінки - це також плавна функція значень параметрів, і це цілком передбачувано. грубо кажучи, для кожного параметра вартість, яка оцінюється, висока в одному кінці діапазону і низька на іншому кінці. Таким чином, у нас є великі регіони дорогих оцінюваних наборів параметрів, але ми знаємо, де вони знаходяться.

2
Привіт, Кейт, і ласкаво просимо до Scicomp! Чи можете ви поділитися деякими характеристиками вашої цільової функції? Це може допомогти точно визначити конкретний метод для вашої справи.
Пол

Я ніколи не чув жодного алгоритму, який би чітко враховував вартість оцінювання цільової функції (або будь-які обмеження) при виборі балів для оцінки. Однак існують алгоритми оптимізації без похідних, які намагаються розумно вибрати наступну точку, яку слід оцінити оптимізатором. Припущення полягає в тому, що кількість оцінок функцій слід мінімізувати, якщо оцінки функцій дорогі. Однак я не впевнений, що використання алгоритмів без похідних допоможе у вашому випадку використання.
Джефф Оксберрі

Привіт @Paul, дякую за привітання! Я рада, що знайшла цю спільноту. Я додав характеристик. Повідомте мене, чи є інші важливіші функції.
нова

Чи я маю рацію зробити висновок із №2, що вас цікавить глобальний мінімізатор? Або ви задоволені "достатнім" зниженням? Глобальна оптимізація - це власне поле, і питання досягнення глобального рішення (якщо воно існує) може бути зовсім окремим від уникнення дорогих балів.
Домінік

Домінік, ми припускали, що глобальний оптимізатор буде занадто повільним для нашої проблеми, тому ми були задоволені місцевими оптимізаторами. Глобальні оптимізатори - це те, що ми плануємо розглянути в майбутньому.
нова

Відповіді:


4

Один загальний підхід до роботи з дорогими об'єктивними функціями - це побудувати (наприклад, регресійне моделювання) "модель поверхні реакції", яка наближає початкову цільову функцію, а потім оптимізувати цю поверхню реакції, а не працювати з вихідною функцією. На практиці поверхні реакцій зазвичай є просто квадратичними моделями, що підходять за допомогою регресії, тому пошук мінімуму поверхні відгуку стає дуже простою проблемою оптимізації.

Ви нічого не сказали про плавність або опуклість вашої цільової функції. Якщо функція негладка або невипукла, це очевидно стає набагато складніше.

Ви також нічого не сказали про те, де стоять дорогі точки у вашому просторі параметрів. Якщо вони випадковим чином розподіляються по всьому простору параметрів, то ви можете використовувати дизайн методів експериментів, щоб побудувати свою модель поверхні відповіді, уникаючи дорогих точок. Якщо є більші області простору параметрів, де оцінки дорогі, то ви можете спробувати мінімізувати кількість балів у тих областях, які ви використовуєте при побудові моделі поверхні відгуку. Звичайно, якщо ваш оптимум розташований посеред такого регіону, ви будете приречені на оцінку функцій у дорогому регіоні.


1

Я не знаю методів, які конкретно зважують відносні витрати на оцінку цілі в різних точках випробування, але якщо ви зможете порівняно надійно передбачити, чи буде дорого оцінювати кандидат, чи ні, то я б запропонував спробувати прямий метод . Прямі методи входять у сімейство методів, що не містять похідних. Не обов’язково погано їх використовувати, навіть якщо ви підозрюєте, що ваша проблема досить гладка, оскільки вони можуть забезпечити певний рівень гнучкості, який методи плавної оптимізації не можуть.

Ідея полягає в тому, що прямі методи визначають (залежну від ітерації) сітку про поточну ітерацію та "крок" сітки (залежно від ітерації). На основі цього кроку сітки метод визначає пробні точки на сітці, які є сусідами поточного ітерату (вони лежать на сітці та знаходяться на відстані, визначеній кроком сітки). Потім буде переходити до оцінки мети у сусідів. Як тільки буде знайдений кращий кандидат, він стає новим поточним ітератом. На ваш вибір ви також можете оцінити всіх сусідів і вибрати найкращого.

У вашому випадку може бути непоганим замовити сусідів, виходячи з вашої оцінки вартості оцінки мети там. Оцініть їх у такому порядку та виберіть перший успіх як наступний ітерацій. Інтуїтивно ви віддаєте перевагу дешевим кандидатам. У прямих методах такі впорядкування підходять до категорії сурогатних моделей - концепція, яка узагальнює модель поверхні реакції, згадану Брайаном.

Ось чудова реалізація прямого методу (на C ++): http://www.gerad.ca/nomad/Project/Home.html

Якщо це, здається, дає багатообіцяючі результати, будь ласка, не соромтеся повернутися до мене, і я можу запропонувати інші вдосконалення.

Я вважаю, що NOMAD також має можливості для глобальної оптимізації (наприклад, багатозапусковий процес, який ви зараз застосовуєте) на основі концепції пошуку змінних мікрорайонів .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.