From 92f7e11a91a76fb0bc75d070502feb6fdf91e7f9 Mon Sep 17 00:00:00 2001 From: nicolas_ghio Date: Sun, 31 Mar 2019 16:12:19 +0200 Subject: [PATCH 1/4] my homework --- .ipynb_checkpoints/HW3-checkpoint.ipynb | 209 ++++++++++++++++++ ...ational_Econ\342\201\251-checkpoint.ipynb" | 209 ++++++++++++++++++ HW3.ipynb | 209 ++++++++++++++++++ ...1\250Computational_Econ\342\201\251.ipynb" | 178 +++++++++++++++ 4 files changed, 805 insertions(+) create mode 100644 .ipynb_checkpoints/HW3-checkpoint.ipynb create mode 100644 ".ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" create mode 100644 HW3.ipynb create mode 100644 "\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" diff --git a/.ipynb_checkpoints/HW3-checkpoint.ipynb b/.ipynb_checkpoints/HW3-checkpoint.ipynb new file mode 100644 index 0000000..b6f8b1a --- /dev/null +++ b/.ipynb_checkpoints/HW3-checkpoint.ipynb @@ -0,0 +1,209 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "data (generic function with 2 methods)" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#module HWconstrained\n", + "\n", + "using JuMP, NLopt, DataFrames, Ipopt\n", + "using LinearAlgebra\n", + "export data, table_NLopt, table_JuMP\n", + "\n", + "\n", + "### Question 1\n", + "function data(a=0.5)\n", + "n=3 \n", + "p=[1, 1, 1]\n", + "e=[2, 0, 0]\n", + "s1=s2=4\n", + "z1=[1, 1, 1, 1]\n", + "z2=[0.72, 0.92, 1.12, 1.32]\n", + "z3=[0.86, 0.96, 1.06, 1.16]\n", + "z=[[1, i, j] for i in z2 for j in z3]\n", + "z = vcat(z'...)\n", + "pi = repeat([1/16], 16)\n", + "a=0.5\n", + "na=3\n", + "nc=4\n", + "ns=4\n", + "nss=16\n", + "\n", + "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", + "end\n", + "#end" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dict{String,Any} with 9 entries:\n", + " \"na\" => 3\n", + " \"e\" => [2, 0, 0]\n", + " \"ns\" => 4\n", + " \"nc\" => 4\n", + " \"nss\" => 16\n", + " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", + " \"a\" => 0.5\n", + " \"p\" => [1, 1, 1]\n", + " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=data()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6065306598017222" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#### Question 2\n", + "\n", + "function obj(x::Vector,grad::Vector,data::Dict)\n", + " if length(grad) > 0\n", + " grad[1] = data[\"a\"]*exp.(-data[\"a\"]*x[1])\n", + " for i in 1:3\n", + " grad[i+1] = data[\"a\"]*sum(data[\"pi\"] .* data[\"z\"][:,i] .*exp.(-data[\"a\"].*data[\"z\"]*x[i+1]))\n", + " end\n", + " end\n", + " return exp.(-data[\"a\"]*x[1])+ sum(data[\"p\"]*exp.(-data[\"a\"]*sum(data[\"z\"]*x[2:4])))\n", + "end\n", + "obj(ones(4), zeros(4), d)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function constr(x::Vector,grad::Vector,data::Dict)\n", + " if length(grad) > 0\n", + " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", + " grad[2:end] = d[\"p\"]\n", + " end\n", + " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", + "end \n", + " \n", + "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "table_NLopt (generic function with 1 method)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function max_NLopt(a=0.5) \n", + " \n", + "end\n", + "\n", + "\n", + "function table_NLopt()\n", + "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", + "for i in 1:nrow(d)\n", + "xx = max_NLopt(d[i,:a])\n", + "for j in 2:ncol(d)-1\n", + "d[i,j] = xx[2][j-1]\n", + "end\n", + "d[i,end] = xx[1]\n", + "end\n", + "return d\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "opt = Opt(:LD_MMA, 2)\n", + "lower_bounds!(opt, [-Inf, 0.])\n", + "xtol_rel!(opt,1e-4)\n", + "\n", + "min_objective!(opt, myfunc)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", + "\n", + "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", + "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.1.0", + "language": "julia", + "name": "julia-1.1" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/.ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" "b/.ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" new file mode 100644 index 0000000..b6f8b1a --- /dev/null +++ "b/.ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" @@ -0,0 +1,209 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "data (generic function with 2 methods)" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#module HWconstrained\n", + "\n", + "using JuMP, NLopt, DataFrames, Ipopt\n", + "using LinearAlgebra\n", + "export data, table_NLopt, table_JuMP\n", + "\n", + "\n", + "### Question 1\n", + "function data(a=0.5)\n", + "n=3 \n", + "p=[1, 1, 1]\n", + "e=[2, 0, 0]\n", + "s1=s2=4\n", + "z1=[1, 1, 1, 1]\n", + "z2=[0.72, 0.92, 1.12, 1.32]\n", + "z3=[0.86, 0.96, 1.06, 1.16]\n", + "z=[[1, i, j] for i in z2 for j in z3]\n", + "z = vcat(z'...)\n", + "pi = repeat([1/16], 16)\n", + "a=0.5\n", + "na=3\n", + "nc=4\n", + "ns=4\n", + "nss=16\n", + "\n", + "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", + "end\n", + "#end" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dict{String,Any} with 9 entries:\n", + " \"na\" => 3\n", + " \"e\" => [2, 0, 0]\n", + " \"ns\" => 4\n", + " \"nc\" => 4\n", + " \"nss\" => 16\n", + " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", + " \"a\" => 0.5\n", + " \"p\" => [1, 1, 1]\n", + " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=data()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6065306598017222" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#### Question 2\n", + "\n", + "function obj(x::Vector,grad::Vector,data::Dict)\n", + " if length(grad) > 0\n", + " grad[1] = data[\"a\"]*exp.(-data[\"a\"]*x[1])\n", + " for i in 1:3\n", + " grad[i+1] = data[\"a\"]*sum(data[\"pi\"] .* data[\"z\"][:,i] .*exp.(-data[\"a\"].*data[\"z\"]*x[i+1]))\n", + " end\n", + " end\n", + " return exp.(-data[\"a\"]*x[1])+ sum(data[\"p\"]*exp.(-data[\"a\"]*sum(data[\"z\"]*x[2:4])))\n", + "end\n", + "obj(ones(4), zeros(4), d)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function constr(x::Vector,grad::Vector,data::Dict)\n", + " if length(grad) > 0\n", + " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", + " grad[2:end] = d[\"p\"]\n", + " end\n", + " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", + "end \n", + " \n", + "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "table_NLopt (generic function with 1 method)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function max_NLopt(a=0.5) \n", + " \n", + "end\n", + "\n", + "\n", + "function table_NLopt()\n", + "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", + "for i in 1:nrow(d)\n", + "xx = max_NLopt(d[i,:a])\n", + "for j in 2:ncol(d)-1\n", + "d[i,j] = xx[2][j-1]\n", + "end\n", + "d[i,end] = xx[1]\n", + "end\n", + "return d\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "opt = Opt(:LD_MMA, 2)\n", + "lower_bounds!(opt, [-Inf, 0.])\n", + "xtol_rel!(opt,1e-4)\n", + "\n", + "min_objective!(opt, myfunc)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", + "\n", + "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", + "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.1.0", + "language": "julia", + "name": "julia-1.1" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/HW3.ipynb b/HW3.ipynb new file mode 100644 index 0000000..b6f8b1a --- /dev/null +++ b/HW3.ipynb @@ -0,0 +1,209 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "data (generic function with 2 methods)" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#module HWconstrained\n", + "\n", + "using JuMP, NLopt, DataFrames, Ipopt\n", + "using LinearAlgebra\n", + "export data, table_NLopt, table_JuMP\n", + "\n", + "\n", + "### Question 1\n", + "function data(a=0.5)\n", + "n=3 \n", + "p=[1, 1, 1]\n", + "e=[2, 0, 0]\n", + "s1=s2=4\n", + "z1=[1, 1, 1, 1]\n", + "z2=[0.72, 0.92, 1.12, 1.32]\n", + "z3=[0.86, 0.96, 1.06, 1.16]\n", + "z=[[1, i, j] for i in z2 for j in z3]\n", + "z = vcat(z'...)\n", + "pi = repeat([1/16], 16)\n", + "a=0.5\n", + "na=3\n", + "nc=4\n", + "ns=4\n", + "nss=16\n", + "\n", + "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", + "end\n", + "#end" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dict{String,Any} with 9 entries:\n", + " \"na\" => 3\n", + " \"e\" => [2, 0, 0]\n", + " \"ns\" => 4\n", + " \"nc\" => 4\n", + " \"nss\" => 16\n", + " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", + " \"a\" => 0.5\n", + " \"p\" => [1, 1, 1]\n", + " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=data()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6065306598017222" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#### Question 2\n", + "\n", + "function obj(x::Vector,grad::Vector,data::Dict)\n", + " if length(grad) > 0\n", + " grad[1] = data[\"a\"]*exp.(-data[\"a\"]*x[1])\n", + " for i in 1:3\n", + " grad[i+1] = data[\"a\"]*sum(data[\"pi\"] .* data[\"z\"][:,i] .*exp.(-data[\"a\"].*data[\"z\"]*x[i+1]))\n", + " end\n", + " end\n", + " return exp.(-data[\"a\"]*x[1])+ sum(data[\"p\"]*exp.(-data[\"a\"]*sum(data[\"z\"]*x[2:4])))\n", + "end\n", + "obj(ones(4), zeros(4), d)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function constr(x::Vector,grad::Vector,data::Dict)\n", + " if length(grad) > 0\n", + " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", + " grad[2:end] = d[\"p\"]\n", + " end\n", + " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", + "end \n", + " \n", + "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "table_NLopt (generic function with 1 method)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function max_NLopt(a=0.5) \n", + " \n", + "end\n", + "\n", + "\n", + "function table_NLopt()\n", + "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", + "for i in 1:nrow(d)\n", + "xx = max_NLopt(d[i,:a])\n", + "for j in 2:ncol(d)-1\n", + "d[i,j] = xx[2][j-1]\n", + "end\n", + "d[i,end] = xx[1]\n", + "end\n", + "return d\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "opt = Opt(:LD_MMA, 2)\n", + "lower_bounds!(opt, [-Inf, 0.])\n", + "xtol_rel!(opt,1e-4)\n", + "\n", + "min_objective!(opt, myfunc)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", + "\n", + "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", + "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.1.0", + "language": "julia", + "name": "julia-1.1" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" "b/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" new file mode 100644 index 0000000..36db712 --- /dev/null +++ "b/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" @@ -0,0 +1,178 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#module HWconstrained\n", + "\n", + "using JuMP, NLopt, DataFrames, Ipopt\n", + "using LinearAlgebra\n", + "export data, table_NLopt, table_JuMP\n", + "\n", + "\n", + "### Question 1\n", + "function data(a=0.5)\n", + "n=3 \n", + "p=[1, 1, 1]\n", + "e=[2, 0, 0]\n", + "s1=s2=4\n", + "z1=[1, 1, 1, 1]\n", + "z2=[0.72, 0.92, 1.12, 1.32]\n", + "z3=[0.86, 0.96, 1.06, 1.16]\n", + "z=[[1, i, j] for i in z2 for j in z3]\n", + "z = vcat(z'...)\n", + "pi = repeat([1/16], 16)\n", + "a=0.5\n", + "na=3\n", + "nc=4\n", + "ns=4\n", + "nss=16\n", + "\n", + "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", + "end\n", + "#end" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dict{String,Any} with 9 entries:\n", + " \"na\" => 3\n", + " \"e\" => [2, 0, 0]\n", + " \"ns\" => 4\n", + " \"nc\" => 4\n", + " \"nss\" => 16\n", + " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", + " \"a\" => 0.5\n", + " \"p\" => [1, 1, 1]\n", + " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=data()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#### Question 2\n", + "\n", + "function obj(x::Vector,grad::Vector,data::Dict)\n", + " A = data[\"a\"]\n", + " Z = data[\"z\"]\n", + " if length(grad) > 0\n", + " grad[1] = A*exp.(-A*x[1])\n", + " for i in 1:3\n", + " grad[i+1] = A*sum(data[\"pi\"] .* Z[:,i] .*exp.(-A.*Z*x[i+1]))\n", + " end\n", + " end\n", + " return exp.(-A*x[1])+ sum(data[\"p\"]*exp.(-A*sum(Z*x[2:4])))\n", + "end\n", + "obj(ones(4), zeros(4), d)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "function constr(x::Vector,grad::Vector,data::Dict)\n", + " if length(grad) > 0\n", + " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", + " grad[2:end] = d[\"p\"]\n", + " end\n", + " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", + "end \n", + " \n", + "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "table_NLopt (generic function with 1 method)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function max_NLopt(a=0.5) \n", + " \n", + "end\n", + "\n", + "\n", + "function table_NLopt()\n", + "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", + "for i in 1:nrow(d)\n", + "xx = max_NLopt(d[i,:a])\n", + "for j in 2:ncol(d)-1\n", + "d[i,j] = xx[2][j-1]\n", + "end\n", + "d[i,end] = xx[1]\n", + "end\n", + "return d\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "opt = Opt(:LD_MMA, 2)\n", + "lower_bounds!(opt, [-Inf, 0.])\n", + "xtol_rel!(opt,1e-4)\n", + "\n", + "min_objective!(opt, myfunc)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", + "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", + "\n", + "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", + "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.1.0", + "language": "julia", + "name": "julia-1.1" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From c1b2345ab703fd5a8975fa9a6559028b5d9c5b0c Mon Sep 17 00:00:00 2001 From: nicolas_ghio Date: Sun, 31 Mar 2019 16:36:51 +0200 Subject: [PATCH 2/4] my homework --- src/HWconstrained.jl | 188 +++++++++++++++++-------------------------- test/runtests.jl | 96 +++++++++++----------- 2 files changed, 125 insertions(+), 159 deletions(-) diff --git a/src/HWconstrained.jl b/src/HWconstrained.jl index 3b6faa4..5ca438c 100644 --- a/src/HWconstrained.jl +++ b/src/HWconstrained.jl @@ -1,117 +1,81 @@ module HWconstrained -greet() = print("Hello World!") - - using JuMP, NLopt, DataFrames, Ipopt - using LinearAlgebra - - export data, table_NLopt, table_JuMP - - function data(a=0.5) - - - - - - - - - - return Dict("a"=>a,"na"=>na,"nc"=>nc,"ns"=>ns,"nss"=>nss,"e"=>e,"p"=>p,"z"=>z,"pi"=>pi) - end - - - function max_JuMP(a=0.5) - - return Dict("obj"=>objective_value(m),"c"=>value(c),"omegas"=>[value(omega[i]) for i in 1:length(omega)]) - end - - function table_JuMP() - d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3)) - for i in 1:nrow(d) - xx = max_JuMP(d[i,:a]) - d[i,:c] = xx["c"] - d[i,:omega1] = xx["omegas"][1] - d[i,:omega2] = xx["omegas"][2] - d[i,:omega3] = xx["omegas"][3] - d[i,:fval] = xx["obj"] - end - return d - end - - - - - - - - - function obj(x::Vector,grad::Vector,data::Dict) - - - - - - - - - - - - - - - - - - - - - - - - - end - - function constr(x::Vector,grad::Vector,data::Dict) - - - - - - - - - - - - - - - end - - function max_NLopt(a=0.5) - - - - - - - - - end - - function table_NLopt() - d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3)) - for i in 1:nrow(d) - xx = max_NLopt(d[i,:a]) - for j in 2:ncol(d)-1 - d[i,j] = xx[2][j-1] - end - d[i,end] = xx[1] - end - return d - end +using JuMP, NLopt, DataFrames, Ipopt +using LinearAlgebra +export data, table_NLopt, table_JuMP + +### Question 1 +function data(a=0.5) +n=3 +p=[1, 1, 1] +e=[2, 0, 0] +s1=s2=4 +z1=[1, 1, 1, 1] +z2=[0.72, 0.92, 1.12, 1.32] +z3=[0.86, 0.96, 1.06, 1.16] +z=[[1, i, j] for i in z2 for j in z3] +z = vcat(z'...) +pi = repeat([1/16], 16) +a=0.5 +na=3 +nc=4 +ns=4 +nss=16 + +return Dict("a"=>a,"na"=>na,"nc"=>nc,"ns"=>ns,"nss"=>nss,"e"=>e,"p"=>p,"z"=>z,"pi"=>pi) +end +#end + +d=data() + +#### Question 2 + +function obj(x::Vector,grad::Vector,data::Dict) + A = data["a"] + Z = data["z"] + pi = data["pi"] + if length(grad) > 0 + grad[1] = A*exp.(-A*x[1]) + for i in 1:3 + grad[i+1] = sum(pi .* Z[:,i] .*A.*exp.(-A.*Z*x[i+1])) + end + end + return -exp.(-A*x[1])+ sum(pi.*-exp.(-A*Z*x[2:4])) +end +obj(ones(4), zeros(4), d) + +function constr(x::Vector,grad::Vector,data::Dict) + if length(grad) > 0 + grad[1] = d["a"]*exp(-d["a"]*x[1]) + grad[2:end] = d["p"] + end + return x[1] + sum(d["p"].*(x[2:end].-d["e"])) +end + +constr(ones(4), zeros(4), d) # keep track of # function evaluations + +function max_NLopt(a=0.5) +d = data(a) +e= d["e"] +optimum = Opt(:LD_MMA, 4) +lower_bounds!(optimum, [0., -Inf, -Inf, -Inf]) +max_objective!(optimum, (x, g)->obj(x, g, d), 1e-8) +inequality_constraint!(optimum, (x, g)->constr(x, g, d), 1e-8) +ftol_rel!(optimum, 1e-8) +NLopt.optimize(optimum) +end + +function table_NLopt() +d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3)) +for i in 1:nrow(d) +xx = max_NLopt(d[i,:a]) +for j in 2:ncol(d)-1 +d[i,j] = xx[2][j-1] +end +d[i,end] = xx[1] +end +return d +end diff --git a/test/runtests.jl b/test/runtests.jl index 1793ffc..5f8e65c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -2,52 +2,54 @@ using HWconstrained using Test @testset "HWconstrained.jl" begin - @testset "testing components" begin - - @testset "tests gradient of objective function" begin - - - - - - - end - - - @testset "tests gradient of constraint function" begin - - - - - - - end - end - - @testset "testing result of both maximization methods" begin - - truth = HWconstrained.DataFrame(a=[0.5;1.0;5.0], - c = [1.008;1.004;1.0008], - omega1=[-1.41237;-0.20618;0.758763], - omega2=[0.801455;0.400728;0.0801455], - omega3=[1.60291;0.801455;0.160291], - fval=[-1.20821;-0.732819;-0.013422]) - - @testset "checking result of NLopt maximization" begin - - t1 = table_NLopt() - for c in names(truth) - @test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) - end - end - - - @testset "checking result of NLopt maximization" begin - t1 = table_JuMP() - for c in names(truth) - @test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) - end - end - end +@testset "testing components" begin +d=data() +A=d["a"] +u(x)=-exp(-A*x) +grad=ones(4) + + +@testset "tests gradient of objective function" begin + +end + + + + + +@testset "tests gradient of constraint function" begin + +end + +end + + + +@testset "testing result of both maximization methods" begin +truth = HWconstrained.DataFrame(a=[0.5;1.0;5.0], + +c = [1.008;1.004;1.0008], + +omega1=[-1.41237;-0.20618;0.758763], + +omega2=[0.801455;0.400728;0.0801455], + +omega3=[1.60291;0.801455;0.160291], + +fval=[-1.20821;-0.732819;-0.013422]) + + + +@testset "checking result of NLopt maximization" begin +@test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) +t1 = table_JuMP() +for c in names(truth) + @test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) +end +end + +@testset "checking result of NLopt maximization" begin +@test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) +end end From 67444bbae13d46579282da7087e9615985d16524 Mon Sep 17 00:00:00 2001 From: nicolas_ghio Date: Sun, 31 Mar 2019 16:39:21 +0200 Subject: [PATCH 3/4] my homework --- .ipynb_checkpoints/HW3-checkpoint.ipynb | 209 ------------------ ...ational_Econ\342\201\251-checkpoint.ipynb" | 209 ------------------ HW3.ipynb | 209 ------------------ ...1\250Computational_Econ\342\201\251.ipynb" | 178 --------------- 4 files changed, 805 deletions(-) delete mode 100644 .ipynb_checkpoints/HW3-checkpoint.ipynb delete mode 100644 ".ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" delete mode 100644 HW3.ipynb delete mode 100644 "\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" diff --git a/.ipynb_checkpoints/HW3-checkpoint.ipynb b/.ipynb_checkpoints/HW3-checkpoint.ipynb deleted file mode 100644 index b6f8b1a..0000000 --- a/.ipynb_checkpoints/HW3-checkpoint.ipynb +++ /dev/null @@ -1,209 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "data (generic function with 2 methods)" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#module HWconstrained\n", - "\n", - "using JuMP, NLopt, DataFrames, Ipopt\n", - "using LinearAlgebra\n", - "export data, table_NLopt, table_JuMP\n", - "\n", - "\n", - "### Question 1\n", - "function data(a=0.5)\n", - "n=3 \n", - "p=[1, 1, 1]\n", - "e=[2, 0, 0]\n", - "s1=s2=4\n", - "z1=[1, 1, 1, 1]\n", - "z2=[0.72, 0.92, 1.12, 1.32]\n", - "z3=[0.86, 0.96, 1.06, 1.16]\n", - "z=[[1, i, j] for i in z2 for j in z3]\n", - "z = vcat(z'...)\n", - "pi = repeat([1/16], 16)\n", - "a=0.5\n", - "na=3\n", - "nc=4\n", - "ns=4\n", - "nss=16\n", - "\n", - "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", - "end\n", - "#end" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dict{String,Any} with 9 entries:\n", - " \"na\" => 3\n", - " \"e\" => [2, 0, 0]\n", - " \"ns\" => 4\n", - " \"nc\" => 4\n", - " \"nss\" => 16\n", - " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", - " \"a\" => 0.5\n", - " \"p\" => [1, 1, 1]\n", - " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d=data()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.6065306598017222" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#### Question 2\n", - "\n", - "function obj(x::Vector,grad::Vector,data::Dict)\n", - " if length(grad) > 0\n", - " grad[1] = data[\"a\"]*exp.(-data[\"a\"]*x[1])\n", - " for i in 1:3\n", - " grad[i+1] = data[\"a\"]*sum(data[\"pi\"] .* data[\"z\"][:,i] .*exp.(-data[\"a\"].*data[\"z\"]*x[i+1]))\n", - " end\n", - " end\n", - " return exp.(-data[\"a\"]*x[1])+ sum(data[\"p\"]*exp.(-data[\"a\"]*sum(data[\"z\"]*x[2:4])))\n", - "end\n", - "obj(ones(4), zeros(4), d)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.0" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function constr(x::Vector,grad::Vector,data::Dict)\n", - " if length(grad) > 0\n", - " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", - " grad[2:end] = d[\"p\"]\n", - " end\n", - " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", - "end \n", - " \n", - "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "table_NLopt (generic function with 1 method)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function max_NLopt(a=0.5) \n", - " \n", - "end\n", - "\n", - "\n", - "function table_NLopt()\n", - "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", - "for i in 1:nrow(d)\n", - "xx = max_NLopt(d[i,:a])\n", - "for j in 2:ncol(d)-1\n", - "d[i,j] = xx[2][j-1]\n", - "end\n", - "d[i,end] = xx[1]\n", - "end\n", - "return d\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "opt = Opt(:LD_MMA, 2)\n", - "lower_bounds!(opt, [-Inf, 0.])\n", - "xtol_rel!(opt,1e-4)\n", - "\n", - "min_objective!(opt, myfunc)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", - "\n", - "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", - "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.1.0", - "language": "julia", - "name": "julia-1.1" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.1.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git "a/.ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" "b/.ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" deleted file mode 100644 index b6f8b1a..0000000 --- "a/.ipynb_checkpoints/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251-checkpoint.ipynb" +++ /dev/null @@ -1,209 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "data (generic function with 2 methods)" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#module HWconstrained\n", - "\n", - "using JuMP, NLopt, DataFrames, Ipopt\n", - "using LinearAlgebra\n", - "export data, table_NLopt, table_JuMP\n", - "\n", - "\n", - "### Question 1\n", - "function data(a=0.5)\n", - "n=3 \n", - "p=[1, 1, 1]\n", - "e=[2, 0, 0]\n", - "s1=s2=4\n", - "z1=[1, 1, 1, 1]\n", - "z2=[0.72, 0.92, 1.12, 1.32]\n", - "z3=[0.86, 0.96, 1.06, 1.16]\n", - "z=[[1, i, j] for i in z2 for j in z3]\n", - "z = vcat(z'...)\n", - "pi = repeat([1/16], 16)\n", - "a=0.5\n", - "na=3\n", - "nc=4\n", - "ns=4\n", - "nss=16\n", - "\n", - "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", - "end\n", - "#end" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dict{String,Any} with 9 entries:\n", - " \"na\" => 3\n", - " \"e\" => [2, 0, 0]\n", - " \"ns\" => 4\n", - " \"nc\" => 4\n", - " \"nss\" => 16\n", - " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", - " \"a\" => 0.5\n", - " \"p\" => [1, 1, 1]\n", - " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d=data()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.6065306598017222" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#### Question 2\n", - "\n", - "function obj(x::Vector,grad::Vector,data::Dict)\n", - " if length(grad) > 0\n", - " grad[1] = data[\"a\"]*exp.(-data[\"a\"]*x[1])\n", - " for i in 1:3\n", - " grad[i+1] = data[\"a\"]*sum(data[\"pi\"] .* data[\"z\"][:,i] .*exp.(-data[\"a\"].*data[\"z\"]*x[i+1]))\n", - " end\n", - " end\n", - " return exp.(-data[\"a\"]*x[1])+ sum(data[\"p\"]*exp.(-data[\"a\"]*sum(data[\"z\"]*x[2:4])))\n", - "end\n", - "obj(ones(4), zeros(4), d)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.0" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function constr(x::Vector,grad::Vector,data::Dict)\n", - " if length(grad) > 0\n", - " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", - " grad[2:end] = d[\"p\"]\n", - " end\n", - " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", - "end \n", - " \n", - "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "table_NLopt (generic function with 1 method)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function max_NLopt(a=0.5) \n", - " \n", - "end\n", - "\n", - "\n", - "function table_NLopt()\n", - "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", - "for i in 1:nrow(d)\n", - "xx = max_NLopt(d[i,:a])\n", - "for j in 2:ncol(d)-1\n", - "d[i,j] = xx[2][j-1]\n", - "end\n", - "d[i,end] = xx[1]\n", - "end\n", - "return d\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "opt = Opt(:LD_MMA, 2)\n", - "lower_bounds!(opt, [-Inf, 0.])\n", - "xtol_rel!(opt,1e-4)\n", - "\n", - "min_objective!(opt, myfunc)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", - "\n", - "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", - "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.1.0", - "language": "julia", - "name": "julia-1.1" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.1.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/HW3.ipynb b/HW3.ipynb deleted file mode 100644 index b6f8b1a..0000000 --- a/HW3.ipynb +++ /dev/null @@ -1,209 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "data (generic function with 2 methods)" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#module HWconstrained\n", - "\n", - "using JuMP, NLopt, DataFrames, Ipopt\n", - "using LinearAlgebra\n", - "export data, table_NLopt, table_JuMP\n", - "\n", - "\n", - "### Question 1\n", - "function data(a=0.5)\n", - "n=3 \n", - "p=[1, 1, 1]\n", - "e=[2, 0, 0]\n", - "s1=s2=4\n", - "z1=[1, 1, 1, 1]\n", - "z2=[0.72, 0.92, 1.12, 1.32]\n", - "z3=[0.86, 0.96, 1.06, 1.16]\n", - "z=[[1, i, j] for i in z2 for j in z3]\n", - "z = vcat(z'...)\n", - "pi = repeat([1/16], 16)\n", - "a=0.5\n", - "na=3\n", - "nc=4\n", - "ns=4\n", - "nss=16\n", - "\n", - "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", - "end\n", - "#end" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dict{String,Any} with 9 entries:\n", - " \"na\" => 3\n", - " \"e\" => [2, 0, 0]\n", - " \"ns\" => 4\n", - " \"nc\" => 4\n", - " \"nss\" => 16\n", - " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", - " \"a\" => 0.5\n", - " \"p\" => [1, 1, 1]\n", - " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d=data()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 81, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.6065306598017222" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#### Question 2\n", - "\n", - "function obj(x::Vector,grad::Vector,data::Dict)\n", - " if length(grad) > 0\n", - " grad[1] = data[\"a\"]*exp.(-data[\"a\"]*x[1])\n", - " for i in 1:3\n", - " grad[i+1] = data[\"a\"]*sum(data[\"pi\"] .* data[\"z\"][:,i] .*exp.(-data[\"a\"].*data[\"z\"]*x[i+1]))\n", - " end\n", - " end\n", - " return exp.(-data[\"a\"]*x[1])+ sum(data[\"p\"]*exp.(-data[\"a\"]*sum(data[\"z\"]*x[2:4])))\n", - "end\n", - "obj(ones(4), zeros(4), d)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.0" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function constr(x::Vector,grad::Vector,data::Dict)\n", - " if length(grad) > 0\n", - " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", - " grad[2:end] = d[\"p\"]\n", - " end\n", - " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", - "end \n", - " \n", - "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "table_NLopt (generic function with 1 method)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function max_NLopt(a=0.5) \n", - " \n", - "end\n", - "\n", - "\n", - "function table_NLopt()\n", - "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", - "for i in 1:nrow(d)\n", - "xx = max_NLopt(d[i,:a])\n", - "for j in 2:ncol(d)-1\n", - "d[i,j] = xx[2][j-1]\n", - "end\n", - "d[i,end] = xx[1]\n", - "end\n", - "return d\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "opt = Opt(:LD_MMA, 2)\n", - "lower_bounds!(opt, [-Inf, 0.])\n", - "xtol_rel!(opt,1e-4)\n", - "\n", - "min_objective!(opt, myfunc)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", - "\n", - "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", - "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.1.0", - "language": "julia", - "name": "julia-1.1" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.1.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git "a/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" "b/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" deleted file mode 100644 index 36db712..0000000 --- "a/\342\200\216\342\201\250Macintosh HD\342\201\251 \342\226\270 \342\201\250Utilisateurs\342\201\251 \342\226\270 \342\201\250Nico\342\201\251 \342\226\270 \342\201\250Bureau\342\201\251 \342\226\270 \342\201\250Computational_Econ\342\201\251.ipynb" +++ /dev/null @@ -1,178 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#module HWconstrained\n", - "\n", - "using JuMP, NLopt, DataFrames, Ipopt\n", - "using LinearAlgebra\n", - "export data, table_NLopt, table_JuMP\n", - "\n", - "\n", - "### Question 1\n", - "function data(a=0.5)\n", - "n=3 \n", - "p=[1, 1, 1]\n", - "e=[2, 0, 0]\n", - "s1=s2=4\n", - "z1=[1, 1, 1, 1]\n", - "z2=[0.72, 0.92, 1.12, 1.32]\n", - "z3=[0.86, 0.96, 1.06, 1.16]\n", - "z=[[1, i, j] for i in z2 for j in z3]\n", - "z = vcat(z'...)\n", - "pi = repeat([1/16], 16)\n", - "a=0.5\n", - "na=3\n", - "nc=4\n", - "ns=4\n", - "nss=16\n", - "\n", - "return Dict(\"a\"=>a,\"na\"=>na,\"nc\"=>nc,\"ns\"=>ns,\"nss\"=>nss,\"e\"=>e,\"p\"=>p,\"z\"=>z,\"pi\"=>pi)\n", - "end\n", - "#end" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dict{String,Any} with 9 entries:\n", - " \"na\" => 3\n", - " \"e\" => [2, 0, 0]\n", - " \"ns\" => 4\n", - " \"nc\" => 4\n", - " \"nss\" => 16\n", - " \"z\" => [1.0 0.72 0.86; 1.0 0.72 0.96; … ; 1.0 1.32 1.06; 1.0 1.32 1.16]\n", - " \"a\" => 0.5\n", - " \"p\" => [1, 1, 1]\n", - " \"pi\" => [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0…" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d=data()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#### Question 2\n", - "\n", - "function obj(x::Vector,grad::Vector,data::Dict)\n", - " A = data[\"a\"]\n", - " Z = data[\"z\"]\n", - " if length(grad) > 0\n", - " grad[1] = A*exp.(-A*x[1])\n", - " for i in 1:3\n", - " grad[i+1] = A*sum(data[\"pi\"] .* Z[:,i] .*exp.(-A.*Z*x[i+1]))\n", - " end\n", - " end\n", - " return exp.(-A*x[1])+ sum(data[\"p\"]*exp.(-A*sum(Z*x[2:4])))\n", - "end\n", - "obj(ones(4), zeros(4), d)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "function constr(x::Vector,grad::Vector,data::Dict)\n", - " if length(grad) > 0\n", - " grad[1] = d[\"a\"]*exp(-d[\"a\"]*x[1])\n", - " grad[2:end] = d[\"p\"]\n", - " end\n", - " return x[1] + sum(d[\"p\"].*(x[2:end].-d[\"e\"]))\n", - "end \n", - " \n", - "constr(ones(4), zeros(4), d) # keep track of # function evaluations\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "table_NLopt (generic function with 1 method)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function max_NLopt(a=0.5) \n", - " \n", - "end\n", - "\n", - "\n", - "function table_NLopt()\n", - "d = DataFrame(a=[0.5;1.0;5.0],c = zeros(3),omega1=zeros(3),omega2=zeros(3),omega3=zeros(3),fval=zeros(3))\n", - "for i in 1:nrow(d)\n", - "xx = max_NLopt(d[i,:a])\n", - "for j in 2:ncol(d)-1\n", - "d[i,j] = xx[2][j-1]\n", - "end\n", - "d[i,end] = xx[1]\n", - "end\n", - "return d\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "opt = Opt(:LD_MMA, 2)\n", - "lower_bounds!(opt, [-Inf, 0.])\n", - "xtol_rel!(opt,1e-4)\n", - "\n", - "min_objective!(opt, myfunc)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,2,0), 1e-8)\n", - "inequality_constraint!(opt, (x,g) -> myconstraint(x,g,-1,1), 1e-8)\n", - "\n", - "(minfunc,minx,ret) = NLopt.optimize(opt, [1.234, 5.678])\n", - "println(\"got $minfunc at $minx after $count iterations (returned $ret)\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.1.0", - "language": "julia", - "name": "julia-1.1" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.1.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From afef4ab4f79dfb8d05295e603330bd9d84617e9b Mon Sep 17 00:00:00 2001 From: nicolas_ghio Date: Sun, 31 Mar 2019 17:13:48 +0200 Subject: [PATCH 4/4] my homework --- Project.toml | 7 +++++++ src/HWconstrained.jl | 4 ++-- test/runtests.jl | 5 +++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Project.toml b/Project.toml index a987f1f..b63824c 100644 --- a/Project.toml +++ b/Project.toml @@ -3,6 +3,13 @@ uuid = "2aa259a0-4d4c-11e9-0909-ad9b1ef308f5" authors = ["florian oswald "] version = "0.1.0" +[deps] +DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +Ipopt = "b6b21f68-93f8-5de0-b562-5493be1d77c9" +JuMP = "4076af6c-e467-56ae-b986-b466b2749572" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +NLopt = "76087f3c-5699-56af-9a33-bf431cd00edd" + [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/src/HWconstrained.jl b/src/HWconstrained.jl index 5ca438c..3bff6ae 100644 --- a/src/HWconstrained.jl +++ b/src/HWconstrained.jl @@ -59,10 +59,10 @@ d = data(a) e= d["e"] optimum = Opt(:LD_MMA, 4) lower_bounds!(optimum, [0., -Inf, -Inf, -Inf]) -max_objective!(optimum, (x, g)->obj(x, g, d), 1e-8) +max_objective!(optimum, (x, g)->obj(x, g, d)) inequality_constraint!(optimum, (x, g)->constr(x, g, d), 1e-8) ftol_rel!(optimum, 1e-8) -NLopt.optimize(optimum) +NLopt.optimize(optimum, vcat(0,e)) end function table_NLopt() diff --git a/test/runtests.jl b/test/runtests.jl index 5f8e65c..ce20cf9 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -39,10 +39,9 @@ omega3=[1.60291;0.801455;0.160291], fval=[-1.20821;-0.732819;-0.013422]) - +tol2=1e-2 @testset "checking result of NLopt maximization" begin -@test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) t1 = table_JuMP() for c in names(truth) @test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) @@ -53,3 +52,5 @@ end @test all(maximum.(abs.(t1[c].-truth[c])) .< tol2) end end +end +end