summaryrefslogtreecommitdiff
path: root/opt/dual/dual_demo.py
diff options
context:
space:
mode:
Diffstat (limited to 'opt/dual/dual_demo.py')
-rw-r--r--opt/dual/dual_demo.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/opt/dual/dual_demo.py b/opt/dual/dual_demo.py
new file mode 100644
index 0000000..22eb8f0
--- /dev/null
+++ b/opt/dual/dual_demo.py
@@ -0,0 +1,45 @@
+from scipy import optimize
+from scipy.spatial import distance
+
+from ortools.sat.python import cp_model
+
+
+def obj(x1, x2):
+ return -(3*x1 + 4*x2)
+
+
+if __name__ == '__main__':
+
+ # 原始问题
+ c = [-3, -4]
+ A = [[1/2, 2], [3, 1]]
+ b = [30, 25]
+
+ res = optimize.linprog(c, A_ub=A, b_ub=b, bounds=[[0, None], [0, None]])
+ print(res)
+
+ print('=============')
+
+ c = [30, 25]
+ A = [[-1/2, -3], [-2, -1]]
+ b = [-3, -4]
+ res = optimize.linprog(c, A_ub=A, b_ub=b, bounds=[[0, None], [0, None]])
+ print(res)
+ print('=============')
+
+ c = [5, 1]
+ A = [[-2, -1], [-1, -1], [-2, -20]]
+ b = [-6, -4, -21]
+ res = optimize.linprog(c, A_ub=A, b_ub=b, bounds=[[0, None], [0, None]])
+ print(res)
+ print('=============')
+
+ c = [-3, -5]
+ A = [[1, 3], [3, 4]]
+ b = [60, 120]
+ res = optimize.linprog(c, A_ub=A, b_ub=b, bounds=[[10, None], [0, None]])
+ print(res)
+ print('=============')
+
+ model = cp_model.CpModel()
+ model.AddBoolOr()