Найти Ρ‚Π΅ΠΌΡƒ
9848 подписчиков

🌟 PDLP: ΠΌΠ΅Ρ‚ΠΎΠ΄ быстрого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования.


PDLP (PDHG для LP) - это ΠΌΠ΅Ρ‚ΠΎΠ΄ быстрого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования с высокой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для ΠΌΠ½ΠΎΠ³ΠΈΡ… областСй примСнСния - ΠΎΡ‚ машинного обучСния Π΄ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ бизнСс-процСссов.

PDLP ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ, становятся нСэффСктивными ΠΈΠ·-Π·Π° нСобходимости Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.

Π’ основС PDLP Π»Π΅ΠΆΠΈΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ primaldual hybrid gradient (PDHG), ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊ Π·Π°Π΄Π°Ρ‡Π΅ сСдловой Ρ‚ΠΎΡ‡ΠΊΠΈ, эквивалСнтной исходной Π·Π°Π΄Π°Ρ‡Π΅ Π›ΠŸ. Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности PDHG Π² PDLP Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ряд ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ:

πŸŸ’Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ шага;
πŸŸ’Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΉ пСрСзапуск;
πŸŸ’Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ вСсов ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…;
πŸŸ’ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅;
🟒диагональноС прСдобуславливаниС.

Алгоритм PDLP Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ диагонального прСдобуславливания. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΡƒΡ‚Π΅ΠΌ выявлСния ΠΈ устранСния ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠΉ.

Π”ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ прСдобуславливаниС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ сходимости Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ПослС выполнСния этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ запускаСтся основной ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ процСсс PDHG с Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ шага ΠΈ пСрСзапусками.

Для ΠΎΡ†Π΅Π½ΠΊΠΈ эффСктивности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° PDLP использовались Ρ‚Ρ€ΠΈ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…: MIP Relaxations, LP benchmark ΠΈ Netlib. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π»ΠΈΡΡŒ с baseline PDHG ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка: SCS (Π² прямом ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎ-свободном Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…) ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° экстраградиСнта.

ЭкспСримСнты ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ PDLP Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСвосходит baseline PDHG ΠΏΠΎ скорости Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΈ количСству Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. ΠŸΡ€ΠΈ этом PDLP Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΠΌΡƒΡŽ с коммСрчСским Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»Π΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования Gurobi.

Π’Π°ΠΆΠ½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PDLP для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ранТирования Π²Π΅Π±-страниц PageRank, Π³Π΄Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π·Π°Π΄Π°Ρ‡ΠΈ.

ВСстированиС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π° случайных Π³Ρ€Π°Ρ„Π°Ρ… Ρ‚ΠΈΠΏΠ° BarabΓ‘si-Albert с макс. количСством ΡƒΠ·Π»ΠΎΠ² Π΄ΠΎ 10^7.

PDLP ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΠ» Π·Π°Π΄Π°Ρ‡ΠΈ PageRank Π·Π° 5.4 часа (Π³Ρ€Π°Ρ„ 10^7 ΡƒΠ·Π»ΠΎΠ² с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ 10^-8), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Gurobi столкнулся с ошибками Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти.

▢️ Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ рСализация для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ PDLP Π½Π° графичСских процСссорах NVIDIA Π² срСдС языка программирования Julia:

# set up the necessary packages:
$ julia --project -e 'import Pkg; Pkg.instantiate()'

# run solve.jl script
$ julia --project scripts/solve.jl \
--instance_path=INSTANCE_PATH --output_directory=OUTPUT_DIRECTORY \
--tolerance=TOLERANCE --time_sec_limit=TIME_SEC_LIMIT

# The results are written to JSON and text files
# in is the working directory.

πŸ“ŒΠ›ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ : MIT ΠΈ Apache 2.0 License.

🟑Arxiv
πŸ–₯Github


#AI #ML #LP #PDLP
2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹