Binpacking / Рюкзак Оптимизация дизайна задач

Иногда у вас просто нет выбора, чтобы хранить числа, смешанные с текстом. В одном из наших приложений хост веб-сайта, который мы используем для нашего сайта электронной коммерции, делает динамические изменения фильтров из списков. Нет возможности сортировать по любому полю, кроме отображаемого текста. Когда нам нужны фильтры, построенные из списка, в котором говорится, что такие вещи, как 2 "до 8" 9 "до 12" 13 "до 15" и т. Д., Нам нужно было сортировать 2-9-13, а не 13-2-9, как это будет, когда считывая числовые значения. Поэтому я использовал функцию репликации SQL Server вместе с длиной самого длинного номера, чтобы набивать любые более короткие номера с ведущим пространством. Теперь 20 отсортировано после 3 и так далее.

Я работал с представлением, которое дало мне минимальную и максимальную длину, ширину и т. д. для типа и класса элемента, и вот пример того, как я сделал текст. (LB n Низкий и LB n Высокий - нижний и верхний конце 5 скобок длины.)

REPLICATE(' ', LEN(LB5Low) - LEN(LB1High)) + CONVERT(NVARCHAR(4), LB1High) + '" and Under' AS L1Text,
REPLICATE(' ', LEN(LB5Low) - LEN(LB2Low)) + CONVERT(NVARCHAR(4), LB2Low) + '" to ' + CONVERT(NVARCHAR(4), LB2High) + '"' AS L2Text,
REPLICATE(' ', LEN(LB5Low) - LEN(LB3Low)) + CONVERT(NVARCHAR(4), LB3Low) + '" to ' + CONVERT(NVARCHAR(4), LB3High) + '"' AS L3Text,
REPLICATE(' ', LEN(LB5Low) - LEN(LB4Low)) + CONVERT(NVARCHAR(4), LB4Low) + '" to ' + CONVERT(NVARCHAR(4), LB4High) + '"' AS L4Text,
CONVERT(NVARCHAR(4), LB5Low) + '" and Over' AS L5Text
0
задан The Frog 17 January 2019 в 07:01
поделиться

1 ответ

Решатель ранцев не решит вашу проблему, так как он является чисто решателем с одним ранцем.

Вы можете использовать решатель MILP или CP-SAT.

0
ответ дан Laurent Perron 17 January 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: