/
TonyOptimize-Final.py
71 lines (35 loc) · 1.23 KB
/
TonyOptimize-Final.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# coding: utf-8
# In[169]:
get_ipython().system(u'pip install docplex --upgrade')
import sys
import docplex.mp
# In[170]:
#put your API url and key here
url = None
key = None
# In[171]:
# first import the Model class from docplex.mp
from docplex.mp.model import Model
# create one model instance, with a name
m = Model(name='microservices-throughput')
# In[172]:
# by default, all variables in Docplex have a lower bound of 0 and infinite upper bound
service1 = m.integer_var(name='service1')
service2 = m.integer_var(name='service2')
service3 = m.integer_var(name='service3')
service4 = m.integer_var(name='service4')
# In[173]:
m.add_constraint(service1 >= 0)
m.add_constraint(service2 >= 0)
m.add_constraint(service3 >= 0)
m.add_constraint(service4 >= 0)
m.add_constraint(service3 >= 400)
# constraint #3: throughput-max
ct_maintenance = m.add_constraint (2*service1 + 3*service2 + 4*service3 + 5*service4 <= 5000)
ct_throughput = m.add_constraint (3*service1 + 4*service2 + 5*service3 + 5*service4 <= 6000)
ct_total = m.add_constraint(service1 + service2 + service3 + service4 == 1500)
# In[174]:
m.minimize(17*service1 + 12*service2 + 8*service3 + 7*service4)
# In[175]:
s = m.solve(url=url, key=key)
m.print_solution()