{ "name": "HEALSIMULATION", "displayName": "HEALSIMULATION", "description": "tool", "category": "", "helpUrl": "https://geoserver.ct.ufpb.br/arcgis/rest/directories/arcgisoutput/HEAL/HEALSIMULATION3_GPServer/HEAL_HEALSIMULATION3/HEALSIMULATION.htm", "executionType": "esriExecutionTypeAsynchronous", "parameters": [ { "name": "input_simulation", "dataType": "GPString", "displayName": "input_simulation", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": { "configuracao_geral_csv": "disponibilidade;demanda;mes_inicial;n_anos\ncenario de normalidade;sem pisf;1;2", "reservatorios_csv": "nome;storagemax;storagemin;vol_inicial;vol_meta;vol_cheia;abastecimento_humano;criacao_animal;vazao_ecologica;irrigacao;aquicultura;industria;outros_usuarios_de_agua;volume_meta\nmachado;1597000;73240;798500;798500;1517150;;;;;;;;\npoco_fundo;10600311;4612;5300155.5;5300155.5;10070295.45;;;;;;;;\nmateus_vieira;2752200;754900;1376100;1376100;2614590;;;;;;;;\njucazinho_antonio_gouveia_neto;204820676;0;102410338;102410338;194579642.2;;;;;;;;\nvarzea_do_una;11568010;224000;5784005;5784005;10989609.5;;;;;;;;\ntabocaspiaca;1167924;30364;583962;583962;1109527.8;;;;;;;;\nengenheiro_gercino_pontes_tabocas;13600000;156379;6800000;6800000;12920000;;;;;;;;\ncarpina;255369167;0;127684583.5;127684583.5;242600708.65;;;;;;;;\ncursai;13033990;469000;6516995;6516995;12382290.5;;;;;;;;\ngoita;52535576;792500;26267788;26267788;49908797.2;;;;;;;;\ntapacura;104870609;743234;52435304.5;52435304.5;99627078.55;;;;;;;;\nmatriz_da_luz;1245968;49268;622984;622984;1183669.6;;;;;;;;\noitis;3404837;198943;1702418.5;1702418.5;3234595.15;;;;;;;;" }, "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "input_gams", "dataType": "GPString", "displayName": "input_gams", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": "*__HEAL_FULL_GAMS_V13__\n* -------------------------------------------------------------------------------\n*****************MODEL FOR INTEGRATED WATER RESOURCES ALLOCATION**********************\n\nSCALARS\n MaxDrawdown fracao maxima de deplecionamento mensal /{input_maxdrawdown}/ \n MetaAtendimento \"Meta global entre zero e um\" /{input_metaatendimento}/ \n MetaRetornoEconomico \"Meta economica entre zero e um\" /{input_metaatendimento}/\n NAtendimentosSH \"Quantidade de registros com demanda positiva\"\n RetornoEconomicoMaxTeorico \"Retorno com toda a demanda atendida\"\n NHumanDemand \n;\n\n\nVARIABLE\n obj5HSpercent\n AllocALLPercent\n AllocALLPercentSH\n DeltaRN(n,y,m)\n DivertMonth(n,y,m)\n RetornoEconomico \"Retorno economico total\"\n objMetaRetornoEconomico \"Erro quadratico em relacao a meta economica\"\n;\n\nPOSITIVE VARIABLE\n RStorageEndDif(n,y,m)\n Return(n,y,m)\n PercentualRetornoEconomico \"Retorno obtido dividido pelo maximo teorico\"\n;\n\nVARIABLES\n objRStorageEndDif1\n;\n\nEQUATIONS\n R_no(n,y,m)\n Divert_permonth(n,y,m)\n R_nl(n,y,m)\n R_nn(n,y,m)\n R_Area(n,y,m)\n EVP(n,y,m)\n AllocatedWaterInPercent(n,y,m)\n AllocatedWaterInPercentO(n,y,m)\n FinalStorage(n,y,m)\n DeltaR(n,y,m)\n ReservoirReleaseRestriction(n,y,m)\n Return_no(n,y,m)\n objective1percent\n objectiveEndStorage1\n objectiveSH\n objective5\n calculaRetornoEconomico\n calculaPercentualEconomico\n objectiveMetaRetornoEconomico\n;\n\n* -------------------------------------------------------------------------------\n* INITIAL VALUES\n* -------------------------------------------------------------------------------\n\nDivert.up(n,y,m)$(n_demand(n)) = Demand(n,m)*1000000/(Days(m)*24*60*60);\n\nDivert.fx(n,y,m)$(n_demand(n) and Demand(n,m) = 0) = 0;\n\nDivert.l(n,y,m)$(n_demand(n) and Demand(n,m) > 0) = Demand(n,m) * 1000000 / (Days(m) * 24 * 60 * 60);\n\n* Initial reservoir storage.\nRStorage.l(n,y,m)$n_reservoirs(n) = beg_S(n);\n\n* Conta somente os registros que possuem demanda original positiva.\nNAtendimentosSH = sum((n,y,m)$(n_demand(n) and DemandOriginal(n,m) > 0), 1);\n\n* ------------------------------WATER BALANCE------------------------------------\n\n* -------------------------------------------------------------------------------\n* 1. RIVER SECTION NODE\n* -------------------------------------------------------------------------------\n\nR_no(n,y,m)$(n_riversection(n))..\nRelease(n,y,m) =e=\n Inflow(n,y,m)\n - sum(n1$(n_to_nr(n,n1)),\n Divert(n1,y,m));\n\n\n* -------------------------------------------------------------------------------\n* 2. STORAGE-AREA RELATION\n* -------------------------------------------------------------------------------\n\nR_area(n,y,m)$(n_reservoirs(n))..\nRArea(n,y,m) =e=\n PolyStorageArea(n,'5')\n + PolyStorageArea(n,'4')*RStorage(n,y,m)\n + PolyStorageArea(n,'3')*power(RStorage(n,y,m),2)\n + PolyStorageArea(n,'2')*power(RStorage(n,y,m),3)\n + PolyStorageArea(n,'1')*power(RStorage(n,y,m),4);\n\n\n* -------------------------------------------------------------------------------\n* 3. RESERVOIR MASS BALANCE [hm3]\n* -------------------------------------------------------------------------------\n\nR_nl(n,y,m)$(n_reservoirs(n))..\nRStorage(n,y,m) =e=\n\n beg_S(n)$(ord(m) EQ 1 and ord(y) EQ 1)\n\n + RStorage(n,y-1,m--1)$(\n ord(m) EQ 1\n and ord(y) GT 1\n )\n\n + RStorage(n,y,m-1)$(\n ord(m) NE 1\n )\n\n + Inflow(n,y,m)\n *Days(m)*24*60*60/1000000\n\n - ResEVP(n,y,m)\n\n - Release(n,y,m)\n *Days(m)*24*60*60/1000000\n\n - sum(n1$(n_to_nr(n,n1)),\n Divert(n1,y,m))\n *Days(m)*24*60*60/1000000;\n\n\n* -------------------------------------------------------------------------------\n* 4. RESERVOIR DELTA STORAGE [hm3/month]\n* -------------------------------------------------------------------------------\n\nDeltaR(n,y,m)$(n_reservoirs(n))..\nDeltaRN(n,y,m) =e=\n\n Inflow(n,y,m)\n *Days(m)*24*60*60/1000000\n\n - Release(n,y,m)\n *Days(m)*24*60*60/1000000\n\n - sum(n1$(n_to_nr(n,n1)),\n Divert(n1,y,m))\n *Days(m)*24*60*60/1000000\n\n - ResEVP(n,y,m);\n\n\nReservoirReleaseRestriction(n,y,m)$(n_reservoirs(n))..\nDeltaRN(n,y,m) =g= -MaxDrawdown*(\n beg_S(n)$(ord(m) EQ 1 and ord(y) EQ 1)\n + RStorage(n,y-1,m--1)$(ord(m) EQ 1 and ord(y) GT 1)\n + RStorage(n,y,m-1)$(ord(m) NE 1));\n\n\n* -------------------------------------------------------------------------------\n* 5. EVAPORATION [hm3/month]\n* -------------------------------------------------------------------------------\n\nEVP(n,y,m)$(n_reservoirs(n))..\nResEVP(n,y,m) =e= 1.10 * Evaporation(n,m)/1000*RArea(n,y,m);\n\n\n* -------------------------------------------------------------------------------\n* 6. RETURN FLOW\n* -------------------------------------------------------------------------------\n\nReturn_no(n,y,m)$(n_reservoirs(n) or n_riversection(n))..\nReturn(n,y,m) =e=\nsum(n1$(n_to_nr(n,n1)),\n Divert(n1,y,m)*returncoef(n1));\n\n\n* -------------------------------------------------------------------------------\n* 7. GROSS INFLOW TO ALL HYDROLOGICAL NODES [m3/s]\n* -------------------------------------------------------------------------------\n\nR_nn(n,y,m)$(n_reservoirs(n) or n_riversection(n))..\nInflow(n,y,m) =e=\n\n sum(n1$(n_from_n(n1,n)),\n Release(n1,y,m))\n\n + sum(n1$(n_from_n(n1,n)),\n Return(n1,y,m))\n\n + runoff(n,y,m);\n\n\n* ------------------------- EQUATIONS ANALYSIS AND OF ----------------------------\n\n* Monthly diverted volume [m3/month]\nDivert_permonth(n,y,m)..\nDivertMonth(n,y,m) =e=\nDivert(n,y,m)*Days(m)*24*60*60;\n\n\n* Percentual de atendimento total: PISF fixo mais alocacao do sistema local.\nAllocatedWaterInPercent(n,y,m)$(\n n_demand(n) and DemandOriginal(n,m) > 0\n)..\nAllocationPercent(n,y,m) =e=\n (Divert(n,y,m) * (Days(m)*24*60*60)\n + PISFAllocation(n,m)*1000000)\n / (DemandOriginal(n,m)*1000000);\n\n\nAllocatedWaterInPercentO(n,y,m)$(\n n_demand(n)\n and DemandOriginal(n,m) = 0\n)..\nAllocationPercent(n,y,m) =e= 0;\n\n\n* Retorno economico maximo teorico.\nRetornoEconomicoMaxTeorico =\n sum((n,y,m)$(\n n_demand(n)\n and DemandOriginal(n,m) > 0\n ),\n w1new(n)\n * DemandOriginal(n,m)\n * 1000000\n );\n\n\n* Retorno economico do atendimento total.\ncalculaRetornoEconomico..\n RetornoEconomico =e=\n sum((n,y,m)$(\n n_demand(n)\n and DemandOriginal(n,m) > 0\n ),\n w1new(n)\n * (DivertMonth(n,y,m) + PISFAllocation(n,m)*1000000)\n );\n\n\n* Percentual do potencial economico atendido.\ncalculaPercentualEconomico..\n PercentualRetornoEconomico =e=\n RetornoEconomico\n / max(1e-9, RetornoEconomicoMaxTeorico);\n\n\n* Desvio quadratico entre o volume final e o volume-meta.\nFinalStorage(n,y,m)$(\n n_reservoirs(n)\n and lastyear(y)\n and ord(m) = card(m)\n)..\n RStorageEndDif(n,y,m) =e=\n sqr(\n (RStorage(n,y,m) - end_S(n))\n / RStorageMax(n)\n );\n\n\n* -------------------------------------------------------------------------------\n* OBJECTIVE FUNCTIONS\n* -------------------------------------------------------------------------------\n\n* Atendimento global em percentual.\nobjective1percent..\n AllocALLPercent =e=\n sum(n_demand(n), sum(y, sum(m, AllocationPercent(n,y,m))));\n\n\n* Distancia entre atendimento global obtido e a meta escolhida.\nobjectiveSH..\n AllocALLPercentSH =e=\n sqr(\n (\n AllocALLPercent / max(1, NAtendimentosSH)\n - MetaAtendimento\n )\n );\n\n\n* Meta de armazenamento somente no final do horizonte.\nobjectiveEndStorage1..\n objRStorageEndDif1 =e=\n sum((n,y,m)$(\n n_reservoirs(n)\n and lastyear(y)\n and ord(m) = card(m)\n and RStorageMax(n) > 0\n ),\n RStorageEndDif(n,y,m)\n )\n / max(1, card(n_reservoirs));\n\n\n* Atendimento medio do abastecimento humano.\nNHumanDemand =\n sum((n,y,m)$(\n n_humansupply(n)\n and DemandOriginal(n,m) > 0\n ), 1);\n\nobjective5..\n obj5HSpercent =e=\n sum((n,y,m)$(\n n_humansupply(n)\n and DemandOriginal(n,m) > 0\n ),\n AllocationPercent(n,y,m)\n )\n / max(1, NHumanDemand);\n\n\n* Diferenca quadratica entre percentual economico obtido e meta.\nobjectiveMetaRetornoEconomico..\n objMetaRetornoEconomico =e=\n sqr(\n PercentualRetornoEconomico\n - MetaRetornoEconomico\n );\n\n\n*************Reference********************\nMODEL waterallocationmodel /all/;\nwaterallocationmodel.tolInfRep = 1e-8;\nOption NLP = CONOPT4;\n*waterallocationmodel.optfile=1;\n\n\n* PRIORIDADE OPCIONAL: ABASTECIMENTO HUMANO\nSOLVE waterallocationmodel USING nlp MAXIMIZING obj5HSpercent;\nDivert.fx(n_humansupply(n),y,m) = Divert.l(n,y,m);\n\n* OBJETIVO: ATENDIMENTO\n* Buscar o atendimento global escolhido pelo usuario.\nSOLVE waterallocationmodel USING nlp MINIMIZING AllocALLPercentSH;\n* Preservar o atendimento global alcancado; as alocacoes individuais\nDivert.fx(n_demand(n),y,m) = Divert.l(n,y,m);\n* Reduzir a falta de agua em relacao as metas finais.\nSOLVE waterallocationmodel USING nlp MINIMIZING objRStorageEndDif1;\n\n\n* Percentual de armazenamento apenas para saida de resultados\nRStoragePercent.l(n,y,m) = 0;\n\nRStoragePercent.l(n,y,m)$(\n n_reservoirs(n)\n and RStorageMax(n) > 0\n) =\n RStorage.l(n,y,m) / RStorageMax(n);\n\n\nParameter AllocationDifResult(n,y,m) \"Deficit in meeting demands\";\nAllocationDifResult(n,y,m)$(n_demand(n)) =\n Divert.l(n,y,m)*Days(m)*24*60*60\n - Demand(n,m)*1000000;\n\noption dispwidth=30;\n\ndisplay\n AllocationPercent.l,\n DivertMonth.l,\n RStoragePercent.l,\n RStorage.l,\n AllocationDifResult;\n\n\n*execute_unload \"results_cen_reference_05_2026.gdx\" AllocationPercent.l, DivertMonth.L, RStoragePercent.l, Rstorage.l, AllocationDifResult;\n*$offtext\n\n", "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "input_metaatendimento", "dataType": "GPDouble", "displayName": "input_metaatendimento", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": 1, "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "input_maxdrawdown", "dataType": "GPDouble", "displayName": "input_maxdrawdown", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": 0.2, "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "url_data", "dataType": "GPString", "displayName": "url_data", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": "http://geoserver.ct.ufpb.br/arcgis/rest/services/HEAL/ClimaDataUASPernambuco/MapServer", "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "url_demand", "dataType": "GPString", "displayName": "url_demand", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": "http://services5.arcgis.com/Jt1k38F2SqtOkFI6/ArcGIS/rest/services/HEAL_Capibaribe_2025_Clip/FeatureServer/1/", "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "url_stream", "dataType": "GPString", "displayName": "url_stream", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": "http://services5.arcgis.com/Jt1k38F2SqtOkFI6/ArcGIS/rest/services/HEAL_Capibaribe_2025_Clip/FeatureServer/2/", "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "url_reservoir", "dataType": "GPString", "displayName": "url_reservoir", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": "http://services5.arcgis.com/Jt1k38F2SqtOkFI6/ArcGIS/rest/services/HEAL_Capibaribe_2025_Clip/FeatureServer/3/", "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "url_link", "dataType": "GPString", "displayName": "url_link", "description": "input", "direction": "esriGPParameterDirectionInput", "defaultValue": "http://services5.arcgis.com/Jt1k38F2SqtOkFI6/ArcGIS/rest/services/HEAL_Capibaribe_2025_Clip/FeatureServer/4/", "parameterType": "esriGPParameterTypeRequired", "category": "" }, { "name": "JobNumber", "dataType": "GPLong", "displayName": "JobNumber", "description": "", "direction": "esriGPParameterDirectionOutput", "defaultValue": null, "parameterType": "esriGPParameterTypeDerived", "category": "" }, { "name": "solver_summary", "dataType": "GPString", "displayName": "solver_summary", "description": "", "direction": "esriGPParameterDirectionOutput", "defaultValue": "", "parameterType": "esriGPParameterTypeDerived", "category": "" }, { "name": "table", "dataType": "GPRecordSet", "displayName": "table", "description": "", "direction": "esriGPParameterDirectionOutput", "defaultValue": {}, "parameterType": "esriGPParameterTypeDerived", "category": "" } ] }