Это функция, которую я хочу реализовать. Нелинейное уравнение для оптимизации . Как мне вернуть общую стоимость?
Это мой код.
self._z = 1
self._qt_1 = 0
Также создается переменная gurobi q_m_i_t и отлично работает отдельно.
def __f(self,u): ## non linear function
"""
Equation for Deployment cost
Returns:
Piecewise Deployment cost
"""
return ((((u + self._z)*(np.log((u + self._z)/(self._qt_1 +self._z))))+ self._qt_1) - u)
def __deploymentcost_of_vnf(self): # VNF Deployment cost
"""
Calculates deployment cost of VNF which is the sum over product of
dost of deploying an instance of VNF in DataCenter and number of new
instances
Returns:
Deployment cost
"""
ptu = []
ptf = []
npts = 5
sigma = dict()
Deploymentcost = 0
gen10 = itertools.product(self._timeperiod,self._numberOfVNFs,
self._datacenters)
for t, m, i in gen10:
k = "q_" + str(m) + "_" + str(i) + "_" + str(t)
self.Vars[k] = self.model.getVarByName(
"q_" + str(m) + "_" + str(i) + "_" + str(t))
u = self.Vars[k]
sigma["sig_" + str(m) + "_" + str(i)] = 0.2
sigma1 = sigma["sig_" + str(m) + "_" + str(i)]
a = sigma1/self._n
piecewise = 0
for coo in range(npts):
ptu.append(0.25 * coo)
ptf.append(self.__f(ptu[coo]))
self.model.setPWLObj(u , ptu, ptf)
#piecewise = piecewise + ptf[coo]
#overall = piecewise*a # Scalling regularized answer
#Deploymentcost = Deploymentcost + overall
#print Deploymentcost
return Deploymentcost