Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
software:mathprog [2018/06/02 11:51]
ojdo ↷ Page moved from mathprog to software:mathprog
software:mathprog [2019/10/25 14:01] (current)
ojdo GLPK online
Line 5: Line 5:
 ===== Storage sizing/​operation ===== ===== Storage sizing/​operation =====
  
-//SOforSG// (Storage Optimization for Smart Grid) is a minimal example of a linear optimization problem, dealing for dimensioning and operation of a lossless energy storage. Its goal is to minimize operational costs of the household for energy purchase. For brevity, the model is quite minimalistic. ​Two options are available +  * {{:​software:​soforsg.mod|SOforSG.mod}} ​(Storage Optimization for Smart Grid) is a minimal example of a linear optimization problem, dealing for dimensioning and operation of a lossless energy storage. Its goal is to minimize operational costs of the household for energy purchase. For brevity, the model is quite minimalistic. 
- +  * {{:​software:​stockcutting.mod|StockCutting.mod}} ​ 
-  * [[https://www3.nd.edu/~jeff/mathprog/​mathprog.html?​model=%23%20SOforSG%3A%20Storage%20Optimization%20for%20Smart%20Grids%0A%23%20Last%20updated%3A%2014%20November%202013%0A%23%20Author%3A%20johannes.dorfner%40tum.de%0A%23%0A%23%20This%20model%20optimizes%20size%20(storage_capacity)%20and%20operation%20(storage_level%5Bt%5D)%20%0A%23%20of%20a%20hypothetical%20lossless%20storage%20technology%20for%20electric%20energy.%20A%20given%0A%23%20electricity%20demand%5Bt%5D%20must%20be%20satisfied%20from%20a)%20a%20cost-free%20(renewable)%20energy%20%0A%23%20supply%5Bt%5D%20with%20intermittent%20characteristic%20or%20from%20b)%20electricity_purchase%5Bt%5D%2C%0A%23%20i.e.%20buying%20of%20electricity%20from%20the%20grid%20for%20a%20time-dependent%20electricity_price%5Bt%5D.%0A%0A%23%20SETS%20%26%20PARAMETERS%0Aset%20time%3B%0Aparam%20demand%7Btime%7D%20%3E%3D%200%3B%20%23%20(kWh%2Fh)%0Aparam%20supply%7Btime%7D%20%3E%3D%200%3B%20%23%20(kWh%2Fh)%0Aparam%20electricity_price%7Btime%7D%3B%20%23%20(EUR%2FkWh)%0Aparam%20storage_cost%3B%20%23%20(EUR%2FkWh)%0Aparam%20selling_price_ratio%3B%20%23%20(1)%20for%20sold%20energy%2C%20relative%20to%20electricity_price%0A%0A%23%20VARIABLES%0Avar%20energy_balance%7Btime%7D%3B%20%23%20(kWh)%0Avar%20storage_capacity%20%3E%3D%200%3B%20%23%20(kWh)%0Avar%20storage_level%7Btime%7D%20%3E%3D%200%3B%20%23%20(kWh)%0Avar%20energy_purchase%7Btime%7D%20%3E%3D%200%3B%20%23%20(kWh)%0Avar%20energy_sold%7Btime%7D%20%3E%3D%200%3B%20%23%20(kWh)%0Avar%20costs%3B%0A%0A%23%20OBJECTIVE%0Aminimize%20obj%3A%20costs%3B%0A%0A%23%20CONSTRAINTS%0A%0A%23%20total%20costs%20%3D%20investment%20for%20storage%20%2B%20purchased%20electricity%0As.t.%20def_costs%3A%20%0A%20%20%20%20%20%20%20%20costs%20%3D%20%0A%20%20%20%20%20%20%20%20storage_cost%20*%20storage_capacity%20%2B%20%0A%20%20%20%20%20%20%20%20sum%7Bt%20in%20time%7D%20electricity_price%5Bt%5D%20*%20energy_purchase%5Bt%5D%20-%0A%20%20%20%20%20%20%20%20sum%7Bt%20in%20time%7D%20electricity_price%5Bt%5D%20*%20energy_sold%5Bt%5D%20*%20selling_price_ratio%3B%0A%20%20%20%20%20%20%20%20%0A%23%20balance%20%3D%20supply%20-%20demand%20%2B%20purchase%20-%20sold%20%0As.t.%20def_balance%7Bt%20in%20time%7D%3A%20%0A%20%20%20%20%20%20%20%20energy_balance%5Bt%5D%20%3D%20supply%5Bt%5D%20-%20demand%5Bt%5D%20%2B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20energy_purchase%5Bt%5D%20-%20energy_sold%5Bt%5D%3B%0A%20%20%20%20%20%20%20%20%0A%23%20new%20storage%20level%20%3D%20old%20storage%20level%20%2B%20balance%0As.t.%20def_storage_state%7Bt%20in%20time%3A%20t%3E1%7D%3A%20%0A%20%20%20%20%20%20%20%20storage_level%5Bt%5D%20%3D%20storage_level%5Bt-1%5D%20%2B%20energy_balance%5Bt%5D%3B%0A%20%20%20%20%20%20%20%20%0A%23%20storage%20is%20filled%2050%25%20at%20beginning%20%0As.t.%20def_storage_initial%7Bt%20in%20time%3A%20t%3D1%7D%3A%20%0A%20%20%20%20%20%20%20%20storage_level%5Bt%5D%20%3D%200.5%20*%20storage_capacity%3B%0A%0A%23%20storage%20must%20be%20filled%20at%20least%2050%25%20in%20the%20end%0As.t.%20res_storage_final%7Bt%20in%20time%3A%20t%3Dcard(time)%7D%3A%20%0A%20%20%20%20%20%20%20%20storage_level%5Bt%5D%20%3E%3D%200.5%20*%20storage_capacity%3B%0A%20%20%20%20%20%20%20%20%0A%23%20storage%20may%20be%20filled%20at%20most%20to%20storage%20capacity%0As.t.%20res_storage_capacity%7Bt%20in%20time%7D%3A%20%0A%20%20%20%20%20%20%20%20storage_level%5Bt%5D%20%3C%3D%20storage_capacity%3B%0A%0A%23%20limit%20sold%20energy%20to%20prevent%20unbounded%20model%0As.t.%20res_energy_sold%7Bt%20in%20time%7D%3A%0A%20%20%20%20%20%20%20%20energy_sold%5Bt%5D%20%3C%3D%20999%3B%0A%0A%23%20SOLVE%0Asolve%3B%0A%0A%23%20OUTPUT%0Aprintf%20%22RESULT%5Cn%5Cn%22%3B%0Aprintf%20%22Costs%3A%20%25%2B5.1f%20EUR%5Cn%22%2C%20costs%3B%0Aprintf%20%22%20%20%20%20%20(%20%25%2B5.1f%20EUR%20for%20%25g%20kWh%20storage%20at%20%25g%20EUR%2FkWh%2C%20%5Cn%22%2C%20storage_cost*storage_capacity%2C%20storage_capacity%2C%20storage_cost%3B%0Aprintf%20%22%20%20%20%20%20%20%20%25%2B5.1f%20EUR%20for%20purchasing%20%25g%20kWh%2C%5Cn%22%2C%20sum%7Bt%20in%20time%7D%20electricity_price%5Bt%5D%20*%20energy_purchase%5Bt%5D%2C%20sum%7Bt%20in%20time%7D%20energy_purchase%5Bt%5D%3B%0Aprintf%20%22%20%20%20%20%20%20%20%25%2B5.1f%20EUR%20from%20selling%20%25g%20kWh)%5Cn%5Cn%22%2C%20-%20sum%7Bt%20in%20time%7D%20selling_price_ratio%20*%20electricity_price%5Bt%5D%20*%20energy_sold%5Bt%5D%2C%20sum%7Bt%20in%20time%7D%20energy_sold%5Bt%5D%3B%0Aprintf%20%22%252s%3A%5Ct%256s%5Ct%256s%5Ct%255s%20%7C%20%255s%5Ct%255s%5Ct%255s%5Cn%22%2C%20%0A%20%20%20%20%20%20%20%22t%22%2C%20%22demand%22%2C%20%22supply%22%2C%20%22price%22%2C%20%22Level%22%2C%20%22Purch%22%2C%20%22Sold%22%3B%0Aprintf%20%22------------------------------%2B----------------------%5Cn%22%3B%0Aprintf%7Bt%20in%20time%7D%3A%20%22%252i%3A%5Ct%256g%5Ct%256g%5Ct%255g%20%7C%20%255g%5Ct%255g%5Ct%255g%5Cn%22%2C%20%0A%20%20%20%20%20%20%20t%2C%20demand%5Bt%5D%2C%20supply%5Bt%5D%2C%20electricity_price%5Bt%5D%2C%20storage_level%5Bt%5D%2C%20%0A%20%20%20%20%20%20%20energy_purchase%5Bt%5D%2C%20energy_sold%5Bt%5D%3B%0Aprintf%20%22------------------------------%2B----------------------%5Cn%22%3B%0Aprintf%20%22%25s%3A%5Ct%256g%5Ct%256g%5Ct%255s%20%7C%20%255s%5Ct%255g%5Ct%255g%5Cn%22%2C%20%22Sum%22%2C%20%0A%20%20%20%20%20%20%20sum%7Bt%20in%20time%7D%20demand%5Bt%5D%2C%20sum%7Bt%20in%20time%7D%20supply%5Bt%5D%2C%20%22---%22%2C%20%22---%22%2C%0A%20%20%20%20%20%20%20sum%7Bt%20in%20time%7D%20energy_purchase%5Bt%5D%2C%20sum%7Bt%20in%20time%7D%20energy_sold%5Bt%5D%3B%0Aprintf%20%22%5Cn%5Cn%22%3B%0A%20%20%20%20%20%20%20%0A%23%20DATA%0Adata%3B%0A%0Aparam%20storage_cost%20%3A%3D%203%3B%20%23%20storage%20capacity%20cost%20(EUR%2FkWh)%20%0Aparam%20selling_price_ratio%20%3A%3D%200.5%3B%20%23%20ratio%20of%20electricity%20price%20(1)%20for%20sold%20energy%0A%0Aparam%3A%20time%3A%20supply%20%20demand%20electricity_price%20%3A%3D%0A%20%20%20%20%20%20%201%20%20%20%20%200%20%20%20%20%20%20%200%20%20%20%20%20%200%0A%20%20%20%20%20%20%202%20%20%20%20%200%20%20%20%20%20%20%201%20%20%20%20%20%202%0A%20%20%20%20%20%20%203%20%20%20%20%200%20%20%20%20%20%20%201%20%20%20%20%20%202%0A%20%20%20%20%20%20%204%20%20%20%20%200%20%20%20%20%20%20%201%20%20%20%20%20%202%0A%20%20%20%20%20%20%205%20%20%20%20%200%20%20%20%20%20%20%201%20%20%20%20%20%202%0A%20%20%20%20%20%20%206%20%20%20%20%200%20%20%20%20%20%20%201%20%20%20%20%20%202%0A%20%20%20%20%20%20%207%20%20%20%20%201%20%20%20%20%20%20%202%20%20%20%20%20%201%20%23%20supply%20begins%0A%20%20%20%20%20%20%208%20%20%20%20%203%20%20%20%20%20%20%205%20%20%20%20%20%202%0A%20%20%20%20%20%20%209%20%20%20%20%206%20%20%20%20%20%20%202%20%20%20%20%20%202%0A%20%20%20%20%20%2010%20%20%20%20%205%20%20%20%20%20%20%201%20%20%20%20%20%201%0A%20%20%20%20%20%2011%20%20%20%20%208%20%20%20%20%20%20%201%20%20%20%20%20%201%0A%20%20%20%20%20%2012%20%20%20%20%209%20%20%20%20%20%20%205%20%20%20%20%20%202%0A%20%20%20%20%20%2013%20%20%20%20%209%20%20%20%20%20%20%200%20%20%20%20%20%201%0A%20%20%20%20%20%2014%20%20%20%20%206%20%20%20%20%20%20%200%20%20%20%20%20%201%0A%20%20%20%20%20%2015%20%20%20%20%208%20%20%20%20%20%20%200%20%20%20%20%20%201%0A%20%20%20%20%20%2016%20%20%20%20%207%20%20%20%20%20%20%200%20%20%20%20%20%201%0A%20%20%20%20%20%2017%20%20%20%20%206%20%20%20%20%20%20%206%20%20%20%20%20%205%20%23%20demand%20peak%2C%20price%20peak%20begins%0A%20%20%20%20%20%2018%20%20%20%20%203%20%20%20%20%20%20%209%20%20%20%20%20%205%0A%20%20%20%20%20%2019%20%20%20%20%202%20%20%20%20%20%20%206%20%20%20%20%20%205%20%23%20price%20peak%20ends%0A%20%20%20%20%20%2020%20%20%20%20%201%20%20%20%20%20%20%203%20%20%20%20%20%201%20%23%20supply%20ends%0A%20%20%20%20%20%2021%20%20%20%20%200%20%20%20%20%20%20%204%20%20%20%20%20%201%0A%20%20%20%20%20%2022%20%20%20%20%200%20%20%20%20%20%20%204%20%20%20%20%20%201%0A%20%20%20%20%20%2023%20%20%20%20%200%20%20%20%20%20%20%201%20%20%20%20%20%201%0A%20%20%20%20%20%2024%20%20%20%20%200%20%20%20%20%20%20%200%20%20%20%20%20%201%3B%0Aend%3B%0A|Try SOforSG ​online]], directly in the browser. +  * [[https://ojdo.org/glpk/#​PQKgBAKg8gIjA0YCGYDGAbJBnLYD2AZmABZIBOAJmAJYB2WALkragKa6FgBerZeAtHlqswAa1pIADliSpRYSXwBG6VgFtcIYAFgAUHtBgA6mWoMGrWjSsBxAHIBVMAFkkDYgAU+AczBKAnmAAgrQUZKwA7i5IosR4plYAPGpIeAAC3rQArgB08d4AfGBaegbgAMLEAG5uSOhgFOyopkrsyGiYOPhEdIzMbBxEPHyCwmIS0rLyingq6lh6YEsUWSIMeJB4FBQ5YAASIlhxEbjubu0R1I0d2IPI6N7xZsQaYPzWGFkUdL516ItLJTYVhUIR+Mj9YjIUJ+PBZGHxBr+CRqaioBQ+CFqVG0XzvAh0KhmBrUAgE1BZdAMAFgdZgLB4dBVEQzOavOi04giCBbKgYW67ZzxESsAAesgY6H8iHca2oahE4QAjllqOEKDSApz2CI6o9TO5XnSGUyRL0mCw2pxWaojaQGH5WOghL46bKaTztjcut4+CdkLhmGAxZIhJYGNQ6mACPDUBGwZxZRjZrb6dQeDlSrolmAAEqsAi8SxsABcNMqNSY9QAarsABQARgAnAAOAAMAEpEHtyFRxFIZHJk2ysIgoJJdvmsLsAEwtxANgAsbZn-CXDYbuxK+l0knISDUYCsRTb1gs3l4AG4s3usWBnd4ZwB9KwlgC897w3jrtA7YGAn7fjOHbXjut4HmIYDvtGzrxHWD7Pr+oF6OBh5IAA3gAVtYYCbjktAAL5QR+M7FOAdbyAA1EeYDUQ2f7UaRIDkVRNF0W8YCYQxuHIbu+6HkoxFgG2OQAKzFDBeBwVgWRqFhOF4YRyAANqYQAuiBWY1GQYCiuhilEUodDkP4vEpKK8rpiIsyYSW9KyfJHIGSp6kSaKqlqbx04MLsqBSHZMlydhTk5PhRFIB5bmRYkH5KF5jLMrxih0AwRAAEQAEJQA4dgwHZACk1AADq0GliBxShCSpWAaUAMpQAAMtWACiBXFaViCBY5VjORFrngO56mgcltDVWlNhBB4dlLIVJVlX4HFdcFPWhUpfVqVFQ2VSl6UTR4YB1uEmARsyHYFTOYkEPl+VzYgdaCe8S0Kat4WRQNHl-uADZtqeAEVbuVVEN1uEvTVhUFVghX5Vgt1gHoACQmGIAjpK6ZFb4fqespWGldZpcG6BYCI+PzQj63wCjRCDRtGPCdqOMdvjTpEzVNW8RQtRJfxNHQQ2LagYYqCkLiazENQuCoawFg6XSQtSSzKC3hGFKYDp5r9CI256JYFCgUAA|Try TODD online]]: Knapsack problems with variable size 
-  * {{:​software:​soforsg.mod|SOforSG.mod}} that can be solved offline using [[http://​www.gnu.org/​software/​glpk/​|GLPK]],​ an open-source linear programming solver. It features more output as it is not limited in length by URL limits. +  ​[[https://​ojdo.org/​glpk/#​MQAgIgEgsgcgMgLhAQRAWwJYDsNoIYA2IAFGlgQJQgAmGAzgC4BOGAxgyABYCmeD2AcxKQqWbgwDuAeyYBrEFIAO-TAC8+GKVnRTq3AgFgAUKDh5GIAK6LqfbtSQAGAMwpLAyxYBMjgIwA2Y1BkSwZOGSQAKylOPCwxOgA6ahkAMzEmAAEGSzRk7iCQODZuLDpuJABhSscQAB5OBgZFBAB6VtYmXn4AN25WKTQ0LSSZAVbFSwAjAjYU-GxW1W4mKVbfRMdWgD5jQoBVAGVkAHEAUUKBAkU6KSIAWjQaTjICROHqPZMQAHkANTOACU-gBJM4AdUKABVOPR0BgAB72e7YBjcAQrECzMR4JggRSrARMPBDQQkKAguAABSoH30IFS2GodBAYW46DwCNwuRAXT6WEsBW+DCUdykAgAniA4tQQHQMMsFKlpTR6Mw2BweBosEIxJIZPJUjIVQIMPy5eIlXKpJYmKwhaAZTRuPgsLK+kx+PakiAYey6URWHFnawMHoQBJYaxOM7XczWVIQAN4v0OE7CsnygBHQVYBgEKV6UPhqQe1k8LFSIP8LTSt1yhXsqTKtkgKaWDAEDh66RyRJBaGwlncBEkxQEdkDNDcFkSDBhcvso0EAhSOc6kjIQ6VEEg+64jh0WTiaPSrXUCiFHsGkBEvCKGME7j3AZ6WWoxOt2wMPAW9iabQ+EXEBSllZtgMZCdEl9CsMxkDIWWIZAABpwFQiBUIAaSocJPHZKYMCELV+A3RgNBGVC6GsRQZDRWUpilX86HwFdMUKMia20bBgPtPNMWIAAxChoOQFdeRdPBsDJD0vRnJMtB-bjuHnHg8QIoRiDOVCTgoVDCmnWgeWIEEqCdZjCCIYgACFUMqVCACkqD0OM6FQyM2BjfApWIFIQCwKRNTwPoEzbbgqHYjQ6EZexUIwZUCWbec8Bmbh+xMQpKikRgWSrVhbQZY08CoTNmEsf8N0UDBFDkp0pioDEMm1IjuhAbjiMEdif04n1AW4flBValkGpWOxZTCVZ3BjOhItSCUyWcmUfSpKqHXkspSv-WsBmytb5QscDfyDRQ8FDBgJRRN1uGqy683xA8SF4T1OF7WQ6FMt1CkO+8Tvnc69GuvRbuOz0SDwahaE4wh8RYe0rQIXEMTxWgSTRJhULBiGAMIQpHrCF6WSNPFfznPQ8XCCddLbALPMsLsqtmewIxU4DygEadbonHUwmgiAWsuUoRs4+Sdq8kAelxRjhg3drSK6gCfV5rpUNbdSuG6MlOvIsppS6JMtWqxhUPbDhV2rRnUltNkLDwCQ8ClVJVieL8JPrXjUaSL5QBgM4oXBH5AUwkATkBZAqQgQpiEJ1qsEmDhvzwSjuHwgKRSecDILCwo4HEd3nX8tExZWWTXKxbA5LocIJBA6gMR9GBcimFYWQrtdq4xLFSgEMIfQHb4QH7gf+4AVkHweABZR-75xCn75B7nnhfF6sxeF8qFf7jAGfJ8ngAfbeQAAHS3-f+9aVx94P6e+5PkA95vw-j-3s514E9eTkf7e768U+B68D-R68AfQerQ-7X3Hv3AA+she4e57gABab4QKgYvTCH8IHzwQQPA+SCcHQPuPZDBIAx7HwgJgk+E8QC9y+IUQ4PtDjGHKBwGSI4ADcDDLT2HbnOMI3FmEIiTKsOgLI+EsJAKASwboMBdHYIzAA3j0XwqEeheAAL53SkXQdhHBtoMAgWdaqIAEAAF4QCyIAOTXjkGY1CZjhrEk4tYkAZi+SlEFGYlRbCjDUO+FSZAIcoA+yBPQowwMSTC10dgPojB2a6MZPw7YJjHCiNAJpfYgJWhoEvCE3EYSdEQMiTOBgMSIHizxAkkASSxEkDOGk1oUBwQZKyaEp4R0fpnQgdRFYEDZiYA4OUypoB8BcjQDyGiQiMApXxCtJM95TreXqU0nJTwXECm4BA4iyTqm1IWV8ZpHcuacFkZw7gaj+mbOOfsruMZSBZOMHs24tp7TyKLiOU5iTUJ6FSHgWmHABm3gFvYgCMzjpzPJOCRZxIngLTdM8z0ryQD9I+dwL5PyKmbLuUs8J6zuiwrRAiN5FSkUoq7GiqpqT0k7K8VSz2IA-h+JBMgKycAzjBNKYNCB7ZOwMCOTXE5bZsAS02b4EAJjKoGLhJyklSleWmIUUo1RIBUK1BMfnShRg2WtLmTyjEBK-mSo4GKyc31QXEEpWy1Iq4JDapOZsw1+I1yYgta3U14JUJjPnGaCoYtfD3G2Mo1CYgBAaD6AgBRdR7jKNueq3E7Lpr8CihgewuL4UESwIKqpwqTHQvfNoPhg05QzUTdQJVIq-IBWMGyuxWtk34oRYkzZVahY0QkJibiDy7TsjzS6qNGqsoMDoLIvJ+ibVVJ0SyJ0KzBSIRqYCKNNKfhWXsmcSoUIQQAnYjycClj5AFOiaUDgxBNW-Quv9UC+6GSInxAQTwwK2l-Sume26hRSkYGShTOsspiL-MakLMd0c1ZNTlHLEYxhMA4DUE2KYkQkDGEHmOgA2hY8QL0zEAF1YMgAANThLoIhxtAE0MYfuDhxDk7uBoc8RhhhiQGDQSkFBiB26IFjoQBhhDSH9RWNQyKjD-cqJoFkcQOVYsvBUGlTqtV+9OZXPg8J5R3GABUJBePbzybuop+6IFxJAEp+gHKOxdlk4okT3HMMqcnmprAUSNN5hKTGpTR6zpGflahignib7UdowoBj+GtDMb7XQVjRh+7sd81gNDpaVP8fkf+vhajzNYuIrJxT37BYAWS+57enm6MMbI0FkLAXSN9VceR7jJiou5Bi7wl5taEtkexUBJT2bks6djYW+wGWvj728aASoPwYCHChCHEEMAoTBMKM2x1lrdorHFkLbi-k9CBejgIKQZJJt4idVXJ0YX5ISIYBNrKHq+ioRtAwVb62HWbem2Zdrsps17duoG4NQokheb4RywgcQnk9FizVlR+XR5heSyp4jzWegpb03G+g0VqAg+CwPbD0XiAJzqv+45SAehGKmGorb8GE5i3Qwj-uxHkeo7E9oDHYsjF4Fx5a2TRsieD3rTSnp84CpMFtkwWUQnhW+pE1QDbDJpvjRtAIR80yGJtgM9o41v1svC7XN03A84OmKGqkwQTcnRPo95QDlTePtfcbqCYxzEpnMmco98NnHAXFMHKCQBR9RiORvtS267rdReTSmQYqXz3ejsjtWb-uCutvK96d0q7WvjOu-EycwHJOzcW-k-UExhuY9eFQ1b0ANvpdcp90akFv0QqdLxDb6ChwwzsmRakVMSBU0SxDPQIFz7cSvsmXp-V+bCb2jGp+PAx4xaEAGsKkU0oVyt38lge4yxVhD+veyNVb3oI2+Y3L9pDF8l0H01y6P8qKdt3jyppPRvU-sv1cnzPrWzdq41+H+c2fS69NS4C2s1XPQlBZGPmWQgOJArNwrmFmvooFVrmv9gni-lrC1ibtaI8twJ1sTmqipl8LcAQH0I-j8PsFCFSFgXciwHmMqAAEQHxYCAgsr7BwBQgkEkGEFW4EiohEF9aDaHA0GeL0EEEgCEEwDIYGhIADwACkAAHIkL4MqDOiQPwSyE7AFFDNJguNxJIYfm9DQXpIgXBoVhxihqhqofvMjtrgfscmonIZwM5inrptvhfnKvJshAlnxpVrzvvrrhJp3jLqYZnmwfgQwEQScAClrEgEISIWIWkioSRrYr4Q4lnngQwZwb1P1F6gIcIaISADOiES+BoWRhRlERwYQevLkXkawVkV4ZwVCDIQQHwYPAEaISEextuhFthqFuEQRtxsRuxhkZEVSuwUUcQVgACICFCGcAABoFEhKeFEENRIC7bdokFxpIDQ4JqMwPZTHxABRIASJzGw6xhOhLHDGdFEEgD8H3DOAsh7z8FjwsinHnFnEhGEE9CEGoSEENR3GcFxpPGEH5y0GFFEF5HfErw7GjGgGFxwr4oQGEH7GHHHH7FnGQmXF0AhEqY9A6EDxxSQGcQtbbAVKLjaDA4Q4gQEAO5mKOIqbIlQ53ZokYlsjaDg6Q7b7rFFotb6D4mEmIHIlUmtbEA+oknxqw7JZUDom1AUmbFugtZKbskog0mkkQ5UAMnsgEkeHRE5E-GKl-HylglHG3zQkakXEqEqaEGHC5B3EVYCa-bv54pqLYnaGGkAlxaClw44nmEQK0kdYQ42GIHRbGlgFAlqKskil85tZcl0mSl0GjGcEkFnBgDnDKnZFHRIDB5LFbZIBfpbZgqoTbCOCho+p+peCoR1BpnKK+oKIUDUFYAfEjEqkHFeAlzlnHEXHQnXEKKvHKKvFHSvFbYlm7GcGKn5HFlykEF74C5OFeon4Z7cZ8kA6SYDyglVn8EVnTnVljxCCnECBwlqEDzCa2GtTKjp7IQp58mYlOK+pmK4n4nhpMn7z+rjkWbr7m5G6ImTxbmW4qbtndElk9bgDIBQjIDGDxyiK7KYr1ZfrGIgCCF-Lkp1LgoYqQpYrqbFLaaAVDwgUzqNIQW5J9r5JWaFLFJsqAVjybKgX1JIXZKQU36l734cCAW+BDy4WUo0r3yDzdoDz0VbIUrgWEUkiY41azE2gdo2mJYtTGK2GoD3wACck80E+8vgthVktFYlg838+8aU28lQ0lk8cl28Clk8YAtFIlo8MlKlthZwylo82lalthAktF58g8ulo8V828Jwhlg8xlolthEAtFqlA8VlslthII9lA8FCJlK5IA9kPl-cwq8lF5g8gcwlolJ8vgmWo8-8+8NyyFaASAVOxhhiRiAlIAUl28Q8klIASl28xCAVUlBl28Nlk8Slml5VthSlZlNVAVSldlDV28Bl9VelAVBl3l28oC28ZlzVHVfVIA3Vg1k8dlQVLVk8LlI1o8xV283lE1k8FVo8QVkVk8OFXwoELCQAA|Try DHMNL online]] ​district heating network optimization ​problem (MILPwith fixed/​variable investment cost tradeoff.
- +
-===== Cutting stock problem ​===== +
- +
- +
-  * [[https://​www3.nd.edu/​~jeff/​mathprog/​mathprog.html?​model=%23%20Stock%20Cutting%20Problem%0A%0A%23%20Products%0Aset%20PRODUCTS%3B%0Aparam%20pLength%7BPRODUCTS%7D%3B%0Aparam%20demand%7BPRODUCTS%7D%3B%0A%0A%23%20Raw%20Materials%0Aset%20RAWMATERIALS%3B%0Aparam%20rLength%7BRAWMATERIALS%7D%3B%0Aparam%20avail%7BRAWMATERIALS%7D%3B%0A%0A%23%20Big%20M%20should%20be%20greater%20than%20the%20length%20of%20any%20stock%20piece%0Aparam%20bigM%3B%0Acheck%20%7Br%20in%20RAWMATERIALS%7D%20%3A%20bigM%20%3E%20rLength%5Br%5D%3B%0A%0A%23%20Create%20indexed%20sets%20enumerating%20all%20production%20pieces%0Aset%20Q%7Bp%20in%20PRODUCTS%7D%20%3A%3D%201..demand%5Bp%5D%20%3B%0A%0A%23%20Create%20indexed%20sets%20enumerating%20all%20raw%20material%20pieces%0Aset%20S%7Br%20in%20RAWMATERIALS%7D%20%3A%3D%201..avail%5Br%5D%3B%0A%0A%23%20y%5Bp%2Cq%2Cr%2Cs%5D%20%3D%201%20assigns%20(product%20p%2C%20piece%20q)%20to%20(raw%20material%20r%2C%20piece%20s)%0Avar%20y%7Bp%20in%20PRODUCTS%2C%20q%20in%20Q%5Bp%5D%2C%20r%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20binary%3B%0A%0A%23%20u%5Br%2Cs%5D%20%3D%201%20indicates%20use%20of%20(raw%20material%20r%2C%20piece%20s)%0Avar%20u%7Br%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20binary%3B%0A%0A%23%20w%5Br%2Cs%5D%20is%20the%20remainder%20left%20over%20from%20(raw%20material%20r%2C%20piece%20s)%0Avar%20w%7Br%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20%3E%3D%200%3B%0A%0A%23%20Assign%20product%20(p%2Cq)%20only%20once%20to%20the%20set%20of%20all%20raw%20materials%20(r%2Cs)%0As.t.%20A%7Bp%20in%20PRODUCTS%2C%20q%20in%20Q%5Bp%5D%7D%20%3A%20sum%7Br%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20y%5Bp%2Cq%2Cr%2Cs%5D%20%3D%201%3B%0A%0A%23%20Cut%20enough%20pieces%20to%20exactly%20meet%20the%20demand%20for%20each%20product%0As.t.%20B%7Bp%20in%20PRODUCTS%7D%20%3A%20sum%7Bq%20in%20Q%5Bp%5D%2C%20r%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20y%5Bp%2Cq%2Cr%2Cs%5D%20%3D%20demand%5Bp%5D%3B%0A%0A%23%20Do%20not%20exceed%20the%20length%20each%20piece%20of%20raw%20material%0As.t.%20C%7Br%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20%3A%20%0A%20%20%20%20sum%7Bp%20in%20PRODUCTS%2C%20q%20in%20Q%5Bp%5D%7D%20pLength%5Bp%5D*y%5Bp%2Cq%2Cr%2Cs%5D%20%2B%20w%5Br%2Cs%5D%20%3D%20rLength%5Br%5D%3B%0A%20%20%20%20%0A%23%20Determine%20if%20a%20piece%20(r%2Cs)%20of%20raw%20material%20is%20used.%0As.t.%20D%7Br%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20%3A%20bigM*u%5Br%2Cs%5D%20%3E%3D%20sum%7Bp%20in%20PRODUCTS%2C%20q%20in%20Q%5Bp%5D%7D%20y%5Bp%2Cq%2Cr%2Cs%5D%3B%0A%0Aminimize%20Pieces%20%3A%20sum%7Br%20in%20RAWMATERIALS%2C%20s%20in%20S%5Br%5D%7D%20rLength%5Br%5D*s*u%5Br%2Cs%5D%3B%0A%0Asolve%3B%0A%0Aprintf%20%22Cutting%20Plan%5Cn%22%3B%0Afor%20%7Br%20in%20RAWMATERIALS%7D%20%3A%20%7B%0A%20%20%20%20printf%20%22%20%20%20%20Raw%20Material%20%25s%20%5Cn%22%2C%20r%3B%0A%20%20%20%20for%20%7Bs%20in%20S%5Br%5D%7D%20%3A%20%7B%0A%20%20%20%20%20%20%20%20printf%20%22%20%20%20%20%20%20%20%20Piece%20%25s-%25d%20%3A%20Remainder%20%3D%20%255.2f%20%3A%20Cut%20product%20pieces%20%22%2C%20r%2Cs%2C%20w%5Br%2Cs%5D%3B%0A%20%20%20%20%20%20%20%20for%20%7Bp%20in%20PRODUCTS%7D%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%7Bq%20in%20Q%5Bp%5D%20%3A%20y%5Bp%2Cq%2Cr%2Cs%5D%7D%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printf%20%22%25s-%25d%20%22%2C%20p%2C%20q%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20printf%20%22%5Cn%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20printf%20%22%5Cn%22%3B%0A%7D%0A%0Aprintf%20%22Production%20Plan%5Cn%22%3B%0Afor%20%7Bp%20in%20PRODUCTS%7D%20%3A%20%7B%0A%20%20%20%20printf%20%22%20%20%20%20Product%20%25s%20%5Cn%22%2C%20p%3B%0A%20%20%20%20for%20%7Bq%20in%20Q%5Bp%5D%7D%20%3A%20%7B%0A%20%20%20%20%20%20%20%20printf%20%22%20%20%20%20%20%20%20%20Piece%20%25s-%25d%20%3A%20Cut%20from%20stock%20piece%20%22%2C%20p%2C%20q%3B%0A%20%20%20%20%20%20%20%20for%20%7Br%20in%20RAWMATERIALS%7D%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20%7Bs%20in%20S%5Br%5D%20%3A%20y%5Bp%2Cq%2Cr%2Cs%5D%7D%20%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20printf%20%22%25s-%25d%20%22%2C%20r%2C%20s%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20printf%20%22%5Cn%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20printf%20%22%5Cn%22%3B%0A%7D%0A%0Adata%3B%0A%0Aparam%20bigM%20%3A%3D%2020%3B%0A%0Aparam%3A%20PRODUCTS%3A%20pLength%20demand%20%3A%3D%0A%20%20%20%20%20%20%20%20'​7m'​%20%20%20%20%20%20%20%207%20%20%20%20%20%20%20%203%0A%20%20%20%20%20%20%20%20'​6m'​%20%20%20%20%20%20%20%206%20%20%20%20%20%20%20%202%0A%20%20%20%20%20%20%20%20'​4m'​%20%20%20%20%20%20%20%204%20%20%20%20%20%20%20%206%0A%20%20%20%20%20%20%20%20'​3m'​%20%20%20%20%20%20%20%203%20%20%20%20%20%20%20%201%20%3B%0A%20%20%0Aparam%3A%20RAWMATERIALS%3A%20rLength%20avail%20%3A%3D%20%0A%20%20%20%20%20%20%20'​15m'​%20%20%20%20%20%20%2015%20%20%20%20%20%20%20%204%0A%20%20%20%20%20%20%20'​10m'​%20%20%20%20%20%20%2010%20%20%20%20%20%20%20%205%20%3B%0A%20%20%0Aend%3B%0A|Try StockCutting online]] +
-  * {{:​software:​stockcutting.mod|StockCutting.mod}} that can be solved offline using GLPK. +
  
 ===== Resources ===== ===== Resources =====
  
-  * [[https://www3.nd.edu/​~jeff/​mathprog/|MathProg ​online]], solve (small) optimization models directly in the browser. +  ​* **[[https://ojdo,org/glpk|ojdo.org GLPK online]]**, solve (small) optimization models directly in the browser; my personal instance of [[https://​cocoto.github.io/​glpk-online/​|cocoto'​s GLPK online]], using [[https://​github.com/​hgourvest/​glpk.js|glpk.js]] by hgourvest
-  * [[http://​lipas.uwasa.fi/​~tsottine/​lecture_notes/​or.pdf|Operations research with GNU Linear Programming Kit]]. Sottinen, Tommi (2009). ORMS1020 course notes. Department of Mathematics and Statistics, University of Vaasa, Finland. +  * [[http://​lipas.uwasa.fi/​~tsottine/​lecture_notes/​or.pdf|Operations research with GNU Linear Programming Kit (PDF)]]. Sottinen, Tommi (2009). ORMS1020 course notes. Department of Mathematics and Statistics, University of Vaasa, Finland. 
-  * [[http://​www.cs.unb.ca/​~bremner/​docs/​glpk/​gmpl.pdf|Modeling Language GNU MathProg]] Language Reference, Draft Edition, for GLPK Version 4.34, December 2008.+  * [[http://​www.cs.unb.ca/​~bremner/​docs/​glpk/​gmpl.pdf|Modeling Language GNU MathProg ​(PDF)]] Language Reference, Draft Edition, for GLPK Version 4.34, December 2008.
   * [[http://​sourceforge.net/​projects/​winglpk/​files/​winglpk/​|GLPK for Windows]] hosts binaries of GLPK.   * [[http://​sourceforge.net/​projects/​winglpk/​files/​winglpk/​|GLPK for Windows]] hosts binaries of GLPK.
  • software/mathprog.txt
  • Last modified: 2019/10/25 14:01
  • by ojdo