क्यों इस बाधा को बढ़ाने के लिए एक डीसीपी त्रुटि?

0

सवाल

मैं परिभाषित किया है, जो एक समस्या होगी की लागत को कम करने के लिए चलाने के लिए एक पंप है । है कि के रूप में परिभाषित उद्देश्य के साथ समस्या है.

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 और पर ढेर अतिप्रवाह लेकिन मैं कुछ भी नहीं पाया है में काम करता है, जो मेरे लिए समस्या है । मैं चकित हूँ के रूप में यह मेरे लिए काम किया है अतीत में.

1
2

कुछ ही घंटों के बाद अतिरिक्त विवेचना और और काम पर समस्या है, मैं करने में सक्षम था बाहर आंकड़ा कारण है ।

यह था के रूप में मैं शुरू में सोचा था और मेरी गणना के लिए flow_in नहीं था डीसीपी और मैं पूरी तरह यकीन नहीं है या समझ में क्यों, लेकिन मैं हो जाएगा निश्चित रूप से शिक्षा के लिए अपने आप को इस समय में आगे जा रहा है.

मैं समायोजित करने में सक्षम था गणना की तरह देखने के लिए निम्न अगर किसी को भी भर आता है, कुछ इस तरह से भविष्य में, और देख सकते हैं कि कैसे मेरी गणना में बदला सवाल बनाम जवाब.

flow_in = cp.sum(cp.multiply(volume_,selection),axis=1)
flow_out = cp.vec(flow_out_) # Value in litres -> must convert to a volume
flow_diff = (flow_in - flow_out) / 1000
res_level = cp.cumsum(flow_diff) / 160.6 + 2.3
2021-10-22 13:34:16

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में