Я знаю, что вы специально попросили .reduce. Но сокращение - это сокращение набора до одного значения. Запрошенная функция - это сервис для .map. И Google Scripts тоже это поймут. Взгляните на этот пример:
var arr = [
[ 'foo', 3.672698 ],
[ 'bar', 71.999747 ],
[ 'baz', 107.400002 ],
]
var res = arr.map(function(item){
return {name: item[0], money: item[1]};
});
console.log(res);
Один из способов установить приоритеты для ограничений - это позволить им быть нарушенными на некоторое количество, а затем штрафовать степень нарушения ограничений в целевой функции.
Например, в ограничении 1 вы можете иметь m += vxx <= t + slack_1
. Где slack_1
- линейная переменная, которая затем умножается на соответствующий вес в целевой функции. Устанавливая веса каждого из нарушений ограничений, вы можете определить, насколько важны эти ограничения - однако это не гарантирует порядок, в котором ограничения будут выполняться во время работы решателя.