{"id":13732799,"url":"https://github.com/ekagra-ranjan/Optimal-Bidding","last_synced_at":"2025-05-08T08:32:13.685Z","repository":{"id":105082373,"uuid":"142407424","full_name":"ekagra-ranjan/Optimal-Bidding","owner":"ekagra-ranjan","description":"Inter IIT Techmeet 2017, IIT Madras - Data Science Competition","archived":false,"fork":false,"pushed_at":"2020-05-21T18:19:39.000Z","size":821,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-24T10:02:30.352Z","etag":null,"topics":["bid-price","bidding","boosting-algorithm","cross-validation","data-science","data-science-challenges","data-science-competition","electricity-market","ensemble","feature-engineering","feature-extraction","feature-selection","gradient-boosting-machine","interiit","knn","linear-regression","market-price","random-forest","sklearn","svm"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekagra-ranjan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-26T07:49:30.000Z","updated_at":"2024-07-01T21:36:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"47d9eae2-4bd2-4e56-983b-f1d4cb1f5902","html_url":"https://github.com/ekagra-ranjan/Optimal-Bidding","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekagra-ranjan%2FOptimal-Bidding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekagra-ranjan%2FOptimal-Bidding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekagra-ranjan%2FOptimal-Bidding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekagra-ranjan%2FOptimal-Bidding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekagra-ranjan","download_url":"https://codeload.github.com/ekagra-ranjan/Optimal-Bidding/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252798838,"owners_count":21805884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bid-price","bidding","boosting-algorithm","cross-validation","data-science","data-science-challenges","data-science-competition","electricity-market","ensemble","feature-engineering","feature-extraction","feature-selection","gradient-boosting-machine","interiit","knn","linear-regression","market-price","random-forest","sklearn","svm"],"created_at":"2024-08-03T03:00:33.991Z","updated_at":"2025-05-08T08:32:13.224Z","avatar_url":"https://github.com/ekagra-ranjan.png","language":"Jupyter Notebook","funding_links":[],"categories":["Inter-IIT Techmeet"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\nOptimal Bidding\n\u003c/h1\u003e\n\n\u003ch2 align=\"center\"\u003e\nInter IIT Techmeet 2017, IIT Madras - Data Science Competition\n\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ekagra-ranjan/Optimal-Bidding/\"\u003e\u003cimg src=\"http://img.shields.io/badge/Public LB Rank-1-blue.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ekagra-ranjan/Optimal-Bidding/\"\u003e\u003cimg src=\"http://img.shields.io/badge/Private LB Rank-4-blue.svg\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/ekagra-ranjan/Optimal-Bidding/raw/master/Method_Presentation_IIT_GUWAHATI.pptx\"\u003e\u003cimg src=\"http://img.shields.io/badge/Slides-ppt-orange.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Preamble to the Problem:\nLiberalization of sale of electricity has led to competitive electricity markets. Generators and\nconsumers can trade electricity at prices agreeable to both by bidding in the market, which is\nfacilitated by market operators. Market operators ensure fair trade, reliable exchange of\nelectricity and money, and determine the market prices based on bids submitted.\nThere are various types of trading markets which exist but ‘Day Ahead Market’ (DAM) is of our\ninterest in this problem. In DAM, bidding happens a day ahead to the delivery of electricity. The\nday of delivery is divided into multiple blocks of equal duration and for each of the blocks,\nbidding happens separately and market prices are determined independently. A ‘bid’ includes a\nprice as well as a quantity (energy in of KWh). Eg. A consumer bids 100 units at Rs.5 per unit\nwhich means that he is willing to buy 100 units of electricity at a cost less than or equal to five\nrupees. If the market price turns out to be less than Rs.5, the consumer wins the bid, otherwise he\nloses. The winning consumer is delivered the energy he bids, during particular block duration.\nThe market prices are determined by an algorithm which finds market prices based on\nequilibrium in the bid quantities and bid prices submitted by the generators and consumers. It\nalso ensures that the there is no congestion in the lines for supply of electricity. Once the market\nprices are determined, the bidders are informed whether they won the bid or not and what the\nunit price is. For each block, the market price is same for all the members (non-discriminatory)\nwho win the bid, in a given region. The bid winning consumers have to pay for complete bid\nquantity at the bid price irrespective of consumption and this cost gets added to his bill. The\nlosing consumers get no electricity from the market.\n## Problem Statement:\nConsider a scenario of a gated community with many buildings requiring electricity and a solar\npanel plant installed along with a battery. The community decides to participate in the electricity\nbidding market in their region. The community also has the option of drawing from a distribution\ncompany (DISCOM) at a fixed per unit (KWh) cost. So there are four sources from which the\ndemand can be fulfilled viz. solar plant, battery, electricity market and DISCOM.\nFor the above defined scenario, formulate and develop an algorithm to solve the optimization\nproblem with an objective to minimize the daily electricity bill of the community as a whole. The\nbid quantities and bid prices for each of the blocks are the decision variables of the optimization\nproblem.\nSince bidding happens a day ahead, the actual electricity demand of the community and the\nactual output of the solar plant are not known exactly. So a forecast of these quantities for each\nof the blocks is given by an oracle at the time of bidding. A forecast of the most probable market\nprice for each of the blocks is given by the oracle at the time of bidding.\nThe problem formulation and solution should satisfy the constraints and make assumptions as\ngiven in the following sections.\n## Problem Constraints:\n1. The actual demand of all the consumers should be fulfilled at any cost from one of the\nfour sources\n2. Precedence of sources to fulfil demand: Solar plant \u003e Electricity from market \u003e Battery \u003e\nDISCOM\n3. Battery has certain efficiency, a limited charging and discharging capacity (specified in\nthe data sheet)\n4. Bid quantities should be only integers while bid price can take any value\n## Problem Assumptions:\n1. Battery can charge to its full capacity and discharge to zero state of charge\n2. Battery can either charge or discharge in a given block but cannot do both and everything\nis represented in terms of KWh for convenience\n3. In a block, battery charges automatically when the supply from solar plant and electricity\nmarket combined exceeds the demand\n4. In a block, battery discharges automatically when the demand exceeds the supply from\nsolar plant and electricity market combined\n5. The efficiency of the battery and inverter do not decrease with time\n6. The capital costs and maintenance costs associated with solar plant, battery and inverter\nare ignored. Hence the unit cost of electricity from solar plant is taken as zero\n7. There are no upper and lower limits on the bid quantity\n8. The market is large enough such that the effect of the bid made by the community, on the\nmarket prices is negligible\n9. The daily bill is calculated only based on energy purchased in units and per unit cost. All\nother charges involved are ignored\n## Expected Outputs:\nTraining and test sets are given separately for the problem. Training set includes predictions and\nactual values of demand, solar output and market prices while the test set only has the\npredictions. The teams have to develop an algorithm or an agent which outputs the optimal bid\nquantity and price for each of the blocks in the day. The training set can be used by the teams in\nany manner they deem necessary to develop and validate their algorithms. The final evaluation\nwill be based only on the output of the algorithm to the test set.\n## Judging Criteria:\nLeaderboard dataset includes data for 50 days.\nPrivate dataset includes data for 100 days.\nScore for a dataset = (Best Average for the period)/(Your Average for the period) * 100\nFinal Score = 10+0.9*( 0.2*Public-LeaderBoard-Set-Score + 0.8*Private-Test-Set-Score).\nThe 10 marks is given for presentation quality during Inter-IIT Tech Meet.\nTo make a leaderboard submission, refer to the leaderboard results page to find your institute\ncode.\nIf your institute code is 15 - Submit one csv file “15.csv”.\nSolution has 2 columns and (50*24 = 1200 rows). Each row has hourwise bid-price in column1\nand bid-quantities in column 2.\nOnce you submit refer to the leaderboard results.csv file to check your average price obtained\nand similarly for other teams. ( Only best submissions are considered. -1 = No Submissions ).\n## Data Sheet:\n### Parameters to be used in the problem:\n1. No of blocks in a day for bidding – 24 blocks each of duration one hour\n2. Battery capacity – 25 KWh\n3. Battery charging and discharging capacity – 5 KWh i,e,. battery can charge or discharge\nin energy upto 5 KWh in an hour\n4. Battery efficiency – 80% i,e,. if 10 KWh is stored in the battery, it can supply only 8\nKWh\n5. Inverter efficiency – 100%\n6. Price of electricity offered by DISCOM – Rs.7/KWh\n### Training Set:\n1. Oracle predictions of the community’s hourly energy demand (in KWh) for 900 days are\navailable at Demand_Train_pred.csv\n2. Oracle predictions of the hourly solar plant output (in KWh) for 900 days are available at\nSolar_Train_pred.csv\n3. Oracle predictions regional market prices (in Rs./KWh) for 900 days are available at\nPrice_Train_pred.csv\n4. Actual values of the community’s hourly energy demand (in KWh) for 900 days are\navailable at Demand_Train.csv\n5. Actual values of the hourly solar plant output (in KWh) for 900 days are available at\nSolar_Train.csv\n6. Actual values regional market prices (in Rs./KWh) for 900 days are available at\nPrice_Train.csv\n### Public Leaderboard Set:\n1. Oracle predictions of the community’s hourly energy demand (in KWh) for 50 days are\navailable at demand.csv\n2. Oracle predictions of the hourly solar plant output (in KWh) for 50 days are available at\nsolar.csv.\n3. Oracle predictions regional market prices (in Rs./KWh) for 50 days are available at\nprice.csv.\n\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Github repos of similar Data Science Competitions:\n\n* [Analyze-This-18](https://github.com/ekagra-ranjan/Analyze-This-18)\n* [Analyze-This-17](https://github.com/ekagra-ranjan/Analyze-This-17)\n* [GS-Quantify-17](https://github.com/ekagra-ranjan/GS-Quantify-17/)\n* [awesome-undergrad-hackathons](https://github.com/ekagra-ranjan/awesome-undergrad-hackathons)\n\n\u003cp align=\"center\"\u003e\n\tPlease star the repo if you found the materials in the repo useful :)\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekagra-ranjan%2FOptimal-Bidding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekagra-ranjan%2FOptimal-Bidding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekagra-ranjan%2FOptimal-Bidding/lists"}