ฉันมีกำหนดไว้เป็นปัญหาซึ่งจะลดค่าของต้องไปปั๊ม นั่นคือกำหนดไว้เป็นเป้าหมายเราของปัญหา
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
ปัญหา arises ตอนที่ฉันคำนวณเป็น accumulative summation ใช้ cp.cumsum
. มันทำงานและ calculates อย่างถูกต้องแต่ตอนที่ฉันอยากจะเพิ่มโครงสรางอยู่นี่คือให้ฉันด้วย 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)
เป็น traceback ที่ฉันเตรียมไว้ให้กับคือ:
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 และในกองเข็เอ่อล้นออกมาแต่ผมไม่เจออะไรในที่ทำงานสำหรับปัญหาของฉัน ฉันแปลกใจที่มันได้ผลสำหรับฉันในอดีตที่ผ่านมา