R - 跨数据帧的多行进行约束优化

时间:2017-11-02 07:39:31

标签: r optimization

我正在尝试设置约束优化但很难迭代我的数据帧行。问题是价格取决于我的例子中的消费。在下图中,前10列是价格,下一列是消耗的数量

    dput(structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 350.547202522117, 351.07091408155, 348.806098317287, 
351.659814047045, 349.57657408264, 350.717945389897, 351.487200255544, 
351.173491330395, 350.234475533798, 351.44098346496, 350.017738238439, 
350.763619470092, 349.341728529733, 348.993073563161, 349.713649749076, 
351.894987259336, 351.22300677389, 352.553593745148, 347.551149708642, 
348.238693850395, 350.944811164784, 351.372339270286, 349.660362915674, 
350.95782468196, 350.288756492403, 349.216106103554, 349.104293019811, 
352.112165551296, 349.157229971005, 349.948076114078, 350.506399790001, 
351.367504586029, 350.025015895704, 349.767049666913, 351.299603062635, 
350.524520145421, 349.23647375501, 350.592153271687, 350.770111080283, 
350.902109944868, 350.656860634748, 351.537807450508, 349.322667130655, 
349.459442503147, 349.58164869419, 349.496094562194, 350.483952345883, 
351.670336415131, 349.472278991776, 349.665927359211, 349.968308437337, 
351.561843624275, 351.965506568154, 350.595070280907, 349.485047799238, 
350.13160646368, 350.502527447996, 349.726219360763, 350.4748580864, 
349.333076825532, 350.191657460456, 350.586251976751, 351.28934833518, 
349.840417382101, 351.629753476873, 352.297413223084, 348.96268136397, 
350.289533367447, 349.299588415229, 350.978499554632, 350.270000385086, 
350.258262911727, 350.196685898422, 349.607911653837, 350.108208307406, 
350.580790366223, 350.610842715636, 349.10783147699, 352.62521746731, 
349.33073401742, 350.400452037986, 349.617470260219, 349.251563872487, 
348.880934157813, 350.353862674698, 351.351826878353, 350.002767626325, 
350.964758493028, 350.183600312771, 350.140396119645, 350.595744701294, 
351.735719609344, 351.018759127867, 351.85412518091, 349.842924470703, 
348.327544401857, 350.055171192011, 349.371121590352, 349.919340275029, 
349.585720439933, 246.928818851563, 248.849236934395, 252.243680407193, 
249.005169608641, 250.264132307342, 247.984993978697, 253.130297718347, 
249.971091190537, 249.743221093891, 248.662117185636, 252.849432206596, 
249.323622091283, 248.756894171755, 249.283539167256, 248.673418786983, 
248.306460187723, 252.629593395503, 249.824967410188, 254.089122923104, 
252.679826871368, 249.521368586535, 247.557416995887, 247.520459137686, 
251.849022884019, 249.267861644859, 249.140955105909, 247.751229556814, 
248.355750975429, 250.484313860683, 248.475749441515, 249.218933039989, 
250.866748746592, 249.85400699861, 250.916435643441, 247.198296557014, 
249.359473004533, 251.219135718602, 251.765867686239, 252.290524137425, 
250.366325223711, 251.285588685927, 249.193906898889, 247.930440493419, 
252.015895019696, 248.959041927522, 250.886982877015, 248.461365654075, 
250.299738156015, 250.661316752279, 250.925885945733, 252.708619280729, 
249.101979851743, 246.779987370902, 248.938639791121, 248.405345441531, 
248.141325990614, 248.340680859009, 249.338333040579, 251.030600326982, 
251.233084307619, 252.480185662674, 250.985142218853, 251.093703595958, 
247.443223005295, 250.596805645841, 250.870456287896, 251.708928357845, 
250.501591455813, 252.969938434436, 252.824548949612, 248.89660916506, 
252.254077464089, 247.671438502084, 248.519085855241, 249.905956593581, 
250.04675916816, 249.217766576244, 251.03348455771, 248.168766749339, 
248.215494098666, 249.285357761625, 248.334332237867, 251.413765612823, 
246.193739217266, 250.910807672327, 249.409479264756, 250.022011123529, 
250.043639611811, 251.836103637412, 248.08837081182, 250.820256022391, 
253.781381877121, 254.517273117946, 249.739467087764, 251.015436310148, 
249.228608910463, 250.849847968396, 251.316639928101, 253.976126368731, 
244.777919935869, 208.696922079997, 205.532791715771, 208.411790005241, 
209.882630225483, 204.670463919376, 208.569975175213, 209.64179007126, 
209.2527393355, 209.252116319849, 205.77995632065, 208.594782387332, 
209.807073335024, 205.900266288062, 206.41255805635, 206.96875470291, 
206.446363088864, 205.768609170096, 207.130634783222, 207.220593318032, 
209.572813523802, 211.480227658396, 206.538643525398, 208.494210292441, 
209.649035561506, 208.564379698139, 206.970101455938, 206.600721764606, 
208.217379793735, 210.524648806179, 208.666745296034, 210.251070885905, 
204.949054438818, 207.964597153602, 207.292943635924, 206.020902137406, 
208.667808982193, 208.750199385621, 207.057006560037, 208.200762555255, 
207.232288785414, 208.135212442793, 207.633727823544, 207.055742610206, 
210.411941941365, 209.299741530382, 207.353309528724, 208.975017523662, 
207.729930849144, 207.673181907989, 209.418156913141, 205.309297856431, 
207.509963686216, 205.532922245487, 208.962079144463, 207.915937656727, 
207.073744055227, 206.481638809452, 208.903757004649, 207.427362421844, 
210.665603080328, 205.833299235823, 208.836217239418, 211.88782521701, 
207.854221482517, 208.178894501463, 209.192889119346, 210.895200273076, 
209.451873017081, 208.972095354017, 211.486771094888, 209.761714438982, 
209.010587894172, 207.405651233611, 207.347878050608, 209.073733161578, 
210.399337563772, 205.434408572771, 208.017752769463, 207.446463105527, 
210.333836463413, 209.767703634276, 207.003110464466, 210.660772814283, 
209.388920290533, 209.392174546194, 209.482013173476, 207.696652395003, 
209.776834501093, 208.01375287205, 208.133824103986, 208.876012845456, 
208.272540769801, 209.161063409193, 207.545265804206, 205.640133612876, 
210.793376983438, 206.532942273738, 208.42208377091, 207.946891069412, 
209.306150337621, 148.558335657115, 147.341223100661, 145.616907383043, 
148.675634822049, 148.399387474831, 144.792562946725, 146.824750277785, 
147.951691567501, 144.234534694862, 148.661515330055, 146.882230519936, 
150.225534599771, 148.455739855908, 148.018903748625, 150.008998372563, 
148.754847476083, 149.835568678911, 145.295423187995, 147.956949138433, 
147.48595191142, 148.604839358629, 147.679816244369, 146.59783412013, 
148.622362211613, 149.326531303708, 149.649940297322, 148.333019694063, 
147.539546821932, 144.870428923328, 147.554572409634, 152.984954458013, 
148.466448605695, 146.868960996075, 149.379181231566, 143.255976159396, 
148.750763611948, 148.192358679033, 144.991666749066, 148.146516863875, 
148.968727510297, 144.419221689188, 145.168661748469, 150.248438908359, 
150.380575124031, 147.386977277681, 150.251442788185, 148.557118586914, 
147.844046894357, 147.431472172027, 144.408206282324, 147.264947997214, 
148.646953797334, 147.825720039799, 147.525107872195, 145.040462521411, 
149.227968245434, 148.117801694723, 146.617464103098, 149.939754508719, 
147.301718235191, 149.911291359526, 147.938640566118, 145.382042214124, 
146.418143119045, 145.192742084117, 149.068711906341, 148.828748591146, 
147.44613891987, 150.155956834739, 150.228254894488, 148.034770954409, 
150.411866746184, 145.950277713055, 148.88153145128, 149.902763677447, 
148.31615408809, 147.654702588778, 149.266645839375, 148.480928143068, 
147.950838410283, 151.824528391816, 145.261674968255, 148.388464891948, 
151.654300032253, 148.702419604687, 148.030351660041, 148.175086449988, 
146.360376983408, 147.790471916854, 149.329921244733, 148.627595020172, 
149.07215103154, 148.50380333848, 147.740159304412, 148.648392332864, 
145.285720470963, 148.385041001031, 148.774856877087, 147.268265583292, 
149.635600852233, 119.495745937227, 118.076155985766, 117.581784612178, 
118.067206801906, 116.495089946548, 118.764469319115, 117.547833663903, 
115.87787803876, 116.474123590146, 118.087332327701, 120.733678835884, 
117.645607778662, 119.441514968101, 116.271723837591, 118.033931557574, 
116.345784127682, 118.015549977283, 117.051929634885, 117.571996037553, 
116.357821196737, 117.036738937201, 117.559471246605, 119.071146228769, 
119.004438148523, 118.479773536891, 115.669124948892, 120.857651860393, 
117.914699446779, 119.958926816497, 119.013739976932, 116.871964161203, 
113.726430221553, 118.660950926234, 118.202833424343, 118.08129535418, 
116.440233633016, 119.113443284264, 115.944132918628, 118.73378846294, 
118.467246302297, 117.373558186208, 119.738035417455, 117.472641762074, 
117.34112327797, 117.358978668292, 120.222348934391, 117.622879850173, 
117.13305733987, 118.175295092256, 116.583570809538, 116.185196982964, 
118.706095621878, 119.059835243512, 118.565390003626, 114.356257963868, 
117.890200947678, 118.048926142965, 115.955908373524, 119.461890822554, 
117.9227795722, 116.541468220387, 117.254331076074, 120.586339619378, 
115.906135790647, 117.922471323705, 117.779558142297, 115.329440379764, 
118.53315229616, 115.91091002246, 118.739133323465, 118.337429014309, 
117.222963881841, 119.671100401847, 117.562958272013, 117.070188384423, 
117.210754985697, 120.504178611708, 116.469536113984, 118.054768580506, 
117.187173481131, 118.432001739952, 116.575967155932, 117.37262637044, 
117.245695020979, 119.662868451663, 114.993393004228, 118.896239927546, 
116.877136983464, 117.681018601505, 114.032042473913, 116.367387068274, 
120.068158283728, 115.460653018625, 119.166148557003, 117.003874287368, 
121.638430168657, 115.625530381767, 118.92744428921, 113.830171722414, 
116.480259597649, 103.975638778244, 103.032678076587, 106.226016551089, 
103.573138636536, 107.428296235556, 102.103823658033, 102.790390805899, 
103.924677106049, 103.867215838955, 106.698431686633, 103.902968428219, 
102.275767630063, 106.7817794093, 101.480108746974, 103.31016318934, 
102.060583472242, 102.104738666037, 105.381553652064, 103.297200619621, 
99.332376043787, 102.480793262737, 101.457204983028, 102.971105167021, 
102.090224047891, 105.044370994996, 103.152634520674, 102.982131106204, 
103.85675955227, 101.040263775965, 104.701005463313, 103.78602580851, 
104.241737479141, 100.988985529043, 104.637540343387, 106.058613351652, 
102.023421590008, 102.079001146099, 105.484338899462, 103.177047849777, 
101.716178084674, 104.77027600101, 103.072138963148, 103.630131049927, 
102.094155928772, 102.704314566857, 105.2451144819, 103.253563569364, 
104.007533239369, 106.730776075444, 108.030863571799, 104.915968228135, 
102.729273732787, 104.537241192592, 103.660491648821, 102.602915447512, 
102.765860875721, 103.803813400099, 101.789691032766, 104.133478404723, 
105.633443454503, 102.379561259861, 105.763766533099, 101.131390303413, 
104.39401001932, 104.898634242168, 102.159684614119, 104.425028281084, 
104.766624408528, 108.885136169835, 105.469791345614, 105.540031253727, 
103.985844926457, 106.903260375316, 104.949710505938, 108.685904030812, 
104.046860850805, 107.217087111617, 105.563552537173, 103.330980178743, 
102.962368564532, 101.983691343278, 104.920245962433, 104.836310414245, 
105.918834992399, 102.562675814045, 103.13953056988, 101.813185459854, 
104.276116262715, 104.451857022776, 104.145092163684, 104.711761310293, 
103.118338593688, 106.054422132906, 104.220023339336, 103.713700422995, 
104.587514866913, 103.00120802496, 102.993415847143, 105.235259208828, 
103.838038649797, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 
8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 
9, 9, 9, 9, 9, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 
9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 
9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 
9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 
9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 
9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 
9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 
9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 9.5, 10, 
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 
10, 10, 10), .Dim = c(100L, 20L)))

我的目标函数是最大化收入,就像这样(9.6是获取成本因此乘以数量)

    for (i in 15:20) {
revenue <- ((proc_dat2[,i] * proc_dat2[,i-5]) - 9.6*(proc_dat[,i])
}

这需要受到限制:

  • max qty = 600
  • min qty = 180
  • 每日最高数量= 40

我正在努力将这个循环写入函数。

0 个答案:

没有答案