forked from tule2236/Airbnb-Dynamic-Pricing-Optimization
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptimization.py
49 lines (37 loc) · 1.3 KB
/
optimization.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
##ISYE 4803
##Airbnb Project
from __future__ import division
from pyomo.environ import *
import pyomo.opt
import math
import pprint
import csv
#####Please substitute the input with the real input data
##########Parameters##########
Cv = 20.0
I0 = 300.0
X_0=100.0
##########Decision_Variables###########
# i = 1.......12
# j = 1, 2, 3, 4/ j = 5,6,7
# binary variable(if customer decide to book airbnb property)
numDays = 6
model = ConcreteModel()
month = [1,2,3,4,5,6,7,8,9,10,11,12]
model.month = Set(initialize = month)
model.day = RangeSet(1,7)
model.alpha_ij = Var(model.month, model.day, within=Binary)
model.x_ij = Var(model.month,model.day, within=PositiveReals)
model.d_ij = Var(model.month,model.day, within=PositiveReals)
model.boundX = ConstraintList()
for m in model.month:
for d in model.day:
model.boundX.add(model.x_ij[m,d] == model.alpha_ij[m,d] * X_0)
# model.boundX.add(model.x_ij[m,d] = model.alpha_ij[m,d]*X_0)
model.boundX.add(model.d_ij[m,d] == -0.2417 * model.x_ij[m,d]*model.x_ij[m,d] +18.039*model.x_ij[m,d]+551.46)
model.obj = Objective(expr = sum(model.alpha_ij[m,d] * model.x_ij[m,d]
-model.alpha_ij[m,d]*Cv-I0 for m in model.month for d in model.day), sense = maximize)
opt = SolverFactory('gurobi')
instance = model.create()
results = opt.solve(instance)
instance.display()