Skip to content
Open
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
336078f
feat(solver): add a first version of the Resilient LF with Reactiv Li…
YoannAnezin Jun 4, 2025
5da5022
feat(solver): Implementation of the Resilient LF with Reactiv Limits …
YoannAnezin Jun 6, 2025
2afc091
feat(solver): Implementation of the Resilient LF with Reactiv Limits …
YoannAnezin Jun 25, 2025
cc80abb
feat(solver): First jacobienne implementation & tests
YoannAnezin Jul 24, 2025
e7c36ca
feat(solver): Tests with and without jacobienne for the ReactiveLimit…
YoannAnezin Aug 12, 2025
8f6ce92
feat(solver): Corrections
YoannAnezin Aug 12, 2025
5af9074
feat(solver): Corrections
YoannAnezin Aug 13, 2025
548e96c
Update Resilient Knitro Solver
p-arvy Aug 13, 2025
85b1f80
feat(solver): Tests with jacobienne
YoannAnezin Aug 14, 2025
c44f806
Change voltage upper limit to 5
YoannAnezin Aug 21, 2025
375945e
feat(solver): Scaling P, Q slack variables and tests with jacobienne
YoannAnezin Aug 21, 2025
3f802f8
feat(solver): Scaling P, Q slack variables and tests with jacobienne
YoannAnezin Aug 26, 2025
5c93524
feat(solver): Balance obj weights and get best feasible solution
YoannAnezin Aug 26, 2025
12f74c1
feat(solver): WIP
YoannAnezin Aug 28, 2025
57ca446
feat(solver): WIP Time computing optimization
YoannAnezin Sep 8, 2025
808b299
feat(solver): WIP Add Logs' writter and pertubation tests
YoannAnezin Sep 15, 2025
5a37193
feat(solver): Correction of checker and considering only Q equation w…
YoannAnezin Sep 19, 2025
04065be
feat(solver): Correction of checker and considering only Q equation w…
YoannAnezin Sep 23, 2025
6483776
feat(solver): Add time spent in solver class
YoannAnezin Sep 24, 2025
1e83186
feat(solver): Correction checker
YoannAnezin Sep 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
<properties>
<java.version>17</java.version>
<powsybl-core.version>6.6.0</powsybl-core.version>
<powsybl-open-loadflow.version>1.14.1</powsybl-open-loadflow.version>
<powsybl-open-loadflow.version>1.14.1-SNAPSHOTYA</powsybl-open-loadflow.version>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For testing this is ok. We'll have to change this before merging.

<knitro-interfaces.version>14.2.0</knitro-interfaces.version>
<bridj.version>0.7.0</bridj.version>
</properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import com.powsybl.commons.extensions.AbstractExtension;
import com.powsybl.loadflow.LoadFlowParameters;

import java.util.logging.Logger;

/**
* @author Jeanne Archambault {@literal <jeanne.archambault at artelys.com>}
* @author Martin Debouté {@literal <martin.deboute at artelys.com>}
Expand All @@ -27,6 +29,15 @@ public class KnitroLoadFlowParameters extends AbstractExtension<LoadFlowParamete
private boolean alwaysUpdateNetwork = KnitroSolverParameters.ALWAYS_UPDATE_NETWORK_DEFAULT_VALUE;
private boolean checkLoadFlowSolution = KnitroSolverParameters.CHECK_LOAD_FLOW_SOLUTION_DEFAULT_VALUE;
private KnitroSolverParameters.KnitroSolverType knitroSolverType = KnitroSolverParameters.DEFAULT_KNITRO_SOLVER_TYPE;
private KnitroWritter knitroWritter;

public KnitroLoadFlowParameters(KnitroWritter knitroWritter) {
this.knitroWritter = knitroWritter;
}

public KnitroLoadFlowParameters() {
this.knitroWritter = new KnitroWritter("Logs.txt");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same, this will be removed before merging.

}

public int getGradientComputationMode() {
return gradientComputationMode;
Expand Down Expand Up @@ -142,9 +153,17 @@ public KnitroLoadFlowParameters setKnitroSolverType(KnitroSolverParameters.Knitr
return this;
}

public KnitroWritter getKnitroWritter() {
return knitroWritter;
}

public KnitroLoadFlowParameters setKnitroWritter(KnitroWritter knitroWritter) {
this.knitroWritter = knitroWritter;
return this;
}

@Override
public String getName() {
return "knitro-load-flow-parameters";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ public AcSolverParameters createParameters(LoadFlowParameters parameters) {
.setConvEps(parameters.getExtension(KnitroLoadFlowParameters.class).getConvEps())
.setAlwaysUpdateNetwork(parameters.getExtension(KnitroLoadFlowParameters.class).isAlwaysUpdateNetwork())
.setCheckLoadFlowSolution(parameters.getExtension(KnitroLoadFlowParameters.class).isCheckLoadFlowSolution())
.setKnitroWritter(parameters.getExtension(KnitroLoadFlowParameters.class).getKnitroWritter())
.setKnitroSolverType(parameters.getExtension(KnitroLoadFlowParameters.class).getKnitroSolverType());

}
return knitroSolverParameters;
}
Expand All @@ -75,6 +75,8 @@ public AcSolver create(LfNetwork network, AcLoadFlowParameters parameters, Equat
new KnitroSolver(network, knitroSolverParameters, equationSystem, j, targetVector, equationVector, parameters.isDetailedReport());
case RESILIENT ->
new ResilientKnitroSolver(network, knitroSolverParameters, equationSystem, j, targetVector, equationVector, parameters.isDetailedReport());
case REACTIVLIMITS ->
new KnitroSolverReacLim(network, knitroSolverParameters, equationSystem, j, targetVector, equationVector, parameters.isDetailedReport());
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*/
package com.powsybl.openloadflow.knitro.solver;

import com.artelys.knitro.api.KNConstants;
import com.powsybl.openloadflow.ac.solver.AcSolverParameters;
import com.powsybl.openloadflow.ac.solver.LineSearchStateVectorScaling;
import com.powsybl.openloadflow.ac.solver.MaxVoltageChangeStateVectorScaling;
Expand All @@ -22,6 +23,7 @@
*/
public class KnitroSolverParameters implements AcSolverParameters {

public static final String DEFAULT_LOG_FILE_NAME = "Logs.txt";
public static final int DEFAULT_GRADIENT_COMPUTATION_MODE = 1; // Specifies how the Jacobian matrix is computed
public static final int DEFAULT_GRADIENT_USER_ROUTINE = 2; // If the user chooses to pass the exact Jacobian to knitro, specifies the sparsity pattern for the Jacobian matrix.
public static final int DEFAULT_HESSIAN_COMPUTATION_MODE = 6; // Specifies how the Hessian matrix is computed. 6 means that the Hessian is approximated using the L-BFGS method, which is a quasi-Newton method.
Expand All @@ -31,7 +33,7 @@ public class KnitroSolverParameters implements AcSolverParameters {
public static final double DEFAULT_STOPPING_CRITERIA = Math.pow(10, -6);
public static final StateVectorScalingMode DEFAULT_STATE_VECTOR_SCALING_MODE = StateVectorScalingMode.NONE;
public static final boolean ALWAYS_UPDATE_NETWORK_DEFAULT_VALUE = true;
public static final boolean CHECK_LOAD_FLOW_SOLUTION_DEFAULT_VALUE = true; // If the solver converges, launches a load flow taking into account slack variable results to check if the solution is a real load flow solution
public static final boolean CHECK_LOAD_FLOW_SOLUTION_DEFAULT_VALUE = false; // If the solver converges, launches a load flow taking into account slack variable results to check if the solution is a real load flow solution
public static final KnitroSolverType DEFAULT_KNITRO_SOLVER_TYPE = KnitroSolverType.STANDARD;
public KnitroSolverType knitroSolverType = DEFAULT_KNITRO_SOLVER_TYPE;
private StateVectorScalingMode stateVectorScalingMode = DEFAULT_STATE_VECTOR_SCALING_MODE;
Expand All @@ -48,6 +50,16 @@ public class KnitroSolverParameters implements AcSolverParameters {
private int maxIterations = DEFAULT_MAX_ITERATIONS;
private double convEps = DEFAULT_STOPPING_CRITERIA;
private int hessianComputationMode = DEFAULT_HESSIAN_COMPUTATION_MODE;
private String logFileName = DEFAULT_LOG_FILE_NAME;
private KnitroWritter knitroWritter;

public KnitroSolverParameters(KnitroWritter knitroWritter) {
this.knitroWritter = knitroWritter;
}

public KnitroSolverParameters() {
this.knitroWritter = new KnitroWritter("Logs.txt");
}

public int getGradientComputationMode() {
return gradientComputationMode;
Expand Down Expand Up @@ -202,6 +214,15 @@ public void setKnitroSolverType(KnitroSolverType knitroSolverType) {
this.knitroSolverType = Objects.requireNonNull(knitroSolverType);
}

public KnitroWritter getKnitroWritter() {
return knitroWritter;
}

public KnitroSolverParameters setKnitroWritter(KnitroWritter knitroWritter) {
this.knitroWritter = knitroWritter;
return this;
}

@Override
public String toString() {
return "KnitroSolverParameters(" +
Expand All @@ -218,6 +239,7 @@ public String toString() {

public enum KnitroSolverType {
STANDARD,
RESILIENT
RESILIENT,
REACTIVLIMITS,
}
}
Loading