Я сказал, что нечто подобное может быть решено как модель MINLP (смешанного целочисленного нелинейного программирования).Позвольте мне попробовать.
Я сгенерировал некоторые случайные данные как:
---- 30 PARAMETER p random data
year1 18.003, year2 84.483, year3 55.487, year4 30.813, year5 29.929, year6 23.181
year7 35.633, year8 85.771, year9 7.644, year10 50.521, year11 99.814, year12 58.295
year13 99.122, year14 76.463, year15 13.939, year16 64.332, year17 16.792, year18 25.758
year19 67.224, year20 44.100, year21 36.610, year22 35.793, year23 14.018, year24 15.860
year25 59.322, year26 83.258, year27 23.851, year28 66.908, year29 77.810, year30 31.062
year31 11.939, year32 50.736, year33 16.857, year34 87.374, year35 27.246, year36 29.296
year37 59.802, year38 72.549, year39 63.197, year40 46.916, year41 41.917, year42 12.652
year43 32.107, year44 5.609, year45 34.516, year46 19.028, year47 64.927, year48 56.514
year49 77.226, year50 30.483
---- 30 PARAMETER meanbounds
lo up
mean1 10.000 20.000
mean2 30.000 40.000
mean3 50.000 60.000
---- 30 PARAMETER cvbounds
lo up
cv1 0.500 0.700
cv2 0.900 0.950
---- 30 PARAMETER K = 30.000 number to select
Модель MINLP:
В основном модель выполняет три действия:
- выбирает 30 точек (через
x(i)
переменные) - выбирает один интервал для среднего (через
xm(k1)
) - выберите один интервал для CV (через
xcv(k2)
)
Некоторые результаты:
---- 74 VARIABLE x.L select points
year1 1, year2 1, year3 1, year4 1, year5 1, year6 1, year7 1, year9 1, year10 1
year12 1, year16 1, year17 1, year18 1, year20 1, year21 1, year22 1, year23 1, year24 1
year27 1, year30 1, year32 1, year33 1, year35 1, year37 1, year40 1, year42 1, year43 1
year44 1, year46 1, year48 1
---- 74 VARIABLE mu.L = 34.321 mean
VARIABLE sigma.L = 18.843 stdev
VARIABLE cv.L = 0.549 coeff of variation
---- 74 VARIABLE xm.L select mean interval
mean2 1
---- 74 VARIABLE xcv.L select CV interval
cv1 1
Я решил это с помощью Baron .По крайней мере, с этим набором данных этот подход, кажется, работает.Поскольку нет цели, это в основном проблема осуществимости.Решатель Constraint Programming также может работать (хотя большинство из них имеют ограниченную поддержку переменных с плавающей запятой).