Задача линейной оптимизации стала нелинейной

#linear-programming #pulp

#линейное программирование #мякоть

Вопрос:

Я решал следующую проблему с линейным программированием: у нас есть несколько массивов данных, которые все состоят примерно из 4 базовых массивов. Мы знаем пропорцию каждого базового массива и пытаемся выяснить, какие базовые массивы приводят к наименьшей ошибке.

В качестве примера с 2 базовыми массивами:

 data1: 1 2 3 4 5; 1.0/0.0 data2: 3 3 3 3 3; 0.5/0.5 data3: 5 4 3 2 1; 0.0/1.0  

С помощью этого ввода мы можем сделать вывод, что базовый массив 1 есть 1 2 3 4 5 , а базовый массив 2 есть 5 4 3 2 1 , так как это назначение приведет к ошибке 0.

В частности, у нас есть 5 переменных для массива 1, который мы пытаемся оценить, и 5 переменных для массива 2. Данные 2 приведут к ограничениям:

 posError1 gt;= 3 - arr_1_0 * 0.5   arr_2_0 * 0.5 posError1 gt;= arr_1_0 * 0.5   arr_2_0 * 0.5 - 3 posError2 gt;= 3 - arr_1_1 * 0.5   arr_2_1 * 0.5 posError2 gt;= arr_1_1 * 0.5   arr_2_1 * 0.5 - 3 posError3 gt;= 3 - arr_1_2 * 0.5   arr_2_2 * 0.5 posError3 gt;= arr_1_2 * 0.5   arr_2_2 * 0.5 - 3 posError4 gt;= 3 - arr_1_3 * 0.5   arr_2_3 * 0.5 posError4 gt;= arr_1_3 * 0.5   arr_2_3 * 0.5 - 3 posError5 gt;= 3 - arr_1_4 * 0.5   arr_2_4 * 0.5 posError5 gt;= arr_1_4 * 0.5   arr_2_4 * 0.5 - 3  

В конце концов, мы минимизируем error , что является суммой всего posErrorX .

Обычно каждый массив данных содержит около 100 тыс. записей, а у нас около 10 массивов данных и 4 базовых массива.

Это было решаемо с помощью достаточно мощной машины с целлюлозой. Однако сейчас мы находимся в ситуации, когда мы знаем только, в каком проценте включены 2 наших базовых массива, поэтому нам нужно выяснить еще одну переменную на массив данных. Таким образом, у нас было бы x/0,5-x/0,2/0,3 вместо того, чтобы знать все 4 значения. Это не очень большое изменение, за исключением того, что теперь у нас есть нелинейная проблема. Как лучше всего это сделать?

Я не смог линеаризовать эту проблему, есть ли метод, который смог бы решить эту проблему в разумные сроки?

Комментарии:

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

2. Можете ли вы отредактировать свой пост и более четко объяснить, что вы подразумеваете под «мы знаем только, какой процент 2 наших базовых массивов включен в …» Я думаю, что понимаю, что у вас есть 4 «базовых массива», которые являются векторами 100 тыс. неизвестных переменных. Вы хотите сказать, что знаете (для каждого массива в 10 массивах данных, какой пропорциональный вклад приходится на 2 неизвестных массива? Было бы странно знать пропорциональный вклад вектора неизвестных… ??