Кажется, у вас нет идеи о линейном программировании. Пожалуйста, прочитайте об этом. Вот ответ, который вы просили.
import com.joptimizer.functions.ConvexMultivariateRealFunction;
import com.joptimizer.functions.LinearMultivariateRealFunction;
import com.joptimizer.optimizers.JOptimizer;
import com.joptimizer.optimizers.OptimizationRequest;
import com.joptimizer.optimizers.PrimalDualMethod;
/**
*
* @author K.P.L.Kanchana
*/
public class Demo {
public static void main(String[] args){
// BasicConfigurator.configure(); // uncomment and see the console log4j:WARN
// setting value for k as k1 variable
double k1 = 100.2;
// setting value for k' as k2 variable
double k2 = 30.4;
// Objective function (plane)
LinearMultivariateRealFunction objectiveFunction = new LinearMultivariateRealFunction(new double[] {-k1, -k2}, 0); // Maximize kX + K'X
//inequalities (polyhedral feasible set G.X<H)
ConvexMultivariateRealFunction[] inequalities = new ConvexMultivariateRealFunction[4];
// x > 0 ('<=' constraints not applicable in JOptimizer)
inequalities[0] = new LinearMultivariateRealFunction(new double[] {-1, 0}, 0); // -x > o
// y > 0 ('<=' constraints not applicable in JOptimizer)
inequalities[1] = new LinearMultivariateRealFunction(new double[] {0, -1}, 0); // -y > o
// x < 1 ('<=' constraints not applicable in JOptimizer)
inequalities[2] = new LinearMultivariateRealFunction(new double[] {1, 0}, -1); // x-1 < o
// y < 1 ('<=' constraints not applicable in JOptimizer)
inequalities[3] = new LinearMultivariateRealFunction(new double[] {0, 1}, -1); // y-1 < o
//optimization problem
OptimizationRequest or = new OptimizationRequest();
or.setF0(objectiveFunction);
or.setFi(inequalities);
or.setToleranceFeas(JOptimizer.DEFAULT_FEASIBILITY_TOLERANCE);
or.setTolerance(JOptimizer.DEFAULT_TOLERANCE);
//optimization
PrimalDualMethod opt = new PrimalDualMethod();
opt.setOptimizationRequest(or);
try {
int returnCode = opt.optimize();
}
catch (Exception ex) {
ex.printStackTrace();
return;
}
// get the solution
double[] sol = opt.getOptimizationResponse().getSolution();
// display the solution
System.out.println("X = " + sol[0]);
System.out.println("X = " + sol[1]);
}
}
(1) Это простая проблема с LP, и я не вижу здесь трудностей. (2) У вас нет цели, поэтому вы ищете только подходящее решение. (3) Возможны все решения, ограниченные диапазонами переменных (4) Что * точно * является проблемой во время реализации? '(5)« '' '' '' выглядит как-то неправильно здесь. Но я не знаю, является ли x одномерной переменной или вектором или что-то еще. Возможно, вам нужны какие-то точечные продукты, но ваш пример недостаточно формален, чтобы выразить это. – sascha