|
936 | 936 | " con_viol_mean = np.mean(con_viol)\n", |
937 | 937 | " return con_viol_mean\n", |
938 | 938 | "\n", |
939 | | - "def eval_objective(x, y):\n", |
| 939 | + "def eval_objective(x, y, a):\n", |
940 | 940 | " obj_value_mean = np.mean((1 - x) ** 2 + a * (y - x ** 2) ** 2) \n", |
941 | 941 | " return obj_value_mean\n", |
942 | 942 | "\n", |
|
978 | 978 | "t = time.time()\n", |
979 | 979 | "x_solver, y_solver = [], []\n", |
980 | 980 | "for i in range(0, n_samples):\n", |
981 | | - " prob, x, y = NLP_param(p_samples[i].numpy(), a_samples[i].numpy(), opti_silent=True)\n", |
| 981 | + " prob, x, y = NLP_param(a_samples[i].numpy(), p_samples[i].numpy(), opti_silent=True)\n", |
982 | 982 | " sol = prob.solve()\n", |
983 | 983 | " x_solver.append(sol.value(x))\n", |
984 | 984 | " y_solver.append(sol.value(y))\n", |
|
1002 | 1002 | "name": "stdout", |
1003 | 1003 | "output_type": "stream", |
1004 | 1004 | "text": [ |
1005 | | - "Solution for 1000 problems via Neuromancer obtained in 0.0038 seconds\n", |
1006 | | - "Neuromancer mean constraints violation 0.3537\n", |
1007 | | - "Neuromancer mean objective value 0.0610\n", |
| 1005 | + "Solution for 1000 problems via Neuromancer obtained in 0.0074 seconds\n", |
| 1006 | + "Neuromancer mean constraints violation 0.0000\n", |
| 1007 | + "Neuromancer mean objective value 0.0550\n", |
1008 | 1008 | "\n", |
1009 | | - "Solution for 1000 problems via solver obtained in 9.5317 seconds\n", |
1010 | | - "Solver mean constraints violation 0.0746\n", |
1011 | | - "Solver mean objective value 0.2036\n", |
| 1009 | + "Solution for 1000 problems via solver obtained in 4.4246 seconds\n", |
| 1010 | + "Solver mean constraints violation 0.0000\n", |
| 1011 | + "Solver mean objective value 0.0468\n", |
1012 | 1012 | "\n", |
1013 | | - "Solution speedup factor 2540.9132\n", |
1014 | | - "MSE primal optimizers: 0.11051816632586187\n", |
1015 | | - "mean objective value discrepancy: 70.02 %\n" |
| 1013 | + "Solution speedup factor 598.4203\n", |
| 1014 | + "MSE primal optimizers: 0.1598999456654803\n", |
| 1015 | + "mean objective value discrepancy: 17.48 %\n" |
1016 | 1016 | ] |
1017 | 1017 | } |
1018 | 1018 | ], |
1019 | 1019 | "source": [ |
1020 | 1020 | "# Evaluate neuromancer solution\n", |
1021 | 1021 | "print(f'Solution for {n_samples} problems via Neuromancer obtained in {nm_time:.4f} seconds')\n", |
1022 | | - "nm_con_viol_mean = eval_constraints(x_nm, y_nm, p)\n", |
| 1022 | + "nm_con_viol_mean = eval_constraints(x_nm.ravel(), y_nm.ravel(), p_samples.numpy().ravel())\n", |
1023 | 1023 | "print(f'Neuromancer mean constraints violation {nm_con_viol_mean:.4f}')\n", |
1024 | | - "nm_obj_mean = eval_objective(x_nm, y_nm)\n", |
| 1024 | + "nm_obj_mean = eval_objective(x_nm.ravel(), y_nm.ravel(), a_samples.numpy().ravel())\n", |
1025 | 1025 | "print(f'Neuromancer mean objective value {nm_obj_mean:.4f}\\n')\n", |
1026 | 1026 | "\n", |
1027 | 1027 | "# Evaluate solver solution\n", |
1028 | 1028 | "print(f'Solution for {n_samples} problems via solver obtained in {solver_time:.4f} seconds')\n", |
1029 | | - "solver_con_viol_mean = eval_constraints(x_solver, y_solver, p)\n", |
| 1029 | + "solver_con_viol_mean = eval_constraints(x_solver, y_solver, p_samples.numpy().ravel())\n", |
1030 | 1030 | "print(f'Solver mean constraints violation {solver_con_viol_mean:.4f}')\n", |
1031 | | - "solver_obj_mean = eval_objective(x_solver, y_solver)\n", |
| 1031 | + "solver_obj_mean = eval_objective(x_solver, y_solver, a_samples.numpy().ravel())\n", |
1032 | 1032 | "print(f'Solver mean objective value {solver_obj_mean:.4f}\\n')\n", |
1033 | 1033 | "\n", |
1034 | 1034 | "# neuromancer solver comparison\n", |
|
0 commit comments