사용자 지정 프로파일러의 수식에서 변수를 전달하는 방법사용자 지정 프로파일러에서 사용자 지정 수식을 정의할 수 있으며 다음 예제와 같이 매우 쉽습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
obj << Objective Formula(
:Pred Formula ABRASION + .5 * :Pred Formula MODULUS
);
obj << Optimize;
이제 계수 값을 0.5에서 다른 설정으로 변경하고 싶다고 가정해 보겠습니다. 그래서 다음 공식을 정의합니다.
coef=4;
myFormula=Parse(eval(EvalExpr(":Pred Formula ABRASION + "||Char(coef)||" * :Pred Formula MODULUS")));
로그의 결과는 정상입니다.
:Pred Formula 마모 + 4 * :Pred Formula MODULUS
그러나 이전 문장에서 같은 문장을 사용하면 예상한 결과를 얻을 수 없습니다.
obj << Objective Formula(Parse(eval(EvalExpr(":Pred Formula ABRASION + "||Char(coef)||" * :Pred Formula MODULUS"))));

내가 기본적인 실수를 한 것 같지만 문제가 있습니다. 이 방법을 더 복잡한 상황에 적용하고 싶습니다(네이티브 표현에서 선호도 계수 변경).
제안해 주셔서 감사합니다.
Re: 커스텀 프로파일러 공식에서 변수를 전달하는 방법피렌체,
일반적으로 표현식을 평가할 텍스트 문자열이 아닌 표현식으로 취급하는 것이 좋습니다. 다음과 같이 작동합니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
cVal = 4;
Eval(Substitute(
Expr(
obj << Objective Formula(
:Pred Formula ABRASION + coefVal * :Pred Formula MODULUS
)
),
Expr(coefVal),cVal
));
obj << Optimize;
두목
Re: 커스텀 프로파일러 공식에서 변수를 전달하는 방법안녕 돈,
답장을 보내 주셔서 감사합니다.
이 기본 예제에서는 제 공식이 간단하기 때문에 꽤 잘 작동합니다.
실생활에서는 더 복잡한 상황이 있습니다. 데이터 테이블에서 포착할 바람직함의 내용을 설정할 수 있기를 원합니다.
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability([100, y1_target, 200], [0.0183, 1, 0.0183], Pred Formula Abrasion)) + 0.25 * Log(Desirability([400, 475, 550], [0.0183, 1, 0.0183], Pred Formula Elongation))) / 0.5)
)
),
Expr(y1_target),y1_target_value
));
obj << Optimize;
이 경우 대체를 적용하면 오류가 발생합니다.

그리고 네.... 6개의 변수(두 개의 Y에 대한 대상 및 사양)의 내용을 변경하고 싶습니다!!
귀하의 제안에 감사드립니다.
피렌체
Re: 커스텀 프로파일러 공식에서 변수를 전달하는 방법피렌체,
문제는 행렬 연산자(여는 대괄호와 닫는 대괄호)가 작동하는 방식과 관련이 있습니다. 내가 생각할 수 있는 가장 간단한 접근 방식은 매트릭스를 사전에 생성하고 전체로 처리하는 것입니다. 대리자 . 이것은 작동해야합니다
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
y1Mat = Matrix({y1_min,y1_target_value,y1_max});
y2Mat = Matrix({y2_min,y2_target,y1_max});
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability(y1Mat, [0.0183, 1, 0.0183], Pred Formula Abrasion)) + 0.25 * Log(Desirability(y2Mat, [0.0183, 1, 0.0183], Pred Formula Elongation))) / 0.5)
)
),
Expr(y1Mat),y1Mat,
Expr(y2Mat),y2Mat,
));
obj << Optimize;
Re: 커스텀 프로파일러 공식에서 변수를 전달하는 방법여기서 뭔가 빠진 것 같은 느낌이 듭니다. 수식을 입력하는 대신 Expr/Eval 등을 사용하는 이유는 무엇입니까?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
y1_target_value = 175;
y1_min = 150;
y1_max = 200;
y2_target = 500;
y2_min = 450;
y2_max = 550;
y1Mat = Matrix( {y1_min, y1_target_value, y1_max} );
y2Mat = Matrix( {y2_min, y2_target, y1_max} );
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
obj << Objective Formula(
Exp(
(0.25 * Log( Desirability( y1Mat, [0.0183, 1, 0.0183], :Pred Formula Abrasion ) ) + 0.25 * Log(
Desirability( y2Mat, [0.0183, 1, 0.0183], :Pred Formula Elongation )
)) / 0.5
)
);
obj << Optimize;
Re: 커스텀 프로파일러 공식에서 변수를 전달하는 방법에 나오는 표현을 보면 공식 개요, 값 y1매트 그리고 y2매트 평가되지 않은 것으로 나타납니다. 즉, 변수로 나타납니다.
Exp((0.25 * Log(Desirability(<FONT color="#FF0000">y1Mat</FONT>, [0.0183, 1, 0.0183], :Pred Formula Abrasion)) + 0.25 * Log(Desirability(<FONT color="#FF0000">y2Mat</FONT>, [0.0183, 1, 0.0183], :Pred Formula Elongation))) / 0.5)
BTW, 이전 코드에서 몇 가지 실수가 있었던 것 같습니다. 다음은 수정된 버전입니다.
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
y1Mat = Matrix({y1_min,y1_target_value,y1_max});
y2Mat = Matrix({y2_min,y2_target,y2_max});
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability(y1Mat, [0.0183, 1, 0.0183], :Pred Formula Abrasion)) + 0.25 * Log(Desirability(y2Mat, [0.0183, 1, 0.0183], :Pred Formula Elongation))) / 0.5)
)
),
Expr(y1Mat),y1Mat,
Expr(y2Mat),y2Mat,
));
obj << Optimize;
이 모든 것은 바람직한 기능에 대해 다른 경계를 구현하는 방법인지 확실하지 않습니다. 수식이 올바른 것처럼 보이지만 목표 값이 누락되었습니다.
Re: 커스텀 프로파일러 공식에서 변수를 전달하는 방법팁을 주셔서 감사합니다! 효과가있다
수식에 관해서는 Fit Model 플랫폼에서 생성된 예측 수식으로 사용자 지정 프로파일러를 시작할 때 JMP에서 정의한 수식입니다.
기본값은 다음과 같습니다.

다음과 같은 유형의 예측 공식을 사용합니다.

네이티브 모델 피팅 플랫폼과 동일한 결과가 나오는지 확인하겠습니다.
다시 한번 감사합니다!
Re: 커스텀 프로파일러 공식에서 변수를 전달하는 방법고마워 플로렌스,
문제를 찾았습니다. 나는 사용 연마 그리고 계수 ~에 커스텀 프로파일러 하지만 사용 연마 그리고 연장 에서 객관적 공식 .
다음은 (바라건대) 오류가 없는 코드입니다.
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
y1Mat = Matrix({y1_min,y1_target_value,y1_max});
y2Mat = Matrix({y2_min,y2_target,y2_max});
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability(y1Mat, [0.0183, 1, 0.0183], :Pred Formula Abrasion)) + 0.25 * Log(Desirability(y2Mat, [0.0183, 1, 0.0183], :Pred Formula Modulus))) / 0.5)
)
),
Expr(y1Mat),y1Mat,
Expr(y2Mat),y2Mat,
));
obj << Optimize;