मैं परिभाषित किया है, जो एक समस्या होगी की लागत को कम करने के लिए चलाने के लिए एक पंप है । है कि के रूप में परिभाषित उद्देश्य के साथ समस्या है.
cost_cp = cp.sum(cp.multiply(cost_,selection))
objective = cp.Minimize(cost_cp)
समस्या परिभाषित किया गया है:
problem = cp.Problem(objective, constraints)
मैं भाग गया है का उपयोग कर की गणना cp.multiply
और cp.vec
अंतर की गणना करने में जलाशय की मात्रा प्रदान करता है जो मेरा जवाब होगा की उम्मीद के साथ सही मतभेद है ।
flow_in = cp.vec(cp.multiply(input_flow_, flow_in_minutes))
flow_out = cp.vec(flow_out_)
flow_diff = flow_in - flow_out
समस्या पैदा होती है जब मैं गणना की एक संचयी योग का उपयोग करना cp.cumsum
. यह काम करता है और गणना करता है सही ढंग से, लेकिन जब मैं जोड़ने के लिए इच्छा की कमी है इस के आसपास है के साथ मुझे प्रदान करता है DCPError
, मैं अनिश्चित हूँ मैं कहाँ जा रहा हूँ गलत में इस तरह की गणना के रूप में यह काम किया है पहले से कोई समस्या नहीं है मेरे लिए.
बाधाओं मैं करने के लिए इच्छा को परिभाषित कर रहे हैं:
volume_constraint = volume_cp >= 300000
min_level_constraint = res_level >= min_level
max_level_constraint = res_level <= max_level
constraints = [assignment_constraint, volume_constraint, min_level_constraint, max_level_constraint]
के volume_constraint
काम करता है पूरी तरह से. समस्या के साथ है min_level_constraint
और max_level_constraint
.
मैं प्रयास के एक समाधान का उपयोग कर
problem.solve(solver=cp.CPLEX, verbose=False)
एक ट्रेसबैक में जो मैं कर रहा हूँ के साथ प्रदान की जाती है:
DCPError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_14560/1602474026.py in <module>
33
34 # Problem solve
---> 35 problem.solve(solver=cp.CPLEX, verbose=False)
~\AppData\Local\Programs\Python\Python38\lib\site-packages\cvxpy\problems\problem.py in solve(self, *args, **kwargs)
457 else:
458 solve_func = Problem._solve
--> 459 return solve_func(self, *args, **kwargs)
460
461 @classmethod
~\AppData\Local\Programs\Python\Python38\lib\site-packages\cvxpy\problems\problem.py in _solve(self, solver, warm_start, verbose, gp, qcp, requires_grad, enforce_dpp, **kwargs)
936 return self.value
937
--> 938 data, solving_chain, inverse_data = self.get_problem_data(
939 solver, gp, enforce_dpp, verbose)
940
~\AppData\Local\Programs\Python\Python38\lib\site-packages\cvxpy\problems\problem.py in get_problem_data(self, solver, gp, enforce_dpp, verbose)
563 if key != self._cache.key:
564 self._cache.invalidate()
--> 565 solving_chain = self._construct_chain(
566 solver=solver, gp=gp, enforce_dpp=enforce_dpp)
567 self._cache.key = key
~\AppData\Local\Programs\Python\Python38\lib\site-packages\cvxpy\problems\problem.py in _construct_chain(self, solver, gp, enforce_dpp)
789 candidate_solvers = self._find_candidate_solvers(solver=solver, gp=gp)
790 self._sort_candidate_solvers(candidate_solvers)
--> 791 return construct_solving_chain(self, candidate_solvers, gp=gp,
792 enforce_dpp=enforce_dpp)
793
~\AppData\Local\Programs\Python\Python38\lib\site-packages\cvxpy\reductions\solvers\solving_chain.py in construct_solving_chain(problem, candidates, gp, enforce_dpp)
153 if len(problem.variables()) == 0:
154 return SolvingChain(reductions=[ConstantSolver()])
--> 155 reductions = _reductions_for_problem_class(problem, candidates, gp)
156
157 dpp_context = 'dcp' if not gp else 'dgp'
~\AppData\Local\Programs\Python\Python38\lib\site-packages\cvxpy\reductions\solvers\solving_chain.py in _reductions_for_problem_class(problem, candidates, gp)
89 append += ("\nHowever, the problem does follow DQCP rules. "
90 "Consider calling solve() with `qcp=True`.")
---> 91 raise DCPError(
92 "Problem does not follow DCP rules. Specifically:\n" + append)
93 elif gp and not problem.is_dgp():
मैं चारों ओर देखा प्रलेखन पर CVXPY और पर ढेर अतिप्रवाह लेकिन मैं कुछ भी नहीं पाया है में काम करता है, जो मेरे लिए समस्या है । मैं चकित हूँ के रूप में यह मेरे लिए काम किया है अतीत में.