@repo_science · Post #4190 · 20.08.2024 г., 11:13
#linux#softSkills#commandLine 📱 Linux: Master the Linux Command Line ----- Main channel: @repo_science Coupons: @freecoupons_reposcience -----
Hashtags
TGINSIGHT SIMILAR POSTS
Изходен канал @clockstackwheels · Post #1084 · 9.04
В общем, была задача на оптимизацию плана работ: есть набор заказов, и в каждом N тасков. Таски могут зависеть друг от друга или нет, имеют длительность и тип. Ещё есть M работников, каждый из которых может выполнять таски только определённых типов, причём, у каждого своя скорость. Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных. Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора. !!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты. ________________________________________ Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации. Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн. К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд. На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру. Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится. Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего. #dev
Hashtags
Търсене: #commandline
@repo_science · Post #4190 · 20.08.2024 г., 11:13
#linux#softSkills#commandLine 📱 Linux: Master the Linux Command Line ----- Main channel: @repo_science Coupons: @freecoupons_reposcience -----
Hashtags
@repo_science · Post #3361 · 27.06.2023 г., 21:42
#softSkills#commandLine#cheatSheet Command Line Cheat Sheet ----- Main channel: @repo_science Coupons: @freecoupons_reposcience -----
@AppPie · Post #2386 · 07.04.2025 г., 04:04
#Apps OCRmyPDF: 为扫描 PDF 添加 OCR 文本层 🔗GitHub OCRmyPDF 是一个开源的命令行工具和库,它可以为扫描的 PDF 文件添加 OCR 文本层,使文件内容可被搜索和复制粘贴。该工具利用 Tesseract OCR 引擎识别 PDF 中图像里的文本,并将其准确地放置在原始图像下方,使得用户可以轻松地搜索和选择文档中的内容。 OCRmyPDF 的工作原理是分析 PDF 的每一页,确定所需的色彩空间和分辨率,然后使用 Ghostscript 将每页栅格化,接着通过 Tesseract 进行 OCR 处理,并将生成的 OCR 层集成回原始 PDF。与直接使用 ImageMagick 或 Ghostscript 处理图像然后通过 Tesseract OCR 不同,OCRmyPDF 能够生成变化最小的 PDF 输出,同时保留原始图像的精确分辨率。 主要特点 - 多语言支持:支持 Tesseract 的所有语言包,包括英语、法语、中文等 - 图像处理:自动旋转页面、去偏斜、清理背景和图像优化 - PDF/A 生成:默认生成符合 PDF/A 标准的存档文件,便于长期保存 - 批处理能力:支持多核处理,提高 OCR 速度 - 多平台支持:适用于 Linux、macOS、Windows 和 FreeBSD - Docker 支持:提供 Docker 镜像,方便快速部署 - JBIG2 优化:支持 JBIG2 编码,大幅减小黑白图像的文件大小 - 页面选择:允许只对 PDF 中的特定页面进行 OCR 处理 - 扩展性:支持插件系统,可自定义处理流程 部署选项 - 通过 pip 安装:`pip install ocrmypdf` - Docker 容器 - 系统包管理器:支持多种 Linux 发行版和 macOS 的 Homebrew - 从源代码构建 开源许可证 MPL-2.0。 #GitHub#OpenSource#PDF#OCR#CommandLine 📮 频道 @AppPie
@githubtrending · Post #15135 · 10.09.2025 г., 13:00
#javascript#ansi#ansi_escape_codes#chalk#cli#color#commandline#console#javascript#strip_ansi#terminal#terminal_emulators Chalk is a popular Node.js tool that lets you easily add colors and styles to text in the terminal, making your console output clearer and more attractive. It supports many colors, including 256 and truecolor (millions of colors), and allows you to combine and nest styles like bold, underline, and background colors. Chalk auto-detects if your terminal supports colors and works without adding dependencies or changing built-in string behavior. You can create custom themes and use template literals for dynamic, colorful logs. This helps you highlight important information in your terminal output, improving readability and debugging. Chalk is reliable, actively maintained, and widely used in many projects. https://github.com/chalk/chalk