New answers tagged

3

A slight variant of the code in the question yields s = Simplify[k[q] /. DSolve[{(1/2)*σ^2*k''[q] + μ*k'[q] - λ*k[q] == 0, k'[0] == -mc, k'[b] == me}, k[q], q][[1, 1]]] (* (E^(-((q (μ + Sqrt[μ^2 + 2 λ σ^2]))/σ^2)) (E^((2 q Sqrt[μ^2 + 2 λ σ^2])/σ^2) mc λ σ^2 + E^((2 q Sqrt[μ^2 + 2 λ σ^2] + b (μ + Sqrt[μ^2 + 2 λ σ^2]))/σ^2) me λ σ^2 + E^((2 b ...


2

After doing a few test runs where I varied either p1 or p2 while keeping the other fixed, the Hamming distance did not seem to fluctuate wildly, so a grid-based approach may be viable here. Note however that the evaluation time for SVMError is so large in your example ZIP file that any kind of search will require patience :P The idea is to first evaluate ...


1

If you see the Mathematica message, it is clear that the variable list is incomplete. It should also include Q[1],Q[2], de[1],de[2], P[1] and P[2]. The syntax therefore becomes: Timing[NMinimize[{Sum[(S*de[i])/(m[i]*Q[i]) + (hv[i]*Q[i])/ 2*((m[i] - 1)*(1 - de[i]/P[i]) + de[i]/P[i]) + de[i]/(m[i]*Q[i])*(m[i]*c[i] + m[i]*Q[i]*Cv[i] + Cf[i]) + ...


1

NMaximize[ Abs[a*c + a*d + b*c - b*d], {a, b, c, d} \[Element] Cuboid[{0, 0, 0, 0}]] (* {2., {a -> 1., b -> 1., c -> 1., d -> 1.}} *)


3

As example functions I'll use x[t_] := (0.5 (1 - t^0.8)^0.625 + 0.5 t^0.5)^2 y[t_] := (0.7 (1 - t^0.8)^0.125 + 0.3 t^0.1)^10 To get the points that were calculated while plotting, one can use Reap and Sow. {plot, {tValues, xValues, yValues}} = Reap@ParametricPlot[{Sow[x[Sow[t, "t"]], "x"], Sow[y[t], "y"]}, {t, 0, 1}]; Because ParametricPlot does ...


1

So I found a method that might be of interest, but i'm not sure it's optimal. rawPlotData = ParametricPlot[{x[t], y[t]}, {t, 0, 1}][[1]]; (* get plot data *) plotData = Apply[List, rawPlotData[[1, 3, 2]]][[1]]; Index (1,3,2) of rawPlotData has a Line[-data-] object where -data- contains all the points. I don't know if this is the address for all ...


3

Perhaps something like: f = 6 + # Sin[# + Pi] - Cos[Pi #/4] &; g = # Cos[# + Pi/3]/2 - 1/12 Sin[Pi #] &; Plot[{f[t], g[t]}, {t, 0, 3 Pi}, PlotStyle -> {Red, Blue}, Mesh -> {{0}, {0}}, MeshFunctions -> {ConditionalExpression[f'[#], f''[#] < 0 && g[#] > 0] &, ConditionalExpression[g'[#], g''[#] < 0 && ...


3

Mutation is according to the classical rand/1 scheme. NMinimize does not (or, at least, did not used to) save the function value it obtains at each point, and so reevaluates the objective function when candidate solutions are propagated unchanged through more than one generation. This accounts for the multiple evaluations at each point. I think that this is ...


3

In at least this case, one workaround avoiding Sort[] would be to use RankedMin[] instead, which is more amenable to symbolic processing, at the cost of being quite a bit slower to evaluate. sums[x_?VectorQ] := Total[Subsets[x, {2}], {2}] score[x_?VectorQ] := With[{s = sums[x]}, CentralMoment[Differences[Table[RankedMin[s, k], {k, Length[s]}]], ...


3

Note that your expression for score[{0, x, y, 1}] seems to simplify considerably when $0<x,y<1$: FullSimplify[score[{0, x, y, 1}], Thread[0 < {x, y} < 1]] (* Out: 2/25 (7 x^2 - 2 x (2 + 3 y) + 2 (6 + (-2 + y) y)) *) Minimize[Flatten@{%, Thread[0 < {x, y} < 1]}, {x, y}] (* Out: {18/35, {x -> 5/7, y -> 1}} *) The Minimize expression ...


2

As explained in the comments above, the problem is that Import["pd.dat"] does not correctly interpret the exported text file. You can see this by evaluating gigi[a, b, c, d, e, f] which returns {{4, "+", "Log[a]"}}. Since the file "pd.dat" contains only "4 + Log[a]", this gets interpreted as the number 4, followed by a "+" sign, followed by the string ...


0

As pointed out kindly by Oleksandr I bumped into a common beginner's error. Reference to this can be found in the following links: HERE and HERE The correct way to do this, in my case, as I have vectors as variables would have been: fitcst[wlo : {_?NumericQ, _?NumericQ}, wup : {_?NumericQ, _?NumericQ}, sol_] := With[{m = 50, \[Alpha] = 2 Degree}, ...


1

I should use TimeConstrained[] as JM suggested in this case.


3

I'm not sure if you can specify a time limit, but you can use the StepMonitor option to watch the maximization as it progresses. Here is an example: f[x_] = -x^4 - 3 x^2 + x; NMaximize[f[x], x, StepMonitor :> (Print["step x = ", x, ", f[x]=", f[x]]; Pause[.1])] I'm only using Pause[] in the StepMonitor to slow down the process, so we can watch it ...


3

An alternative is to take the Cholesky decomposition of the matrix, and use the squares of the diagonal elements (which should be nonnegative) as the constraints: g = CholeskyDecomposition[{{1, 0}, {0, a}}]; NMinimize[{a, And @@ Thread[Diagonal[g]^2 >= 0]}, a] {0., {a -> 0.}}


4

One idea would be to use an explicit penalty function. (I couldn't get it to work with the "PenaltyFunction" option.) npsQ[m_?(MatrixQ[#, NumericQ] &)] := Boole@Not@PositiveSemidefiniteMatrixQ[m]; mat = {{1, 0}, {0, a}}; NMinimize[a (1 - 2 npsQ[mat]), a] (* {1.8919*10^-9, {a -> -1.8919*10^-9}} *) Plot[{a (1 - 2 npsQ[mat])}, {a, -1, 2}] ...


0

The problem that you presented can be solved using FindFit. You are trying to fit the actual function f[x_] := Exp[x]^(1/2) + 2 - Exp[x] + x^5 in the range zero to one with a quadratic. First step is to generate the data. Creating it within the range 0 to 1 satisfies the fist constraint. data = Table[{x, f[x]}, {x, 0, 1, 0.02}]; ListPlot[data] ...


1

As Oleksandr pointed out as well, you may not be able to use your constraint as stated. Your alternative expressed as an inequality should actually be quite function, if you can calculate the eigenvalues of your target matrix symbolically in a reasonable time. You first obtain a symbolic expression for your eigenvalues, by running Eigenvalues once only, and ...


10

First answer (extended comment actually) You have to define better your objective function. For example, the following works: ClearAll[mat, minev] SeedRandom[1] rm = RandomInteger[10, {40, 40, 3}]; mat[t_] := N[rm.{1, t, t^2}]; minev[t_?NumericQ] := First@Eigenvalues[mat[t], -1]; Take[Table[minev[t], {t, 0, 1, .01}], 3] (* {-0.864071 - 1.30548 I, ...


5

lists = RandomInteger[10, {20, 3}]; pareto = Internal`ListMin[lists]; Row[{Panel[Grid[lists /. Thread[pareto -> (Style[#, Red, Bold] & /@ # & /@ pareto)]]], ListPointPlot3D[{lists, pareto}, PlotStyle -> {Blue, Red}, ImageSize -> 400, PlotRangePadding -> 1, BoxRatios -> 1, AspectRatio -> 1] /. Point -> (Sphere[#, .5] ...


2

You have your matrix, mat = With[{cs = 1, cc = 10, ED = 100, P = 25, NL = 5, pR = 0.1, pW = 0.25}, VAll[cs, cc, ED, P, NL, pR, pW, b]] (* {{87.4, 46., 100, 51.}, {229.896, 62.6, 100, 61.8}, {402.204, 79.8, 100, 72.6}, {613.824, 97.6, 100, 83.4}, {864.756, 116., 100, 94.2}, {1100., 135., 100, 105.}} *) You can get the list you want using Min, ...


3

ClearAll[leftSplit, rightSplit] leftSplit[q2_?NumericQ] := NMinimize[Max[Abs[q1 - 0], Abs[q2 - q1]], {q1}] rightSplit[q2_?NumericQ] := NMinimize[Max[Abs[q3 - q2], Abs[1 - q3]], {q3}] NMinimize[Max[leftSplit[q2][[1]], rightSplit[1 - q2][[1]]], {q2}] (* or NMinimize[Max[leftSplit[1 - q2][[1]], rightSplit[q2][[1]]], {q2}] *) {0.5, {q2 -> 0.5}}


0

If I understand you right, you may want to try this, k[a_, i_] := Position[opt[a, i], Min[opt[a, i]]] // Flatten However, in your example the minimum will always be the upper leftmost element of your final array, Opt[a,i]. I would also advise using different symbols. Personally I avoid capitol letters generally and symbols that could conflict with ...


3

Finding the convex hull of points in $\Re^d$ and expressing it as a set of (in)equalities is hard. However, I would suggest you transform the problem by writing feasible points as convex combinations of the given points, i.e. $$x=\sum_{i=1}^{d} w(i)\, x(i)$$ and then optimize over the simplex $$\left\{ 0\leq w(i) \leq 1, \sum_{i=1}^{d} w(i) = 1\right\}$$ ...


7

For 2D, just find the Polygon representing the convex hull and use RegionMember: (* fake data *) rand = Round[RandomReal[{0, 1}, {10, 2}], 1/100]; prims = MeshPrimitives[ConvexHullMesh[rand], 2][[1, 1]]; Refine[RegionMember[Polygon[Round[prims, 1/100]], {x, y}], {x, y} ∈ Reals] 1/25 (1/20 - x) + 18/25 (-1/50 + y) >= 0 && -23/25 (-77/100 + ...


1

One way to treat this in some very special, low dimensional and friendly cases is to use ParametricRegion (*Dimension and number of points*) d = 5; np = 4; (*Generate data*) data = RandomInteger[{-10, 10}, {np, d}]; (*Convex hull*) ws = Array[w, Length[data]]; reg3 = ParametricRegion[ {Sum[ws[[i]]*data[[i]], {i, Length@data}], Total[ws] == 1} , ...



Top 50 recent answers are included